Оператор Javascript с использованием переменных - PullRequest
0 голосов
/ 18 октября 2019

У меня есть ситуация, когда информацию, которую я ищу, у каждой записи есть свои метрики. По этой причине метрики / пороговые значения содержатся вместе с таблицей и присваиваются переменной. Чтобы правильно отобразить их с их собственным форматированием (т. Е. Red Threshold = Red), мне нужно иметь возможность выполнить оператор If / Then или Switch для переменной. Это то, что я кодировал в качестве теста:

switch (true) {
    case (txtYel_Threshold):    //    represents for this one test:  97.7 > 97 && 97.7 < 98
        ctx.CurrentItem.Comments = '<div style="display:block; width:110px;">YELLOW</div>';
        break;
    default:
        ctx.CurrentItem.Comments = '<div style="display:block; width:110px;">Did not work</div>';
        break;
}

К сожалению, JavaScript не распознает текст в переменной txtYel_Threshold. Это прекрасно работает, если я набираю оператор, но не при попытке использовать переменную с оператором в нем. Что я делаю неправильно? Есть ли способ сделать это с помощью переменной (опять же, потому что каждая запись имеет свои собственные метрики и, следовательно, не может быть записана в коде напрямую)?

Буду признателен за любую помощь или обратную связь! Спасибо.

1 Ответ

0 голосов
/ 19 октября 2019

Это то, что я сделал, возможно, есть лучший способ. Этот метод работает, но не позволяет мне использовать переменную вместо оператора (вместо '1> 0' мне нужно использовать что-то вроде 'var1 var2 var3', потому что метрики разные. В некоторых случаях 1быть КРАСНЫМ (плохо) и другими, где 1 ЗЕЛЕНЫЙ (хорошо).

// YELString includes statement such as '> 97 and < 98'
var YELString = ctx.CurrentItem.Yellow_Threshold;
var YELString = YELString.replace(/\and/g, "&&");
var YELArray = new Array();
YELArray = YELString.split(" ");

// GRNString includes statement such as '>= 98'
var GRNString = ctx.CurrentItem.Green_Threshold;
var GRNArray = new Array();
GRNArray = GRNString.split(" ");

// REDString includes statement such as '< 97'
var REDString = ctx.CurrentItem.Red_Threshold;
var REDArray = new Array();
REDArray = REDString.split(" ");

switch (true) {
    case (numCurrentMetric == "100" || numCurrentMetric >= GRNArray[1]):
        ctx.CurrentItem.Comments = 'Green';
        break;
    case (numCurrentMetric < REDArray[1]):
        ctx.CurrentItem.Comments = 'Red';
        break;
    case (numCurrentMetric > YELArray[1] && numCurrentMetric < YELArray[4]):
        ctx.CurrentItem.Comments = 'Yellow';
        break;
    default:
        ctx.CurrentItem.Comments = 'NONE';
        break;
}

Еще раз, спасибо за любую помощь.

...