Я работаю над куском javascript, который устанавливает значение цвета, основанное на статусе healthcheck. Значения цвета строки привязываются к CSS, с которыми я работаю, а статусы строк привязываются к проверкам работоспособности, указанным в этом скрипте.Получить самый высокий статус из списка
Эта функция предназначена для установки значения цвета для каждой проверки состояния здоровья и возврата общего состояния системы. Общий статус должен соответствовать худшему состоянию проверки работоспособности (например, если большинство из них «нормально», а одно - «смертельно», то в целом должно быть «опасно»).
Текущий код работает, чтобы установить индивидуальные значения цвета, но не в целом. Есть ли «элегантный» способ установить общий, не используя много вложенных операторов if?
function getStatus(checks) {
var overall = '';
for (j in checks) {
checks[j]['color'] = '';
switch (checks[j].status) {
case 'OK':
checks[j]['color'] = 'success';
break;
case 'INFO':
checks[j]['color'] = 'info';
break;
case 'WARN':
checks[j]['color'] = 'warning';
break;
case 'ERROR':
checks[j]['color'] = 'danger';
break;
case 'FATAL':
checks[j]['color'] = 'danger';
break;
}
}
return overall;
}
я мог бы сделать что-то вроде этого:
case 'WARN':
if (overall === "OK" || overall === "INFO") {
overall = 'warning';
}
... но это становится грязным, особенно при проверке «ERROR», которая должна быть больше, чем 3 значения, но меньше, чем один. Есть ли более эффективный способ?
просто выполните 'var fatal = false;' и в вашем фатальном случае установите fatal в true. Тогда ваше возвращение является «возвратом фатальным» и основано на том, что оно является истинным или ложным, отображая все, что вам нравится. edit: я вижу, что вам это нужно для предупреждения, ошибки и смертельного исхода? Это точно? – Ronnie
Как это связано с angularJS? Это чистый javascript. –
@CyrilDD вы правы. Часть, которую я здесь включил, - это чистый javascript - угловатость не имеет отношения к моему вопросу. Соответственно обновлено. – vastlysuperiorman