Written on: 13. 01. 2021 [18:04]
|
samsond
Dmitry Samsonov
Topic creator
registered since: 11.02.2020
Posts: 14
|
Для улучшения читаемости показаний, предлагаю скорректировать поведение виджета /wlb_Main/wdg_ElViewGraph следующим образом.
В случае, если значение привязанного к нему параметра имеет логарифмическую шкалу (значение атрибута log = true), то выводить это значение в экспоненциальной записи.
Для изменения поведения предлагается следующая модификация в коде обработчика виджета:
Было:
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));
Стало:
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));
В своей локальной копии библиотеки сделал такую замену. Стало заметно удобнее.
|
Written on: 16. 01. 2021 [19:55]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"samsond" wrote:
Для улучшения читаемости показаний, предлагаю скорректировать поведение виджета /wlb_Main/wdg_ElViewGraph следующим образом.
Что делается проще:
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.
|
Written on: 16. 01. 2021 [22:02]
|
samsond
Dmitry Samsonov
Topic creator
registered since: 11.02.2020
Posts: 14
|
Роман, большое спасибо!
Хотел только заметить, что если значение prec отрицательно, то код все равно будет отображать в десятичной форме.
Может быть, есть смысл сразу брать abs(prec), а не ветвить код в зависимости от знака prec?
то есть, вместо
else lb_val_arg0val = prec.isEVal() ? varEl.toPrecision(6) : ((prec < 0) ? varEl.toPrecision(abs(prec)) : (log?varEl.toExponential(prec):varEl.toFixed(prec)));
сразу:
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 нигде нет. Может быть, стоило бы ее ввести?
|