УкраїнськаEnglishРocсийский
Вход/Новый
В теме нет новых постов

Отображение логарифмических значений в виджете /wlb_Main/wdg_ElViewGraph


Автор Сообщение
Сообщение создано: 13. 01. 2021 [18:04]
samsond
Dmitry Samsonov
Создатель темы
Зарегистрирован(а) с: 11.02.2020
Сообщения: 14
Для улучшения читаемости показаний, предлагаю скорректировать поведение виджета /wlb_Main/wdg_ElViewGraph следующим образом.
В случае, если значение привязанного к нему параметра имеет логарифмическую шкалу (значение атрибута log = true), то выводить это значение в экспоненциальной записи.
Для изменения поведения предлагается следующая модификация в коде обработчика виджета:

Было:
JAVASCRIPT
if(varEl.isEVal())
	lb_val_arg0val = "-";
else if(!digStts.isEVal() && digStts.length)
	lb_val_arg0val = (varEl^digRevers) ? digStts.parse(0,";").parse(0,"-") : digStts.parse(1,";").parse(0,"-");
else
	lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec < 0) ? varEl.toPrecision(abs(prec)) : varEl.toFixed(prec));


Стало:
JAVASCRIPT
if(varEl.isEVal())
	lb_val_arg0val = "-";
else if(!digStts.isEVal() && digStts.length)
	lb_val_arg0val = (varEl^digRevers) ? digStts.parse(0,";").parse(0,"-") : digStts.parse(1,";").parse(0,"-");
else if(log)
	lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec < 0) ? varEl.toPrecision(abs(prec)) : varEl.toExponential(prec));
else
	lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec < 0) ? varEl.toPrecision(abs(prec)) : varEl.toFixed(prec));


В своей локальной копии библиотеки сделал такую замену. Стало заметно удобнее.
Сообщение создано: 16. 01. 2021 [19:55]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3679
"samsond" wrote:

Для улучшения читаемости показаний, предлагаю скорректировать поведение виджета /wlb_Main/wdg_ElViewGraph следующим образом.

Что делается проще:
JAVASCRIPT
else lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec < 0) ? varEl.toPrecision(abs(prec)) : (log?varEl.toExponential(prec):varEl.toFixed(prec)));


Включил в библиотеку!

Learn, learn and learn better than work, work and work.
Сообщение создано: 16. 01. 2021 [22:02]
samsond
Dmitry Samsonov
Создатель темы
Зарегистрирован(а) с: 11.02.2020
Сообщения: 14
Роман, большое спасибо!

Хотел только заметить, что если значение prec отрицательно, то код все равно будет отображать в десятичной форме.
Может быть, есть смысл сразу брать abs(prec), а не ветвить код в зависимости от знака prec?

то есть, вместо

JAVASCRIPT
else lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec < 0) ? varEl.toPrecision(abs(prec)) : (log?varEl.toExponential(prec):varEl.toFixed(prec)));


сразу:
JAVASCRIPT
else lb_val_arg0val =  prec.isEVal() ? varEl.toPrecision(6) : (log?varEl.toExponential(abs(prec)):varEl.toFixed(abs(prec)));



Также, я поглядел код виджетов /wlb_Main/wdg_anShow, /wlb_Main/wdg_anShow1 и /wlb_Main/wdg_anShow1s. Там в общем аналогичная история - проверки на log=true нигде нет. Может быть, стоило бы ее ввести?





11238