Intermediate

Методы форматирования чисел

Библиотека Webix предлагает встроенные методы для форматирования чисел. Методы доступны через модуль i18n и в основном используются при локализации.

Локализация

Форматирование данных в соответствии с нормами страны и языка:

const string1 = webix.i18n.numberFormat("123.45");
const string2 = webix.i18n.intFormat("123.45")
const string3 = webix.i18n.priceFormat("123.45");

Применение локали внутри компонента:

// datatable
{ header:"LongDate", width:170,  id:"start", format:webix.i18n.numberFormat }
 
// другие компоненты
template:function(obj) {return webix.i18n.numberFormat(obj.start); }

Подробнее в статье Локализация дат и чисел.

Пользовательское форматирование

Вы можете задавать свои правила форматирования, используя методы класса Number:

Задайте нужные вам правила в компоненте данных:

const string1 = webix.Number.format("-1236.45",{
    groupDelimiter:",",
    groupSize:3,
    decimalDelimiter:".",
    decimalSize:2,
    minusPosition:"after",
    minusSign:"-"
});
// -> 1,236.45-

Применение формата внутри компонента:

// datatable
{ header:"LongDate", width:170,  id:"votes", format:webix.Number.numToStr({
        groupDelimiter:"",
        groupSize:0,
        decimalDelimiter:",",
        decimalSize:5,
        minusPosition:"parentheses",
        minusSign:"()",
   }); 
}
 
// другие компоненты
template:function(obj) {
    return webix.Number.numToStr({
        groupDelimiter:"",
        groupSize:0,
        decimalDelimiter:",",
        decimalSize:5,
        minusPosition:"parentheses",
        minusSign:"()", 
    });
}

Related sample:  Using Number Templates

Также вы можете получить объект с параметрами конфигурации, используемыми для форматирования:

const cfg = webix.Number.getConfig("1'111.00"); 
// ->{decimalSize: 2, groupSize: 3, decimalDelimiter: ".", groupDelimiter: "'", 
//    prefix: "", sufix: ""}

и определить формат проанализированного значения:

const num1 = webix.Number.parse("(10'009.00)", {
    decimalSize: 2, groupSize: 3, 
    decimalDelimiter: ".", groupDelimiter: "'",minusPosition:"parentheses",
    minusSign:"()",
});
// -> -10009
Наверх