ExtJS как написать условие для рендера?

Здравствуйте!

На сайте с minishop2 weight переименован в Цена покупки. Он используется менеджерами по закупу, чтобы указывать новые цены на товары на рынке.

Так вот в orders.grid.js weight сейчас выводится так:
weight: {width: 50, renderer: function (value, metadata) {metadata.style = 'color: green;'; return value;}},
Вопрос: есть ли возможность написать условие, которые выполняет следующее:
Если weight > cost, то metadata.style = 'color: red;';
иначе metadata.style = 'color: green;';

Заранее спасибо
Harry
24 декабря 2020, 14:35
modx.pro
205
0

Комментарии: 7

Наумов Алексей
24 декабря 2020, 14:42
0
В моих компонентах я вижу что renderer это функция с такими параметрами:
function(val, cell, row)
попробуйте добавить 3й параметр и посмотреть в отладчике, в row должна быть строка с данными со всеми полями объекта.
    Harry
    24 декабря 2020, 15:03
    0
    эх, скажу честно и с сожалением, что единственное, что я могу сделать — это добавить 3ий параметр… наведите дальше пожалуйста. Добавлю параметр 3ий, сохраню новый orders.grid.js, вернусь в заказы в админке в minishop2 верно? Дальше в консоли что-то писать?
      Артур
      24 декабря 2020, 15:08
      0
      Я думаю @Наумов Алексей имел в виду что-то вроде этого
      function(val, cell, row){
      console.log(row);
      }
      А потом f12 и смотреть консоль браузера.
        Наумов Алексей
        24 декабря 2020, 15:25
        0
        weight: {width: 50, renderer: function (value, metadata, row) {
            debugger;
            metadata.style = 'color: green;'; return value;
        }},
        и да, f12, обновляем страницу и смотрим, что у нас в row, есть ли нужные данные
          Harry
          25 декабря 2020, 07:40
          0
          Да, передаются данные! Теперь получается if условие мне же нужно писать внутри этой функции? А обращаться не подскажите как к данным: data[cost] и data[weight]?
          <img src="image" />
            Наумов Алексей
            25 декабря 2020, 11:19
            +1
            weight: {width: 50, renderer: function (value, metadata, row) {
                var w = parseFloat(row.data.weight.replace(/\s/g, ''));
                var c = parseFloat(row.data.cost.replace(/\s/g, ''));
                if (w > c) {
                    metadata.style = 'color: green;'; return value;
                }
            }},
            parseFloat и replace чтобы пробелы убрать и преобразовать в число, т.к. данные приходят строками, а не числами
              Harry
              25 декабря 2020, 11:25
              0
              вы лучший просто! спасибо большое за помощь!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      7