EnglishУкраїнськаmRussian
Login/New
Topic with no new replies

[BugFixed] Ошибка в библиотеке виджетов


Author Message
Written on: 31. 08. 2020 [16:09]
IgorIVS
Игорь Шерстобитов
Topic creator
registered since: 12.03.2020
Posts: 15
Так как в разделе "Отслеживание ошибок", согласно правил ошибки в библиотеках не соответствуют правилам, то пишу сюда.

OpenSCADA v1+r2703
Виджет "Корневая страница (СО)" /wlb_Main/wdg_RootPgSo
При большом количестве вложенных страниц, кнопки выбора не переходяят на 2 строку (все кнопки в одну строку, с выходом за границы кадра).
Ошибка в процедуре обработки в части //Processing SO and views

Патч (мои правки выделены комментариями "by IVS":
1 фрагмент
for(var iSO in soLstS) {
if(!(curSO=iSO.toInt())) continue;
soNmSz = soLstS[iSO].nmSz*soSymbSz + soInterSpecX;
if((row1w+soNmSz) < soWdth) row1w += soNmSz, row1++;
// else if((row2w+soNmSz) < soWdth) row2w += soNmSz, row1++; //Original
else if((row2w+soNmSz) < soWdth) row2w += soNmSz, row2++; // 1 modify by IVS
else continue; //Too more and long SO
if(curSO != 1) this.wdgAdd("so"+curSO, soLstS[iSO].nm, this.attr("parent")+"/wdg_so1");

2 фрагмент
soWdthAdd = (soWdth-row1w)/row1;
soOff = soX, i = 0;
for(var iSO in soLstS) {
if(!(curSO=iSO.toInt())) continue;
if(i > (row1+row2)) break;
soW = this["so"+curSO];
soNm = soW.attr("name");
soNmSz = soLstS[iSO].nmSz*soSymbSz + soInterSpecX;
soOffY = soY2;
if(i < row1) soNmSz += soWdthAdd, soOffY = soY;
if(i == row1) soOff = soX; // 2 Add by IVS
soW.attrSet("geomX",soOff)..attrSet("geomY",soOffY).attrSet("geomW",soNmSz-soInterSpecX);
soOff += soNmSz;
i++;
}
Written on: 31. 08. 2020 [21:39]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"IgorIVS" wrote:

Так как в разделе "Отслеживание ошибок", согласно правил ошибки в библиотеках не соответствуют правилам, то пишу сюда.

Где про это? Внутренние библиотеки OpenSCADA это часть проекта!

"IgorIVS" wrote:

Виджет "Корневая страница (СО)" /wlb_Main/wdg_RootPgSo
При большом количестве вложенных страниц, кнопки выбора не переходяят на 2 строку (все кнопки в одну строку, с выходом за границы кадра).

Не завершено ибо не нужно было.

"IgorIVS" wrote:

Ошибка в процедуре обработки в части //Processing SO and views

Патч (мои правки выделены комментариями "by IVS":

Не совсем, правильно так:

--- vcaBase.sql (revision 2694)
+++ vcaBase.sql (working copy)
@@ -20073,7 +20073,7 @@
soInterSpecX = logoR ? this.so1.attr("geomX") : (this.logo.attr("en")?this.so1.attr("geomX")-this.logo.attr("geomX")-this.logo.attr("geomW"):2);
soX = logoR ? soInterSpecX : this.so1.attr("geomX");
soWdth = logoR ? ((this.logo.attr("en")?this.logo.attr("geomX"):this.attr("geomW"))-soX) : (this.attr("geomW") - soX);
- soSymbSz = this.so1.attr("font").parse(1," ").toReal()*0.8;
+ soSymbSz = this.so1.attr("font").parse(1," ").toReal()*0.75;

soInterSpecY = this.so1.attr("geomY");
soY = this.so1.attr("geomY");
@@ -20083,8 +20083,8 @@
for(var iSO in soLstS) {
if(!(curSO=iSO.toInt())) continue;
soNmSz = soLstS[iSO].nmSz*soSymbSz + soInterSpecX;
- if((row1w+soNmSz) < soWdth) row1w += soNmSz, row1++;
- else if((row2w+soNmSz) < soWdth) row2w += soNmSz, row1++;
+ if(!row2 && (row1w+soNmSz) < soWdth) row1w += soNmSz, row1++;
+ else if((row2w+soNmSz) < soWdth) row2w += soNmSz, row2++;
else continue; //Too more and long SO
if(curSO != 1) this.wdgAdd("so"+curSO, soLstS[iSO].nm, this.attr("parent")+"/wdg_so1");

@@ -20135,7 +20135,8 @@
soNmSz = soLstS[iSO].nmSz*soSymbSz + soInterSpecX;
soOffY = soY2;
if(i < row1) soNmSz += soWdthAdd, soOffY = soY;
- soW.attrSet("geomX",soOff)..attrSet("geomY",soOffY).attrSet("geomW",soNmSz-soInterSpecX);
+ else if(i == row1) soOff = soX;
+ soW.attrSet("geomX",soOff).attrSet("geomY",soOffY).attrSet("geomW",soNmSz-soInterSpecX);
soOff += soNmSz;
i++;
}


Learn, learn and learn better than work, work and work.
Written on: 01. 09. 2020 [09:26]
IgorIVS
Игорь Шерстобитов
Topic creator
registered since: 12.03.2020
Posts: 15
Спасибо, учту на будущее, не понял фразу про библиотеки.



20980