From e01c6703b102cc1e1d4ce193f69347db82359653 Mon Sep 17 00:00:00 2001 From: Ricardo Olsen Date: Wed, 20 Mar 2019 16:05:47 -0300 Subject: [PATCH] Version 6.2. --- docs/oshmi_configuration_manual-en_us.odt | Bin 11855675 -> 11856947 bytes htdocs/annotation.php | 4 +- htdocs/annotation_readonly.php | 4 +- htdocs/eventserver.php | 2 +- htdocs/screen.html | 2 +- htdocs/tabular.html | 198 +++- htdocs/websage.js | 112 ++- i18n/messages_i18n-en_us.js | 4 +- i18n/messages_i18n-pt_br.js | 4 +- i18n/messages_i18n.js | 329 +++--- installer/README.txt | 1103 +-------------------- installer/oshmi.nsi | 4 +- installer/release_notes.txt | 25 +- 13 files changed, 477 insertions(+), 1314 deletions(-) mode change 100755 => 100644 htdocs/websage.js mode change 100644 => 100755 i18n/messages_i18n-en_us.js mode change 100644 => 100755 i18n/messages_i18n-pt_br.js mode change 100644 => 100755 i18n/messages_i18n.js mode change 100644 => 120000 installer/README.txt diff --git a/docs/oshmi_configuration_manual-en_us.odt b/docs/oshmi_configuration_manual-en_us.odt index d1eb38f5db73937dd2f9e2add72af5a9f517ab3c..05d782c026524364c962a601dd7bd43b8ef2cdda 100644 GIT binary patch delta 70518 zcmZ6x19T)>(=HriV%w96ZQHhOPn?N5n51J{6Wht8gNbcTY}@wDIrn?-`~82f^{lR{ zT~*tASMBb$iCO4|#aU=1WjRPFOfWDwFfc|B>v$wtq|Yx!;F}zm6apBSRGm2i1b9Va z0E837P;cTD1kabXxuwwQu-bAYKor zUR-Rn!HPMz0TWdaFafaXx=@GyWEK5d3}9Y#S16 zt-^uYT?;dOh&Fl9(Cn3iCgYytJBReTrC9BQnbzS_EAiYEGCp$-(0#S#tbBvYc^e=b zu(z3wsoCBux9@hkBd9Ih%PvhHj~Ha)#ECRJ?mzufnf~RsZVte*65nVKH{JX8rOFTn zAmNMeL9>s&A}$}odP7&c&t2GEv+gD+&4>6a2Y+WG zFBYRr-8;oS;90OOFH7N zNsF{hjYXr*kOp9y<0P6vaqS#86&k%2SgK=a^mzM@$IzlMVI-FW8Jt4=;YUhB?3+i{iZ>kVWQVXI{5H!lc$bn0zDOU zq!Zgo*^Z=^zUJ8Gn-+=|*6aNJM(8*sbjCNMr{5&uW(7S}9Mp7s0&GWRuDVp-ci)sk znuw-V9j~opqdN5if>cchWb?-V{8pqFt@=2wQ5D8Rn*12F%fVH4MtN48DFN{40_gvY zX?bU~MG*kB!Z1iykO4jGrG3QEuW@&km)UfeYgef!aj8jH2`X-Gqdv&OoXc-oonV;~ zT4RlD&lGdeCDVGzM*N#JAKJ7OcB!3RCVVNGwQ?&tf@_+&z1`P;+V`VtpL5#_b1&`f zzMPg-3etPD>yxgT(QWJ{&HY}ikUj;M5FgwS?*0pi90creRGJ*hPd3w*Nqi#}ItB6S z9M=G#nL?c5^~K*3x9Ily|5k=YAw-_W@x~8nykxJxkn}2T&bfs}0>_mke1*)q2{-rm zt;`1$)uaM#Wv=Dr*i*qykONt<6U^@-Rtcs5K*(7->D@o}%D*i>IuVLei1|?Ekzu#{ zPv!vru%HpmEI#V1Cp_YrQ}1I{0}n7|wmnKyRmms`$=6gOui^?jcEf*=It&=PlJJRX z`CH=KuYskq{Mh&QaJB6deB|Ntrzzt}PM{3k4nNDUGEi*g2NTt%EbEg!Ly(Q*+sUyxikh-;8LZe3>R&Of5+U<#grAo_v~EcQN`B1!qOm;t zpc!+OkT{<2O_3rlZ`hrSDpz9kmB~cBixsb@h`eKi#guvW)Kfd3>y3y=!*f4fT6F?fP*#Xt8YM=Zw>a}Rv11WWYKPQ!JR z2C9hb3%{@C4?J33Az@{HY1O1{(eb(T9FcNWzxXhBMCQ5}Q=}|eKKY@VtX-XzTtNHg z8)&K5z~l3)*# zn80V>sYA`I0ACZ{!*Ta*$GT7?djB$)czQ3L)(p5bIK_j`yEs=nGitRTz1Ij(k%Vo> z-_{m$iy6z>zNs-Y2{;+}NYp*Q4Sk7*!TE64Z1ePID{q)P4tK(So^#1Y?Xzu>x~n*@ z_MbdR)-nW*zfrBSVzM8HZjXpiwPw|j2=X1GIwD>>KFkptByL{vK3{s3Suky!yXzms zd)~Rv!$#{;n5wk6D-Dm9j6?toD_$Z^JYT|Bn`T@T+$G9jVjU`|1wpg=x|KL6ng<^K zxa`N|x5Tfjw?4u1cPZ6*)tWU}MrrFhdU;0-<#UmPvJZABBK<(!_R^J0;e+YT;S;q3 zgOYYF1IH~}*Y`bFPS_^S@Ms(uf)K$JZn4F+xl`irC|tZ54#AM!kMn@`acmbqY3qC6 z!fza9GH*iVRaMCAN46)f&1;LxF)24>d7K37uoGFO^Ez&pDo#DF6LHFI%SuZ%D+CVi z2TQe%?bdFphKbLP%AOQW$V=@wp+t)t{#BDP4*4bFBtK>sVh&A;&IP67$_V63>MDlx zoqTKdi;cb71{U>ne$-1&se3lfsha%7b>j356p%uMQPYbaCgeY6%qH^uHI>6qIisU= zi0E|T+VMU;JWFZO zzrqN&U2tPvYUrokSbYYOf@#h7X-6MCP9jHXNyKPnsEz3yTNup&IN$xS1>?YUl))XC zp%7{ztuCQhZdRF;g>x*0Q{Z-3HqJ^HKg}nQSdi#Q1Ca1PLBVIjP)Tv#`=)g0{@D-p;QQgTK7;Ot$XNq ztpAGK5Mh9Bh_E0xL^vwK{}>YjTdCndt<>-%jsF!Dtigi{*1j52O1Zrv$(f5aB0?KqVmJS-1a+)96WnY4oI@Ao~RQCn!Gg6_iF#x%vOB34y6V zN>D2Bn{xYq>zsB#0!}+1e*)zbsGmRsO*^2+j{e6vArMA_>J!u;7zvvH4h#X%TMz#e z1R!rcLKOY~XcGW2(s@6@_X++_2z)}Y1S4H&=|38TKzS3IPtbzoP3Ro{*QhRH(E}H; z7(k0yjEy}1Xahf|_!BH3XJ1yW+5gxR06%YoPcVVXm6-eJ{}n6$)+7M2P4V;${mcG4 z*8S+*pni0o|J~OlLIqF~q2m9ZH!gMwAQ!vjC!|1J?9z*v|5p6z0Mreoy4{!>um%tH z-!zoY`%RN?;B-fC6l{g?PGWBZqgXjA>a zD>9;0RsBCjpJuJ9=>Kx%EuT(&RvQshQCk1U$*1W5nkcuba{a6H@0y1~lLbPd$$df| z1cj#Hi~#r?E5*<4^Z!1dK|Pp*g_{YZmxFy(vYg`zGivCAKuE47U3`-H3AmofY`!!& z0V6)n;e;`@t|di0gp9;QxOY$vDGuG;PqRXYAdg`{NBWZ$^>XB>nU3~@I_~H}e=36=0 zF)I!Zg^?5Tiag2M2}RfUx5 z8zrdWxBDVjt+6RE$MQ>ES8fcDGVoyeJ%=D^N@b_{qe73Z;!C_Z?aAMwEJ>OgPOJqw zc}6qi1YNzcWC?U^Br6pc9-DHJ(Kr_5RzN=S$=tuholyH7d>jhC!2SmCl3A^PmCcgV zCmMje-b$N-OIKk15^Ov*-2D|zVGlQIiXRzB%BAOsEU%_vV)~rjKz3`HhZL$~XF-m) z#-`Xnw!vRn^cH>*LVvXrJNQdo=P>!tgX}thlH@hniN94ZbEi$0uIgzHBb!H)oUw~ED=yY%#ut?e=zOs*G=8izg}0Ym z;m0*dQS%{$Naj1hb~MssU_Wa4@GC~#;lQED=E=Jvns(nrHfcm#Hb8NbB9GO)h)6eZ zgIVYoU)t*5)udNrr}`4(=-|je?MtE;y}xTC1?tw@Pc*cz_W;k_wBnu?Zw!25K;jsH zlVoqC(?^*s*$Ef`7|ic;kIM5acoU%sHaubx@X%p%IKyUoMsq9;2U(Hwub$g~6JmB! zNJdyl7)W_1%m&bvJg;kd+4=a_sTEk5nYo@@Z)rwv?!n5DYRY)QCLql2nA^F!IugLv z@5sYhDq(iuApj2$duYv?kn6LYcBNfRd{Z1ny#UZ85eB&-y(P4PztbZLdruZVGEE z`|Bu+^P#iJTpQk|#vjvgOKcUCc<#&Qln8sVN|=y4Ola5ZC_PsB)Xv&2+XUp@c>J8j z+&I?Rl+lpJ74SkPT4d{q20QLBQ;C>>weWCw=RYmP01&lHTb{xC`p1&(*M-XLeR7T! z)K>o)!F8uF)y7qc|H1ANr=f|YPRJ#@d@PTy(UFwJv3pkyB2?jF+P+sXOt-6g$F*parCOPw~z9@yOV zp;?sxG2I#`Xchak>ELLnYV7zktwC%u4v%BYCKcZJC3%I85aLi>G$(W-TP0R8^Exuwr!qAeN9Z=pd*ExcW}>S^fK)m+zxFy zE!-Wu>lw&ryA=LW9HT|_28uv(=(-9TPontBcqbB>)fg{>`pZ0z%U*+@6866Wr{nC9JxhKnsl(T-oZtU;7W=hiPlfwOy6ZG=(9RU5T zto87axjA|am*^-;b1-kl_0)0F5;w~Yv72w+O2@y*@0f+GfQT*Ft%){P7gBxB zz4?BP418jSw$VIQn z#g53uL-0BYOuG=WH-Px|owwOb5YYT+|NYAJ`_-&rUhgj!F-Nr}X z1>pGMW9#A9%Nx_{dlBHNr}K5D^L4rNH5KqQ1GsDXI7axm6FOj%kH~nSKamo8+N<%u z*+1c8s__Q29s6+}`mrCrIZnNpPrbNJz0Br5;Bv;<+~Ni*gzSYSz+nWK{$08kUSra1-g-mZVB zKpMSckaN&}Pgb#v9C3AhGvWQT#Zrw5n*w1G14Jh(ZsdM+rr#VYpRs`JisDvNL zJXWGQm(*J=+WUq>TCZvQ7p%2KeQE1ba%ON6R5{F+{jR}#SXV5Oej4Sf;vcySnkv@G^wVk zllP2=UdHcDDiNLohrTA?&P8rJ_T~iV>)?9EIn6cEYOV3L0H~uEZc^sZus6UPf*>#h z(UiW0he-eOg_P8AI~|7mbKqu!7R+)W8CkvPMw$0Vus}0m%=WsOirRXhofm7OGQBtT z7Z_Zwi-s|8cpft6O$r&AUO#$}G>r$(sxl^%NSR;uPM)L9uqixzb{W4Dy*CG0I4mlX zU@@`oWokmPrxRX6h6O2WBp*FyS@(23du};DYF7M4WJ08^bil6``TlTWQhy=qbh(Z~ zTX6g$c_^%|TfxPwknux{P8k0c`loZtjOXg@LC3!Ph?#*VnYK@TK#;i6t+kbitoPPB#G{VR)Jt%ZUp^!DF7k*es zC*gDAeX5V3#mhuE%xr2wEcIA7Wbh<5aC>ErXzh-R^udeYCsnwnEBJVk@6j8*fn+U@ zWw&8)CL05pCYg7oxSmNqU!g5^TBgURW%GtoT3)z2H@X8Dq7Cos_bYvNcw-kE(hc_u zK=c>r8G*VZ{02jRV%JYT1oa5S@pWcEPc;DN-fxqUzbq*BSh=d1rOO^_f9R)Ms1%bn zbA5Lbec+tlKQ{gO8~laybgQd9xfwJZ__{LrYon8n13uk%moOuSWDsw~x%&h1pYa_W z{XlG`2SW!F&V>A*_l*A;qSWWd&!{$Lbtr|j`Bx2T{uH!DGJlYz?;wMP2n`L}T!9u% z(vJ#d5Gk&V8C1<`w!ciPXluptq$xI%ypwl8hguiAWq=`)CEMtPP#F^*8^w{LXGtQz zFONaDo=$qgtaQUo?M=OF%-h-qKxeFIl0E9x_-PlyU<3!os6&F#X5X z!^Vda0LLrmV#g4s%jz#NQ4ik{Q;BSC9(MdGR^XU?Y}yHK0bbbf4??tLF`$fGuN3<_G;CsZNLNR0$o`~ z+^Y|>u7~sK+`_Bt>k#l0TTgb(Zsc^UaX69e3PSsK1InilR+b5`p6=mnv-r^G_mNn< zQvXEg{rVG;3GfuzZlhplsWEH-ZX4AYIs72g|C=2dyC#y1@m#TN{0&fWa{((-t3wMQ zTgo+U(N3AG*u7|(ekkg_5ECjkacoxOT_tn13cfN{`N__SY*2^B_MF~u6ne!&o=?HF zS+RR%`F)r8?N+G6-+gCw8hQ!&z5;gg)dDkd51WmQsz*iocST%v5c4|eKm`*s-tS9G z2hS^0f8Vy7lBKDYDR%$@uzrtP%l@Pxn(O6s_NB9RF@ARs(d3NfCu*cdO_<1!7M*8^ zgqp{+aZXG6daUcMGf9*m-QL3i#;tS`q;K{4d6OjZEna8d2M9l^f59RNrXN?Y;&?!{ zDjlTvEe5DRrjw>IkPisk7eG~7G=LfT{#pVHe+{eV6!IFwPW#c9$Ck=_bNJFJXa2NrMf1dG^pF?{LX69- zLEtl%AKCTbwB4HQJQrB?|B0|4Rv!XLml# K1K+bjIX;5vme1LT|lzW-PR?c*Fe; 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 O9+6g}+`A;~^Zx@*MHdkO delta 69359 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 WzXs796dpok{59dXWAh7&Pd@=~X%kZb diff --git a/htdocs/annotation.php b/htdocs/annotation.php index 7796ff7..ec4f96f 100755 --- a/htdocs/annotation.php +++ b/htdocs/annotation.php @@ -37,13 +37,15 @@ { $p_CONTENT = trim($p_CONTENT); - // Forward request to redendant HMI if exists + // Forward request to redundant HMI if exists $otherhmiip=""; $port=51909; // Parse with sections $ini_array = parse_ini_file("../conf/hmi.ini", true); if ( $ini_array["REDUNDANCY"]["OTHER_HMI_IP"] != "" ) $otherhmiip = $ini_array["REDUNDANCY"]["OTHER_HMI_IP"]; + if ( $ini_array["REDUNDANCY"]["HTTP_PORT"] != "" ) + $port = $ini_array["REDUNDANCY"]["HTTP_PORT"]; if ( $otherhmiip != "" ) if ( $_SERVER['REMOTE_ADDR'] != $otherhmiip ) { diff --git a/htdocs/annotation_readonly.php b/htdocs/annotation_readonly.php index a67b9a0..5c60d1d 100755 --- a/htdocs/annotation_readonly.php +++ b/htdocs/annotation_readonly.php @@ -38,13 +38,15 @@ { $p_CONTENT = trim($p_CONTENT); - // Forward request to redendant HMI if exists + // Forward request to redundant HMI if exists $otherhmiip=""; $port=51909; // Parse with sections $ini_array = parse_ini_file("../conf/hmi.ini", true); if ( $ini_array["REDUNDANCY"]["OTHER_HMI_IP"] != "" ) $otherhmiip = $ini_array["REDUNDANCY"]["OTHER_HMI_IP"]; + if ( $ini_array["REDUNDANCY"]["HTTP_PORT"] != "" ) + $port = $ini_array["REDUNDANCY"]["HTTP_PORT"]; if ( $otherhmiip != "" ) if ( $_SERVER['REMOTE_ADDR'] != $otherhmiip ) { diff --git a/htdocs/eventserver.php b/htdocs/eventserver.php index c64afb5..ed51fa8 100755 --- a/htdocs/eventserver.php +++ b/htdocs/eventserver.php @@ -135,7 +135,7 @@ $nponto = 0; $dbsde = new PDO( 'sqlite:../db/soe.sl3' ); - $dbsde->setAttribute(PDO::ATTR_TIMEOUT, 3); + $dbsde->setAttribute(PDO::ATTR_TIMEOUT, 8); $dbsde->exec ( "PRAGMA synchronous = NORMAL" ); $dbsde->exec ( "PRAGMA journal_mode = WAL" ); $dbsde->exec ( "PRAGMA locking_mode = NORMAL" ); diff --git a/htdocs/screen.html b/htdocs/screen.html index f6e3689..c513344 100755 --- a/htdocs/screen.html +++ b/htdocs/screen.html @@ -122,7 +122,7 @@ diff --git a/htdocs/tabular.html b/htdocs/tabular.html index c2558fd..f95e15a 100755 --- a/htdocs/tabular.html +++ b/htdocs/tabular.html @@ -638,6 +638,97 @@ setTimeout( WebSAGE.mudaFiltro, 10 ); } +// Filters saved in localStorage +var almFilter={}; +if (storageAvailable('localStorage')) +{ +var storedData = localStorage.getItem("almFilter"); + if (storedData) { + almFilter = JSON.parse(storedData); + } +} + +// create missing substation filters inside a div +for (var se in Lista) + { + if (Lista[se] == "") + continue; + var ytop = 2; + if ( document.getElementById( "DIV_" + Lista[se] ) === null ) + $( "#DIV_SUBSTALMFILT" ).prepend( + "
"+ + Lista[se] + + "
" + + "" + + "0" + + "" + + "0" + + "
" ); + + if ( typeof( WebSAGE.g_alminfo[ Lista[se] ] ) === 'undefined' ) + { + WebSAGE.g_alminfo[ Lista[se] ] = { countnack: 0, + countack: 0, + filterout: false, + minpriorack: 10, + minpriornack: 10, + is_subst: true }; + } + + if( WebSAGE.isAlarmsViewer() ) + if ( Lista[se] in almFilter ) + { + WebSAGE.g_alminfo[ Lista[se] ].filterout = almFilter[Lista[se]]; + } + } + +if ( WebSAGE.isAlarmsViewer() ) + { + var xleft = 230; + var ytop = 5; + for ( var priority in [0,1,2,3,4,5,7,8,9] ) + { + if ( document.getElementById( "DIV_" + priority ) === null && priority <= 3 ) + { + $( "body" ).append( + "
"+ + priority + + "
" + + "" + + "0" + + "" + + "0" + + "
" ); + } + + if ( priority in almFilter ) + { + WebSAGE.g_alminfo[ priority ].filterout = almFilter[priority]; + } + } + WebSAGE.applyTableStyle(); + + // sort divs in name (id) order + var main = document.getElementById( 'DIV_SUBSTALMFILT' ); + if (main !== null) + [].map.call( main.children, Object ).sort( function ( a, b ) { + return ((a.id > b.id)? 1 : -1); + }).forEach( function ( elem ) { + main.appendChild( elem ); + }); + } + // document.getElementById("SELSE").onChange=WebSAGE.mudaSE; }, @@ -750,12 +841,16 @@ applyTableStyle: function() { +var almFilter={}; + // assemble the filterout list WebSAGE.g_filterOutList = []; for ( var substorpri in WebSAGE.g_alminfo ) { if ( WebSAGE.g_alminfo.hasOwnProperty(substorpri) ) { + almFilter[substorpri] = WebSAGE.g_alminfo[substorpri].filterout; + if ( WebSAGE.isAlarmsViewer() ) { if ( WebSAGE.g_alminfo[substorpri].filterout ) @@ -771,6 +866,9 @@ } } +if (storageAvailable('localStorage')) + localStorage.setItem("almFilter", JSON.stringify(almFilter)); + // reapply line styles for( var i = 0; i < L.length; i++ ) { @@ -931,20 +1029,62 @@ } // container to put in per substation filters - if ( document.getElementById( "DIV_SUBSTALMFILT" ) === null ) - $( "body" ).append("
"); + if ( document.getElementById( "DIV_SUBSTALMFILT" ) === null ) { + $( "body" ).append("
"+ + "
" + + "  " + + "" + + "
" + + "
"); + document.getElementById("ZZCB_SELECTALL").value = Msg.SelectAll; + document.getElementById("ZZCB_UNSELECTALL").value = Msg.UnselectAll; + document.getElementById("ZZCB_SELECTALL"). + addEventListener("click", + function(event) { + for ( var sorp in WebSAGE.g_alminfo ) + { + if (WebSAGE.g_alminfo[sorp].is_subst) + { + WebSAGE.g_alminfo[sorp].filterout=true; + } + } + WebSAGE.applyTableStyle(); + }); + document.getElementById("ZZCB_UNSELECTALL"). + addEventListener("click", + function(event) { + for ( var sorp in WebSAGE.g_alminfo ) + { + if (WebSAGE.g_alminfo[sorp].is_subst) + { + WebSAGE.g_alminfo[sorp].filterout=false; + } + } + WebSAGE.applyTableStyle(); + }); + document.getElementById("DIV_SUBSTALMFILT"). + addEventListener("mouseover", + function(event) { + document.getElementById("DIV_SUBSTALMFILT").style.height=""; + }); + document.getElementById("DIV_SUBSTALMFILT"). + addEventListener("mouseout", + function(event) { + document.getElementById("DIV_SUBSTALMFILT").style.height="35px"; + }); + } if ( document.getElementById( "DIV_" + substorpri ) === null ) { // create priority and substation alm boxes if ( WebSAGE.g_alminfo[substorpri].is_subst ) { // create substation filters inside a div - ytop=0; - $( "#DIV_SUBSTALMFILT" ).append( + ytop=2; + $( "#DIV_SUBSTALMFILT" ).prepend( "
"+ + "cursor:pointer;box-shadow: 1px 1px 1px #666666;background-color:white;width:48px;height:20px;border-radius:4px;border:1px solid #777;padding-top:2px;padding-left:2px;padding-right:2px;line-height:80%;font-size:15px;font-family:trebuchet ms,tahoma,helvetica,arial'>"+ substorpri + "
" + ""+ + "left:" + ( xleft + substorpri * 58 ) + "px;" + + "cursor:pointer;box-shadow: 1px 1px 1px #666666;background-color:white;width:48px;height:20px;border-radius:4px;border:1px solid #777;padding-top:2px;padding-left:2px;padding-right:2px;line-height:80%;font-size:15px;font-family:trebuchet ms,tahoma,helvetica,arial'>"+ substorpri + "
" + "" + - "" + + "' style='float:right;-webkit-filter:contrast(.7);text-align:center;font-size:12px;border-radius:15px;border:2px solid;margin:1px;background-color:silver;border-color:silver;'>" + + "0
" + "" + - "" + - "
" ); + "' style='float:right;text-align:center;font-size:12px;border-radius:15px;border:2px solid;margin:1px;background-color:silver;border-color:silver;'>" + + "0" + + "
" ); } } - else - { - if ( ! WebSAGE.g_alminfo[substorpri].is_subst ) // reposition priority alm boxes - document.getElementById( "DIV_" + substorpri ).style.left = ( xleft + cntpr * 58 ) + "px"; - } // update alarm boxes state/counts $( '#DIV_' + substorpri ).css( 'opacity', WebSAGE.g_alminfo[substorpri].filterout ? '.25' : '1' ); @@ -1117,7 +1253,6 @@ if ( pri === 0 ) { stl = 'color: ' + ColorOfPriority[ pri ] + ';'; - stl += 'font-weight: bold;'; } else { @@ -1125,6 +1260,17 @@ } } + if ( pri === 0 ) + { + WebSAGE.g_tbl.rows[id+1].cells[WebSAGE.g_COL_DESCR].style.fontWeight = "bold"; + WebSAGE.g_tbl.rows[id+1].cells[WebSAGE.g_COL_EVENTO].style.fontWeight = "bold"; + } + else + { + WebSAGE.g_tbl.rows[id+1].cells[WebSAGE.g_COL_DESCR].style.fontWeight = "inherit"; + WebSAGE.g_tbl.rows[id+1].cells[WebSAGE.g_COL_EVENTO].style.fontWeight = "inherit"; + } + if ( WebSAGE.g_tbl.cellsx( id, WebSAGE.g_COL_QUALIF ).indexOf("L") != -1 || WebSAGE.g_tbl.cellsx( id, WebSAGE.g_COL_QUALIF ).indexOf("P") != -1 ) @@ -1180,7 +1326,10 @@ } */ WebSAGE.g_tbl.setRowTextStyle( id, stl ); - + + WebSAGE.g_tbl.rows[id+1].cells[WebSAGE.g_COL_DATA].style.fontSize = "smaller"; + WebSAGE.g_tbl.rows[id+1].cells[WebSAGE.g_COL_QUALIF].style.fontSize = "smaller"; + if ( WebSAGE.isAlarmsViewer() ) { // differentiate the substation name @@ -1292,7 +1441,10 @@ document.getElementById("OPC_CMDANORM").style.display = "none"; document.getElementById("OPC_FILTROS").style.display = "none"; - document.getElementById("IMGTABULAR").style.display = "none"; + // document.getElementById("IMGTABULAR").style.display = "none"; + $('#IMGTABULAR').attr('src', Imgs["ANORM_ID"] ); + $('#IMGTABULAR').attr('title', "" ); + document.getElementById("imgReconheceTudo").style.display = ""; }, diff --git a/htdocs/websage.js b/htdocs/websage.js old mode 100755 new mode 100644 index 0a961fa..3baf247 --- a/htdocs/websage.js +++ b/htdocs/websage.js @@ -480,6 +480,7 @@ var i, t, elOptNew, elSel, titu, pos, nohs, textolink, tmp, idtela; // seleciona tela aberta no combo box WebSAGE.g_seltela.selectedIndex = i; + break; } } @@ -2597,15 +2598,59 @@ if ( typeof( inksage_labeltxt ) != 'undefined' ) break; case "script": for ( i = 0; i < inksage_labelvec[lbv].list.length; i++ ) - { - item.setAttributeNS( null, "on" + inksage_labelvec[lbv].list[i].evt, "thisobj=evt.currentTarget;" + inksage_labelvec[lbv].list[i].param ); - if ( inksage_labelvec[lbv].list[i].evt.indexOf("mouse") >= 0 ) - if ( typeof(item.blockPopup) == "undefined" ) - if ( item.style !== null ) - item.style.cursor = "pointer"; - } - break; - case "text": + { + switch (inksage_labelvec[lbv].list[i].evt) + { + case "mouseup": + case "mousedown": + case "mouseover": + case "mouseout": + case "mousemove": + case "keydown": + item.setAttributeNS( null, "on" + inksage_labelvec[lbv].list[i].evt, "thisobj=evt.currentTarget;" + inksage_labelvec[lbv].list[i].param ); + if ( inksage_labelvec[lbv].list[i].evt.indexOf("mouse") >= 0 ) + if ( typeof(item.blockPopup) == "undefined" ) + if ( item.style !== null ) + item.style.cursor = "pointer"; + break; + case "exec_once": + try + { + function evalprot(src) + { + // create a context to protect some vars from being changed by the eval code + var lbv = null; + var i = null; + return eval(src); + } + evalprot('var thisobj=document.getElementById("' + item.id + '"); ' + inksage_labelvec[lbv].list[i].param ); + } + catch( err ) + { + $('#SP_STATUS').text( err.name + ": " + err.message + " [8]" ); + document.getElementById("SP_STATUS").title = err.stack; + } + break; + case "exec_on_update": + break; + case "vega": + case "vega-lite": + case "vega4": + inksage_labelvec[lbv].tag = "#" + inksage_labelvec[lbv].list[i].evt; + inksage_labelvec[lbv].src = inksage_labelvec[lbv].list[i].param.split('\n')[0]; + inksage_labelvec[lbv].prompt = inksage_labelvec[lbv].list[i].param.substring(inksage_labelvec[lbv].list[i].param.indexOf("\n") + 1); + WebSAGE.SetIniExtended( inksage_labelvec, lbv, item ); + break; + case "vega-json": + case "vega4-json": + inksage_labelvec[lbv].tag = "#" + inksage_labelvec[lbv].list[i].evt; + inksage_labelvec[lbv].prompt = inksage_labelvec[lbv].list[i].param; + WebSAGE.SetIniExtended( inksage_labelvec, lbv, item ); + break; + } + } + break; + case "text": break; case "clone": break; @@ -2665,9 +2710,9 @@ preprocessaTela: function() tmp = SVGDoc.getElementsByTagName( "image" ); for ( i = 0; i < tmp.length; i++ ) { nohs.push( tmp.item(i) ); } - tmp = SVGDoc.getElementsByTagName( "g" ); - for ( i = 0; i < tmp.length; i++ ) - { nohs.push( tmp.item(i) ); } +// tmp = SVGDoc.getElementsByTagName( "g" ); +// for ( i = 0; i < tmp.length; i++ ) +// { nohs.push( tmp.item(i) ); } tmp = SVGDoc.getElementsByTagName( "circle" ); for ( i = 0; i < tmp.length; i++ ) { nohs.push( tmp.item(i) ); } @@ -2891,7 +2936,7 @@ var mudou_dig = WebSAGE.g_sha1ant_dig=='' || WebSAGE.g_sha1ant_dig!=Sha1Dig; WebSAGE.visibEtiq( tag ); } - if ( vt != WebSAGE.g_retnok || WebSAGE.InkSage[i].attr === "color" || WebSAGE.InkSage[i].attr === "set" ) + if ( vt != WebSAGE.g_retnok || WebSAGE.InkSage[i].attr === "color" || WebSAGE.InkSage[i].attr === "set" || WebSAGE.InkSage[i].attr === "script" ) { switch ( WebSAGE.InkSage[i].attr ) { @@ -2957,10 +3002,10 @@ var mudou_dig = WebSAGE.g_sha1ant_dig=='' || WebSAGE.g_sha1ant_dig!=Sha1Dig; WebSAGE.InkSage[i].valores[tag].push( vt ); WebSAGE.InkSage[i].datas[tag].push( d.getTime() ); - if ( WebSAGE.InkSage[i].parent.hasOwnProperty("_bbox") ) - bb = WebSAGE.InkSage[i].parent._bbox; - else - bb = WebSAGE.InkSage[i].parent.getBBox(); + if ( WebSAGE.InkSage[i].parent.hasOwnProperty("_bbox") ) + bb = WebSAGE.InkSage[i].parent._bbox; + else + bb = WebSAGE.InkSage[i].parent.getBBox(); bb.left = bb.x; bb.right = bb.x + bb.width; @@ -3423,6 +3468,39 @@ var mudou_dig = WebSAGE.g_sha1ant_dig=='' || WebSAGE.g_sha1ant_dig!=Sha1Dig; break; case "clone": break; + case "script": + for ( j = 0; j < WebSAGE.InkSage[i].list.length; j++ ) + { + switch (WebSAGE.InkSage[i].list[j].evt) + { + case "exec_on_update": // execute a script every time data is updated + try + { + function evalprot(src) + { + // create a context to protect some vars from being changed by the eval code + var i, j, val, vt, mudou_dig, mudou_ana = null; + return eval(src); + } + } + catch( err ) + { + $('#SP_STATUS').text( err.name + ": " + err.message + " [8]" ); + document.getElementById("SP_STATUS").title = err.stack; + } + break; + case "vega": + case "vega-lite": + case "vega-json": + case "vega4": + case "vega4-json": + WebSAGE.SetExeExtended(i); + break; + default: + break; + } + } + break; default: break; } diff --git a/i18n/messages_i18n-en_us.js b/i18n/messages_i18n-en_us.js old mode 100644 new mode 100755 index a5c56cc..87bce16 --- a/i18n/messages_i18n-en_us.js +++ b/i18n/messages_i18n-en_us.js @@ -4,7 +4,7 @@ var Msg = { NomeProduto: 'OSHMI', -VersaoProduto: '6.1', +VersaoProduto: '6.2', NomeVisorTelas: 'Screen Viewer', NomeVisorEventos: 'Events Viewer', @@ -68,6 +68,8 @@ SELSE: 'Choose substation', SELMOD: 'Choose bay', Filtro: 'Filter by ID', TabNomesColunas: 'Point#,ID,Subst.,Descript.,Curr.St/Val,Flg,Cmd,Qualif.,Nor,Alarm time', +SelectAll: 'Select All', +UnselectAll: 'Unselect All', // dlginfo.html TENDTXT: '>Follow Measure', diff --git a/i18n/messages_i18n-pt_br.js b/i18n/messages_i18n-pt_br.js old mode 100644 new mode 100755 index c380e39..461f7ed --- a/i18n/messages_i18n-pt_br.js +++ b/i18n/messages_i18n-pt_br.js @@ -4,7 +4,7 @@ var Msg = { NomeProduto: 'OSHMI', -VersaoProduto: '6.1', +VersaoProduto: '6.2', NomeVisorTelas: 'Visor de Telas', NomeVisorEventos: 'Visor de Eventos', @@ -68,6 +68,8 @@ SELSE: 'Escolha a subestação', SELMOD: 'Escolha o módulo para filtrar', Filtro: 'Filtra pelo ID', TabNomesColunas: 'NPonto,ID,Subest.,Descr.,Est/Val Atual,Flg,Cmd,Qualif.,Nor,Hora Alarme', +SelectAll: 'Marcar Todos', +UnselectAll: 'Desmarcar Todos', // dlginfo.html TENDTXT: '>Acompanhar medida', diff --git a/i18n/messages_i18n.js b/i18n/messages_i18n.js old mode 100644 new mode 100755 index a5c56cc..461f7ed --- a/i18n/messages_i18n.js +++ b/i18n/messages_i18n.js @@ -4,116 +4,119 @@ var Msg = { NomeProduto: 'OSHMI', -VersaoProduto: '6.1', +VersaoProduto: '6.2', -NomeVisorTelas: 'Screen Viewer', -NomeVisorEventos: 'Events Viewer', -NomeVisorHistorico: 'Events Viewer - Hist', -NomeVisorTabular: 'Tabular Viewer', -NomeVisorAnormais: 'Alarms Viewer', -NomeVisorTendencias: 'Trend Viewer', -NomeVisorCurvas: 'Curves Viewer', -NomeDialogoInfo: 'Point Info', -NomeDialogoCmd: 'Command', +NomeVisorTelas: 'Visor de Telas', +NomeVisorEventos: 'Visor de Eventos', +NomeVisorHistorico: 'Visor de Eventos - Histórico', +NomeVisorTabular: 'Visor Tabular', +NomeVisorAnormais: 'Visor de Alarmes', +NomeVisorTendencias: 'Visor de Tendências', +NomeVisorCurvas: 'Visor de Curvas', +NomeDialogoInfo: 'Acesso ao Ponto', +NomeDialogoCmd: 'Comando', -FalhaWebserver: 'Webserver fail!', +FalhaWebserver: 'Falha no servidor Web!', // websage.js -BlqAnot: 'Command blocked by annotation.', -AcessCmd: 'Push to have access to command dialog.', -EstadoAtual: 'current state', -ConfNSuport: 'Unsupported configuration!', -BrowserNSup: 'Unsupported browser!', -Qualific: 'Qualifier', -QFalhado: 'FAILED', -QSubst: 'SUBSTITUTED', -QCalculado: 'CALCULATED', +BlqAnot: 'Acesso ao comando bloqueado automaticamente por presença de anotação.', +AcessCmd: 'Pressione para ter acesso ao comando.', +EstadoAtual: 'estado atual', +ConfNSuport: 'Configuração não suportada!', +BrowserNSup: 'Browser não suportado!', +Qualific: 'Qualific', +QFalhado: 'FALHADO', +QSubst: 'SUBSTITUIDO', +QCalculado: 'CALCULADO', QManual: 'MANUAL', -QNuncaAtu: 'NEVER_UPDATED', -QAlarmado: 'ALARMED', -QAnotacao: 'ANOTATION', -QAlmInib: 'INHIBITED_ALARM', -QNaoNormal: 'PERSISTENT_ALARM', -QLimiteViol: 'VIOLATED_LIMIT', -QCongelado: 'FROZEN', +QNuncaAtu: 'NUNCA_ATUALIZADO', +QAlarmado: 'ALARMADO', +QAnotacao: 'ANOTACAO', +QAlmInib: 'ALM.INIBIDO', +QNaoNormal: 'ALM.PERSISTENTE', +QLimiteViol: 'LIMITE_VIOLADO', +QCongelado: 'CONGELADO', QNormal: 'NORMAL', -QDPIntermed: 'INTERMEDIARY', -QDPInvalido: 'INVALID', -QValor: 'value', -SELTELA_OPC1:'Choose a screen ...', +QDPIntermed: 'INTERMEDIARIO', +QDPInvalido: 'INVALIDO', +QValor: 'valor', +SELTELA_OPC1:'Escolha a tela ...', // Events.html -Eventos: 'Events', -ModoNormal: 'Normal Mode', -ModoAgregado: 'Aggregated Mode', -ModoPanico: 'Panic Mode', -ModoCongelado: 'Frozen!', -ModoHistorico: 'Historical', -HIST: '>Historical Events', -SPDATAINI: 'Date: ', -SPHORAINI: 'Initial Time: ', -SPFILTRO: 'Filter: ', -btBuscaHist: 'Find', -EveNomesColunas: 'Date,Time,ms,point#,ID,Subst.,Description,Event,Flags,Qualif.', -ConfirmaSaida: 'Close Events Viewer?', -EveFiltradosSE:'FILTERED', +Eventos: 'Eventos', +ModoNormal: 'Modo Normal', +ModoAgregado: 'Modo Agregado', +ModoPanico: 'Modo Pânico', +ModoCongelado: 'CONGELADO!', +ModoHistorico: 'Histórico', +HIST: '>Histórico de Eventos', +SPDATAINI: 'Data: ', +SPHORAINI: 'Hora Inicial: ', +SPFILTRO: 'Filtro: ', +btBuscaHist: 'Buscar', +EveNomesColunas: 'Data,Hora,ms,nponto,ID,Subest.,Descrição,Evento,Flags,Qualif.', +ConfirmaSaida: 'Realmente deseja fechar o visor de eventos?', +EveFiltradosSE:'FILTRADOS', // tabular.html -SPCOMANDAVEIS: 'Commandable', -SPANORMAIS: 'Alarms', -SPSUBEST: 'Substation', -SPMODULO: 'Bay', -SPFILTROID: 'Filter (ID)', -SELSE: 'Choose substation', -SELMOD: 'Choose bay', -Filtro: 'Filter by ID', -TabNomesColunas: 'Point#,ID,Subst.,Descript.,Curr.St/Val,Flg,Cmd,Qualif.,Nor,Alarm time', +SPCOMANDAVEIS: 'Comandáveis', +SPANORMAIS: 'Alarmes', +SPSUBEST: 'Subest', +SPMODULO: 'Módulo', +SPFILTROID: 'Filtro (ID)', +SELSE: 'Escolha a subestação', +SELMOD: 'Escolha o módulo para filtrar', +Filtro: 'Filtra pelo ID', +TabNomesColunas: 'NPonto,ID,Subest.,Descr.,Est/Val Atual,Flg,Cmd,Qualif.,Nor,Hora Alarme', +SelectAll: 'Marcar Todos', +UnselectAll: 'Desmarcar Todos', // dlginfo.html -TENDTXT: '>Follow Measure', -TABULARTXT: '>Bay Tabular Screen', -CURVTXT: '>Open in Curves Viewer', -ANOTACAOTXT: 'Annotation:', -DESBLOQTXT: 'Unblock Command', -COMANDAR: 'COMMAND', -CBMOREINFO: '+ Other Options', -SPPONTOSUP: 'Supervised Point:', -ALRINTXT: 'Inhibited Alarm', -SPLIMSUP: 'Superior Limit', -SPLIMINF: 'Inferior Limit', -SPLIMHIS: 'Hysteresis', -SPALTVALOR: 'Change Value', -SAIR: 'EXIT', -CANCELAR: 'CANCEL', -FSINFO: 'Point Info', -FSBLKANNOT: 'Blocking Annotation', -FSANNOT: 'Annotation', -FSOPTION: 'Options', +TENDTXT: '>Acompanhar medida', +TABULARTXT: '>Tela tabular do módulo', +CURVTXT: '>Abrir no visor de curvas', +ANOTACAOTXT: 'Anotação:', +DESBLOQTXT: 'Desbloqueia Comando', +COMANDAR: 'COMANDAR', +CBMOREINFO: '+ Outras Opções', +SPPONTOSUP: 'Ponto Supervisionado:', +ALRINTXT: 'Alarme Inibido', +SPLIMSUP: 'Limite Superior', +SPLIMINF: 'Limite Inferior', +SPLIMHIS: 'Histerese', +SPALTVALOR: 'Altera Valor', +SAIR: 'SAIR', +CANCELAR: 'CANCELAR', +FSINFO: 'Informação', +FSBLKANNOT: 'Anotação de Bloqueio', +FSANNOT: 'Anotação Documental', +FSOPTION: 'Opções', + // dlgcomando.html -SPPASSO2: 'Choose a function and click the command button.', -CMDMOREINFO: '+ More Info', -SPPONTOCMD: 'Command Point:', -FSCMDINFO: 'Command Info', -FSCMDACTION: 'Command Action', -FSCMDOPTION: 'Options', +SPPASSO2: 'Escolha a função e clique o botão para comandar.', +CMDMOREINFO: '+ Outras informações', +SPPONTOCMD: 'Ponto de Comando:', +FSCMDINFO: 'Objeto do Comando', +FSCMDACTION: 'Ação de Comando', +FSCMDOPTION: 'Opções', // trend.html -yaxisleft: 'Show smaller values[up arrow]', -yaxisright: 'Show larger values [down arrow]', -yaxiszoomout: 'Less zoom [-]', -yaxiszoomin: 'More zoom [+]', -yaxisminus: 'Shorter [1]', -yaxisplus: 'Taller [2]', -yaxiscolor: 'Change color [3]', -xaxisleft: 'Backward [left arrow]', -xaxisright: 'Forward [right arrow]', -xaxiszoomout: 'Less zoom [/]', -xaxiszoomin: 'More zoom [*]', -xaxisminus: 'Smaller [<]', -xaxisplus: 'Larger [>]', -plotreset: 'Reset Options [0] [Num 5]', -ValorAtual: 'Current Value', +yaxisleft: 'Mostra valores menores [seta para cima]', +yaxisright: 'Mostra valores maiores [seta para baixo]', +yaxiszoomout: 'Menos zoom [-]', +yaxiszoomin: 'Mais zoom [+]', +yaxisminus: 'Reduz altura do gráfico [1]', +yaxisplus: 'Aumenta altura [2]', +yaxiscolor: 'Muda a cor do gráfico [3]', +xaxisleft: 'Retorna no tempo [seta para esquerda]', +xaxisright: 'Avança no tempo [seta para direita]', +xaxiszoomout: 'Menos zoom [/]', +xaxiszoomin: 'Mais zoom [*]', +xaxisminus: 'Reduz largura do gráfico [<]', +xaxisplus: 'Aumenta largura do gráfico [>]', +plotreset: 'Retorna ao zoom normal [0] [Num 5]', +ValorAtual: 'Valor Atual', Fim: "" }; @@ -121,84 +124,84 @@ Fim: "" var Titles = { // screen.html -ZOOMIN_ID : 'More Zoom [Num +]', -ZOOMOUT_ID: 'Less Zoom [Num -]', -ZPSobe: 'Up [Num 8]', -ZPDesce: 'Down [Num 2]', -ZPEsq: 'Left [Num 4]', -ZPCentro: 'Centralize [Num 5]', -ZPDir: 'Right [Num 6]', +ZOOMIN_ID : 'Aumenta [Num +]', +ZOOMOUT_ID: 'Reduz [Num -]', +ZPSobe: 'Move para cima [Num 8]', +ZPDesce: 'Move para baixo [Num 2]', +ZPEsq: 'Move para esquerda [Num 4]', +ZPCentro: 'Centraliza [Num 5]', +ZPDir: 'Move para direita [Num 6]', PRODUTO_ID: ( Msg.NomeVisorTelas + ' - ' + Msg.NomeProduto ), -TELAS_ID: 'Screens -->', -SELTELA: 'Choose Screen: [<]=previous, [>]=next, [1]=first, [2]=second, ..., [0]=tenth ', -CORFUNDO_ID: 'Click to change background color.', -AJUDA_ID: 'Help', -HORA_ATU: 'Time of last update. If old press [F5]!', -ANORM_ID: 'Show Alarms (unacknowledged and persistent alarms)', -SILENCIA_ID: 'Sicence beep! [F9]', -SP_ALARMES: 'There are new events! Click to open Events Viewer.', -VENTOINHA: 'If fan stopped, press [F5]!', -PROXTELAID: 'Next screen', -ANTETELAID: 'Previous screen', -PLAY_ID: 'Play Slideshow', -PAUSE_ID: 'Pause Slideshow', -TIMEMACHINE_ID: 'Time Machine', -TIMEMACHINECLOSE_ID: 'Close Time Machine', +TELAS_ID: 'Telas -->', +SELTELA: 'Escolha a tela: [<]=tela anterior, [>]=tela posterior, [1]=primeira tela, [2]=segunda tela, ..., [0]=décima tela ', +CORFUNDO_ID: 'Clique para alterar a cor de fundo.', +AJUDA_ID: 'Ajuda', +HORA_ATU: 'Hora da última atualização dos dados de supervisão. Se ficar antigo tecle [F5]!', +ANORM_ID: 'Mostra Visor de Alarmes (alarmes não reconhecidos mais os persistentes)', +SILENCIA_ID: 'Silencia Bipe! [F9]', +SP_ALARMES: 'Há eventos não reconhecidos! Clique para abrir o Visor de Eventos.', +VENTOINHA: 'Se esta ventoinha parar, tecle [F5]!', +PROXTELAID: 'Próxima tela', +ANTETELAID: 'Tela anterior', +PLAY_ID: 'Inicia Slideshow', +PAUSE_ID: 'Pausa Slideshow', +TIMEMACHINE_ID: 'Máquina do Tempo', +TIMEMACHINECLOSE_ID: 'Fechar Máquina do Tempo', // dlginfo.html -VALOR_HID: 'current value', -ESTADO_HID: 'current state', -SPQUALIF: 'Point qualifiers', -SPDESCR_SUP: 'Point descriptor', -SPCMDINTERTRAV: 'INTERLOCKED COMMAND!', -IMGANOT: 'Annotation', -ANOTACAO: 'Annotation Text', -TABULAR: 'Open bay tabular screen.', -TENDENCIAS: 'Open in Trend Viewer.', -DIVBLKCMD: 'Mark to unblock command (blocked by annotation).', -COMANDAR: 'Push to have access to command dialog.', -CBMOREINFO: 'Click to show more info and options.', -NPONTO_SUP: 'Point number and ID.', -VLRNORCTRLS: 'Allows to change the normal state.', -DIVINIB: 'When marked inhibits the alarms for this point.', -LIMCTRLS: 'Configures limits for bounds checking alarms.', -LIMSUP: 'Upper threshold for alarm.', -LIMINF: 'lower threshold for alarm.', -HISTER: 'Minimal change to generate a new alarm.', -DIVALTVALOR: 'Allows change point value.', +VALOR_HID: 'valor atual', +ESTADO_HID: 'estado atual', +SPQUALIF: 'Qualificadores do ponto', +SPDESCR_SUP: 'Descritivo do ponto', +SPCMDINTERTRAV: 'COMANDO INTERTRAVADO!', +IMGANOT: 'Anotação', +ANOTACAO: 'Texto da Anotação', +TABULAR: 'Abre tela tabular do módulo.', +TENDENCIAS: 'Abre visor de tendências.', +DIVBLKCMD: 'Marque para desbloquear intencionalmente comando (bloqueado pela presença de anotação).', +COMANDAR: 'Pressione para ter acesso ao comando.', +CBMOREINFO: 'Clique para mostrar mais informações/opções.', +NPONTO_SUP: 'Número e identificador do ponto.', +VLRNORCTRLS: 'Permite alterar o estado considerado normal.', +DIVINIB: 'Quando marcado, não registra alarme para o ponto.', +LIMCTRLS: 'Configuração de limites para geração alarme de medida fora de faixa.', +LIMSUP: 'Define o valor acima do qual será gerado alarme.', +LIMINF: 'Define o valor abaixo do qual será gerado alarme.', +HISTER: 'Variação mínima do valor para voltar a gerar alarme, após excedido um limite.', +DIVALTVALOR: 'Permite alterar o valor/estado do ponto.', // dlgcomando.html -COMANDO: 'Select the desired command action.', -EXECUTAR: 'Execute the command!', -CANCELAR: 'Cancel command.', +COMANDO: 'Selecione o comando desejado.', +EXECUTAR: 'Executa o comando!', +CANCELAR: 'Cancela a execução do comando.', // events.html -IMGEVENTOS: ( Msg.NomeVisorEventos + ' - ' + Msg.NomeProduto + ' - ' + '\nQualifiers: 0-9=Priority F=Failed X=Never updated K=Commandable A=Annotation L=Alarmed I=Inhibited alarm C=Calculated M=Manual S=Subtituted U=Freezed Y=Interlocked command \n+number=Number of additional hidden events when aggegated.\nClick to show/hide point number and ID.' ), -imgNormal: 'Normal Mode: show all events. [1]', -imgAgregar: 'Aggregated Mode: only last event shown for each point. [2]', -imgPanico: 'Panic Mode: aggregate and show only the most important events. [3]', -imgCongelar: 'Freezed Mode: do not update events for easier reading. [4]', -imgHistorico: 'Historical Mode: review older, acknowledged and erased events. [5]', -imgFontSizeUp: 'Bigger font. [+]', -imgFontSizeDown: 'Smaller font. [-]', -imgReconheceTudo: 'Acknowledge all events! [F8]. Use [CTRL] + Click to acknowledge one specific event.', -imgEliminaTudo: 'Erase all events! [F2]', -imgAlarmes: 'There are new events!', -HDATAINI: 'Date for seach of events. [6]=Current Date', -HHORAINI: 'Initial time to search [7]=Reset time', -HFILTRO: 'Filter to search events, e.g.: SUBST1 = search events of SUBST1. [8]=Erase', -imgGpsOnEsc: 'GPS time for events. Click to to show local time.', -imgGpsOffEsc: 'Local time for events. Click to to show GPS time.', -imgGpsOnFx: 'GPS time for events.', -imgGpsOffFx: 'Local time for events.', -imgFilter: 'Substation Filter. Mark what to show.', -imgClipboard: 'Copy to Clipboard.', +IMGEVENTOS: ( Msg.NomeVisorEventos + ' - ' + Msg.NomeProduto + ' - ' + '\nQualificadores: 0-9=Prioridade F=Falhado X=Nunca Atualizado K=Possui Comando A=Anotação L=Alarmado I=Alm.Inibido C=Calculado M=Manual S=Subtituído U=Congelado N=Não Normal Y=Comando Intertravado \n+número=Número de eventos adicionais escondidos quando agregados. \nClique para mostrar NPonto e ID.' ), +imgNormal: 'Modo Normal: mostra todos os eventos que chegam. [1]', +imgAgregar: 'Modo Agregar: agrega os eventos de um mesmo ponto, mostrando somente o último. [2]', +imgPanico: 'Modo Pânico: agrega e mostra somente os eventos mais importantes. [3]', +imgCongelar: 'Modo Congelar: congela a tela (não atualiza) para facilitar a consulta. [4]', +imgHistorico: 'Modo Histórico: consulta de histórico de eventos. [5]', +imgFontSizeUp: 'Aumenta Tamanho da Fonte. [+]', +imgFontSizeDown: 'Reduz Tamanho da Fonte. [-]', +imgReconheceTudo: 'Reconhece Tudo! [F8]. Use [CTRL] + Click do mouse para reconhecer um único alarme.', +imgEliminaTudo: 'Elimina Tudo! [F2]', +imgAlarmes: 'Há eventos não reconhecidos!', +HDATAINI: 'Data para a pesquisa de eventos. [6]=Data Atual', +HHORAINI: 'Hora a partir da qual serão pesquisados os eventos para a data estabelecida. [7]=Zerar', +HFILTRO: 'Filtro para busca dos eventos. Exemplo: CIN = eventos da SE CIN. [8]=Apaga', +imgGpsOnEsc: 'Eventos com hora do GPS. Clique para mostrar a hora local.', +imgGpsOffEsc: 'Eventos com hora local. Clique para mostrar a hora do GPS.', +imgGpsOnFx: 'Eventos com hora do GPS.', +imgGpsOffFx: 'Eventos com hora local.', +imgFilter: 'Filtro de eventos por subestação. Marcar as que se deseja observar.', +imgClipboard: 'Copia para Área de Transferência.', // tabular.html -LEGQUAL_ID: '\nQualifiers: 0-9=Priority F=Failed X=Never updated K=Commandable A=Annotated L=Alarmed I=Inhibited Alarm P=Persistent Alarm C=Calculated M=Manual S=Subtituted U=Freezed Y=Interlocked Command \nClick to show/hide point number and ID', -IMGTABULAR: ( Msg.NomeVisorTabular + ' - ' + Msg.NomeProduto + ' - ' + '\nQualifiers: 0-9=Priority F=Failed X=Never updated K=Commandable A=Annotated L=Alarmed I=Inhibited Alarm C=Calculated P=Persistent Alarm M=Manual S=Subtituted U=Freezed Y=Interlocked Command \nClick to show/hide point number and ID' ), -cbMostraCmd: 'Mark to show only commandable points. [1]', -cbForaNormal: 'Mark to show only alarmed points. [2]', +LEGQUAL_ID: '\nQualificadores: 0-9=Prioridade F=Falhado X=Nunca Atualizado K=Possui Comando A=Anotação L=Alarmado I=Alm.Inibido P=Alarme Persistente C=Calculado M=Manual S=Subtituído U=Congelado N=Não Normal Y=Comando Intertravado \nClique para mostrar NPonto e ID.', +IMGTABULAR: ( Msg.NomeVisorTabular + ' - ' + Msg.NomeProduto + ' - ' + '\nQualificadores: 0-9=Prioridade F=Falhado X=Nunca Atualizado K=Possui Comando A=Anotação L=Alarmado I=Alm.Inibido P=Alarme Persistente C=Calculado M=Manual S=Subtituído U=Congelado N=Não Normal Y=Comando Intertravado \nClique para mostrar NPonto e ID.' ), +cbMostraCmd: 'Mostra somente os pontos que possuem comando associado. [1]', +cbForaNormal: 'Mostra somente os pontos com estado alarmados. [2]', Fim: "" }; diff --git a/installer/README.txt b/installer/README.txt deleted file mode 100644 index d810295..0000000 --- a/installer/README.txt +++ /dev/null @@ -1,1102 +0,0 @@ -OSHMI - Open Substation HMI - Copyright 2008-2018 - Ricardo L. Olsen - (https://www.linkedin.com/in/ricardo-olsen/) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -The system will install to "c:\oshmi\". - -Acknowledgements: - - Inkscape - https://inkscape.org - Inkscape + SAGE - https://sourceforge.net/projects/sage-scada - Chromium - by "The Chromium Authors". - Chromium binaries - http://chromium.woolyss.com - ICCP Client by Fernando Covatti - https://github.com/fcovatti/iccp - Opendnp3 - https://www.automatak.com/opendnp3/ - Libmodbus - http://libmodbus.org/ - QT - http://www.qt.io - Lua Language - https://www.lua.org - GNU Libmicrohttpd: https://www.gnu.org/software/libmicrohttpd/ - The Indy Project - http://www.indyproject.org - FIPS-180-1 compliant SHA-1 implementation by Paul Bakker http://polarssl.org - NSIS (Nullsoft Scriptable Install System) - http://nsis.sourceforge.net/Main_Page - Open Sans Fonts by Steve Matteson - Source Sans Pro by Adobe Systems Incorporated. License - http://scripts.sil.org/OFL - Google Fonts - https://fonts.google.com/ - JQuery - http://jquery.com - JQuery UI - http://jqueryui.com - Shortcut - http://www.openjs.com/scripts/events/keyboard_shortcuts - Core JS - http://www.sitepoint.com - Modernzr - http://www.modernizr.com - Flot - http://www.flotcharts.org - Snap SVG - http://snapsvg.io - Pergola - http://www.dotuscomus.com/pergola - X3DOM - http://www.x3dom.org - Chroma.js - https://github.com/gka/chroma.js - TabSystem - http://www.developer-x.com - CSS Animation Cheat Sheet - http://www.justinaguilar.com/animations - D3JS - http://d3js.org - Radar-chart-d3 - https://github.com/alangrafu/radar-chart-d3 - Vega A Visualization Grammar - https://vega.github.io/vega - NSSM - The Non-Sucking Service Manager: http://nssm.cc - NGINX - http://nginx.org - APACHE - http://apache.org - PHP - http://php.net - WGet - http://www.gnu.org/software/wget - SQLite - https://www.sqlite.org - PostgreSQL - https://www.postgresql.org/ - BIGSQL - https://www.openscg.com/bigsql/package-manager.jsp/ - Grafana - https://grafana.com/ - MongoDB - https://github.com/mongodb/mongo - Some icons from - http://keyamoon.com/icomoon and http://raphaeljs.com/icons - CSS Loaders from Luke Haas - https://projects.lukehaas.me/css-loaders/ - JSMN - https://github.com/zserge/jsmn - -------------------------------------------------------------------- - -QUICKSTART: - -To quickly run the system after installed, open the OSHMI desktop folder and: - - - On the OSHMI desktop folder: execute _Start_OSHMI. - OR - - Execute the "Webserver" program. - - Next open the Screen Viewer (and other viewers) using the icons on the OSHMI folder. - OR - - Execute the "HMIShell" program (intended method for production/locked HMIs). - - Next open the Screen Viewer (and other viewers) using the HMIShell. - -The default password for HMIShell is "oshmi". - -The system is preconfigured to run a simulation with an example point list and screens. -To simulate a command, click on a breaker and push the "Command" button then choose - an action like "open" or "close" and push the action button. -To stop the system click on the "Stop_All" icon in the OSHMI folder. -To edit and create new SVG screens, use the customized Inkscape+SAGE - (shortucut in the OSHMI folder). -Screens are in "c:\oshmi\svg\". -OSHMI configuration files are in "c:\oshmi\conf\". -For more info about configuration please read the OSHMI Configuration Manual. - -By default, the system is configured to allow access only by the local machine. -To allow other IP addresses edit the "c:\oshmi\conf\nginx_access_control.conf" file. - -------------------------------------------------------------------- - -The customized Inkscape SVG graphics editor is a derivative of the Inkscape Project - work and of the Ecava SAGE work, it is not in any way associated with the Inkscape - Project nor Ecava. -We respect and intend to comply with the branding policy of the Inkscape Project - https://inkscape.org/en/about/branding/ -In our view, the modifications introduced are not substantial and do not intend - to create a competitive product. -The modifications introduced are meant only to allow the use of the sotware as a - SCADA Synoptics Editor. -We respect the GPL license of the upstream work by making the source code of the - modifications to the original Inkscape and SAGE code available at: - -Source Code: - https://sourceforge.net/p/oshmiopensubstationhmi/mercurial/ci/default/tree/inkscape_sage_src/ - -------------------------------------------------------------------- - -Recommended utils (can be downloaded running the "download_external_progs.bat" script that - is located inside the "extprogs" folder): - - Alternative (older) screen editor Inkscape 0.481 + SAGE 3.03. (To edit/create SVG screens) - https://sourceforge.net/projects/sage-scada/files/SAGE%20v3.03/inkscape0481_sage303.exe/download - - SysInternals (useful systems utilities) - http://technet.microsoft.com/en-us/sysinternals/default - http://live.sysinternals.com/ - - Notepad++ (text editor): http://notepad-plus-plus.org/ - - Visual Studio Code: https://code.visualstudio.com/ - -Recommended Operating Systems: - - Windows 10 Pro/Home/Enterprise, 32 or 64 bits. - - Windows 8/8.1 Pro/Home, 32 or 64 bits. - - Windows 7 Pro/Home, 32 or 64 bits. - - Modern Windows server OSs. - -Please use an updated OS. - -If you encounter errors related to Windows Universal C Runtime (CRT), see: - https://support.microsoft.com/help/2999226/update-for-universal-c-runtime-in-windows - -Can also run on: - - Linux Mint (under Wine, experimental), follow instructions from the OSHMI configuration manual. - - Other Linux distros (no specific instructions provided). - -Not anymore compatible Operating Systems: - - Windows Vista 32/64 bits (require an old version of Chromium not included). - - Windows XP 32/64 bits (require an old version of Chromium not included). - On XP and Vista it is possible to use OSHMI Version 3.17 with Chromium version 49: - https://sourceforge.net/projects/oshmiopensubstationhmi/files/oshmi_setup_v.3.17.exe/download - https://sourceforge.net/projects/oshmiopensubstationhmi/files/chromium_browser_for_win_xp.zip/download - -User interface can be used on: - - IOS 7+ devices. - - Android 4.1+ devices. - - Any device with an HTML5 browser like Chrome, Firefox, Opera or Safari. - -------------------------------------------------------------------- - -BUILD REQUIREMENTS. - -To compile the source code on Windows you will need the following environments: - -Webserver, HMIShell, Mon_Proc and Sim_TR: - - Borland C++ Builder 5. - - Indy 9 Components - http://www.indyproject.org/download/Files/Indy9.html. - -QTester104: - - QT 5.9.2 or newer. - -DNP3 and Modbus Drivers: - - Visual Studio Community (2015 or newer). - -Inkscape+SAGE: - - See http://wiki.inkscape.org/wiki/index.php/Compiling_Inkscape_on_Windows_with_MSYS2. - -------------------------------------------------------------------- - -Notes for version 5.6: - -Webserver: - - Replaced Indy HTTP server with a new one based on the GNU Libmicrohttpd (DLL). - - Possibility of starting microhttpd daemon in single thread mode or thread per connection. - - Significant performance optimizations of real time data queries. - -Screen Viewer: - - Modified insertion of the SVG file in the page (from inside an to direct ). - - Changed point values queries to HTTP GET method instead of POST. - - SVG File loaded with fetch(). - - Faster loading of displays with less DOM style recalculations (reflows). - - Vega updated to version 4.4.0. - - Vega-Lite updated to version 2.6.0. - - No more support for older browsers like I.E. as Vega 4 requires ES6. - -Events, Tabular & Screen Viewers: - - New functions for requesting scripts and JSON. - -QTester104: - - Updated to version 1.25. - - Can set TCP port in the UI. - - Point mapping can be set on or off by a checkbox (when disabled the performance is better). - - Show Common Address of ASDU in Point Map. - - Much improved network performance. - -Linux: - - Updated Nginx configuration file. - -SQLite: - - Updated to version 3.26.0. - -Chromium: - - Updated to version 71.0.3578.98. - -PHP: - - Updated to version 7.3.1 x86 NTS. - - PHP.ini updated to production template of version 7.3. - -Nginx: - - Configured to allow bigger URL queries. - - Updated to version 1.15.8. - -------------------------------------------------------------------- - -Notes for version 5.5: - -Webserver: - - Reverted floating point treatment from version 5.3 due to performance loss. - -SQLite: - - Updated to version 3.25.3. - -------------------------------------------------------------------- - -Notes for version 5.4: - -Webserver: - - Fixed limited precision in serving values. - -DNP3 driver: - - Updated to version 0.71. - - Removed limitation of address zero for master and slaves. - -------------------------------------------------------------------- - -Notes for version 5.3: - -Webserver: - - New JSON UDP protocol driver interface. Now it is easy to feed data to - OSHMI using simple JSON UDP messages. See the Configuration Manual. - - Can now export files with realtime data to MongoDB. - - Fixed setting of hysteresis for out of range verification of analog values. - - Try to avoid errors due to malformed float values. - - Restricted I104M protocol driver UDP messages to trusted origins. - -QTester104: - - Updated to version 1.24. - - Allowed different common addresses in the same connection. - -MongoDB: - - Available as an addon for 64 bit Windows systems. - -PHP: - - MongoDB extension enabled. - -Chromium: - - Updated to version 69.0.3497.81. - -Nginx: - - Allowed access by default to htdocs/eventsync.php in nginx_http.conf . - -SQLite: - - Updated to version 3.25.2. - -------------------------------------------------------------------- - -Notes for version 5.2: - -Tabular: - - Fixed bay detection for select box when the number of bays is 2. - -DNP3 driver. - - Updated to 0.7 based on a newer version of Opendnp3 (2.2.0). - - Compilation on Visual Studio 2017. - - Fixed channel creation (multiple slaves on same IP/Port generate only one channel). - - Better logs. - - Non-blocking execution of commands. - -Modbus driver. - - Compilation on Visual Studio 2017. - -HMIShell: - - Browser command-line arguments changed for opening viewers. - - BROWSER_OPTIONS key in hmi.ini created (applied to all viewers). - - Possibility of pointing to OSHMI servers according to OS logged-in user name. - -Nginx configuration: - - Changed position of the include of nginx_access_control.conf in nginx_http.conf - and nginx_https.conf. The effects of IP access directives now extends to - the full server sections. - -------------------------------------------------------------------- - -Notes for version 5.1: - -Webserver.exe: - - Point values are now stored internally as 64bit floats. - - Now the system can handle very big values down to historian level. - - Fixed reading of UTF-8 config files with BOM. - -Screen Viewer: - - Support for plot graphics by tag. - - Simpler animation for changed values (just underline or overline). - -DNP3 driver: - - Updated to version 0.6. - - Added support for Class 0 Scan. - - Added support for 32 bits Analog Outputs. - - Added support for 32 bits Counters and Frozen Counters. - - Added support for Analog Outputs Status. - - Added support for Digital Outputs Status. - -Trend Viewer: - - Fixed div tag missing a '>'. - -Other: - - Added directive "Cache Control: no-cache, must-revalidate" to Nginx configuration for SVG - displays and some other files. Allowing for a better cache validation in client browsers. - - Support for direct commands by tag. - - Remove redundant set of mime type header for SVG files in nginx_http(s).conf. - -------------------------------------------------------------------- - -Notes for version 5.0: - -The full web interface was converted to UTF-8 encoding for better internationalization and -better integration with the modern sotfware ecosystem. -Point database txt files now must be encoded in UTF-8. Old files that contains -international characters must be converted to or recreated in UTF-8. -This can be easily accomplished using Notepad++, iconv (see below) or some other tool. - -This version leverages the power of Timescale PostgreSQL database extension that -optimizes insertion and query of time series data. The preconfigured add-on can run -on the OSHMI servers or data can be uploaded to an external server installed on -any PostgreSQL/Timescale supported OS. -Grafana is available as an add-on to allow for easy construction of customized -dashboards and alerts. -Now OSHMI is capable of handling historical databases of very large installations -such as big power plants and control centers. -The historical data storage and analytics capabilities of OSHMI now match or -supplant that of expensive commercial SCADA systems. - -There in now the possibility to provide a Mobile/Intranet/Internet Gateway. -This can be used to OSHMI viewers remotely via a modern web browser. -The access via gateway is for monitoring only (cannot control devices or ack alarms). -The database backend for the gateway can be PostgreSQL (strongly recommended) or SQLite. -The enabling of the gateway is configured at the end of c:\oshmi\nginx_http.conf file. - -Integration of analytics capabilities now include: - - PostgreSQL (fully featured open source database) - - Timescale (time series extension for PostgreSQL) - - Grafana (via PostgreSQL) - - Power BI (via OData, JSON and PostgreSQL) - - Tableau (via OData, JSON and PostgreSQL) - - Excel (via web query and PostgreSQL/ODBC) - -PostgreSQL/Timescale, Grafana: - - PostgreSQL/Timescale and Grafana now available as addons for 64bit Windows only. - - PostgreSQL/Timescale and Grafana can be installed on other platforms manually. - - New scripts to process the SQL text files compatible w/ Postgresql/Timescale. - -Screen Viewer: - - Better compatibility with other web browsers. - - Animation of Arc function (donut graphics). - - Better handling of mouse events. - - Correction of some specific historical graphic plot type. - - Support for (current) round time period for Vega 3 historical plot. - - New markup for "get" attribute for digital points (OFF|ON) messages. - - Fixed problem with center of rotatation (for "rotate" attribute). - - Fixed problem with positioning of radar charts. - - !EVAL expressions now have access to the SVG DOM reference (thisobj) for the - container of the markup object. - -Events Viewer: - - Fixed problem showing silent button when acknowledging alarms. - - Fixed problem of error when setting table cell width in IE. - - Readability improvements. - -Tabular/Alarms Viewers: - - Fixed problem of error when setting table cell width in IE. - -Webserver.exe: - - Do not load command points with SUPCMD=0. - - Implemented watchdog timeout for absence of HTTP requests - as the server sometimes stops listening under Wine/Linux. - - Can now output files SQL text files compatible w/ Postgresql/Timescale. - - Configuration of timezone moved to conf/hmi.ini | [webserver] | TIMEZONE. - - Limited number of parcels in calculated points. - - Safer annotation code, sync. - - Fixed reading of point_list.txt last field after end quote. - - Tuning of historical files generation. - - Commas in description or states of point are converted to points. - -HMIShell: - - Do not search for already opened Viewers on Linux. - - Fixed problem with screen_list.js strings size. - - Fixed remote beep issue. - -Linux: - - New scripts for running on Linux. - - Referece Linux distribuition is now Mint 19.0 XFCE 32bits. - - QTester104 v.1.23 natively compiled. - - Script to beep for alarms out of Wine. - -DNP3 driver: - - Updated to version 0.5. - - Added support for binary counters and frozen counters. - -Documentation: - - New instructions for installation on Linux Mint. - - Instructions to install PostgreSQL/Timescale and Grafana add-ons. - -Docs Viewer: - - Moved to htdocs/listdocs.php. - -Report generator: - - New tool to create interactive reports by changing a database query. - - Can export CSV files. - -SQLite: - - Updated to version 3.24.0. - - Reduced delay time for events processing from 2 to 1 second. - -PHP: - - Updated to version 7.2.7 NTS. - - Fixed unnecessary kill of cmd.exe when stopping php/NGinx services. - - PostgreSQL PDO driver enabled. - -Nginx: - - Updated to version 1.15. - -Other: - - Included utility convert-config-to-utf8.bat to convert old config files - encoded as ISO8859-1 (Latin1) to UTF8. - - Fixed problem with quotes in annotations. - - Improvments to OData and JSON exporters for SQLite. - - New OData and JSON exporters for PostgreSQL. - - More precise scripts to stop OSHMI process. - - Included binaries for 'iconv' command line tool that can convert text files - to and from various encoding schemes (including UTF-8 and ISO8859-1). - Example, convert from ISO8859-1 to UTF-8: - ..\bin\iconv -f ISO8859-1 -t UTF-8 point_list.txt > point_list_utf8.txt - -------------------------------------------------------------------- - -Notes for version 4.15: - -Screen Viewer: -Webserver.exe: - - Changed from HTTP GET to HTTP POST the request for point list to allow larger requests. - This overcomes browser limitation for URL size. - Now the number of objects in screens have no more arbitrary limits. - - Changed API URLs used by HMIShell. - - Vega updated to version 3.3.1. - - Vega-Lite updated to version 2.4.3. - - Added Polyfill for requestAnimationFrame for better compatibility with older browsers. - -Events Viewer: - - Fixed misalignment of column text when resized. - -HMI Shell: - - Use new API URL. - - Get the keyboard focus when opened the screen list. - -Config: - - Updated nginx_http.conf and nginx_https.conf in the conf_templates folder. - - Old conf\nginx_http.conf overwritten and backuped to conf\nginx_http.conf.bak. - -Chromium: - - Updated to version 66.0.3359.117. - - Redefined Chromium configurations to allow notifications. - -------------------------------------------------------------------- - -Notes for version 4.14: - -Screen Editor: - - Uptated Inkscape to version 0.92.3. - Various bug fixes and performance improvements (much faster startup, etc.). - See https://inkscape.org/releases/0.92.3/. - -Screen Viewer: - - Change mouse cursor to pointer for mouse event handling. - -------------------------------------------------------------------- - -Notes for version 4.13: - -HMIShell: - - New improved menu to choose screens started by Windows-Key globally. - - Global handling of ALT+F12 shortcut to show options menu. - -Screen Viewer: - - Removed creation of objects that can identify relations for faster loading. - - Snap SVG updated to 0.5.1. - - Fixed creation of unnecessary objects. - -Webserver.exe: - - Altered code to generate events and beeps for state changed (KConv2=-1) - even when the invalid state qualifier is true. - - New formula to calculate distance from max to min of parcels. - -Modbus: - - Can now read floating point values (as a combination of 2 16bit holding registers). - -SQLite: - - Updated to version 3.23.1. - -Fonts: - - Available Open Sans v15 (various) and Roboto v18 (Regular). - -Chromium: - - Updated config data profile to match version 64.0.3282.140. - -Other: - - Included htpasswd.exe and htdigest.exe binaries for managing Nginx user authentication. - - Added .reg files to implement chromium policy for auto selection of client certificates. - -------------------------------------------------------------------- - -Notes for version 4.12: - -Export tools for historical data: - - OData and JSON: optimized queries, now produces results much faster. - - New tools for CSV export of historical and SOE data. - -Webserver.exe: - - Fixed problem of historical recording of calculation of communication state. - -Screen Viewer: - - Recover HIDETB (hide toolbar) parameter when reloading page. - -------------------------------------------------------------------- - -Notes for version 4.11: - -Events Viewer: - - Better sorting of events order when field timetags are disabled. - - Signficantly optimized queries when events are not aggregated. - -Screen Viewer: - - Fixed qualifier flags treatment for some rare cases. - -SQLite: - - Updated to version 3.22.0. - -Chromium: - - Updated to version 64.0.3282.140. - -PHP: - - Updated to version 7.2.2. - -------------------------------------------------------------------- - -Notes for version 4.10: - -Screen Editor: - - New embedded Screen Editor: Inkscape 0.92.2 + SAGE 4.15 32bit custom built for OSHMI. - Startable by the Inkscape SAGE icon on Desktop. - Separate installation from other Inkscape or Inkscape+SAGE versions. - Installed to c:\oshmi\inkscape directory. - Other Inkscape SAGE versions 0.48+3.03 or 0.91+4.16 still compatible. - Sources added to the Mercurial repository. - -Screen Viewer: - - Possibility to tag screens using prefixes, so the same screen can be used with data - from different origins (same tag suffix, but different prefix). - - Updated Radar Chart library. - - Corrected bug drawing some Vega-Lite charts. - - Vega: updated to version 3.0.8. - - Vega-Lite: updated to version 2.0.3. - - Updated code to handle dynamic embedding option. - - Possibility to obtain more point info for Vega markup. - - Possibility to embed Vega/Vega-Lite JSON specification in the SVG file. - Just put the code directly in the "prompt" field of the dialog instead of a URL. - -Curves Viewer: - - Better copy to clipboard function. - -Tabular, Alarms and Events Viewers: - - New button to copy data to clipboard (suitable to Excel). - -DNP3 Driver: - - Updated to version 0.4. - - Can now restart integrity poll queues when detect absence of data in a connection. - -------------------------------------------------------------------- - -Notes for version 4.9: - -Modbus driver: - - Integrated in the installer. - - Supports Modbus/TCP, multiple IEDs, digital and setpoint commands. - - Source code kept in a separate project: https://modbus-driver-for-oshmi.sourceforge.io/. - -Configuration Manual: - - Updated install instructions. - -Webserver: - - Updated to support command sending to optional Modbus driver UDP port. - -Other: - - Scripts for creating an IEC60870-5-104 circular buffer logs using Wireshark as Windows service. - - Included MSVC++ Redistributable 2017. - -------------------------------------------------------------------- - -Notes for version 4.8: - -Config Manager Worksheet v1.0 (c:\ohsmi\conf\oshmi_config_manager.xlsm): - - New Excel worksheet with macros to manage configuration. - - Can import, manipulate and export point_list.txt file. - -QTester104: - - Updated to version 1.23. - - Source code changed to UTF-8. - - Now logs up to 30000 lines to a circular buffer. - - More detailed log of received values. - - Now logs sent frames. - - Use of colors in log windows. - - Use Consolas font when available. - -Viewers: - - Use of Meta tag for better compatibility with IE/Edge browsers. - -Chromium: - - Updated to version 62.0.3202.94 32bit, no sync, no WebRTC, no Widevine. - -Demo screens: - - New demo screen Brasil, with Vega charts, RSS, JSON import, Internet data integrations. - - New demo screen Office with isometric perspective, Vega charts and animations. - -------------------------------------------------------------------- - -Notes for version 4.7: - -DNP3 Driver: - - Incoporated in the installer. - - Source code kept in a separate project: https://dnp3-driver-for-oshmi.sourceforge.io/. - -QTester104: - - Updated to version 1.22, buit with QT 5.9.2. - - Not anymore compatible with XP or Vista. - -Screen Viewer: - - Added support for Vega version 3 and Vega-Lite version 2 visualizations. - - Fixed SHIFT+ENTER shortcut that allows to save screenshot as SVG. - - New default colors for inhibited alarm tags (gray/lightgray). - - Inverted priority for annotation tags when both conditions are present: command blocked > inhibited alarm. - - Fixed incompatibility with old version Chromium that runs on XP/Vista. - - Changed the default color of measurements. - - Fixed Tooltips problem with parent object. - - Fixed problem with backslashes on annotations. - -Events Viewer: - - Highlight (bold) for priority zero acknowledged events. - - Now is shown the priority color (faded) for acknowledged alarms. - -Point Info Dialog (faceplate): - - New non-blocking annotation field. - - Redesigned dialog. - -Point Command Dialog: - - Redesigned dialog. - -SQLite: - - Updated to version 3.21.0. - -Historical Database: - - Processing of SQL files for historical data now dinamically changes the usage of write cache to speedup - database inserts when the performance is slow enough to occur accumulation of SQL files. - - Script for database files maintenance (\oshmi\db\db_maintenance.bat). - -Chromium: - - Updated to version 60.0.3112.101 32b, no sync, no WebRTC, no Widevine. - -PHP: - - Enabled PHP Zend Extension OpCache for better performance. - -Webserver.exe: - - Better handling of range limits settings. - - Better handling of delayed range alarms. - -HMIShell: - - Can now set the desktop background color (does not work in Windows 10 without Win Shell). - - New button to start desktop Sticky Notes (Win7) or installed externally as c:\oshmi\stickynotes\stikynot.exe. - - Fixed opening of Docs Viewer from client HMI. - -Webserver.exe: - - Log (un)inhibited (disable/enable) alarms for points (c:\oshmi\logs\alm_inhibit.log). - -------------------------------------------------------------------- - -Notes for version 4.6: - -Data Export: - - Connectivity to Tableau and MS PowerBI via OData. - - Connectivity to Tableau Desktop/Tableau Public Edition via Web Data Connector (WDC). - - Connectivity to MS PowerBI via JSON. - See configuration manual. - -OSHMI Desktop Folder: - - Corrected link to Logs Viewer. - - New link to easily start OSHMI (starts Webserver, Screen and Alarms Viewers). - - Removed link to open configuration files in PSPad. - -Config Files: - - Included examples of self-signed certificate files nginx.cnf and nginx.key that can be used to enable secure https browsing. - Command to regenerate (recommended!) those certificate files: - c:\OpenSSL-Win32\bin\openssl req -config "c:\OpenSSL-Win32\openssl.cnf" -x509 -nodes -sha256 -days 36500 -newkey rsa:4096 -keyout /oshmi/conf/nginx.key -out /oshmi/conf/nginx.crt -extensions v3_req - Example openssl.cnf is also included. - Install OpenSSL for Windows to use this functionality. - To browse securely in Chromium export certificate as p7b file and import as "Trusted Root Certificate Authorities". - See: http://www.nullalo.com/en/chrome-how-to-install-self-signed-ssl-certificates/. - - New config files c:\oshmi\conf\nginx_http.conf and c:\oshmi\conf\nginx_https.conf for easing edit and preservation of configuration on updates. - - https disabled by default. - -HMIShell: - - Compiled for Pentium Pro instruction set instead of plain 386. - - Avoid errors on initialization when used as Windows Shell. - -Curves Viewer: - - Removed incompatibilities with PHP7. - - Set correct charset headers. - -Events Viewer: - - Prioritity zero events not shown in italic anymore, just colored bold for better readability. - -Alarms Viewer: - - Prioritity zero alarms not shown in italic anymore, just colored bold for better readability. - -Trend Viewer: - - Better and faster initial curve complete from historical and real time data. - -Viewers: - - Added "mobile-web-app-capable" meta tag. - - Altered shortcuts to other viewers in Point Info Dialog. - -PHP: - - Updated to 7.1.6. - -Nginx: - - Updated to 1.12.0. - -------------------------------------------------------------------- - -Notes for version 4.5: - -Webserver: - - Solved bug reading HIST section of hmi.ini. - -SQLite: - - Updated to version 3.19.3. - -Screen Viewer: - - Fixed bug on opacity handling of alarmed blinking objects. - - Better image map for the pan control. - -Chromium: - - Updated to version 59.0.3071.109 32b,no sync,no WebRTC,no Widevine. - -------------------------------------------------------------------- - -Notes for version 4.4: - -Screen Viewer: - - New function to make objects draggable. - - Direct commands in screen with no confirmation. - - Take advantage of requestAnimationFrame() browser functionality when available. - -Webserver: - - Notification of values variation after analog command issued for faster Viewer's updates. - - Temporized alarms for analog points limits violations. - - Safer point list reading. - - Compiled for Pentium Pro instruction set instead of plain 386. - -Events Viewer: - - New icons for modes. - - Don't show lines side by side anymore when the width is big enough. - -Tabular Viewer: - - Corrected alignment of digital alarms next to analog alarms. - -Viewers: - - Log of commands in the localStorage of the browser. - -Other: - - Logout/Turnoff/Reboot scripts redirected to etc dir, will not be rewritten on updates. - - Logout script in etc dir can be configured to work correctly with services configuration. - -------------------------------------------------------------------- - -Notes for version 4.3: - -Webserver: - - Support for analog commands. - - Corrected bug importing units of measure. - - Configurable lifetime for historical data. - - Log of IP address origin of commands. - - Logging of annotations. - - Logging of remote user login/logout. - -Screen, Tabular and Events Viewers, Command Dialog: - - Support for analog commands. - - Timeout for commands resets when option selected or analog value changed. - -QTester104: - - Updated to version 1.21. - - Corrected bug of wrong month set on commands with time. - - Support for analog commands comming from OSHMI Webserver BDTR converter. - -SQLite: - - Updated to version 3.18.0. - -HMIShell: - - Added log files viewer. - - Login/Logout log of user. - -OSHMI Shortcuts Folder: - - Added shortcuts to Docs and Logs Viewers. - -Chromium: - - Updated to version 57.0.2987.133. - -------------------------------------------------------------------- - -Notes for version 4.2: - -QTester104: - - Updated to version 1.19. - - Corrected bug on select before operate commands present in OSHMI 4.0 and 4.1. - - Removed resctriction of slave address up to 255: now it can be up to 65535. - -SQLite: - - Updated to version 3.17.0. - -------------------------------------------------------------------- - -Notes for version 4.1: - -Events Viewer: - - New mechanism to configure a relationship between notifications and screens. - When the user clicks a trip notification it can be opened the respective screen of the occurrence location. - It is necessary to configure a function in conf/config_viewers.js like EventsViewer_NotificationClick on config_viewers_default.js. - -Screen Viewer: - - Loading effect shown while loading and preprocessing SVG file. - - Some behind the scenes changes on window event processing. - - F10 shortcut to animated hide/show toolbar. - Mouse-over small visible piece of hidden toolbar to show it again. - -Tabular Viewer: - - Analog values aligned to the right. - -SQLite: - - Updated to version 3.16.2 (better performance and some bugs corrected). - -------------------------------------------------------------------- - -Notes for version 4.0: - -Screen Viewer: - - Added the descriptive charts library Vega (version 2.6.3) that opens unlimited real time charts capability. - - Arc graphic. - - D3JS Updated to version 3.5.17. - - No more compatibility with old style screens, the only editor now supported is Inkscape+SAGE. - - Faster screen loading and processing due to the previous item. - - Point faceplate annotation field with more space. - -QTester104: - - Updated to version 1.17. - - Support for setting ASDU address for commands. - -SQLite: - - Updated to version 3.15.2. - -------------------------------------------------------------------- - -Notes for version 3.17: - -QTester104: - - Updated to version 1.16. - - Copy of values to clipboard. - - Better logs. - - Support for Clock Sync Command. - - Split bar for Log/Points Widgets. - - Show timetag values. - -SQLite: - - Updated to version 3.15. - -Chromium: - - Updated to version 56.0.2890.0. - -------------------------------------------------------------------- - -Notes for version 3.16: - -QTester104: - - Updated to version 1.15. - - Support for analog commands. - -SQLite: - - Updated to version 3.14.2. - -------------------------------------------------------------------- - -Notes for version 3.15: - -Webserver.exe: - - New formula for evaluating the communication state with a station using point statuses. - -------------------------------------------------------------------- - -Notes for version 3.14: - -Webserver.exe: - - Corrected bug affecting the lua stack that was causing problems after many commands issued. - -------------------------------------------------------------------- - -Notes for version 3.13: - -Webserver.exe: - - Tag link suppport for screens. - - By default beeps only for alarms up to priority 2 (0, 1, and 2). - - Interception of commands and tag addressing in Lua scripts. - - Corrected bug related to tag to point number conversion. - -Screen Viewer: - - Support for tag linking (in addition to number linking). - - Tooltips with point details on mouseover objects. - - Restored broken Time Machine function. - - Do not show inhibited alarms on alarm box. - - Included chroma.js library. - -QTester104 Updated to version 1.14: - - Better redundancy control. - - Configurable periodic General Interrogation. - -Browser: - - Modified configuration to allow desktop notifications. - -Events Viewer: - - Modified for restoring broken Desktop Notifications. - - Avoid feezing when the events database becomes unresponsive. - -Tabular Viewer: - - Shows points with inhibited alarm in a distinct color (brightened) text. - -SQLite: - - Updated to version 3.13. - -NGINX: - - Configured to allow access and auto listing files to "docs" folder. - Links to documents in this folder can now be created in screens. - -HMIShell: - - Button of "Help" now shows list of PDF documents from "docs" folder. - -Installer: - - Removed install of pdf viewer, now it's only used the internal Chromium PDF Viewer. - -------------------------------------------------------------------- - -Notes for version 3.12: - -Screen Viewer: - - Expanded the processing of SVG tags to include circle, use, line, polyline, polygon. - -------------------------------------------------------------------- - -Notes for version 3.11: - -HMIShell: - - Corrected problem when starting HMIShell. - -MonProc: - - Added option to specify a complete command line to execute a process. - -------------------------------------------------------------------- - -Notes for version 3.10: - -QTester104: - - Updated to version 1.13. Added copy of log to clipboard. - -------------------------------------------------------------------- - -Notes for version 3.9: - -Webserver: - - Removed limit of the number of synchonized alarms for redundant HMI's. - -Screen Viewer: - - Color interpolation on animations. - - Screenshot to SVG file (SHIFT+ENTER). - - Better mouse event handlers. - - More options to plot measures. - - Avoid showing some errors from alarm box not yet created. - -Alarms and Events Viewers: - - New form of highlighting priority 0 alarms. - -Chromium: - - Updated to version 50.0.2628.0. - -SQLite: - - Updated to version 3.10.2 - -------------------------------------------------------------------- - -Notes for version 3.8: - -ICCP Client: - - Corrected bug related to redundancy control. - -------------------------------------------------------------------- - -Notes for version 3.7: - -QTester104: - - Updated to version 1.12. Added the possibility to stay simultaneously connected to 2 redundant RTU's. - -Tabular Viewer: - - Corrected shortcut [F8] to ack all alarms. - - Scrollbar to show many substation alarm filters - -------------------------------------------------------------------- - -Notes for version 3.6: - -QTester104: - - Updated to version 1.11. Added the possibility of scannig a redundant RTU. - -SQLite: - - Updated to version 3.8.11.1. - -Webserver: - - Avoid closing by request on logout when running as a service. - -Installer: - - Changed to avoid overwriting bat files on "bin" and "etc" folders. - -------------------------------------------------------------------- - -Notes for version 3.5: - -HMIShell: - - Can now be configured to beep. Useful for running webserver as a service - or for a client HMI (with no webserver running). - -------------------------------------------------------------------- - -Notes for version 3.4: - -QTester104: - - Updated to version 1.10. - -------------------------------------------------------------------- - -Notes for version 3.3: - -QTester104: - - Updated to version 1.08. - -------------------------------------------------------------------- - -Notes for version 3.2: - -QTester104: - - Updated to version 1.07. - -------------------------------------------------------------------- - -Notes for the version 3.1: - -Tabular Visor: - - Now includes event points. - -ICCP Client: - - Updated to version 1.8.1. - -QTester104: - - Compiled with QT 5.4. - -SQLite: - - Updated to version 3.8.10.2 - -------------------------------------------------------------------- - -Notes for version 3.0 (first public release): - -Includes: - - Chromium 42.0.2309.0. - - NGINX 1.0.11. - - PHP 5.4.17. - - SQLite 3.8.8.2 - - NSSM 2.24 diff --git a/installer/README.txt b/installer/README.txt new file mode 120000 index 0000000..6ed10bb --- /dev/null +++ b/installer/README.txt @@ -0,0 +1 @@ +release_notes.txt \ No newline at end of file diff --git a/installer/oshmi.nsi b/installer/oshmi.nsi index c4b7330..f46a537 100644 --- a/installer/oshmi.nsi +++ b/installer/oshmi.nsi @@ -11,8 +11,8 @@ RequestExecutionLevel user ;-------------------------------- -!define VERSION "v.6.1" -!define VERSION_ "6.1.0.0" +!define VERSION "v.6.2" +!define VERSION_ "6.2.0.0" Function .onInit System::Call 'keexrnel32::CreateMutexA(i 0, i 0, t "MutexOshmiInstall") i .r1 ?e' diff --git a/installer/release_notes.txt b/installer/release_notes.txt index dfbd9ab..bc40769 100644 --- a/installer/release_notes.txt +++ b/installer/release_notes.txt @@ -174,6 +174,29 @@ Inkscape+SAGE: ------------------------------------------------------------------- +Notes for version 6.2: + +Screen Editor: + - Updated upstream Inkscape to version 0.92.4. + See https://inkscape.org/releases/0.92.4/. + - Vega JSON specifications can be entered also in the "Script" tab. + - Added "exec_once" and "exec_on_update" to the "Script" tab. + +Screen Viewer: + - Updated to execute the new "Script" tab markup. + +Alarms Viewer: + - Expandable area of station filters. + - Persistency of filters saved in localStorage area of the browser. + - Filters loaded for all stations in alphabetical order. + - Legibility enhancements. + - Select All and Unselect All buttons for filters. + +Chromium: + - Updated to version 73.0.3683.75. + +------------------------------------------------------------------- + Notes for version 6.1: Webserver: @@ -531,7 +554,7 @@ Chromium: Notes for version 4.14: Screen Editor: - - Uptated Inkscape to version 0.92.3. + - Updated Inkscape to version 0.92.3. Various bug fixes and performance improvements (much faster startup, etc.). See https://inkscape.org/releases/0.92.3/.