Wiki source code of 1. User Manual

Version 240.2 by Iaroslav Platonov on 2026/06/07 18:30

Hide last authors
Iaroslav Platonov 240.2 1 {{html clean="false"}}
2 <style>
3 #rn-prog { position:fixed;top:0;left:0;height:3px;width:0;background:#005AB4;z-index:9999;pointer-events:none; }
Lana 3.2 4
Iaroslav Platonov 240.2 5 /* Layout: relative container, content fills width minus TOC margin */
6 .doc-wrap {
7 position:relative;
8 }
9 .doc-content {
10 margin-right:224px; /* TOC width 200px + 24px gap — never changes */
11 border-left:1px solid #E8E8E8;
12 border-right:1px solid #E8E8E8;
13 padding:0 32px;
14 }
Lana 3.2 15
Iaroslav Platonov 240.2 16 /* TOC: absolute by default, fixed via JS when scrolled */
17 .doc-toc {
18 position:absolute;
19 top:0; right:0;
20 width:200px;
21 font-size:12.5px;line-height:1.55;
22 padding:20px 0 20px 16px;
23 }
24 .doc-toc.is-fixed {
25 position:fixed;
26 width:200px;
27 overflow-y:auto;
28 /* Below XWiki navbar (~1000) and action bars (~100) */
29 z-index:10;
30 }
31 .toc-header {
32 display:flex;justify-content:space-between;align-items:center;
33 margin-bottom:10px;
34 }
35 .toc-header strong {
36 font-size:13px;font-weight:700;color:#222222;
37 text-transform:none;letter-spacing:0;
38 }
39 .toc-toggle {
40 background:none;border:none;cursor:pointer;
41 color:#555555;font-size:14px;padding:0 2px;line-height:1;
42 }
43 .toc-toggle:hover { color:#222222; }
44 .doc-toc ul { list-style:none;margin:0;padding:0; }
45 .doc-toc li { margin:0; }
46 .doc-toc a {
47 display:block;padding:3px 0;
48 color:#555555;text-decoration:none;
49 border-left:2px solid transparent;
50 transition:color .12s;
51 }
52 .doc-toc a:hover { color:#222222;text-decoration:underline; }
53 .doc-toc a.toc-on {
54 color:#222222;font-weight:700;
55 border-left:2px solid #005AB4;padding-left:5px;
56 }
57 .tl1 > a { font-weight:600; color:#222222; }
58 .tl2 > a { padding-left:14px; }
59 .tl3 > a { padding-left:26px;font-size:12px; }
Lana 3.2 60
Iaroslav Platonov 240.2 61 /* Typography */
62 .doc-content h1 {
63 font-size:1.6em;font-weight:700;color:#222222;
64 margin:0 0 6px 0;border:none;
65 }
66 .rn-meta { font-size:.8em;color:#555555;margin:0 0 28px 0; }
67 .doc-content h2 {
68 font-size:1.15em;font-weight:700;color:#222222;
69 margin:36px 0 10px 0;
70 display:flex;align-items:baseline;gap:7px;
71 scroll-margin-top:16px;
72 }
73 .doc-content h3 {
74 font-size:1em;font-weight:700;color:#222222;
75 margin:22px 0 8px 0;
76 display:flex;align-items:baseline;gap:6px;
77 scroll-margin-top:16px;
78 }
79 .doc-content h4 {
80 font-size:.93em;font-weight:700;color:#222222;
81 margin:14px 0 6px 0;
82 display:flex;align-items:baseline;gap:5px;
83 scroll-margin-top:16px;
84 }
85 .doc-content p { font-size:.93em;color:#333;line-height:1.75;margin:0 0 12px 0; }
86 .doc-content strong { color:#222222; }
87 code { background:#f5f5f5;border:1px solid #E8E8E8;border-radius:3px;padding:1px 5px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:.82em;color:#222222; }
Lana 3.2 88
Iaroslav Platonov 240.2 89 /* Anchor icon */
90 .anchor-icon {
91 color:#E8E8E8;text-decoration:none;opacity:0;
92 transition:opacity .15s;vertical-align:middle;margin-left:4px;
93 display:inline-flex;align-items:center;
94 }
95 h2:hover .anchor-icon,h3:hover .anchor-icon,h4:hover .anchor-icon { opacity:1; }
96 .anchor-icon:hover { color:#005AB4; }
Lana 3.2 97
Iaroslav Platonov 240.2 98 /* Oracle-style Note box: border only, no fill */
99 .note {
100 border:1px solid #E8E8E8;border-radius:6px;
101 padding:12px 16px;margin:14px 0;
102 }
103 .note-hd {
104 font-weight:700;font-size:.875em;
105 display:flex;align-items:center;gap:5px;
106 margin-bottom:6px;
107 }
108 .note-body { font-size:.875em;color:#333;line-height:1.65; }
Lana 3.2 109
Iaroslav Platonov 240.2 110 /* Oracle-style section index list */
111 .section-index {
112 list-style:disc;padding-left:20px;margin:0 0 20px 0;
113 }
114 .section-index li { margin-bottom:12px; }
115 .section-index li a {
116 color:#005AB4;font-weight:600;font-size:.93em;
117 text-decoration:underline;
118 }
119 .section-index li p {
120 margin:3px 0 0 0;font-size:.875em;color:#333;line-height:1.6;
121 }
Lana 3.2 122
Iaroslav Platonov 240.2 123 /* Parent topic */
124 .parent-topic {
125 font-size:.82em;color:#555555;margin:18px 0 24px 0;
126 border-top:1px solid #E8E8E8;padding-top:10px;
127 }
128 .parent-topic a { color:#005AB4; }
Lana 5.2 129
Iaroslav Platonov 240.2 130 /* Accordion — Oracle subsection feel */
131 details.acc {
132 border:1px solid #E8E8E8;border-radius:4px;
133 margin-bottom:5px;
134 }
135 details.acc summary {
136 display:flex;align-items:center;gap:8px;
137 padding:9px 12px;cursor:pointer;list-style:none;
138 background:none;user-select:none;
139 }
140 details.acc summary::-webkit-details-marker { display:none; }
141 details.acc summary::before {
142 content:'▶';font-size:.58em;color:#555555;
143 transition:transform .18s;flex-shrink:0;
144 }
145 details.acc[open] summary::before { transform:rotate(90deg); }
146 details.acc summary:hover { background:#f5f5f5; }
147 .acc-num { font-size:.8em;color:#555555;min-width:28px;font-weight:600; }
148 .acc-title { font-size:.9em;font-weight:700;color:#222222;flex:1; }
149 .acc-body { padding:10px 14px 12px 14px;font-size:.88em;color:#333;line-height:1.7; }
Lana 5.2 150
Iaroslav Platonov 240.2 151 /* Images */
152 .fig { margin:12px 0 22px 0; }
153 .fig img {
154 border-radius:4px;border:1px solid #E8E8E8;display:block;
155 cursor:zoom-in;transition:box-shadow .15s;max-width:100%;
156 }
157 .fig img:hover { box-shadow:0 2px 10px rgba(0,90,180,.15); }
158 .fig-cap { font-size:.78em;color:#555555;font-style:italic;margin:4px 0 0 0; }
Lana 5.2 159
Iaroslav Platonov 240.2 160 /* Lightbox */
161 #rn-lb { display:none;position:fixed;inset:0;z-index:9998;background:rgba(0,0,0,.8);cursor:zoom-out;align-items:center;justify-content:center; }
162 #rn-lb.open { display:flex; }
163 #rn-lb-wrap { position:relative;cursor:default;max-width:92vw;max-height:90vh; }
164 #rn-lb-wrap img { max-width:100%;max-height:90vh;border-radius:5px;display:block; }
165 #rn-lb-x { position:absolute;top:-13px;right:-13px;background:#005AB4;color:#fff;width:26px;height:26px;border-radius:50%;border:none;cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center; }
166 #rn-lb-cap { position:fixed;bottom:18px;left:50%;transform:translateX(-50%);color:#ddd;font-size:.78em;background:rgba(0,0,0,.55);padding:3px 12px;border-radius:14px;pointer-events:none; }
Lana 5.2 167
Iaroslav Platonov 240.2 168 /* Back to top */
169 #rn-top { position:fixed;bottom:24px;right:24px;z-index:9997;width:36px;height:36px;border-radius:50%;background:#005AB4;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(8px);transition:opacity .22s,transform .22s;pointer-events:none;box-shadow:0 2px 8px rgba(0,90,180,.3); }
170 #rn-top.on { opacity:1;transform:translateY(0);pointer-events:auto; }
171 #rn-top:hover { background:#0066cc; }
Lana 5.2 172
Iaroslav Platonov 240.2 173 /* Toast */
174 .rn-toast { position:fixed;bottom:66px;right:24px;z-index:9999;background:#222222;color:#fff;font-size:.74em;padding:4px 11px;border-radius:4px;pointer-events:none;opacity:0;transition:opacity .18s; }
175 .rn-toast.on { opacity:1; }
Lana 5.2 176
Iaroslav Platonov 240.2 177 /* Tables */
178 .rn-table { width:100%;border-collapse:collapse;margin:8px 0 18px 0;font-size:.875em; }
179 .rn-table th { background:#f5f5f5;text-align:left;padding:7px 12px;font-size:.78em;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#555555;border-bottom:2px solid #E8E8E8; }
180 .rn-table td { padding:7px 12px;border-bottom:1px solid #E8E8E8;color:#333;vertical-align:top; }
181 .rn-table tr:last-child td { border-bottom:none; }
182 .rn-table tr:hover td { background:#f5f5f5; }
183 .sc { display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:#deeaf7;color:#005AB4;border-radius:3px;font-size:.8em;font-weight:700; }
184 </style>
Lana 5.2 185
Iaroslav Platonov 240.2 186 <div id="rn-prog"></div>
187 <div id="rn-lb">
188 <div id="rn-lb-wrap">
189 <button id="rn-lb-x" onclick="closeLightbox()">✕</button>
190 <img id="rn-lb-img" src="" alt=""/>
191 </div>
192 <div id="rn-lb-cap"></div>
193 </div>
194 <button id="rn-top" onclick="window.scrollTo({top:0,behavior:'smooth'})" title="Back to top">
195 <svg width="14" height="14" viewBox="0 0 16 16" fill="currentColor"><path d="M8 4l5 5H3z"/></svg>
196 </button>
197 <div class="rn-toast" id="rn-toast">Link copied ✓</div>
Lana 5.2 198
Iaroslav Platonov 240.2 199 <div class="doc-wrap">
Lana 5.2 200
Iaroslav Platonov 240.2 201 <!-- ── CONTENT ── -->
202 <div class="doc-content">
Lana 6.2 203
Iaroslav Platonov 240.2 204 <ul class="section-index">
205 <li><a href="#s-login">1. System Login</a><p>How to access the CENTO web interface, log in, and switch users.</p></li>
206 <li><a href="#s-ui">2. User Interface</a><p>Overview of the main menu, SCADA diagrams, analysis tools, logs, reports, and notifications.</p></li>
207 <li><a href="#s-abbrev">Basic Abbreviations</a><p>Glossary of abbreviations used throughout this manual.</p></li>
208 <li><a href="#s-statuses">Reference: Status Codes</a><p>Device and tag status code tables for quick reference.</p></li>
209 </ul>
Lana 6.2 210
Iaroslav Platonov 240.2 211 <!-- ═══ 1. System Login ═══ -->
212 <h2 id="s-login">1. System Login<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-login')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h2>
213 <p>Users log in to CENTO through a web interface. Supported browsers: Google Chrome, Microsoft Edge, etc.</p>
214 <p>Enter the server IP or DNS address — for example <code>http://192.168.80.10/</code> or <code>https://demotest.centosoftware.com/</code>. When working directly on the server, use <code>http://127.0.0.1</code>.</p>
215 <div class="fig">
216 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/1762985411819-434.png" alt="Figure 1.1. Authorization page" style="max-width:320px;" onclick="openLightbox(this)"/>
217 <p class="fig-cap">Figure 1.1. Authorization page</p>
218 </div>
219 <div class="note">
220 <div class="note-hd" style="color:#005AB4"><span>ℹ</span> Note</div>
221 <div class="note-body">Enter username and password and click <strong>Login</strong>. If credentials are incorrect, the message <em>User with the entered parameters not found!</em> appears.</div>
222 </div>
223 <div class="fig">
224 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-12-01%20at%2009.20.57.png" alt="Figure 1.2. Main panel" style="max-width:100%;" onclick="openLightbox(this)"/>
225 <p class="fig-cap">Figure 1.2. Main panel</p>
226 </div>
227 <p>To switch users, open the drop-down menu in the upper right corner and select <strong>Logout</strong>.</p>
228 <div class="fig">
229 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/1762985502322-231.png" alt="Figure 1.3. System logout" style="max-width:280px;" onclick="openLightbox(this)"/>
230 <p class="fig-cap">Figure 1.3. System logout</p>
231 </div>
232 <div class="fig">
233 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.12.33.png" alt="Figure 1.4. Access is denied" style="max-width:420px;" onclick="openLightbox(this)"/>
234 <p class="fig-cap">Figure 1.4. Access is denied</p>
235 </div>
236 <div class="parent-topic">Parent topic: <a href="#">CENTO Manuals</a></div>
Lana 6.2 237
Iaroslav Platonov 240.2 238 <!-- ═══ 2. User Interface ═══ -->
239 <h2 id="s-ui">2. User Interface<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-ui')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h2>
240 <p>The pinned main menu switches between sections; the status bar on the right displays current events and system time.</p>
Lana 6.2 241
Iaroslav Platonov 240.2 242 <ul class="section-index">
243 <li><a href="#s-menu">2.1 Main Menu</a><p>Navigation bar layout, status bar, drop-down menus.</p></li>
244 <li><a href="#s-diagrams">2.2 Diagrams</a><p>Mimic diagram types, object menus, dispatch marks, video streams, object log.</p></li>
245 <li><a href="#s-analysis">2.3 Analysis</a><p>Real-time data tables and charts, metering data, receipt forms, device diagnostics.</p></li>
246 <li><a href="#s-logs">2.4 Logs</a><p>Nine log types — availability depends on license and access rights.</p></li>
247 <li><a href="#s-reports">2.5 Reports</a><p>Flexible reports, power quality reports, short-circuit reports.</p></li>
248 <li><a href="#s-journal">2.6 Operative Journal</a><p>Shift-based logbook with templates and electronic signatures.</p></li>
249 <li><a href="#s-widgets">2.7 Widgets</a><p>Configurable KPI dashboard panels, personalised per user.</p></li>
250 <li><a href="#s-sound">2.8 Sound Alerts</a><p>Browser-based audible alerts for configured event conditions.</p></li>
251 <li><a href="#s-popup">2.9 Pop-up Messages</a><p>Critical event banners with operator acknowledgement and log.</p></li>
252 </ul>
Lana 6.2 253
Iaroslav Platonov 240.2 254 <!-- 2.1 -->
255 <h3 id="s-menu">2.1 Main Menu<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-menu')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
256 <p>Provides access to: Diagrams, Maps, Analysis, Reports, Logs, and Settings. The interface scales automatically to fit the browser window.</p>
257 <div class="fig">
258 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.13.54.png" alt="Figure 2.1. Main menu (left side)" style="max-width:100%;" onclick="openLightbox(this)"/>
259 <p class="fig-cap">Figure 2.1. Main menu (left side)</p>
260 </div>
261 <div class="fig">
262 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.18.28.png" alt="Figure 2.2. Main menu (right part)" style="max-width:100%;" onclick="openLightbox(this)"/>
263 <p class="fig-cap">Figure 2.2. Main menu (right part)</p>
264 </div>
265 <div class="fig">
266 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.21.24.png" alt="Figure 2.3. Drop-down menu" style="max-width:320px;" onclick="openLightbox(this)"/>
267 <p class="fig-cap">Figure 2.3. Drop-down menu</p>
268 </div>
Lana 8.2 269
Iaroslav Platonov 240.2 270 <!-- 2.2 -->
271 <h3 id="s-diagrams">2.2 Diagrams<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-diagrams')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
272 <p>Interactive mimic diagrams (SCADA screens) represent equipment state and process flows in real time. For diagram creation and configuration, see the <strong>Diagrams Development Manual</strong>.</p>
273 <div class="fig">
274 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.22.56.png" alt="Figure 2.4. Power industry" style="max-width:100%;" onclick="openLightbox(this)"/>
275 <p class="fig-cap">Figure 2.4. Power industry</p>
276 </div>
277 <div class="fig">
278 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.24.08.png" alt="Figure 2.5. Engineering infrastructure" style="max-width:100%;" onclick="openLightbox(this)"/>
279 <p class="fig-cap">Figure 2.5. Engineering infrastructure</p>
280 </div>
281 <div class="fig">
282 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.24.37.png" alt="Figure 2.6. Diagnostics" style="max-width:100%;" onclick="openLightbox(this)"/>
283 <p class="fig-cap">Figure 2.6. Diagnostics</p>
284 </div>
285 <div class="fig">
286 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.25.05.png" alt="Figure 2.7. Technology" style="max-width:100%;" onclick="openLightbox(this)"/>
287 <p class="fig-cap">Figure 2.7. Technology</p>
288 </div>
289 <div class="fig">
290 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.44.51.png" alt="Figure 2.8. Portable grounding" style="max-width:360px;" onclick="openLightbox(this)"/>
291 <p class="fig-cap">Figure 2.8. Portable grounding</p>
292 </div>
293 <div class="fig">
294 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.45.40.png" alt="Figure 2.9. Dispatch marks log" style="max-width:100%;" onclick="openLightbox(this)"/>
295 <p class="fig-cap">Figure 2.9. Dispatch marks log</p>
296 </div>
297 <div class="fig">
298 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.48.41.png" alt="Figure 2.10. Diagrams player interface" style="max-width:100%;" onclick="openLightbox(this)"/>
299 <p class="fig-cap">Figure 2.10. Diagrams player interface</p>
300 </div>
301 <div class="fig">
302 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.55.03.png" alt="Figure 2.11. Diagram viewing window with diagram tree" style="max-width:100%;" onclick="openLightbox(this)"/>
303 <p class="fig-cap">Figure 2.11. Diagram viewing window with diagram tree</p>
304 </div>
305 <div class="fig">
306 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.56.11.png" alt="Figure 2.12. Object menu (left click)" style="max-width:380px;" onclick="openLightbox(this)"/>
307 <p class="fig-cap">Figure 2.12. Object menu (left click)</p>
308 </div>
309 <div class="fig">
310 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.57.12.png" alt="Figure 2.13. Object context menu (right click)" style="max-width:320px;" onclick="openLightbox(this)"/>
311 <p class="fig-cap">Figure 2.13. Object context menu (right click)</p>
312 </div>
313 <div class="fig">
314 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2014.59.21.png" alt="Figure 2.14. Object passport — Measurements" style="max-width:100%;" onclick="openLightbox(this)"/>
315 <p class="fig-cap">Figure 2.14. Object passport — Measurements</p>
316 </div>
317 <div class="fig">
318 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/image_2025-11-13_10-52-44.png" alt="Figure 2.15. Viewing video stream" style="max-width:100%;" onclick="openLightbox(this)"/>
319 <p class="fig-cap">Figure 2.15. Viewing video stream</p>
320 </div>
321 <div class="fig">
322 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2015.03.53.png" alt="Figure 2.16. Dispatch marks interface" style="max-width:100%;" onclick="openLightbox(this)"/>
323 <p class="fig-cap">Figure 2.16. Dispatch marks interface</p>
324 </div>
325 <div class="fig">
326 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2015.04.36.png" alt="Figure 2.17. Reference information" style="max-width:360px;" onclick="openLightbox(this)"/>
327 <p class="fig-cap">Figure 2.17. Reference information</p>
328 </div>
329 <div class="fig">
330 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2018.36.19.png" alt="Figure 2.18. Object log" style="max-width:100%;" onclick="openLightbox(this)"/>
331 <p class="fig-cap">Figure 2.18. Object log</p>
332 </div>
Lana 8.2 333
Iaroslav Platonov 240.2 334 <h4 id="s-control">2.2.1 Control<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-control')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h4>
335 <div class="note">
336 <div class="note-hd" style="color:#DD5600"><span>⚠</span> Warning</div>
337 <div class="note-body">Control actions affect live equipment. Confirm the correct object is selected before executing any command.</div>
338 </div>
339 <p>Remote switching, setpoint changes, and group commands are executed directly from mimic diagrams. Access is governed by user permissions in the Information Model.</p>
340 <div class="fig">
341 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2018.42.00.png" alt="Figure 2.19. Remote control" style="max-width:100%;" onclick="openLightbox(this)"/>
342 <p class="fig-cap">Figure 2.19. Remote control</p>
343 </div>
344 <div class="fig">
345 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2018.42.35.png" alt="Figure 2.20. Control schedule" style="max-width:100%;" onclick="openLightbox(this)"/>
346 <p class="fig-cap">Figure 2.20. Control schedule</p>
347 </div>
348 <div class="fig">
349 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2018.43.07.png" alt="Figure 2.21. Entering password on diagram" style="max-width:360px;" onclick="openLightbox(this)"/>
350 <p class="fig-cap">Figure 2.21. Entering password on diagram</p>
351 </div>
352 <div class="fig">
353 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2018.44.40.png" alt="Figure 2.22. Value entry field" style="max-width:360px;" onclick="openLightbox(this)"/>
354 <p class="fig-cap">Figure 2.22. Value entry field</p>
355 </div>
356 <div class="fig">
357 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2018.45.29.png" alt="Figure 2.23. Named command selection (1)" style="max-width:360px;" onclick="openLightbox(this)"/>
358 <p class="fig-cap">Figure 2.23. Named command selection (1)</p>
359 </div>
360 <div class="fig">
361 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2018.45.56.png" alt="Figure 2.24. Named command selection (2)" style="max-width:360px;" onclick="openLightbox(this)"/>
362 <p class="fig-cap">Figure 2.24. Named command selection (2)</p>
363 </div>
364 <div class="fig">
365 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2018.46.48.png" alt="Figure 2.25. TC command selection" style="max-width:360px;" onclick="openLightbox(this)"/>
366 <p class="fig-cap">Figure 2.25. TC command selection</p>
367 </div>
368 <div class="fig">
369 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2018.47.59.png" alt="Figure 2.26. Action confirmation" style="max-width:360px;" onclick="openLightbox(this)"/>
370 <p class="fig-cap">Figure 2.26. Action confirmation</p>
371 </div>
372 <div class="fig">
373 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-12-17%20at%2018.37.08.png" alt="Figure 2.27. Action confirmation" style="max-width:360px;" onclick="openLightbox(this)"/>
374 <p class="fig-cap">Figure 2.27. Action confirmation</p>
375 </div>
Lana 8.2 376
Iaroslav Platonov 240.2 377 <!-- 2.3 -->
378 <h3 id="s-analysis">2.3 Analysis<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-analysis')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
379 <p>Displays CENTO data in tabular and chart form with filtering, aggregation, and Excel export.</p>
Lana 8.2 380
Iaroslav Platonov 240.2 381 <h4 id="s-rtd">2.3.1 Real-time data analysis<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-rtd')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h4>
382 <p>Displays current tag values, filterable by device/object, status code, or last-update timestamp.</p>
383 <div class="fig">
384 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2018.50.56.png" alt="Figure 2.28. Real-time data analysis" style="max-width:100%;" onclick="openLightbox(this)"/>
385 <p class="fig-cap">Figure 2.28. Real-time data analysis</p>
386 </div>
387 <div class="fig">
388 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2018.52.31.png" alt="Figure 2.29. Device tree" style="max-width:360px;" onclick="openLightbox(this)"/>
389 <p class="fig-cap">Figure 2.29. Device tree</p>
390 </div>
391 <div class="fig">
392 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2018.53.16.png" alt="Figure 2.30. Object tree" style="max-width:360px;" onclick="openLightbox(this)"/>
393 <p class="fig-cap">Figure 2.30. Object tree</p>
394 </div>
395 <div class="fig">
396 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2019.06.00.png" alt="Figure 2.31. Tag table" style="max-width:100%;" onclick="openLightbox(this)"/>
397 <p class="fig-cap">Figure 2.31. Tag table</p>
398 </div>
399 <div class="fig">
400 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2019.11.13.png" alt="Figure 2.32. Real-time data charts" style="max-width:100%;" onclick="openLightbox(this)"/>
401 <p class="fig-cap">Figure 2.32. Real-time data charts</p>
402 </div>
403 <div class="fig">
404 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2019.12.20.png" alt="Figure 2.33. Data aggregation options" style="max-width:340px;" onclick="openLightbox(this)"/>
405 <p class="fig-cap">Figure 2.33. Data aggregation options</p>
406 </div>
407 <div class="fig">
408 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2019.18.15.png" alt="Figure 2.34. Chart settings menu" style="max-width:360px;" onclick="openLightbox(this)"/>
409 <p class="fig-cap">Figure 2.34. Chart settings menu</p>
410 </div>
411 <div class="fig">
412 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2019.19.45.png" alt="Figure 2.35. Calendar — data display depth" style="max-width:340px;" onclick="openLightbox(this)"/>
413 <p class="fig-cap">Figure 2.35. Calendar — data display depth</p>
414 </div>
415 <div class="fig">
416 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2019.23.18.png" alt="Figure 2.36. User message on chart" style="max-width:100%;" onclick="openLightbox(this)"/>
417 <p class="fig-cap">Figure 2.36. User message on chart</p>
418 </div>
419 <div class="fig">
420 <img src="/xwiki/bin/download/CENTO%20Manuals/1.%20User%20Manual/WebHome/Screenshot%202025-11-12%20at%2019.24.15.png" alt="Figure 2.37. Table tab" style="max-width:100%;" onclick="openLightbox(this)"/>
421 <p class="fig-cap">Figure 2.37. Table tab</p>
422 </div>
Lana 8.2 423
Iaroslav Platonov 240.2 424 <h4 id="s-metering">2.3.2 Metering data analysis<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-metering')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h4>
425 <p>Metering data (electricity, energy, hours, emissions) in tabular and chart formats. Supports aggregation by hour/day/month/year and Excel export.</p>
Lana 10.2 426
Iaroslav Platonov 240.2 427 <h4 id="s-receipt">2.3.3 Receipt of metering data form<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-receipt')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h4>
428 <p>Structured form for reviewing and confirming receipt of interval metering data. Allows marking data as received and adding operator comments.</p>
Lana 10.2 429
Iaroslav Platonov 240.2 430 <h4 id="s-diagnostic">2.3.4 Device diagnostic<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-diagnostic')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h4>
431 <p>Communication quality and polling stats: last poll time, response rate, error counts, protocol-level diagnostics.</p>
Lana 10.2 432
Iaroslav Platonov 240.2 433 <!-- 2.4 -->
434 <h3 id="s-logs">2.4 Logs<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-logs')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
435 <p>Set of logs available depending on license and access rights.</p>
436 <details class="acc" id="s-techevents">
437 <summary><span class="acc-num">2.4.1</span><span class="acc-title">Technology events</span><a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-techevents')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></summary>
438 <div class="acc-body"><p>Records all process-level events: status changes, threshold crossings, control commands, with timestamps and operator attribution.</p></div>
439 </details>
440 <details class="acc" id="s-camcoders">
441 <summary><span class="acc-num">2.4.2</span><span class="acc-title">Camcoders</span><a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-camcoders')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></summary>
442 <div class="acc-body"><p>Log of disturbance recorder trigger events linked to oscillogram captures. Each entry links to the corresponding waveform file.</p></div>
443 </details>
444 <details class="acc" id="s-pq">
445 <summary><span class="acc-num">2.4.3</span><span class="acc-title">Power quality</span><a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-pq')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></summary>
446 <div class="acc-body"><p>PQ events from connected analyzers: voltage dips, swells, harmonics, flicker. <strong>Requires PQA license.</strong></p></div>
447 </details>
448 <details class="acc" id="s-waveforms">
449 <summary><span class="acc-num">2.4.4</span><span class="acc-title">Waveforms</span><a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-waveforms')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></summary>
450 <div class="acc-body"><p>List of captured oscillogram files. Click any entry to open the waveform viewer. See the <strong>Waveform Viewing Manual</strong>.</p></div>
451 </details>
452 <details class="acc" id="s-devevents">
453 <summary><span class="acc-num">2.4.5</span><span class="acc-title">Device events</span><a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-devevents')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></summary>
454 <div class="acc-body"><p>Events reported by field devices via native protocols (IEC 61850 GOOSE, IEC-104). Includes device-side timestamps where available.</p></div>
455 </details>
456 <details class="acc" id="s-sysevents">
457 <summary><span class="acc-num">2.4.6</span><span class="acc-title">System events</span><a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-sysevents')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></summary>
458 <div class="acc-body"><p>Server start/stop, configuration changes, licence updates, communication link state changes.</p></div>
459 </details>
460 <details class="acc" id="s-comments">
461 <summary><span class="acc-num">2.4.7</span><span class="acc-title">User comments log</span><a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-comments')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></summary>
462 <div class="acc-body"><p>Chronological record of operator comments. Searchable by author, date, and text.</p></div>
463 </details>
464 <details class="acc" id="s-allevents">
465 <summary><span class="acc-num">2.4.8</span><span class="acc-title">All events log</span><a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-allevents')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></summary>
466 <div class="acc-body"><p>Consolidated view of all log types in a single timeline. Supports cross-type filtering and Excel export.</p></div>
467 </details>
468 <details class="acc" id="s-customlogs">
469 <summary><span class="acc-num">2.4.9</span><span class="acc-title">Custom logs</span><a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-customlogs')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></summary>
470 <div class="acc-body"><p>User-defined log views combining selected event types, devices, and filters. Saved per user.</p></div>
471 </details>
Lana 10.2 472
Iaroslav Platonov 240.2 473 <!-- 2.5 -->
474 <h3 id="s-reports">2.5 Reports<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-reports')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
475 <details class="acc" id="s-flexible">
476 <summary><span class="acc-num">2.5.1</span><span class="acc-title">Flexible reports</span><a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-flexible')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></summary>
477 <div class="acc-body"><p>Included in CENTO basic. Configurable tabular reports based on metering channels. See the <strong>Flexible Reports Guide</strong>.</p></div>
478 </details>
479 <details class="acc" id="s-pqreports">
480 <summary><span class="acc-num">2.5.2</span><span class="acc-title">Power quality reports</span><a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-pqreports')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></summary>
481 <div class="acc-body"><p>Automated PQ compliance reports (EN 50160 and similar). <strong>Requires Power Quality license.</strong></p></div>
482 </details>
483 <details class="acc" id="s-shortcircuit">
484 <summary><span class="acc-num">2.5.3</span><span class="acc-title">Short circuit currents</span><a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-shortcircuit')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></summary>
485 <div class="acc-body"><p>Max and min short-circuit currents at network nodes. <strong>Requires Short Circuit module license.</strong></p></div>
486 </details>
Lana 10.2 487
Iaroslav Platonov 240.2 488 <h3 id="s-journal">2.6 Operative Journal<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-journal')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
489 <p>Shift-based logbook organised by shift, unit, and equipment type. Supports templates, attachments, and electronic signatures.</p>
Lana 12.2 490
Iaroslav Platonov 240.2 491 <h3 id="s-widgets">2.7 Widgets<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-widgets')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
492 <p>Configurable dashboard panels displaying KPIs, charts, or tag values. Personalised per user with drag-and-drop layout adjustment.</p>
Lana 12.2 493
Iaroslav Platonov 240.2 494 <h3 id="s-sound">2.8 Sound Alerts<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-sound')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
495 <p>Audible browser alerts for events matching configured conditions. Enabled per user in personal settings.</p>
496 <div class="note">
497 <div class="note-hd" style="color:#DD5600"><span>⚠</span> Warning</div>
498 <div class="note-body">Requires the browser tab to remain active. Backgrounded tabs may experience delayed alerts.</div>
499 </div>
Lana 12.2 500
Iaroslav Platonov 240.2 501 <h3 id="s-popup">2.9 Pop-up Messages<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-popup')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
502 <p>Critical events trigger pop-up banners, acknowledged by the operator and logged with timestamp and user ID.</p>
Lana 12.2 503
Iaroslav Platonov 240.2 504 <!-- Abbreviations -->
505 <h2 id="s-abbrev">Basic Abbreviations<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-abbrev')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h2>
506 <table class="rn-table" style="max-width:480px">
507 <thead><tr><th style="width:80px">Abbr.</th><th>Meaning</th></tr></thead>
508 <tbody>
509 <tr><td><strong>IM</strong></td><td>Information Model</td></tr>
510 <tr><td><strong>PQA</strong></td><td>Power Quality Analyser</td></tr>
511 <tr><td><strong>SCADA</strong></td><td>Supervisory Control and Data Acquisition</td></tr>
512 <tr><td><strong>S2S</strong></td><td>Server-to-Server data exchange</td></tr>
513 <tr><td><strong>HA</strong></td><td>High Availability / Redundancy</td></tr>
514 </tbody>
515 </table>
Lana 3.2 516
Iaroslav Platonov 240.2 517 <!-- Status Codes -->
518 <h2 id="s-statuses">Reference: Status Codes<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-statuses')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h2>
519 <h3 id="s-devstat">Table 2.1 — Device Statuses<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-devstat')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
520 <table class="rn-table" style="max-width:480px">
521 <thead><tr><th style="width:60px">Code</th><th>Status</th></tr></thead>
522 <tbody>
523 <tr><td><span class="sc">0</span></td><td>Disabled</td></tr>
524 <tr><td><span class="sc">1</span></td><td>Normal</td></tr>
525 <tr><td><span class="sc">2</span></td><td>Data in device with errors</td></tr>
526 <tr><td><span class="sc">3</span></td><td>Device unavailable</td></tr>
527 <tr><td><span class="sc">4</span></td><td>Manual input data present</td></tr>
528 <tr><td><span class="sc">9</span></td><td>Status not available</td></tr>
529 </tbody>
530 </table>
531 <h3 id="s-tagstat">Table 2.2 — Tag Statuses<a class="anchor-icon" href="javascript:void(0)" onclick="copyAnchor('s-tagstat')" title="Copy link"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor" style="flex-shrink:0"><path d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"/></svg></a></h3>
532 <table class="rn-table" style="max-width:480px">
533 <thead><tr><th style="width:60px">Code</th><th>Status</th></tr></thead>
534 <tbody>
535 <tr><td><span class="sc">0</span></td><td>Disabled</td></tr>
536 <tr><td><span class="sc">1</span></td><td>Normal</td></tr>
537 <tr><td><span class="sc">2</span></td><td>Processing error</td></tr>
538 <tr><td><span class="sc">3</span></td><td>Receiving error</td></tr>
539 <tr><td><span class="sc">4</span></td><td>Manual input of tag value</td></tr>
540 <tr><td><span class="sc">5</span></td><td>Manual input in arguments</td></tr>
541 <tr><td><span class="sc">6</span></td><td>Disabled device or protocol</td></tr>
542 <tr><td><span class="sc">8</span></td><td>Bad tag quality</td></tr>
543 <tr><td><span class="sc">9</span></td><td>Status unknown</td></tr>
544 </tbody>
545 </table>
Lana 13.2 546
Iaroslav Platonov 240.2 547 </div><!-- /doc-content -->
Lana 13.2 548
Iaroslav Platonov 240.2 549 <!-- ── TOC right — Oracle style ── -->
550 <nav class="doc-toc">
551 <div class="toc-header">
552 <strong>On This Page</strong>
553 <button class="toc-toggle" id="toc-tog" title="Collapse">«</button>
554 </div>
555 <ul id="toc-list">
556 <li class="tl1"><a href="#s-login" data-toc>1. System Login</a></li>
557 <li class="tl1"><a href="#s-ui" data-toc>2. User Interface</a></li>
558 <li class="tl2"><a href="#s-menu" data-toc>2.1 Main Menu</a></li>
559 <li class="tl2"><a href="#s-diagrams" data-toc>2.2 Diagrams</a></li>
560 <li class="tl3"><a href="#s-control" data-toc>2.2.1 Control</a></li>
561 <li class="tl2"><a href="#s-analysis" data-toc>2.3 Analysis</a></li>
562 <li class="tl3"><a href="#s-rtd" data-toc>2.3.1 Real-time data</a></li>
563 <li class="tl3"><a href="#s-metering" data-toc>2.3.2 Metering data</a></li>
564 <li class="tl3"><a href="#s-receipt" data-toc>2.3.3 Receipt form</a></li>
565 <li class="tl3"><a href="#s-diagnostic" data-toc>2.3.4 Device diagnostic</a></li>
566 <li class="tl2"><a href="#s-logs" data-toc>2.4 Logs</a></li>
567 <li class="tl3"><a href="#s-techevents" data-toc>2.4.1 Technology events</a></li>
568 <li class="tl3"><a href="#s-camcoders" data-toc>2.4.2 Camcoders</a></li>
569 <li class="tl3"><a href="#s-pq" data-toc>2.4.3 Power quality</a></li>
570 <li class="tl3"><a href="#s-waveforms" data-toc>2.4.4 Waveforms</a></li>
571 <li class="tl3"><a href="#s-devevents" data-toc>2.4.5 Device events</a></li>
572 <li class="tl3"><a href="#s-sysevents" data-toc>2.4.6 System events</a></li>
573 <li class="tl3"><a href="#s-comments" data-toc>2.4.7 Comments log</a></li>
574 <li class="tl3"><a href="#s-allevents" data-toc>2.4.8 All events</a></li>
575 <li class="tl3"><a href="#s-customlogs" data-toc>2.4.9 Custom logs</a></li>
576 <li class="tl2"><a href="#s-reports" data-toc>2.5 Reports</a></li>
577 <li class="tl3"><a href="#s-flexible" data-toc>2.5.1 Flexible reports</a></li>
578 <li class="tl3"><a href="#s-pqreports" data-toc>2.5.2 Power quality</a></li>
579 <li class="tl3"><a href="#s-shortcircuit" data-toc>2.5.3 Short circuit</a></li>
580 <li class="tl2"><a href="#s-journal" data-toc>2.6 Operative journal</a></li>
581 <li class="tl2"><a href="#s-widgets" data-toc>2.7 Widgets</a></li>
582 <li class="tl2"><a href="#s-sound" data-toc>2.8 Sound alerts</a></li>
583 <li class="tl2"><a href="#s-popup" data-toc>2.9 Pop-up messages</a></li>
584 <li class="tl1"><a href="#s-abbrev" data-toc>Abbreviations</a></li>
585 <li class="tl1"><a href="#s-statuses" data-toc>Status Codes</a></li>
586 </ul>
587 </nav>
Lana 13.2 588
Iaroslav Platonov 240.2 589 </div><!-- /doc-wrap -->
590 <script>
591 (function(){
592 var bar = document.getElementById('rn-prog');
593 var top = document.getElementById('rn-top');
594 window.addEventListener('scroll', function(){
595 var d = document.documentElement;
596 var pct = d.scrollTop / (d.scrollHeight - d.clientHeight);
597 bar.style.width = (pct*100)+'%';
598 d.scrollTop > 280 ? top.classList.add('on') : top.classList.remove('on');
599 }, {passive:true});
Lana 16.2 600
Iaroslav Platonov 240.2 601 /* TOC active via IntersectionObserver */
602 var links = Array.from(document.querySelectorAll('[data-toc]'));
603 var secs = links.map(function(a){
604 return {el: document.getElementById(a.getAttribute('href').slice(1)), a:a};
605 }).filter(function(s){return s.el;});
Lana 16.2 606
Iaroslav Platonov 240.2 607 var busy = false;
608 var obs = new IntersectionObserver(function(entries){
609 if (busy) return;
610 entries.forEach(function(e){
611 if (!e.isIntersecting) return;
612 var i = secs.findIndex(function(s){return s.el===e.target;});
613 if (i<0) return;
614 secs.forEach(function(s){s.a.classList.remove('toc-on');});
615 secs[i].a.classList.add('toc-on');
616 var toc = document.querySelector('.doc-toc');
617 var link = secs[i].a;
618 toc.scrollTop = link.offsetTop - toc.offsetTop - toc.clientHeight/2 + link.clientHeight/2;
619 });
620 }, {rootMargin:'-8% 0px -60% 0px', threshold:0});
621 secs.forEach(function(s){obs.observe(s.el);});
Lana 16.2 622
Iaroslav Platonov 240.2 623 links.forEach(function(a){
624 a.addEventListener('click', function(e){
625 var id = a.getAttribute('href').slice(1);
626 var el = document.getElementById(id);
627 if (!el) return;
628 e.preventDefault();
629 busy = true;
630 secs.forEach(function(s){s.a.classList.remove('toc-on');});
631 a.classList.add('toc-on');
632 el.scrollIntoView({behavior:'smooth',block:'start'});
633 setTimeout(function(){busy=false;}, 900);
634 });
635 });
Lana 16.2 636
Iaroslav Platonov 240.2 637 /* TOC collapse */
638 var tocList = document.getElementById('toc-list');
639 var togBtn = document.getElementById('toc-tog');
640 var collapsed = false;
641 togBtn && togBtn.addEventListener('click', function(){
642 collapsed = !collapsed;
643 tocList.style.display = collapsed ? 'none' : '';
644 togBtn.textContent = collapsed ? '»' : '«';
645 });
Lana 19.2 646
Iaroslav Platonov 240.2 647 /* Lightbox */
648 var lb = document.getElementById('rn-lb');
649 var lbI = document.getElementById('rn-lb-img');
650 var lbC = document.getElementById('rn-lb-cap');
651 window.openLightbox = function(img){
652 lbI.src = img.src; lbI.alt = img.alt; lbC.textContent = img.alt;
653 lb.classList.add('open'); document.body.style.overflow='hidden';
654 };
655 window.closeLightbox = function(){
656 lb.classList.remove('open'); document.body.style.overflow='';
657 };
658 lb.addEventListener('click', function(e){if(e.target===lb)closeLightbox();});
659 document.addEventListener('keydown', function(e){if(e.key==='Escape')closeLightbox();});
Lana 19.2 660
Iaroslav Platonov 240.2 661 /* Copy anchor */
662 var toast = document.getElementById('rn-toast');
663 var t;
664 window.copyAnchor = function(id){
665 var url = location.href.split('#')[0]+'#'+id;
666 if(navigator.clipboard) navigator.clipboard.writeText(url).catch(function(){});
667 else { var x=document.createElement('textarea');x.value=url;document.body.appendChild(x);x.select();document.execCommand('copy');document.body.removeChild(x); }
668 toast.classList.add('on');
669 clearTimeout(t);
670 t = setTimeout(function(){toast.classList.remove('on');}, 1600);
671 };
Lana 19.2 672
Iaroslav Platonov 240.2 673 /* ── Sticky TOC via JS ──
674 Uses position:absolute→fixed switch. No placeholder needed because
675 .doc-content has a fixed margin-right — content width never changes. */
676 (function(){
677 var toc = document.querySelector('.doc-toc');
678 var wrap = document.querySelector('.doc-wrap');
679 if (!toc || !wrap) return;
Lana 19.2 680
Iaroslav Platonov 240.2 681 var navbar = document.querySelector('.navbar, nav.navbar, #topBar, header');
682 var navH = navbar ? navbar.offsetHeight : 0;
683 var footer = document.querySelector('footer, .xwikifooter, #xwikifooter, .bottombar, .sticky-container');
Lana 19.2 684
Iaroslav Platonov 240.2 685 function update() {
686 var wr = wrap.getBoundingClientRect();
Lana 20.2 687
Iaroslav Platonov 240.2 688 if (wr.top <= navH) {
689 /* Doc-wrap has scrolled above navbar — fix the TOC */
690 var footerTop = footer ? footer.getBoundingClientRect().top : window.innerHeight;
691 var h = Math.max(0, Math.min(window.innerHeight, footerTop) - navH);
Lana 20.2 692
Iaroslav Platonov 240.2 693 toc.classList.add('is-fixed');
694 toc.style.top = navH + 'px';
695 toc.style.left = (wr.right - 200) + 'px'; /* right edge of wrap minus TOC width */
696 toc.style.height = h + 'px';
697 } else {
698 /* Still in natural position */
699 toc.classList.remove('is-fixed');
700 toc.style.top = toc.style.left = toc.style.height = '';
701 }
702 }
Lana 20.2 703
Iaroslav Platonov 240.2 704 requestAnimationFrame(function(){ requestAnimationFrame(function(){
705 update();
706 window.addEventListener('scroll', update, {passive:true});
707 window.addEventListener('resize', update, {passive:true});
708 }); });
709 })();
710 })();
711 </script>
712 {{/html}}