<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html class="client-nojs" dir="ltr" lang="en"> <head> <meta charset="UTF-8" /> <title>Модулі/Рушій Середовища Візуалізації та Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ (СВУ) - OpenSCADAWiki</title> <meta content="MediaWiki 1.26.4" name="generator" /> <link href="https://www.gnu.org/copyleft/fdl.html" rel="copyright" /> <link href="../../en/files/doc.css" rel="stylesheet" /></head> <body><div class="floatright"><a href="../index.html"><img alt="OpenSCADA" src="../../en/files/index.png" /></a></div><div id="mw_header"> <div class="mw-indicators"> </div> <h1 id="firstHeading" lang="uk">Модулі/Рушій Середовища Візуалізації та Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ (СВУ)</h1> </div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="uk"><div class="mw-pt-translate-header noprint" dir="ltr" lang="en">This page is a <span class="plainlinks"><a class="external text" href="http://oscada.org/wiki/index.php?title=Special:Translate&group=page-Modules%2FVCAEngine&action=page&filter=&language=uk" rel="nofollow noreferrer noopener" target="_blank">translated version</a></span> of the page <a class="external" href="http://oscada.org/wiki/Modules/VCAEngine" title="Modules/VCAEngine">Modules/VCAEngine</a> and the translation is 100% complete.</div><hr /><div class="mw-pt-languages" dir="ltr" lang="en"><div class="mw-pt-languages-list autonym"><a class="mw-pt-languages-ui mw-pt-progress mw-pt-progress--complete" href="../../en/Modules/VCAEngine.html" title="Modules/VCAEngine (100% translated)">English</a> • ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../../ru/Modules/VCAEngine.html" title="Модули/Движок Среды Визуализации и Управлений (СВУ) (81% translated)">mRussian</a> • ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">УкраїнÑька</span></div></div> <table class="wikitable"> <tr> <th> Модуль </th> <th> Ім'Ñ </th> <th> ВерÑÑ–Ñ </th> <th> Ð›Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ </th> <th> Джерело </th> <th> Мови </th> <th> Платформи </th> <th> Тип </th> <th> Ðвтор </th></tr> <tr> <td> <a href="../Modules/VCAEngine.html" title="Special:MyLanguage/Modules/VCAEngine">VCAEngine</a> </td> <td> Рушій Середовища Візуалізації та Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ </td> <td> 7.17 </td> <td> GPL2 </td> <td> ui_VCAEngine.so </td> <td> en,uk,ru,de </td> <td> x86,x86_64,ARM </td> <td> UI </td> <td> Роман Савоченко </td></tr> <tr> <th colspan="9"> ÐžÐ¿Ð¸Ñ </th></tr> <tr> <td colspan="9"> Загальний рушій Ñередовища візуалізації та керуваннÑ. <ul><li> <b>СпонÑоруваннÑ, Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¼ÐµÑ…Ð°Ð½Ñ–Ð·Ð¼Ñƒ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½ виконаннÑм візуалізатору без зайвих запитів та втрати даних на 1.5 <span title="людино-днів, 1ЛД — 10 годин">ЛД<sup style="color: blue">[!]</sup></span>:</b> Вінницька Птахофабрика</li> <li> <b><a href="../../en/To_do.html" title="Special:MyLanguage/Works/To do">Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ (To Do)</a>:</b></li></ul> <dl><dd> - доповнити кориÑтувацьке API Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² раÑтром (PNG, JPEG, GIF), поÑередництвом LibGD2, та векторно (SVG): <dl><dd>- реалізувати оÑновні функції об'єкту GD (у <a href="../Modules/FLibSYS.html" title="Special:MyLanguage/Modules/FLibSYS">Special.FLibSYS</a>).</dd></dl></dd> <dd> ... <i>також Ð´Ð»Ñ <a href="../Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">Vision</a></i> ...</dd> <dd> - перенеÑти запити чаÑу Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð´Ð¾ VCAEngine у аÑинхронний режим; <dl><dd> !> має проблему із опрацюваннÑм рекурÑивних подій у event(), Ð´Ð»Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑƒ втрати подій відпуÑÐºÐ°Ð½Ð½Ñ Ð¼Ð¸ÑˆÑ– при опрацюванні подій натиÑÐºÐ°Ð½Ð½Ñ Ð¼Ð¸ÑˆÑ–.</dd></dl></dd> <dd> - реалізувати фонове Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ€ÐµÐ´Ð°Ð³Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñторінок у режимі розробки, Ð´Ð»Ñ Ð²Ñ–Ð·ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ñ–Ð°Ð³Ñ€Ð°Ð¼ Ñпільно із <a href="../Modules/BlockCalc.html" title="Special:MyLanguage/Modules/BlockCalc">BlockCalc</a> та DAQ-джерелами загалом.</dd> <dd> ... <i>також Ð´Ð»Ñ <a href="../Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">Vision</a> та <a href="../Modules/WebVision.html" title="Special:MyLanguage/Modules/WebVision">WebVision</a></i> ...</dd> <dd> - додати глобальне меню проÑтору кориÑтувача за допомогою Ñпецифічних до проєкту влаÑтивоÑтей;</dd> <dd> - розробити Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð»Ð¾ÐºÐ¾Ð²Ð¸Ñ… діаграм (динамічними кадрами) із графічного інтерфейÑу;</dd> <dd> * адаптувати бібліотеки віджетів та проєкти СВУ до ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–Ð¶ хоÑтами.</dd></dl> </td></tr></table> <p>Модуль надає до OpenSCADA рушій Ñередовища візуалізації та ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ (СВУ). Сам модуль не реалізує візуалізації СВУ, а міÑтить дані відповідно до концепції "Модель/дані – ІнтерфейÑ". Ð’Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð´Ð°Ð½Ð¸Ñ… цього Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑÑ Ð¼Ð¾Ð´ÑƒÐ»Ñми візуалізації СВУ, наприклад, модулем <a href="../Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">Vision</a> та <a href="../Modules/WebVision.html" title="Special:MyLanguage/Modules/WebVision">WebVision</a>. </p><p>Середовище візуалізації та ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ (СВУ) Ñ” невід'ємною Ñкладовою SCADA ÑиÑтеми. Воно заÑтоÑовуєтьÑÑ Ð½Ð° клієнтÑьких ÑтанціÑÑ… з метою доÑтупного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про об'єкт ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ‚Ð° видачі керуючого впливу на об'єкт. У різних практичних ÑитуаціÑÑ… та умовах можуть заÑтоÑовуватиÑÑ Ð¡Ð’Ð£, побудовані на різних принципах візуалізації. Ðаприклад, це можуть бути бібліотеки віджетів Qt, GTK+, wxWidgets або гіпертекÑтові механізми на оÑнові технологій HTML, XHTML, XML, CSS та JavaScript або Ñторонні додатки візуалізації, реалізовані на різних мовах Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Java, Python та інше. Будь-Ñкий з цих принципів має Ñвої переваги та недоліки, ÐºÐ¾Ð¼Ð±Ñ–Ð½Ð°Ñ†Ñ–Ñ Ñких може Ñтати непереборною перепоною у можливоÑті викориÑÑ‚Ð°Ð½Ð½Ñ Ð¡Ð’Ð£ у тому або іншому практичному випадку. Ðаприклад, технології на кшталт бібліотеки Qt дозволÑють Ñтворювати виÑокопродуктивні СВУ, що безÑумнівно важливо Ð´Ð»Ñ Ñтанцій оператору ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ‚ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ð¸Ð¼ процеÑом (ТП). Однак необхідніÑть інÑталÑції даного клієнтÑького ПЗ може унеможливити його викориÑÑ‚Ð°Ð½Ð½Ñ Ñƒ окремих випадках. З іншого боку, Web-технології не потребують інÑталÑції на клієнтÑькі ÑиÑтеми та Ñ” гранично багатоплатформними (доÑтатньо вказати поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Web-Ñервер у будь-Ñкому Web-браузері), що найбільш важливо Ð´Ð»Ñ Ñ€Ñ–Ð·Ð½Ð¸Ñ… інженерних та адмініÑтративних Ñтанцій. З іншого боку, продуктивніÑть та надійніÑть таких інтерфейÑів нижче, що практично виключає Ñ—Ñ… викориÑÑ‚Ð°Ð½Ð½Ñ Ð½Ð° ÑтанціÑÑ… оператору ТП. </p><p>OpenSCADA має гранично гнучку архітектуру, Ñка дозволÑÑ” Ñтворювати зовнішні інтерфейÑи, у тому чиÑлі й кориÑтувацькі, на будь-Ñкій оÑнові та Ñмак. Ðаприклад, Ñередовище конфігурації OpenSCADA доÑтупне Ñк на Qt-бібліотеці, так Ñ– на Web-оÑнові. </p><p>У той-же чаÑ, незалежне ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ð¹ СВУ на різній оÑнові може потÑгти за Ñобою неможливіÑть викориÑÑ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… конфігурації однієї СВУ на іншій. Що незручно та обмежено з кориÑтувацького боку, а також витратно у плані реалізації та подальшої підтримки. </p><p>З метою Ð·Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ†Ð¸Ñ… проблем, а також ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñƒ найкоротший термін повного Ñпектру різних типів СВУ, заÑновано <a class="external" href="http://oscada.org/wiki/Special:MyLanguage/Sub-projects/VCA" title="Special:MyLanguage/Sub-projects/VCA">проєкт ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ†ÐµÐ¿Ñ†Ñ–Ñ— СВУ</a>. Результатом цього проєкту Ñтав даний модуль рушіÑ(моделі даних) СВУ, а також модулі безпоÑередньої візуалізації <a href="../Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">Vision</a> та <a href="../Modules/WebVision.html" title="Special:MyLanguage/Modules/WebVision">WebVision</a>. </p> <div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#.D0.9F.D1.80.D0.B8.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.BD.D1.8F"><span class="tocnumber">1</span> <span class="toctext">ПризначеннÑ</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#.D0.9A.D0.BE.D0.BD.D1.84.D1.96.D0.B3.D1.83.D1.80.D0.B0.D1.86.D1.96.D1.8F_.D1.82.D0.B0_.D1.84.D0.BE.D1.80.D0.BC.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F_.D1.96.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.96.D0.B2_.D0.A1.D0.92.D0.A3"><span class="tocnumber">2</span> <span class="toctext">ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ñ‚Ð° Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñів СВУ</span></a></li> <li class="toclevel-1 tocsection-3"><a href="#.D0.90.D1.80.D1.85.D1.96.D1.82.D0.B5.D0.BA.D1.82.D1.83.D1.80.D0.B0"><span class="tocnumber">3</span> <span class="toctext">Ðрхітектура</span></a> <ul> <li class="toclevel-2 tocsection-4"><a href="#.D0.9A.D0.B0.D0.B4.D1.80.D0.B8_.D1.82.D0.B0_.D0.B5.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82.D0.B8_.D0.B2.D1.96.D0.B4.D0.BE.D0.B1.D1.80.D0.B0.D0.B6.D0.B5.D0.BD.D0.BD.D1.8F_.28.D0.B2.D1.96.D0.B4.D0.B6.D0.B5.D1.82.D0.B8.29"><span class="tocnumber">3.1</span> <span class="toctext">Кадри та елементи Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (віджети)</span></a></li> <li class="toclevel-2 tocsection-5"><a href="#.D0.9F.D1.80.D0.BE.D1.94.D0.BA.D1.82"><span class="tocnumber">3.2</span> <span class="toctext"><span>Проєкт</span></span></a></li> <li class="toclevel-2 tocsection-6"><a href="#.D0.A1.D0.B5.D0.B0.D0.BD.D1.81_.D0.B2.D0.B8.D0.BA.D0.BE.D0.BD.D0.B0.D0.BD.D0.BD.D1.8F_.D0.BF.D1.80.D0.BE.D1.94.D0.BA.D1.82.D1.83"><span class="tocnumber">3.3</span> <span class="toctext">Ð¡ÐµÐ°Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ</span></a></li> <li class="toclevel-2 tocsection-7"><a href="#.D0.A1.D1.82.D0.B8.D0.BB.D1.96"><span class="tocnumber">3.4</span> <span class="toctext">Стилі</span></a></li> <li class="toclevel-2 tocsection-8"><a href="#.D0.9F.D0.BE.D0.B4.D1.96.D1.97.2C_.D1.97.D1.85_.D0.BE.D0.B1.D1.80.D0.BE.D0.B1.D0.BA.D0.B0_.D1.82.D0.B0_.D0.BA.D0.B0.D1.80.D1.82.D0.B8_.D0.BF.D0.BE.D0.B4.D1.96.D0.B9"><span class="tocnumber">3.5</span> <span class="toctext">Події, Ñ—Ñ… обробка та карти подій</span></a></li> <li class="toclevel-2 tocsection-9"><a href="#.D0.A1.D0.B8.D0.B3.D0.BD.D0.B0.D0.BB.D1.96.D0.B7.D0.B0.D1.86.D1.96.D1.8F"><span class="tocnumber">3.6</span> <span class="toctext"><span>СигналізаціÑ</span></span></a></li> <li class="toclevel-2 tocsection-10"><a href="#.D0.A3.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D1.96.D0.BD.D0.BD.D1.8F_.D0.BF.D1.80.D0.B0.D0.B2.D0.B0.D0.BC.D0.B8"><span class="tocnumber">3.7</span> <span class="toctext">Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸</span></a></li> <li class="toclevel-2 tocsection-11"><a href="#.D0.97.D0.B2.27.D1.8F.D0.B7.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F_.D0.B7_.D0.B4.D0.B8.D0.BD.D0.B0.D0.BC.D1.96.D0.BA.D0.BE.D1.8E"><span class="tocnumber">3.8</span> <span class="toctext">Зв'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð· динамікою</span></a></li> <li class="toclevel-2 tocsection-12"><a href="#.D0.9F.D1.80.D0.B8.D0.BC.D1.96.D1.82.D0.B8.D0.B2.D0.B8_.D0.B2.D1.96.D0.B4.D0.B6.D0.B5.D1.82.D1.96.D0.B2"><span class="tocnumber">3.9</span> <span class="toctext"><span>Примітиви віджетів</span></span></a> <ul> <li class="toclevel-3"><a href="#.D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82.D0.B0.D1.80.D0.BD.D0.B0_.D0.B3.D1.80.D0.B0.D1.84.D1.96.D1.87.D0.BD.D0.B0_.D1.84.D1.96.D0.B3.D1.83.D1.80.D0.B0_.28ElFigure.29"><span class="tocnumber">3.9.1</span> <span class="toctext"><span>Елементарна графічна фігура (ElFigure)</span></span></a></li> <li class="toclevel-3"><a href="#.D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82_.D1.84.D0.BE.D1.80.D0.BC.D0.B8_.28FormEl.29"><span class="tocnumber">3.9.2</span> <span class="toctext"><span>Елемент форми (FormEl)</span></span></a></li> <li class="toclevel-3"><a href="#.D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82_.D1.82.D0.B5.D0.BA.D1.81.D1.82.D1.83_.28Text.29"><span class="tocnumber">3.9.3</span> <span class="toctext"><span>Елемент текÑту (Text)</span></span></a></li> <li class="toclevel-3"><a href="#.D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82_.D0.B2.D1.96.D0.B4.D0.BE.D0.B1.D1.80.D0.B0.D0.B6.D0.B5.D0.BD.D0.BD.D1.8F_.D0.BC.D0.B5.D0.B4.D1.96.D0.B0-.D0.BC.D0.B0.D1.82.D0.B5.D1.80.D1.96.D0.B0.D0.BB.D1.96.D0.B2_.28Media.29"><span class="tocnumber">3.9.4</span> <span class="toctext"><span>Елемент Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼ÐµÐ´Ñ–Ð°-матеріалів (Media)</span></span></a></li> <li class="toclevel-3"><a href="#.D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82_.D0.BF.D0.BE.D0.B1.D1.83.D0.B4.D0.BE.D0.B2.D0.B8_.D0.B4.D1.96.D0.B0.D0.B3.D1.80.D0.B0.D0.BC_.28Diagram.29"><span class="tocnumber">3.9.5</span> <span class="toctext"><span>Елемент побудови діаграм (Diagram)</span></span></a></li> <li class="toclevel-3"><a href="#.D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82_.D0.BF.D0.BE.D0.B1.D1.83.D0.B4.D0.BE.D0.B2.D0.B8_.D0.BF.D1.80.D0.BE.D1.82.D0.BE.D0.BA.D0.BE.D0.BB.D1.96.D0.B2_.D0.BD.D0.B0_.D0.BE.D1.81.D0.BD.D0.BE.D0.B2.D1.96_.D0.B0.D1.80.D1.85.D1.96.D0.B2.D1.96.D0.B2_.D0.BF.D0.BE.D0.B2.D1.96.D0.B4.D0.BE.D0.BC.D0.BB.D0.B5.D0.BD.D1.8C_.28Protocol.29"><span class="tocnumber">3.9.6</span> <span class="toctext"><span>Елемент побудови протоколів на оÑнові архівів повідомлень (Protocol)</span></span></a></li> <li class="toclevel-3"><a href="#.D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82_.D1.84.D0.BE.D1.80.D0.BC.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F_.D0.B7.D0.B2.D1.96.D1.82.D0.BD.D0.BE.D1.97_.D0.B4.D0.BE.D0.BA.D1.83.D0.BC.D0.B5.D0.BD.D1.82.D0.B0.D1.86.D1.96.D1.97_.28Document.29"><span class="tocnumber">3.9.7</span> <span class="toctext"><span>Елемент Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð²Ñ–Ñ‚Ð½Ð¾Ñ— документації (Document)</span></span></a></li> <li class="toclevel-3"><a href="#.D0.9A.D0.BE.D0.BD.D1.82.D0.B5.D0.B9.D0.BD.D0.B5.D1.80_.28Box.29"><span class="tocnumber">3.9.8</span> <span class="toctext"><span>Контейнер (Box)</span></span></a></li> </ul> </li> <li class="toclevel-2 tocsection-13"><a href="#.D0.92.D0.B8.D0.BA.D0.BE.D1.80.D0.B8.D1.81.D1.82.D0.B0.D0.BD.D0.BD.D1.8F_.D0.91.D0.94_.D0.B4.D0.BB.D1.8F_.D0.B7.D0.B1.D0.B5.D1.80.D1.96.D0.B3.D0.B0.D0.BD.D0.BD.D1.8F_.D0.B1.D1.96.D0.B1.D0.BB.D1.96.D0.BE.D1.82.D0.B5.D0.BA_.D0.B2.D1.96.D0.B4.D0.B6.D0.B5.D1.82.D1.96.D0.B2_.D1.82.D0.B0_.D0.BF.D1.80.D0.BE.D1.94.D0.BA.D1.82.D1.96.D0.B2"><span class="tocnumber">3.10</span> <span class="toctext">ВикориÑÑ‚Ð°Ð½Ð½Ñ Ð‘Ð” Ð´Ð»Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐº віджетів та проєктів</span></a></li> <li class="toclevel-2 tocsection-14"><a href="#API_.D0.BA.D0.BE.D1.80.D0.B8.D1.81.D1.82.D1.83.D0.B2.D0.B0.D1.86.D1.8C.D0.BA.D0.BE.D0.B3.D0.BE_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F"><span class="tocnumber">3.11</span> <span class="toctext"><span>API кориÑтувацького програмуваннÑ</span></span></a></li> <li class="toclevel-2 tocsection-15"><a href="#.D0.A1.D0.B5.D1.80.D0.B2.D1.96.D1.81.D0.BD.D1.96_.D0.BA.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D0.B8-.D1.84.D1.83.D0.BD.D0.BA.D1.86.D1.96.D1.97_.D0.86.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.83_.D0.A3.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D1.96.D0.BD.D0.BD.D1.8F"><span class="tocnumber">3.12</span> <span class="toctext">СервіÑні команди-функції ІнтерфейÑу УправліннÑ</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-16"><a href="#.D0.9A.D0.BE.D0.BD.D1.84.D1.96.D0.B3.D1.83.D1.80.D0.B0.D1.86.D1.96.D1.8F_.D0.BC.D0.BE.D0.B4.D1.83.D0.BB.D1.8F_.D0.B7.D0.B0_.D0.BF.D0.BE.D1.81.D0.B5.D1.80.D0.B5.D0.B4.D0.BD.D0.B8.D1.86.D1.82.D0.B2.D0.BE.D0.BC_.D1.96.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.83_.D1.83.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D1.96.D0.BD.D0.BD.D1.8F_OpenSCADA"><span class="tocnumber">4</span> <span class="toctext">ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð·Ð° поÑередництвом інтерфейÑу ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ OpenSCADA</span></a></li> </ul> </div> <h2><span class="mw-headline" id=".D0.9F.D1.80.D0.B8.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.BD.D1.8F"><span class="mw-headline-number">1</span> ПризначеннÑ</span></h2> <p>Даний модуль рушіÑ(моделі даних) СВУ призначено Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ð¾Ñ— Ñтруктури СВУ та Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑеанÑів окремих екземплÑрів проєктів СВУ. Також, модуль надає кінцевим візуалізаторам СВУ вÑÑ– необхідні дані, Ñк за поÑередництвом локальних механізмів взаємодії OpenSCADA, так Ñ– інтерфейÑу ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ OpenSCADA, Ð´Ð»Ñ Ð²Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¾Ð³Ð¾ доÑтупу. </p><p>Фінальна верÑÑ–Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¡Ð’Ð£ забезпечить: </p><p>Перелічимо можливоÑті, Ñкі зможе та забезпечує СВУ, побудована на оÑнові даного проєкту: </p> <ul><li> три рівні ÑкладноÑті у формуванні інтерфейÑу візуалізації, Ñкі дозволÑють органічно оÑвоювати та заÑтоÑовувати інÑтрументарій за принципом — від проÑтого до Ñкладного:</li></ul> <dl><dd><ol><li> Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð· шаблонних кадрів, шлÑхом Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–ÐºÐ¸ та без графічної конфігурації;</li> <li> графічне Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð¾Ð²Ð¸Ñ… кадрів, шлÑхом викориÑÑ‚Ð°Ð½Ð½Ñ Ð³Ð¾Ñ‚Ð¾Ð²Ð¸Ñ… елементів візуалізації з бібліотеки — мнемоÑхеми;</li> <li> формуваннÑ, у бібліотеці, нових: кадрів, шаблонних кадрів та елементів відображеннÑ.</li></ol></dd></dl> <ul><li> побудова інтерфейÑів візуалізації практично будь-Ñкої ÑкладноÑті (обмежену "диÑкретніÑтю" функцій примітивів), починаючи від проÑтих інтерфейÑів моніторингу та, закінчуючи повноцінними ієрархічними інтерфейÑами, що викориÑтовуютьÑÑ Ñƒ SCADA ÑиÑтемах;</li> <li> Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ñ€Ñ–Ð·Ð½Ð¸Ñ… ÑпоÑобів Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° конфігурації кориÑтувацького інтерфейÑу, заÑнованих на різних інтерфейÑах графічного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ (Qt, Web, ...), або-ж за поÑередництвом Ñтандартного інтерфейÑу ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ OpenSCADA;</li> <li> побудова та ÐºÐ¾Ñ€ÐµÐºÑ†Ñ–Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñу, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð° зміна динаміки у процеÑÑ– виконаннÑ;</li> <li> побудова, на рівні кориÑтувача, нових шаблонних кадрів та Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñпеціалізованих, під облаÑть заÑтоÑуваннÑ, бібліотек кадрів (наприклад, Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÐºÐ°Ð´Ñ€Ñ–Ð² параметрів, графіків та інших елементів з ув'Ñзкою Ñ—Ñ… один з другим), згідно до ідеї вторинного викориÑтаннÑ, Ð½Ð°ÐºÐ¾Ð¿Ð¸Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð° вдоÑконаленнÑ;</li> <li> побудова нових кориÑтувацьких елементів візуалізації та Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñпеціалізованих, під облаÑть заÑтоÑуваннÑ, бібліотек кадрів, згідно до ідеї вторинного викориÑтаннÑ, Ð½Ð°ÐºÐ¾Ð¿Ð¸Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð° вдоÑконаленнÑ;</li> <li> Ð¾Ð¿Ð¸Ñ Ð»Ð¾Ð³Ñ–ÐºÐ¸ нових шаблонних кадрів та кориÑтувацьких елементів візуалізації Ñк проÑтими зв'Ñзками, так Ñ– лаконічною, повноцінною мовою кориÑтувацького програмуваннÑ;</li> <li> можливіÑть включеннÑ, до кориÑтувацьких елементів візуалізації, функцій (або кадрів обчиÑÐ»ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹) об'єктної моделі OpenSCADA, практично зв'Ñзуючи предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð· алгоритмом обчиÑленнÑ; наприклад, візуалізуючи бібліотеку моделей апаратів ТП, Ð´Ð»Ñ Ð¿Ð¾Ð´Ð°Ð»ÑŒÑˆÐ¾Ñ— візуальної побудови моделей ТП;</li> <li> розподіл даних кориÑтувацьких інтерфейÑів та інтерфейÑів предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ñ†Ð¸Ñ… даних, що дозволÑÑ” будувати Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÐºÐ¾Ñ€Ð¸Ñтувача у одному Ñередовищі, а виконувати у багатьох інших (Qt, Web, ...);</li> <li> можливіÑть Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ виконуваного інтерфейÑу Ð´Ð»Ñ ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ‚Ð° корекції дій; наприклад, при навчанні операторів та контролю за його діÑми у реальному чаÑÑ–;</li> <li> візуальна побудова різних Ñхем з накладаннÑм логічних зв'Ñзків та подальшим централізованим виконаннÑм у фоні — візуальна побудова та Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… моделей, логічних Ñхем, релейних Ñхем та іншого;</li> <li> наданнÑ, до OpenSCADA, функцій об'єктного API; може викориÑтовуватиÑÑ Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñми інтерфейÑу візуалізації із кориÑтувацьких процедур;</li> <li> побудова Ñерверів длÑ: кадрів, елементів візуалізації та проєктів інтерфейÑів візуалізації; з можливіÑтю обÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð½Ð¾Ð¶Ð¸Ð½Ð½Ð¸Ñ… клієнтÑьких підключень;</li> <li> проÑта Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ ÐºÐ»Ñ–Ñ”Ð½Ñ‚Ñьких Ñтанцій на різній оÑнові (Qt, Web, ...), з підключеннÑм до центрального Ñерверу;</li> <li> повноцінний механізм розподілу повноважень між кориÑтувачами, що дозволÑÑ” Ñтворювати та виконувати проєкти з різними правами доÑтупу до його компонентів;</li> <li> гнучке Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» Ñигналізацій та повідомлень, з урахуваннÑм та підтримкою різних ÑпоÑобів повідомленнÑ;</li> <li> підтримка кориÑтувацького Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ð»Ñ–Ñ‚Ñ€Ð¸ та шрифтових переваг інтерфейÑу візуалізації, в ÑтилÑÑ…;</li> <li> підтримка кориÑтувацького Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ñ€Ñ‚ повідомлень під різне Ð¾Ð±Ð»Ð°Ð´Ð½Ð°Ð½Ð½Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ‚Ð° переваги кориÑтувача;</li> <li> підтримка профілів кориÑтувача, що дозволÑють визначати різні влаÑтивоÑті інтерфейÑу візуалізації (гама кольорів, шрифтові оÑобливоÑті, переважні карти повідомлень);</li> <li> гнучке Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‚Ð° розповÑÑŽÐ´Ð¶ÐµÐ½Ð½Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐº віджетів, кадрів та проєктів інтерфейÑів візуалізації у БД, підтримуваних OpenSCADA; практично, кориÑтувачу треба тільки зареєÑтрувати отриману БД з даними.</li></ul> <p><br /> </p> <h2><span class="mw-headline" id=".D0.9A.D0.BE.D0.BD.D1.84.D1.96.D0.B3.D1.83.D1.80.D0.B0.D1.86.D1.96.D1.8F_.D1.82.D0.B0_.D1.84.D0.BE.D1.80.D0.BC.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F_.D1.96.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.96.D0.B2_.D0.A1.D0.92.D0.A3"><span class="mw-headline-number">2</span> ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ñ‚Ð° Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñів СВУ</span></h2> <p>Сам модуль не міÑтить механізмів візуального Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñів СВУ, такі інÑтрументи можуть надаватиÑÑ Ð¼Ð¾Ð´ÑƒÐ»Ñми кінцевої візуалізації СВУ, наприклад, він надаєтьÑÑ Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¼ <a href="../Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">Vision</a>. </p><p>Хоча візуальних механізмів Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð¡Ð’Ð£ модулем не надаєтьÑÑ, Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ð¾Ñ— Ñтруктури надаєтьÑÑ Ð¼ÐµÑ…Ð°Ð½Ñ–Ð·Ð¼, реалізований на оÑнові інтерфейÑу ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ OpenSCADA, а значить, доÑтупний Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ñƒ будь-Ñкому конфігураторі OpenSCADA. Діалоги цього інтерфейÑу розглÑнуто далі, у контекÑті розглÑду архітектури Ð¼Ð¾Ð´ÑƒÐ»Ñ Ñ‚Ð° його даних. </p> <h2><span class="mw-headline" id=".D0.90.D1.80.D1.85.D1.96.D1.82.D0.B5.D0.BA.D1.82.D1.83.D1.80.D0.B0"><span class="mw-headline-number">3</span> Ðрхітектура</span></h2> <p>СВУ, загалом, може працювати у двох режимах — розробки та виконаннÑ. У режимі розробки формуєтьÑÑ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¡Ð’Ð£ та його компоненти, визначаютьÑÑ Ð¼ÐµÑ…Ð°Ð½Ñ–Ð·Ð¼Ð¸ взаємодії. У режимі Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð´Ñ–Ð¹ÑнюєтьÑÑ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñу СВУ та відбуваєтьÑÑ Ð²Ð·Ð°Ñ”Ð¼Ð¾Ð´Ñ–Ñ Ð· кінцевим кориÑтувачем, на оÑнові розроблених СВУ. </p><p>Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¡Ð’Ð£ формуєтьÑÑ Ð· кадрів, кожний з Ñких, Ñвоєю чергою, формуєтьÑÑ Ð· елементів примітивів або кориÑтувацьких елементів інтерфейÑу. При цьому, кориÑтувацькі елементи інтерфейÑу також формуютьÑÑ Ð· примітивів або інших кориÑтувацьких елементів. Таким чином забезпечуєтьÑÑ Ñ–Ñ”Ñ€Ð°Ñ€Ñ…Ñ–Ñ‡Ð½Ñ–Ñть та повторне викориÑÑ‚Ð°Ð½Ð½Ñ Ð²Ð¶Ðµ розроблених компонентів. </p><p>Кадри та кориÑтувацькі елементи розташовуютьÑÑ Ñƒ бібліотеках віджетів. З елементів цих бібліотек формуютьÑÑ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ð¸ інтерфейÑів кінцевої візуалізації СВУ. Ðа оÑнові-ж цих проєктів формуютьÑÑ ÑеанÑи візуалізації. </p><p>ОпиÑану Ñтруктуру СВУ приведено на риÑунку. </p> <div class="center"><div class="floatnone"><a class="image" href="http://oscada.org/wiki/File:VCA_struct_uk.png"><img alt="VCA struct uk.png" height="976" src="../files/VCA_struct_uk.png" width="855" /></a></div></div> <p>Дана архітектура СВУ дозволÑÑ” реалізовувати підтримку трьох рівнів ÑкладноÑті у процеÑÑ– розробки інтерфейÑів управліннÑ: </p> <ul><li> Ð¤Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñу візуалізації та ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ (ВУ) за допомогою бібліотеки шаблонних кадрів, шлÑхом Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð² кадрів до проєкту та Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–ÐºÐ¸.</li> <li> Додатково до першого Ñ€Ñ–Ð²Ð½Ñ Ð·Ð´Ñ–Ð¹ÑнюєтьÑÑ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð»Ð°Ñних кадрів на оÑнові бібліотеки похідних та базових віджетів. Можливе Ñк прÑме Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–ÐºÐ¸ у віджеті, так Ñ– подальше Ñ—Ñ— Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ проєкті.</li> <li> Додатково до другого Ñ€Ñ–Ð²Ð½Ñ Ð·Ð´Ñ–Ð¹ÑнюєтьÑÑ ÑамоÑтійне Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð¸Ñ… віджетів, нових шаблонних кадрів, та кадрів з викориÑтаннÑм механізму опиÑу логіки взаємодії та обробки подій на мові кориÑтувацького Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ OpenSCADA.</li></ul> <p><br /> </p> <h3><span class="mw-headline" id=".D0.9A.D0.B0.D0.B4.D1.80.D0.B8_.D1.82.D0.B0_.D0.B5.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82.D0.B8_.D0.B2.D1.96.D0.B4.D0.BE.D0.B1.D1.80.D0.B0.D0.B6.D0.B5.D0.BD.D0.BD.D1.8F_.28.D0.B2.D1.96.D0.B4.D0.B6.D0.B5.D1.82.D0.B8.29"><span class="mw-headline-number">3.1</span> Кадри та елементи Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (віджети)</span></h3> <p>Кадр це вікно, Ñке безпоÑередньо надає інформацію кориÑтувачу у графічній та/або текÑтовій формі. Група взаємопов'Ñзаних кадрів формує ціліÑний кориÑтувацький Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð’Ð£. </p><p>ВміÑÑ‚ кадру формуєтьÑÑ Ð· елементів Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (віджетів). Віджети можуть бути базовими примітивами (різні елементарні фігури, текÑÑ‚, тренд та інше) та похідні, Ñформовані з базових або інших похідних віджетів. Ð’ÑÑ– віджети групуютьÑÑ Ð·Ð° бібліотеками. У процеÑÑ– роботи, кориÑтувач може формувати влаÑні бібліотеки похідних віджетів. </p><p>ВлаÑне Ñам кадр також Ñ” віджетом, Ñкий викориÑтовуєтьÑÑ Ñƒ ролі кінцевого елементу візуалізації. Рце означає, що бібліотеки віджетів можуть зберігати Ñ– заготовки кадрів, та шаблони результуючих Ñторінок кориÑтувацького інтерфейÑу. </p><p>Кадри та віджети Ñ” паÑивними елементами, Ñкі зазвичай не міÑÑ‚Ñть зв'Ñзків з динамікою та іншими кадрами, а тільки надають інформацію про влаÑтивоÑті та характер динаміки(конфігурації), що підключаєтьÑÑ Ð´Ð¾ влаÑтивоÑтей. Ðктивовані кадри, ті що міÑÑ‚Ñть поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° динаміку та активні зв'Ñзки, формують кориÑтувацький Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñ‚Ð° зберігаютьÑÑ Ñƒ проєктах. У деÑких випадках можливе прÑме Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–ÐºÐ¸ у заготовках кадрів. </p><p>Похідні кадри/віджети можуть міÑтити вкладені віджети, Ñкі можуть бути Ñклеєні-зв'Ñзані один з одним логікою, за допомогою мови кориÑтувацького Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ OpenSCADA. </p> <div class="center"><div class="floatnone"><a class="image" href="http://oscada.org/wiki/File:VCA_widget_uk.png"><img alt="VCA widget uk.png" height="585" src="../files/VCA_widget_uk.png" width="800" /></a></div></div> <p>Віджет Ñ” елементом, за поÑередництвом Ñкого забезпечуєтьÑÑ: </p> <ul><li> Ð²Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ñ— та архівної інформації Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¢ÐŸ;</li> <li> ÑÐ¸Ð³Ð½Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¢ÐŸ;</li> <li> Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¼Ñ–Ð¶ кадрами ТП;</li> <li> ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ‚ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ð¸Ð¼ обладнаннÑм та параметрами Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¢ÐŸ.</li></ul> <p>ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° зв'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð¶ÐµÑ‚Ñ–Ð² здійÑнюєтьÑÑ Ð·Ð° поÑередництвом Ñ—Ñ… влаÑтивоÑтей. БатьківÑький віджет, та віджети що міÑÑ‚ÑтьÑÑ Ñƒ ньому, можуть доповнюватиÑÑ ÐºÐ¾Ñ€Ð¸Ñтувацькими влаÑтивоÑÑ‚Ñми. Ðадалі, кориÑтувацькі та Ñтатичні атрибути пов'ÑзуютьÑÑ Ð· влаÑтивоÑÑ‚Ñми вкладених віджетів, за поÑередництвом внутрішньої логіки. Ð”Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–ÐºÐ¸ (поточних та архівних даних) влаÑтивоÑті віджетів динамізуютьÑÑ, тобто пов'ÑзуютьÑÑ Ð· атрибутами параметрів OpenSCADA або влаÑтивоÑÑ‚Ñми інших віджетів. ВикориÑтаннÑ, Ð´Ð»Ñ Ð·Ð²'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð¸Ñ… віджетів внутрішньою логікою, мови кориÑтувацького Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ OpenSCADA знімає Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñкладної логіки візуалізації, забезпечуючи тим Ñамим виÑоку гнучкіÑть. Практично, можна Ñтворювати повніÑтю динамізовані кадри зі Ñкладними взаємозв'Ñзками на рівні кориÑтувача. </p><p><br /> </p> <h3><span class="mw-headline" id=".D0.9F.D1.80.D0.BE.D1.94.D0.BA.D1.82"><span class="mw-headline-number">3.2</span> <span id="Project" title="#Project">Проєкт</span></span></h3> <p>БезпоÑÐµÑ€ÐµÐ´Ð½Ñ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ, та влаÑтивоÑті кінцевого інтерфейÑу візуалізації, міÑÑ‚ÑтьÑÑ Ñƒ проєкті інтерфейÑу візуалізації СВУ, Ñких може бути Ñтворено багато. </p><p>Кожний проєкт включає Ñторінки з бібліотек кадрів-віджетів. Ð”Ð»Ñ Ð½Ð¸Ð·ÐºÐ¸ режимів, Ñама Ñторінка може включати у Ñебе вкладені Ñторінки Ñк незалежні від батьківÑької, так Ñ– з викориÑтаннÑм батьківÑького у ролі шаблону. Шаблонні Ñторінки-віджети дозволÑють гранично ÑпроÑтити Ð¿Ñ€Ð¾Ñ†ÐµÑ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¾Ð´Ð½Ð¾Ñ‚Ð¸Ð¿Ð½Ð¸Ñ… кадрів проÑтого моніторингу, інженером ÐСУ ТП або кориÑтувачем OpenSCADA. Прикладом таких однотипних кадрів можуть бути: групи контурів, групи графіків, протоколи та різні зведені таблиці. МнемоÑхеми технологічних процеÑів рідко підпадають під таку Ñхему та формуютьÑÑ Ñƒ окремій Ñторінці-віджеті. </p><p>Сторінка, Ñк Ñ– віджет на Ñкому вона заÑнована, надає можливіÑть прив'Ñзки динаміки до опиÑаних у ній влаÑтивоÑтей — зв'Ñзки, Ñкі можуть бути вÑтановлені динамікою або конÑтантами. Крім того, зв'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÐµÐ·Ð¿Ð¾Ñередньо на рівні Ñторінки проєкту Ñ” переважним, ніж здійÑÐ½ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ на рівні віджетів бібліотек. </p><p>Приклад ієрархічного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ñ–Ð² проєкту клаÑичного інтерфейÑу ВУ технологічного процеÑу, з опиÑом виразів Ñтандартних викликів, приведено на риÑунку. </p> <div class="center"><div class="floatnone"><a class="image" href="http://oscada.org/wiki/File:VCA_prog_tree_uk.png"><img alt="VCA prog tree uk.png" height="681" src="../files/VCA_prog_tree_uk.png" width="437" /></a></div></div> <p>Передбачено наÑтупні Ñпеціальні влаÑтивоÑті Ñторінок: </p> <ul><li> <i>Контейнер</i> — Ñторінка Ñ” контейнером вкладених Ñторінок.</li> <li> <i>Шаблон</i> — Ñторінка Ñ” шаблоном вкладених Ñторінок.</li> <li> <i>Порожньо</i> — Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ Ñ‚Ð° неактивна Ñторінка. Ð¦Ñ Ð²Ð»Ð°ÑтивіÑть викориÑтовуєтьÑÑ Ñпільно зі влаÑтивіÑтю <i>Контейнер</i>, Ð´Ð»Ñ Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ— логічних контейнерів Ñторінок.</li> <li> <i>Зв'Ñзок</i> — зв'Ñзок на іншу Ñторінку Ñк контейнер під-Ñторінок, Ñкі будуть викориÑтовуватиÑÑ Ð½Ð° боці Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñ–Ð² (ÑеанÑів) без Ñ—Ñ… окремого ÑтвореннÑ. </li></ul> <p>Ðа комбінаціÑÑ… вищевказаних Ñпеціальних влаÑтивоÑтей Ñторінок реалізовано наÑтупні Ñ—Ñ… типи: </p> <ul><li> <i>Стандарт</i> — Ñтандартна Ñторінка (не вÑтановлено жодної з влаÑтивоÑтей), Ñ” повноцінною кінцевою Ñторінкою.</li> <li> <i>Контейнер</i> — повноцінна Ñторінка з влаÑтивіÑтю контейнера (<i>Контейнер</i>).</li> <li> <i>Логічний контейнер</i> — логічний контейнер, фактично Ñам не Ñ” Ñторінкою (<i>Контейнер</i>|<i>Порожньо</i>), виконує роль проміжного та групуючого елементу у дереві Ñторінок.</li> <li> <i>Шаблон</i> — Ñторінка-шаблон (<i>Шаблон</i>). ЧиÑта шаблонна Ñторінка, викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¾Ð¿Ð¸Ñу загальних влаÑтивоÑтей та Ð´Ð¾Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ—Ñ… у вкладених Ñторінках, у приватному порÑдку.</li> <li> <i>Контейнер та шаблон</i> — Ñторінка шаблону та контейнер (<i>Шаблон</i>|<i>Контейнер</i>), поєднує функції шаблону та контейнеру.</li> <li> <i>Зв'Ñзок</i> — зв'Ñзок на іншу Ñторінку. Зв'Ñзки можуть бути викориÑтані на повніÑтю динамічних та виÑоко тиражованих Ñторінках, Ð´Ð»Ñ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð°Ð¼'Ñті. Ð”Ð»Ñ Ñ€Ð¾Ð·Ñ€Ñ–Ð·Ð½ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð·Ð²'Ñзуваних Ñторінок Ви маєте викориÑтовувати атрибут "path". Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ uiCmd() <a href="#UserAPI">кориÑтувацького API</a> має викориÑтовуватиÑÑ Ð´Ð»Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñторінками цього типу заміÑть прÑмого запиÑу до атрибутів Ñторінок "pgOpen" та "pgOpenSrc".</li></ul> <p>Ðа боці візуалізації (RunTime) побудовано логіку, що регулює Ñким чином відкривати Ñторінки, на оÑнові наÑтупних атрибутів базового елементу "Box": </p> <ul><li> <i>pgOpen</i> — ознака "Сторінка відкрита";</li> <li> <i>pgNoOpenProc</i> — ознака "Виконувати Ñторінку навіть Ñкщо вона не відкрита";</li> <li> <i>pgOpenSrc</i> — міÑтить адреÑу виджета, або Ñторінки, що відкрила поточну Ñторінку; у випадку вкладеного контейнерного віджета тут міÑтитьÑÑ Ð°Ð´Ñ€ÐµÑа включеної Ñторінки; Ð´Ð»Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñторінки із Ñкрипта доÑтатньо тут вказати адреÑу віджета-джерела відкриттÑ, але Ð´Ð»Ñ Ñторінок типу "Зв'Ñзок" Ви маєте віддавати перевагу викориÑтанню функції uiCmd() <a href="#UserAPI">кориÑтувацького API</a>, Ð´Ð»Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñторінкам;</li> <li> <i>pgGrp</i> — група Ñторінок, викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð·Ð²'Ñзки контейнерів Ñторінок зі Ñторінками, згідно загальної групи; ПОРОЖÐЯ та "main" група передбачають викориÑÑ‚Ð°Ð½Ð½Ñ Ñ†Ñ–Ñ”Ñ— Ñторінки Ñк Кореневу-оÑновну Ñторінку, тож така буде замінювати інші Кореневі-головні Ñторінки; група "fl" призначена Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ñƒ зовнішніх вікнах, Ñкі передбачено Ð´Ð»Ñ Ð±Ð°Ð³Ð°Ñ‚Ð¾Ñ€Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ одночаÑного Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñ‚Ð° Ñкі не мають відÑтежуватиÑÑ Ð½Ð° дублікати; решта передбачено Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñƒ контейнери-бокÑи або одноразового одночаÑного відкриттÑ, тож вони примуÑово перевірÑютьÑÑ Ð½Ð° дублікати, коли оÑтаннє відкриваєтьÑÑ, а попередні закриваютьÑÑ.</li></ul> <p>Логіка Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑпоÑобу Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñторінок працює наÑтупним чином: </p> <ul><li> Ñкщо Ñторінка має групу "main" або збігаєтьÑÑ Ð· групою Ñторінки у головному вікні або немає Ñторінки на головному вікні, то відкривати Ñторінку у головному вікні;</li> <li> Ñкщо Ñторінка має групу, Ñка збігаєтьÑÑ Ð· групою одного з контейнерів поточної Ñторінки, то відкрити у цьому контейнері;</li> <li> Ñкщо джерело Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñторінки збігаєтьÑÑ Ð· потоковою Ñторінкою, то відкрити у виглÑді додаткового вікна над потоковою Ñторінкою;</li> <li> передати виклик на запит Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð¸Ð¼ вікнам, з обробкою у кожного по першим трьом пунктам;</li> <li> Ñкщо ніхто з родинних вікон не відкрив нову Ñторінку то відкрити Ñ—Ñ— Ñк родинне вікно головного вікна.</li></ul> <p><br /> </p> <h3><span class="mw-headline" id=".D0.A1.D0.B5.D0.B0.D0.BD.D1.81_.D0.B2.D0.B8.D0.BA.D0.BE.D0.BD.D0.B0.D0.BD.D0.BD.D1.8F_.D0.BF.D1.80.D0.BE.D1.94.D0.BA.D1.82.D1.83"><span class="mw-headline-number">3.3</span> Ð¡ÐµÐ°Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ</span></h3> <p>Ð¡ÐµÐ°Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ це розгорнуте дерево проєкту безпоÑереднього його виконаннÑ, що включає окреме Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ñ–Ñ”Ñ€Ð°Ñ€Ñ…Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€ віджетів. Ð”Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ проєкту може бути відкрито багато ÑеанÑів. Ð¤Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÑ–Ð½Ñ†ÐµÐ²Ð¾Ð³Ð¾ інтерфейÑу візуалізації здійÑнюєтьÑÑ Ð²Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ‚Ð¾Ñ€Ð°Ð¼Ð¸, виходÑчи з даних ÑеанÑу проєкту, піÑÐ»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑеанÑу за запитом. </p><p>Між віджетами, на різних рівнÑÑ… ієрархії, у кінцевому рахунку вибудовуютьÑÑ Ð´Ð¾Ñтатньо Ñкладні Ñпадкові зв'Ñзки, Ñкі визначаютьÑÑ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–Ñтю викориÑÑ‚Ð°Ð½Ð½Ñ Ð¾Ð´Ð½Ð¸Ñ… віджетів іншими, починаючи з бібліотечного віджета та закінчуючи віджетом ÑеанÑу. Ð”Ð»Ñ Ñ€Ð¾Ð·'ÑÑÐ½ÐµÐ½Ð½Ñ Ñ†Ð¸Ñ… оÑобливоÑтей взаємодії, на риÑунку зображено вичерпну карту "викориÑтального" наÑлідуваннÑ. </p> <div class="center"><div class="floatnone"><a class="image" href="http://oscada.org/wiki/File:VCA_map_inher_uk.png"><img alt="VCA map inher uk.png" height="1022" src="../files/VCA_map_inher_uk.png" width="794" /></a></div></div> <p>Ðа рівні ÑеанÑів, віджет міÑтить об'єкт значень процедури обрахунку. Цей об'єкт ініціюєтьÑÑ Ñ‚Ð° викориÑтовуєтьÑÑ Ñƒ випадку наÑвноÑті Ñамої процедури обчиÑленнÑ. У момент ініціалізації ÑтворюєтьÑÑ Ð¿ÐµÑ€ÐµÐ»Ñ–Ðº параметрів процедури та виконуєтьÑÑ Ñ—Ñ— компілÑÑ†Ñ–Ñ Ð· цими параметрами, у модулі, що реалізує обрану мову Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° з назвою результуючої процедури у виглÑді закодованого повного ім'Ñ Ð²Ð¸Ð´Ð¶ÐµÑ‚Ð°. Скомпільована Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡Ð°Ñ”Ñ‚ÑŒÑÑ Ð´Ð¾ об'єкту значень процедури обрахунку, а далі виконуєтьÑÑ Ñ—Ñ— обчиÑÐ»ÐµÐ½Ð½Ñ Ð· періодом ÑеанÑу. </p><p>ОбчиÑÐ»ÐµÐ½Ð½Ñ Ñ‚Ð° обробка віджету виконуєтьÑÑ Ñƒ наÑтупній поÑлідовноÑті: </p> <ul><li> обираютьÑÑ Ð¿Ð¾Ð´Ñ–Ñ—, доÑтупні на момент обчиÑленнÑ, з атрибуту "event" віджету;</li> <li> події завантажуютьÑÑ Ð´Ð¾ параметру "event" об'єкта обчиÑленнÑ;</li> <li> до об'єкту обчиÑÐ»ÐµÐ½Ð½Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÑŽÑ‚ÑŒÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° вхідними зв'Ñзками; </li> <li> до об'єкту обчиÑÐ»ÐµÐ½Ð½Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÑŽÑ‚ÑŒÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñпеціальних змінних (f_frq, f_start та f_stop); </li> <li> до об'єкту обчиÑÐ»ÐµÐ½Ð½Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÑŽÑ‚ÑŒÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð±Ñ€Ð°Ð½Ð¸Ñ… параметрів віджету; </li> <li> обчиÑленнÑ; </li> <li> Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ об'єкту обчиÑÐ»ÐµÐ½Ð½Ñ Ñƒ обрані параметри віджету; </li> <li> Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð´Ñ–Ð¹ з параметру "event" об'єкта обчиÑленнÑ;</li> <li> обробка подій та передача необроблених на рівень вище.</li></ul> <p>Об'єкти ÑеанÑу уÑпадковуютьÑÑ Ð²Ñ–Ð´ абÑтрактного об'єкту "Widget" та викориÑтовують відповідні об'єкти проєкту. Так, ÑÐµÐ°Ð½Ñ "Session" викориÑтовує проєкт "Project" та формує на його оÑнові розгорнуте дерево. Сторінка проєкту "Page" прÑмо викориÑтовуєтьÑÑ Ñторінкою ÑеанÑу "SessPage". Решта об'єктів "SessWdg" розгортаютьÑÑ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾ до ієрархії елементів Ñторінки. </p><p>Додатково до Ñтандартних влаÑтивоÑтей абÑтрактного віджета "Widget", елементи Ñторінки та Ñамі Ñторінки ÑеанÑу отримують влаÑтивоÑті: Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ð¾Ð±'єкту значень обчиÑлювальної процедури, обрахунку процедур та механізм обробки подій. Сторінки ÑеанÑу, додатково до вÑього, міÑÑ‚Ñть контейнер наÑтупних за ієрархією Ñторінок. СеанÑ, загалом, обчиÑлюєтьÑÑ Ð· вказаною періодичніÑтю та у поÑлідовноÑті: </p> <ul><li> "Сторінка верхнього рівнÑ" -> "Сторінка нижнього рівнÑ"</li> <li> "Віджет нижнього рівнÑ" -> "Віджет верхнього рівнÑ"</li></ul> <p>Така політика дозволÑÑ” обходити Ñторінки відповідно до Ñ—Ñ… ієрархії, а повідомленнÑм у віджетах "Ñпливати" нагору за одну ітерацію. </p><p>СеанÑи підтримують багатомовніÑть на рівні <a href="../API.html#CntrNode" title="Special:MyLanguage/Documents/API">інтерфейÑу ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ OpenSCADA</a>, Ñка залежить від значень загальних атрибутів "lang" та "user", та Ñкі візуалізатор може вÑтановлювати згідно до Ñвоєї мови. Ð¦Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð²Ð¼Ð¸ÐºÐ°Ñ”Ñ‚ÑŒÑÑ <a href="../Program_manual.html#Config" title="Special:MyLanguage/Documents/Program manual">динамічним перекладом повідомлень OpenSCADA</a>. </p><p><br /> </p> <h3><span class="mw-headline" id=".D0.A1.D1.82.D0.B8.D0.BB.D1.96"><span class="mw-headline-number">3.4</span> Стилі</span></h3> <p>Відомо, що людина може мати індивідуальні оÑобливоÑті ÑприйнÑÑ‚Ñ‚Ñ Ð³Ñ€Ð°Ñ„Ñ–Ñ‡Ð½Ð¾Ñ— інформації. Якщо ці оÑобливоÑті не враховувати то можна отримати неÑприйнÑÑ‚Ñ‚Ñ Ñ‚Ð° Ð²Ñ–Ð´Ñ‚Ð¾Ñ€Ð³Ð½ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача до інтерфейÑу ВУ. Таке неÑприйнÑÑ‚Ñ‚Ñ Ñ‚Ð° Ð²Ñ–Ð´Ñ‚Ð¾Ñ€Ð³Ð½ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ðµ призвеÑти до фатальних помилок при управлінні ТП, а також травмувати людину поÑтійною роботою з інтерфейÑом. У SCADA ÑиÑтемах прийнÑто домовленоÑті, Ñкі регламентують вимоги по Ñтворенню уніфікованого інтерфейÑу ВУ, що нормально ÑприймаєтьÑÑ Ð±Ñ–Ð»ÑŒÑˆÑ–Ñтю людей. При цьому, практично відÑутнє Ð²Ñ€Ð°Ñ…ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾ÑобливоÑтей людей з деÑкими відхиленнÑми. </p><p>З метою врахувати цю обÑтавину, та надати можливіÑть централізовано та проÑто змінювати візуальні влаÑтивоÑті інтерфейÑу, проєктом реалізуєтьÑÑ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑ€ Ñтилів інтерфейÑу візуалізації. </p><p>КориÑтувачем може бути Ñтворено багато Ñтилів, кожний з Ñких буде зберігати кольорові, шрифтові та інші влаÑтивоÑті елементів кадру. ПроÑта зміна Ñтилю дозволить швидко видозмінити Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð’Ð£, та можливіÑть Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ–Ð½Ð´Ð¸Ð²Ñ–Ð´ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñтилю до кориÑтувача дозволить врахувати його оÑобливоÑті. </p><p>Ð”Ð»Ñ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— цієї можливоÑті, при Ñтворені кадрів, необхідно Ð´Ð»Ñ Ð²Ð»Ð°ÑтивоÑтей кольору, шрифту та інших вÑтановити параметр "КонфігураціÑ" (таблиці у вкладці "Обробка") у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "З Ñтилю". Ру параметрі "Конфігураційний шаблон" вказати ідентифікатор Ð¿Ð¾Ð»Ñ ÑтилÑ. Далі, це поле автоматично з'ÑвитьÑÑ Ñƒ менеджері Ñтилів та його можна буде там змінювати. Менеджер Ñтилів доÑтупний на Ñторінці конфігурації проєкту у вкладці "Стилі". Ðа цій вкладці можна Ñтилі Ñтворювати, видалÑти та змінювати, видалÑти Ñ—Ñ… полÑ. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:768px;"><a class="image" href="http://oscada.org/wiki/File:VCA_prj_stl_uk.png"><img class="thumbimage" height="719" src="../files/VCA_prj_stl_uk.png" width="766" /></a> <div class="thumbcaption">РиÑунок. Вкладка "Стилі" Ñторінки конфігурації проєкту.</div></div></div></div> <p>Загалом, Ñтилі доÑтупні починаючи з Ñ€Ñ–Ð²Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñ–Ð². Ðа рівні бібліотек віджетів можна тільки визначати Ð¿Ð¾Ð»Ñ Ñтилів у віджетів. Ðа рівні проєкту, при виборі ÑтилÑ, включаєтьÑÑ Ñ€Ð¾Ð±Ð¾Ñ‚Ð° зі ÑтилÑми, що передбачає доÑтуп до полів Ñтилів заміÑть безпоÑередніх значень атрибутів. Фактично, це означає, що при читанні або запиÑÑ– атрибуту віджету, вказані операції будуть здійÑнюватиÑÑ Ð½Ð°Ð´ відповідним полем обраного Ñтилю. Конфігураційне поле "ПиÑати до Ñтилю у контекÑті виконаннÑ" дозволÑÑ” динамічно змінювати Ð¿Ð¾Ð»Ñ Ñтилю у контекÑті Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñом до відповідного атрибуту, але це може відбуватиÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾, тож тому це поле типово вимкнене. </p><p>При запуÑку проєкту на Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð±ÑƒÐ´Ðµ викориÑтано вÑтановлений у проєкті Ñтиль. КориÑтувач може обрати Ñтиль з переліку доÑтупних у виконуваного проєкту. Обраний кориÑтувачем Ñтиль буде збережено та викориÑтано при наÑтупному запуÑку проєкту. </p><p><br /> </p> <h3><span class="mw-headline" id=".D0.9F.D0.BE.D0.B4.D1.96.D1.97.2C_.D1.97.D1.85_.D0.BE.D0.B1.D1.80.D0.BE.D0.B1.D0.BA.D0.B0_.D1.82.D0.B0_.D0.BA.D0.B0.D1.80.D1.82.D0.B8_.D0.BF.D0.BE.D0.B4.D1.96.D0.B9"><span class="mw-headline-number">3.5</span> Події, Ñ—Ñ… обробка та карти подій</span></h3> <p>Враховуючи Ñпектр задач, Ð´Ð»Ñ Ñких може викориÑтовуватиÑÑ OpenSCADA, треба передбачити механізм ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¸Ð¼Ð¸ кориÑтувацькими подіÑми. Це пов'Ñзано з тим, що при вирішені окремих задач вбудованих ÑиÑтем, приÑтрої вводу та ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ значно відрізнÑтиÑÑ. ВлаÑне, доÑтатньо поглÑнути на звичайну офіÑну клавіатуру та клавіатуру ноутбука, щоб знÑти будь-Ñкі Ñумніви у необхідноÑті менеджеру подій. </p><p>Менеджер подій має працювати викориÑтовуючи карти подій. Карта подій — це перелік іменованих подій з указаннÑм його походженнÑ. ПоходженнÑм події може бути клавіатура, маніпулÑтор миші, джойÑтик та інше. При виникненні події, менеджер подій шукає його у активній карті та ÑпівÑтавлÑÑ” з ім'Ñм події. СпівÑтавлене ім'Ñ Ð¿Ð¾Ð´Ñ–Ñ— поміщаєтьÑÑ Ñƒ чергу на обробку. Віджети, у цьому випадку, повинні оброблÑти отриману чергу подій. </p><p>Ðктивна карта повідомлень вказуєтьÑÑ Ñƒ профілі кожного кориÑтувача або вÑтановлюєтьÑÑ Ð¿Ð¾ замовченню, <span style="color: red">у планах</span>. </p><p>Загалом, передбачено чотири типи подій: </p> <ul><li> події образів-примітивів СВУ (префікÑ: <b>ws_</b>), наприклад, Ð¿Ð¾Ð´Ñ–Ñ Ð½Ð°Ñ‚Ð¸ÑÐºÐ°Ð½Ð½Ñ ÐµÐºÑ€Ð°Ð½Ð½Ð¾Ñ— кнопки — "ws_BtPress";</li> <li> клавішні події (префікÑ: <b>key_</b>) — вÑÑ– події від клавіатури та миші у виглÑді "key_presAlt1";</li> <li> кориÑтувацькі події (префікÑ: <b>usr_</b>), генеруютьÑÑ ÐºÐ¾Ñ€Ð¸Ñтувачем у процедурах обрахунку віджетів;</li> <li> маповані події (префікÑ: <b>map_</b>) — події, отримані з карти події, <span style="color: red">у планах</span>.</li></ul> <p>Сама Ð¿Ð¾Ð´Ñ–Ñ Ð½Ð°Ð´Ð°Ñ” недоÑтатньо інформації, оÑобливо Ñкщо Ñ—Ñ— обробка відбуваєтьÑÑ Ð½Ð° рівнÑÑ… вище. Ð”Ð»Ñ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð¾Ñ— ідентифікації події та Ñ—Ñ— джерела, події, загалом, запиÑуютьÑÑ Ð½Ð°Ñтупним чином: "<b>ws_BtPress:/curtime</b>". Де: </p> <dl><dd><i>ws_BtPress</i> — подіÑ;</dd> <dd><i>/curtime</i> — шлÑÑ… до дочірнього елементу, Ñкий згенерував подію.</dd></dl> <p>У таблиці 3.5 наведено перелік Ñтандартних подій, підтримку Ñких має бути забезпечено у візуалізаторах СВУ. </p><p><b>Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ 3.5.</b> Стандартні події </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> ÐžÐ¿Ð¸Ñ </th></tr> <tr> <td colspan="2"> <i>Клавіатурні події:</i> <b>key_[pres|rels][Ctrl|Alt|Shift]{Key}</b> </td></tr> <tr> <td> *SC#3b </td> <td> Скан-код клавіші. </td></tr> <tr> <td> *#2cd5 </td> <td> Код неіменованої клавіші. </td></tr> <tr> <td> *Esc </td> <td> "Esc". </td></tr> <tr> <td> *BackSpace </td> <td> Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ Ñимволу — "<-". </td></tr> <tr> <td> *Return, *Enter </td> <td> Ввід — "Enter". </td></tr> <tr> <td> *Insert </td> <td> Ð’Ñтавка — "Insert". </td></tr> <tr> <td> *Delete </td> <td> Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ â€” "Delete". </td></tr> <tr> <td> *Pause </td> <td> Пауза — "Pause". </td></tr> <tr> <td> *Print </td> <td> Друк екрану — "Print Screen". </td></tr> <tr> <td> *Home </td> <td> Дім — "Home". </td></tr> <tr> <td> *End </td> <td> Кінець — "End". </td></tr> <tr> <td> *Left </td> <td> Ліворуч — "<-". </td></tr> <tr> <td> *Up </td> <td> Вверх — '^'. </td></tr> <tr> <td> *Right </td> <td> Праворуч — "->". </td></tr> <tr> <td> *Down </td> <td> Додолу — '\/'. </td></tr> <tr> <td> *PageUp </td> <td> Сторінки нагору — "PageUp". </td></tr> <tr> <td> *PageDown </td> <td> Сторінки додолу — "PageDown". </td></tr> <tr> <td> *F1 ... *F35 </td> <td> Функціональна клавіша від "F1" до "F35". </td></tr> <tr> <td> *Space </td> <td> Пробіл — ' '. </td></tr> <tr> <td> *Apostrophe </td> <td> ÐпоÑтроф — '`'. </td></tr> <tr> <td> *Asterisk </td> <td> Зірочка на додатковому полі клавіатури — '*'. </td></tr> <tr> <td> *Plus </td> <td> ÐŸÐ»ÑŽÑ Ð½Ð° додатковому полі клавіатури — '+'. </td></tr> <tr> <td> *Comma </td> <td> Кома — ','. </td></tr> <tr> <td> *Minus </td> <td> ÐœÑ–Ð½ÑƒÑ â€” '-'. </td></tr> <tr> <td> *Period </td> <td> Крапка — '.'. </td></tr> <tr> <td> *Slash </td> <td> Похила риÑка — '\'. </td></tr> <tr> <td> *0 ... *9 </td> <td> Цифра від '0' до '9'. </td></tr> <tr> <td> *Semicolon </td> <td> Крапка з комою — ';'. </td></tr> <tr> <td> *Equal </td> <td> Дорівнює — '='. </td></tr> <tr> <td> *A ... *Z </td> <td> Клавіші літер латинÑького алфавіту від 'A' до 'Z'. </td></tr> <tr> <td> *BracketLeft </td> <td> Ліва квадратна дужка — '['. </td></tr> <tr> <td> *BackSlash </td> <td> Ð—Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ñ Ð¿Ð¾Ñ…Ð¸Ð»Ð° риÑка — '/'. </td></tr> <tr> <td> *BracketRight </td> <td> Права квадратна дужка — ']'. </td></tr> <tr> <td> *QuoteLeft </td> <td> Ліва лапка — <b>.</b> </td></tr> <tr> <td colspan="2"> <i>Події клавіатурного фокуÑу.</i> </td></tr> <tr> <td> ws_FocusIn </td> <td> Ð¤Ð¾ÐºÑƒÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾ віджетом. </td></tr> <tr> <td> ws_FocusOut </td> <td> Ð¤Ð¾ÐºÑƒÑ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾ віджетом. </td></tr> <tr> <td colspan="2"> <i>Події маніпулÑтору миші:</i> </td></tr> <tr> <td> key_mouse[Pres|Rels][Left|Right|Midle] </td> <td> ÐатиÑнута/відпущена кнопка миші. </td></tr> <tr> <td> key_mouseDblClick </td> <td> Подвійний натиÑк лівої кнопки миші. </td></tr> <tr> <td colspan="2"> <i>Події ÐºÐ²Ñ–Ñ‚Ð°Ñ†Ñ–Ñ Ð½Ð° боці візуалізатору.</i> </td></tr> <tr> <td> ws_alarmChange </td> <td> Сповіщає щодо зміни ÑтатуÑу порушеннÑ, атрибут "alarmSt". </td></tr> <tr> <td> ws_alarmLev </td> <td> ÐšÐ²Ñ–Ñ‚Ð°Ñ†Ñ–Ñ Ð²ÑÑ–Ñ… порушень вÑіма ÑпоÑобами та типами ÑповіщеннÑ. </td></tr> <tr> <td> ws_alarmNtf{N} </td> <td> ÐšÐ²Ñ–Ñ‚Ð°Ñ†Ñ–Ñ Ð²ÑÑ–Ñ… порушень ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ {N} (0...7). </td></tr> <tr> <td colspan="2"> <i>Події примітиву елементарної фігури <b>ElFigure</b>:</i> </td></tr> <tr> <td> ws_Fig[Left|Right|Midle|DblClick] </td> <td> ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ Ñ„Ñ–Ð³ÑƒÑ€ (заливок) клавішею миші. </td></tr> <tr> <td> ws_Fig{N}[Left|Right|Midle|DblClick] </td> <td> ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ Ñ„Ñ–Ð³ÑƒÑ€Ð¸ (заливки) <i>N</i> клавішею миші. </td></tr> <tr> <td colspan="2"> <i>Події примітиву елементу форми <b>FormEl</b>:</i> </td></tr> <tr> <td> ws_LnAccept </td> <td> Ð’Ñтановлено нове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ Ñ€Ñдку вводу. </td></tr> <tr> <td> ws_TxtAccept </td> <td> Змінено Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ñƒ текÑту. </td></tr> <tr> <td> ws_ChkChange </td> <td> Стан ознаки змінено. </td></tr> <tr> <td> ws_BtPress </td> <td> Кнопку натиÑнуто. </td></tr> <tr> <td> ws_BtRelease </td> <td> Кнопку відпущено. </td></tr> <tr> <td> ws_BtToggleChange </td> <td> Змінено втиÑненіÑть кнопки. </td></tr> <tr> <td> ws_BtMenu={Item} </td> <td> Вибір елементу меню <i>Item</i> за кнопкою. </td></tr> <tr> <td> ws_BtLoad </td> <td> Обраний файл завантажено. </td></tr> <tr> <td> ws_CombChange </td> <td> Змінено Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð»Ñ Ð¾Ð±Ñ€Ð°Ð½Ð½Ñ. </td></tr> <tr> <td> ws_ListChange </td> <td> Змінено поточний елемент переліку. </td></tr> <tr> <td> ws_TreeChange </td> <td> Змінено поточний елемент дерева. </td></tr> <tr> <td> ws_TableChangeSel </td> <td> Змінено вибір елементу таблиці. </td></tr> <tr> <td> ws_TableEdit_{colN}_{rowN} </td> <td> Відредаговано клітинку таблиці ({colN}:{rowN}). </td></tr> <tr> <td> ws_SliderChange </td> <td> Зміна Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ñлайдеру. </td></tr> <tr> <td colspan="2"> <i>Події примітиву медіа-контенту <b>Media</b>:</i> </td></tr> <tr> <td> ws_MapAct{N}[Left|Right|Midle] </td> <td> Ðктивовано медіа-облаÑть з номером <i>N</i>, клавішею миші. </td></tr> <tr> <td> ws_MediaFinished </td> <td> Закінчено Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ ÐœÐµÐ´Ñ–Ð°-потоку. </td></tr></table> <p>Події Ñ” оÑновним механізмом ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° активно викориÑтовуютьÑÑ Ð´Ð»Ñ Ð·Ð´Ñ–Ð¹ÑÐ½ÐµÐ½Ð½Ñ Ð²Ð·Ð°Ñ”Ð¼Ð¾Ð´Ñ–Ñ— з кориÑтувачем. Ð”Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ події передбачено два механізми: </p> <ul><li> Первинний — Ñценарій ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñм Ñторінок.</li> <li> Вторинний — обчиÑлювальна процедура віджета.</li></ul> <p>Механізм "Сценарій ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñм Ñторінок" заÑновано на базовому атрибуті віджету "evProc", у Ñкому може опиÑуватиÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñторінок. Сценарій цього атрибуту запиÑуєтьÑÑ Ñƒ виглÑді переліку команд з ÑинтакÑиÑом: "<b>{event}:{evSrc}:{com}:{prm}</b>". Де: </p> <ul><li> <i>event</i> — очікувана подіÑ;</li> <li> <i>evSrc</i> — шлÑÑ… вкладеного віджета-джерела події; може бути "<b>*</b>" Ð´Ð»Ñ Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ Ñ‚ÑƒÑ‚ подій будь Ñкого джерела, <a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../../en/files/At.png" width="22" /></a> але ви можете отримати підв'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ неочікуваного джерела;</li> <li> <i>com</i> — команда ÑеанÑу;</li> <li> <i>prm</i> — параметр команди.</li></ul> <p>Реалізовано наÑтупні команди: </p> <ul><li> <i>open</i> — Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñторінки; Ñторінка, що відкриваєтьÑÑ, вказуєтьÑÑ Ñƒ параметрі <i>prm</i> Ñк прÑмо, так Ñ– у виглÑді шаблону, наприклад — <b>/pg_so/1/*/*</b>;</li> <li> <i>next</i> — Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð½Ð°Ñтупної Ñторінки; Ñторінка, що відкриваєтьÑÑ, вказуєтьÑÑ Ñƒ параметрі <i>prm</i>, у виглÑді шаблону, наприклад: <b>/pg_so/*/*/$</b>;</li> <li> <i>prev</i> — Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ñ— Ñторінки; Ñторінка, що відкриваєтьÑÑ, вказуєтьÑÑ Ñƒ параметрі <i>prm</i>, у виглÑді шаблону, наприклад: <b>/pg_so/*/*/$</b>.</li></ul> <p>Спеціальні Ñимволи шаблону розшифровуютьÑÑ Ð½Ð°Ñтупним чином: </p> <ul><li> <i>pg_so</i> — прÑме ім'Ñ Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ—-Ñтатичної Ñторінки (з префікÑом), потребує обов'Ñзкової відповідноÑті та викориÑтовуєтьÑÑ Ð´Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— попередньої відкритої Ñторінки;</li> <li> <i>1</i> — ім'Ñ Ñ‚Ð° міÑце нової Ñторінки у загальному шлÑху (без префікÑу);</li> <li> <i>*</i> — Ñторінка беретьÑÑ Ð· ім'Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ñ— відкритої Ñторінки або підÑтавлÑєтьÑÑ Ð¿ÐµÑ€ÑˆÐ° доÑтупна Ñторінка, Ñкщо Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð° відÑутнÑ;</li> <li> <i>$</i> — вказує на міÑце відкритої Ñторінки, відноÑно Ñкої треба шукати наÑтупну або попередню.</li></ul> <p>Ð”Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·ÑƒÐ¼Ñ–Ð½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ механізму шаблонів, при виборі Ñторінки, приведемо декілька реальних прикладів: </p> <ul><li> <i>ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¾Ð±'єкту Ñигналізації:</i></li></ul> <dl><dd><dl><dd>Початково: <b>/pg_so/pg_1/pg_mn/pg_1</b></dd> <dd>Команда: <b>open:/pg_so/2/*/*</b></dd> <dd>Результат: <b>/pg_so/pg_2/pg_mn/pg_1</b></dd></dl></dd></dl> <ul><li> <i>ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð²Ð¸Ð´Ñƒ відображеннÑ:</i></li></ul> <dl><dd><dl><dd>Початково: <b>/pg_so/pg_1/pg_mn/pg_1</b></dd> <dd>Команда: <b>open:/pg_so/*/gkadr/*</b></dd> <dd>Результат: <b>/pg_so/pg_1/pg_gkadr/pg_1</b></dd></dl></dd></dl> <ul><li> <i>ÐаÑтупна/Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ñторінка виду відображеннÑ:</i></li></ul> <dl><dd><dl><dd>Початково: <b>/pg_so/pg_1/pg_mn/pg_1</b></dd> <dd>Команда: <b>next:/pg_so/*/*/$</b></dd> <dd>Результат: <b>/pg_so/pg_1/pg_mn/pg_2</b></dd></dl></dd></dl> <p>У ÑкоÑті прикладу, наведемо Ñценарій Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ головної Ñторінки інтерфейÑу кориÑтувача: </p> <pre style="white-space: pre-wrap;"> ws_BtPress:/prev:prev:/pg_so/*/*/$ ws_BtPress:/next:next:/pg_so/*/*/$ ws_BtPress:/go_mn:open:/pg_so/*/mn/* ws_BtPress:/go_graph:open:/pg_so/*/ggraph/* ws_BtPress:/go_cadr:open:/pg_so/*/gcadr/* ws_BtPress:/go_view:open:/pg_so/*/gview/* ws_BtPress:/go_doc:open:/pg_so/*/doc/* ws_BtPress:/go_resg:open:/pg_so/rg/rg/* ws_BtPress:/so1:open:/pg_so/1/*/* ws_BtPress:/so2:open:/pg_so/2/*/* ws_BtPress:/so3:open:/pg_so/3/*/* ws_BtPress:/so4:open:/pg_so/4/*/* ws_BtPress:/so5:open:/pg_so/5/*/* ws_BtPress:/so6:open:/pg_so/6/*/* ws_BtPress:/so7:open:/pg_so/7/*/* ws_BtPress:/so8:open:/pg_so/8/*/* ws_BtPress:/so9:open:/pg_so/9/*/* ws_BtPress:*:open:/pg_control/pg_terminator </pre> <p>Механізм "Обробка подій за допомогою обчиÑлювальної процедури віджета" заÑнований на атрибуті "event" Ñ– кориÑтувацькій процедурі обчиÑÐ»ÐµÐ½Ð½Ñ Ð½Ð° мові Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ OpenSCADA. Події, по мірі надходженнÑ, акумулюютьÑÑ Ñƒ атрибуті "event" до моменту виклику обчиÑлювальної процедури. ОбчиÑлювальна процедура викликаєтьÑÑ Ñ–Ð· вказаним періодом обчиÑÐ»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¶ÐµÑ‚Ð° та отримує Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ "event" у виглÑді переліку подій. У процедурі обчиÑÐ»ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувач може: проаналізувати, обробити Ñ– виключити оброблені події з переліку, а також додати до переліку нові події. Решта подій Ñ– нові піÑÐ»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸ аналізуютьÑÑ Ð½Ð° предмет відповідноÑті умовам виклику Ñценарієм первинного механізму, піÑÐ»Ñ Ñ‡Ð¾Ð³Ð¾, події, що залишилиÑÑ, передаютьÑÑ Ð½Ð° верхній за ієрархією віджет Ð´Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ ним, при цьому здійÑнюєтьÑÑ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ ÑˆÐ»Ñху події згідно до ієрархії проникненнÑ. Коли віджет уже Ñ” верхнім, тобто Ñторінкою, то події, що залишилиÑÑ, надÑилаютьÑÑ Ð½Ð° Ñторінку, Ñка відкрила вихідну Ñторінку, Ñ– на верхню Ñторінку з повною адреÑою вихідної Ñторінки. </p><p>ВміÑтом атрибуту "event" Ñ” перелік подій формату "<b>{event}:{evSrc}</b>", з подією у окремому Ñ€Ñдку. Ðаведемо приклад процедури обробки події на Java-подібній мові кориÑтувацького Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ OpenSCADA: </p> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="k">for</span><span class="p">(</span><span class="nx">ev_rez</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> <span class="nx">off</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="p">(</span><span class="nx">sval</span><span class="o">=</span><span class="nx">event</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="s2">"\n"</span><span class="p">,</span><span class="nx">off</span><span class="p">)).</span><span class="nx">length</span><span class="p">;</span> <span class="p">)</span> <span class="p">{</span> <span class="k">if</span><span class="p">(</span><span class="nx">sval</span> <span class="o">==</span> <span class="s2">"ws_BtPress:/cvt_light"</span><span class="p">)</span> <span class="nx">alarmSt</span> <span class="o">=</span> <span class="mh">0x1000001</span><span class="p">;</span> <span class="k">else</span> <span class="k">if</span><span class="p">(</span><span class="nx">sval</span> <span class="o">==</span> <span class="s2">"ws_BtPress:/cvt_alarm"</span><span class="p">)</span> <span class="nx">alarmSt</span> <span class="o">=</span> <span class="mh">0x1000002</span><span class="p">;</span> <span class="k">else</span> <span class="k">if</span><span class="p">(</span><span class="nx">sval</span> <span class="o">==</span> <span class="s2">"ws_BtPress:/cvt_sound"</span><span class="p">)</span> <span class="nx">alarmSt</span> <span class="o">=</span> <span class="mh">0x1000004</span><span class="p">;</span> <span class="k">else</span> <span class="p">{</span> <span class="nx">ev_rez</span> <span class="o">+=</span> <span class="nx">sval</span><span class="o">+</span><span class="s2">"\n"</span><span class="p">;</span> <span class="c1">//this.messInfo("Event: "+sval);</span> <span class="p">}</span> <span class="p">}</span> <span class="nx">event</span> <span class="o">=</span> <span class="nx">ev_rez</span><span class="p">;</span> </pre></div> <p><a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../../en/files/At.png" width="22" /></a> Щоб дізнатиÑÑ Ð¿Ñ€Ð¾ події, Ñкі надходÑть, Ð´Ð»Ñ Ð´Ð¾Ð´Ð°Ð½Ð½Ñ Ñ—Ñ… Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ ÐŸÐµÑ€Ð²Ð¸Ð½Ð½Ð¸Ð¼ або Вторинним механізмом, ви можете додати Ñ—Ñ… друк до процедури Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð´Ñ–Ð¹ на кшталт вище або увімкнути режим ÐÐ°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ <a href="../Modules/VCAEngine.html" title="Special:MyLanguage/Modules/VCAEngine">Ð¼Ð¾Ð´ÑƒÐ»Ñ UI.VCAEngine</a>, щодо чого читайте більше у розділі "ÐÐ°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾ÑлідовноÑті виконаннÑ" документу <a href="../How_to_Debug.html" title="Special:MyLanguage/Documents/How to/Debug">Як Ðалагодити проєкт OpenSCADA</a>. </p><p><br /> </p> <h3><span class="mw-headline" id=".D0.A1.D0.B8.D0.B3.D0.BD.D0.B0.D0.BB.D1.96.D0.B7.D0.B0.D1.86.D1.96.D1.8F"><span class="mw-headline-number">3.6</span> <span id="Alarms" title="#Alarms">СигналізаціÑ</span></span></h3> <p><span id="Alarms" title="#Alarms">Важливим елементом</span> будь-Ñкого інтерфейÑу візуалізації Ñ” ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача про Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ â€” ÑигналізаціÑ. Ð”Ð»Ñ ÑÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ñ ÑприйнÑттÑ, а також через тіÑний зв'Ñзок візуалізації та ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ (Ñк правило, ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÑŽÑŽÑ‚ÑŒ візуалізацію) вирішено інтегрувати Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñповіщень у Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð²Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—. Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾, у вÑÑ–Ñ… віджетах, передбачаєтьÑÑ Ð´Ð²Ð° додаткових атрибути Ñ€Ñ–Ð²Ð½Ñ ÑеанÑу: "alarm" та "alarmSt". Ðтрибут "alarm" викориÑтовуєтьÑÑ Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñигналу віджетом згідно до його логіки, а атрибут "alarmSt" викориÑтовуєтьÑÑ Ð´Ð»Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŽ за фактом Ñигналізації гілки дерева ÑеанÑу. </p><p>Ðтрибут "alarm" Ñ” Ñ€Ñдком, Ñкий має наÑтупний формат: "<b>{lev}|{categ}|{message}|{type}|{tp_arg}</b>"<br /> Де: </p> <ul><li> <i>lev</i> — рівень Ñигналізації: чиÑло від 0 до 255;</li> <li> <i>categ</i> — ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ñ–Ñ Ñигналу: параметр підÑиÑтеми збору, об'єкт, шлÑÑ… або комбінаціÑ;</li> <li> <i>message</i> — Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñигналізації;</li> <li> <i>type</i> — типи Ñповіщень, вказуютьÑÑ Ñƒ виглÑді цілого чиÑла (0...7), що міÑÑ‚Ñть ознаки ÑпоÑобів Ñповіщень; типові ÑпоÑоби Ñповіщень: <ul><li> <i>1</i> — візуальне;</li> <li> <i>2</i> — гудок, чаÑто відбуваєтьÑÑ Ñ‡ÐµÑ€ÐµÐ· PC-speaker;</li> <li> <i>4</i> — звуковий Ñигнал з файлу звуку або Ñинтез мови; Ñкщо у <i>tp_arg</i> вказано ім'Ñ Ñ€ÐµÑурÑу звукового файлу, то відтворюєтьÑÑ Ñаме він, інакше виконуєтьÑÑ Ñинтез мови з текÑту, вказаного у <i>message</i>.</li></ul></li> <li> <i>tp_arg</i> — аргумент типу; чаÑто викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¿Ñ€Ñмого Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу звукового Ñигналу — файл звукового формату, при здійÑнені звукової Ñигналізації.</li></ul> <p>Ðтрибут "alarmSt" Ñ” цілим чиÑлом, Ñке відображає макÑимальний рівень Ñигналу та факт ÐºÐ²Ñ–Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ñ–Ð»ÐºÐ¸ дерева ÑеанÑу. Формат чиÑла має наÑтупний виглÑд: </p> <ul><li> перший байт (0...255) характеризує рівень Ñигналу гілки;</li> <li> другий байт вказує тип ÑповіщеннÑ, так Ñк Ñ– у атрибуті "alarm";</li> <li> третій байт вказує тип неÑквітованого ÑповіщеннÑ, так Ñк Ñ– у атрибуті "alarm";</li> <li> четвертий байт має Ñпеціальне значеннÑ, Ñке визначаєтьÑÑ Ð¾ÐºÑ€ÐµÐ¼Ð¸Ð¼Ð¸ бітами: <ul><li> біт 0 — вказує, вÑтановленнÑм, на факт ÐºÐ²Ñ–Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñповіщень у першому байті;</li> <li> біт 1 — вказує, при вÑтановленні його та бита 0, на Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ ÐºÐ²Ñ–Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ â€” Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÑповіщеннÑ.</li></ul></li></ul> <p><b>Ð¤Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñигналу та Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¹Ð¾Ð³Ð¾ візуалізатором.</b><br /> Ð¤Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñигналу здійÑнюєтьÑÑ Ñамим віджетом, шлÑхом вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð»Ð°Ñного атрибуту "alarm" потрібним чином та, згідно до нього, автоматично вÑтановлюєтьÑÑ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ "alarmSt" поточного та вищеÑтоÑщих віджетів. Візуалізатори отримують ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ Ñигнал за допомогою Ñтандартного механізму ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ зміну атрибутів віджетів. </p><p>Враховуючи те, що обробка умов Ñигналізації здійÑнюєтьÑÑ Ñƒ віджетах, Ñторінки, що міÑÑ‚Ñть об'єкти Ñигналізації, повинні виконуватиÑÑ Ñƒ фоні, незалежно від відкритоÑті Ñ—Ñ… на цей момент. Це здійÑнюєтьÑÑ ÑˆÐ»Ñхом вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¾Ð·Ð½Ð°ÐºÐ¸ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñторінки у фоні. </p><p>Хоча механізм Ñигналізації й побудовано у Ñередовищі візуалізації, можливіÑть Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð½ÐµÐ²Ñ–Ð·ÑƒÐ°Ð»ÑŒÐ½Ð¸Ñ… елементів Ñигналізації залишаєтьÑÑ, наприклад, шлÑхом ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñторінки, Ñка ніколи не буде відкриватиÑÑ. </p><p><b>КвітаціÑ</b><br /> ÐšÐ²Ñ–Ñ‚Ð°Ñ†Ñ–Ñ (від quietance) — Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°ÐºÑ‚Ñƒ того, що оперативний перÑонал звернув увагу на Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ñƒ роботі ТП. Зазвичай цей Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡Ð°Ñ” Ð²Ð¶Ð¸Ð²Ð°Ð½Ð½Ñ Ð·Ð°Ñ…Ð¾Ð´Ñ–Ð² оператором Ð´Ð»Ñ ÑƒÑÑƒÐ½ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ñ‚Ð° натиÑÐºÐ°Ð½Ð½Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ñ— кнопки Ð¿Ñ€Ð¸Ð¿Ð¸Ð½ÐµÐ½Ð½Ñ Ñигналізації. </p><p>ÐšÐ²Ñ–Ñ‚Ð°Ñ†Ñ–Ñ Ð·Ð´Ñ–Ð¹ÑнюєтьÑÑ ÑˆÐ»Ñхом Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€ÐµÐ½Ñ Ð³Ñ–Ð»ÐºÐ¸ віджетів та типів ÑповіщеннÑ, що дозволÑÑ” реалізувати квітацію на боці візуалізатору Ñк за групами, наприклад, за об'єктом Ñигналізації, так Ñ– індивідуально за об'єктом джерела. При цьому можна незалежно квитувати різні типи Ñигналізацій. Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐ²Ñ–Ñ‚Ð°Ñ†Ñ–Ñ— здійÑнюєтьÑÑ Ð¿Ñ€Ð¾Ñтою модифікацією атрибуту "alarmSt". </p><p>Приклад Ñкрипту, Ð´Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ з Ñигналами, приведено нижче: </p> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="c1">//Ð’Ð¸Ð¾ÐºÑ€ÐµÐ¼Ð»ÐµÐ½Ð½Ñ Ñ„Ð°ÐºÑ‚Ñƒ наÑвноÑті Ñигналізацій різних ÑпоÑобів-типів ÑповіщеннÑ</span> <span class="nx">cvt_light_en</span> <span class="o">=</span> <span class="nx">alarmSt</span><span class="o">&</span><span class="mh">0x100</span><span class="p">;</span> <span class="nx">cvt_alarm_en</span> <span class="o">=</span> <span class="nx">alarmSt</span><span class="o">&</span><span class="mh">0x200</span><span class="p">;</span> <span class="nx">cvt_sound_en</span> <span class="o">=</span> <span class="nx">alarmSt</span><span class="o">&</span><span class="mh">0x400</span><span class="p">;</span> <span class="c1">//Ð’Ð¸Ð¾ÐºÑ€ÐµÐ¼Ð»ÐµÐ½Ð½Ñ Ñ„Ð°ÐºÑ‚Ñƒ наÑвноÑті неÑквітованих Ñигналізацій різних ÑпоÑобів ÑповіщеннÑ</span> <span class="nx">cvt_light_active</span> <span class="o">=</span> <span class="nx">alarmSt</span><span class="o">&</span><span class="mh">0x10000</span><span class="p">;</span> <span class="nx">cvt_alarm_active</span> <span class="o">=</span> <span class="nx">alarmSt</span><span class="o">&</span><span class="mh">0x20000</span><span class="p">;</span> <span class="nx">cvt_sound_active</span> <span class="o">=</span> <span class="nx">alarmSt</span><span class="o">&</span><span class="mh">0x40000</span><span class="p">;</span> <span class="c1">//Обробка подій кнопок квітації та ÐºÐ²Ñ–Ñ‚Ð°Ñ†Ñ–Ñ Ñ€Ñ–Ð·Ð½Ð¸Ñ… ÑпоÑобів ÑповіщеннÑ</span> <span class="k">for</span><span class="p">(</span><span class="nx">ev_rez</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> <span class="nx">off</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="p">(</span><span class="nx">sval</span><span class="o">=</span><span class="nx">event</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="s2">"\n"</span><span class="p">,</span><span class="nx">off</span><span class="p">)).</span><span class="nx">length</span><span class="p">;</span> <span class="p">)</span> <span class="p">{</span> <span class="k">if</span><span class="p">(</span><span class="nx">sval</span> <span class="o">==</span> <span class="s2">"ws_BtPress:/cvt_light"</span><span class="p">)</span> <span class="nx">alarmSt</span> <span class="o">=</span> <span class="mh">0x1000001</span><span class="p">;</span> <span class="k">else</span> <span class="k">if</span><span class="p">(</span><span class="nx">sval</span> <span class="o">==</span> <span class="s2">"ws_BtPress:/cvt_alarm"</span><span class="p">)</span> <span class="nx">alarmSt</span> <span class="o">=</span> <span class="mh">0x1000002</span><span class="p">;</span> <span class="k">else</span> <span class="k">if</span><span class="p">(</span><span class="nx">sval</span> <span class="o">==</span> <span class="s2">"ws_BtPress:/cvt_sound"</span><span class="p">)</span> <span class="nx">alarmSt</span> <span class="o">=</span> <span class="mh">0x1000004</span><span class="p">;</span> <span class="k">else</span> <span class="nx">ev_rez</span> <span class="o">+=</span> <span class="nx">sval</span> <span class="o">+</span> <span class="s2">"\n"</span><span class="p">;</span> <span class="p">}</span> <span class="nx">event</span> <span class="o">=</span> <span class="nx">ev_rez</span><span class="p">;</span> </pre></div> <p><b>Зовнішні методи ÑповіщеннÑ</b><br /> ОÑновним та типовим ÑпоÑобом ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ” диÑплейна Ñвітлова ÑÐ¸Ð³Ð½Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð°Ð²Ð°Ñ€Ñ–Ð¹Ð½Ð¸Ð¼Ð¸ кольорами та Ñ—Ñ… динамікою у елементів візуалізації, Ñка приÑÑƒÑ‚Ð½Ñ Ð·Ð°Ð²Ð¶Ð´Ð¸ та не потребує Ñпецифічної конфігурації. Однак, чаÑто потрібні ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ типу, наприклад: зовнішньою лампою, бузером PC або "ревуном", довільним звуком, Ñинтезованою мовою та інше. </p><p>Ð”Ð»Ñ Ð·Ð´Ñ–Ð¹ÑÐ½ÐµÐ½Ð½Ñ Ñ‚Ð°ÐºÐ¾Ñ— можливоÑті, зовнішні ÑпоÑоби ÑповіщеннÑ, та відповідні до них типи ÑповіщеннÑ, вільно опиÑуютьÑÑ Ð´Ð»Ñ Ñерверу візуалізації та Ñамого візуалізатору. Ðа боці Ñерверу візуалізації опиÑуєтьÑÑ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ/Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° Ñаме ÑповіщеннÑ. Ðа боці візуалізатору опиÑуєтьÑÑ ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð³Ñ–Ð´Ð½Ð¾ реÑурÑам Ñерверу візуалізації. </p><p>ÐžÐ¿Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» та Ñценаріїв зовнішнього ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð´Ñ–Ð¹ÑнюєтьÑÑ Ð·Ð° допомогою кориÑтувацьких атрибутів текÑтового типу Ð´Ð»Ñ Ñторінок проєкту візуалізації, Ñкі заÑтоÑовуютьÑÑ Ð¿Ñ€Ð¸ відкритті цих Ñторінок. Тобто, потенційно, Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— відкриваної Ñторінки можна опиÑати влаÑні правила ÑповіщеннÑ, хоча, зазвичай доÑтатньо та опиÑуютьÑÑ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ñ– правила ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð½Ð° головній Ñторінці проєкту — Ñторінці, Ñка відкриваєтьÑÑ Ð¾Ð´Ð½Ð¾Ñ€Ð°Ð·Ð¾Ð²Ð¾ та не закриваєтьÑÑ Ð¿Ñ€Ð¸ роботі: </p> <ul><li> Ð”Ð»Ñ Ñерверу/Ñ€ÑƒÑˆÑ–Ñ Ð²Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—, атрибутом "notify{N}" у форматі:</li></ul> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 15px"><pre><span class="c1">//flags=notifyServ[{DL}][|resource[|queue[|qMergeMess]]];</span> <span class="c1">//resStatic={ResourceFile}</span> <span class="k">if</span><span class="p">(</span><span class="nx">doRes</span><span class="p">)</span> <span class="p">{</span> <span class="nx">ТекÑÑ‚</span> <span class="nx">команди</span> <span class="nx">формуваннÑ</span> <span class="nx">реÑурÑу</span><span class="p">.</span> <span class="p">}</span> <span class="k">if</span><span class="p">(</span><span class="nx">doNtf</span><span class="p">)</span> <span class="p">{</span> <span class="nx">ТекÑÑ‚</span> <span class="nx">команди</span> <span class="nx">ÑповіщеннÑ</span><span class="p">.</span> <span class="p">}</span> </pre></div> <ul><li> Ð”Ð»Ñ Ð²Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ‚Ð¾Ñ€Ñƒ, атрибутом "notifyVis[Vision|WebVision]{N}" у форматі:</li></ul> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 15px"><pre><span class="c1">//flags=notify[{DL}][|resource[|queue[|quietanceRet]]];</span> <span class="c1">//name={Ім'Ñ Ñповіщувача}</span> <span class="c1">//ico={Ім'Ñ Ñ–ÐºÐ¾Ð½ÐºÐ¸}</span> <span class="p">{</span> <span class="nx">ТекÑÑ‚</span> <span class="nx">команди</span> <span class="nx">ÑповіщеннÑ</span> <span class="nx">длÑ</span> <span class="nx">будь</span><span class="o">-</span><span class="nx">Ñкого</span> <span class="nx">або</span> <span class="nx">конкретного</span> <span class="nx">візуалізатору</span><span class="p">.</span> <span class="p">}</span> </pre></div> <p>Прапорці: </p> <ul><li> <i>notify[{DL}]</i>, <i>notifyServ[{DL}]</i> — включає ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð· повтором через Ñ‡Ð°Ñ <i>DL</i>, Ñкщо вказано; Ð´Ð»Ñ <i>DL</i> = 0 повтор здійÑнюєтьÑÑ Ð¾Ð´Ñ€Ð°Ð·Ñƒ; <i>notifyServ[{DL}]</i> викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÑƒÑового ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð½Ð° боці Ñерверу заміÑть візуалізатору із <i>notify[{DL}]</i>.</li> <li> <i>resource</i> — запитувати-формувати (примуÑово) реÑÑƒÑ€Ñ ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñƒ Ñервера візуалізації, може бути звуковим файлом, текÑтом або іншими даними Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ ÑповіщеннÑ; але наразі Ñповіщувачі переважно очікують аудіо.</li> <li> <i>queue</i> — реÑурÑи ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°ÑŽÑ‚ÑŒÑÑ Ð½Ðµ лише за глобальною ознакою Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ñ‚Ð° квітації, а й згідно до пріоритетної черги джерел ÑповіщеннÑ-реÑурÑів. Черга формуєтьÑÑ Ð½Ð° боці Ñерверу візуалізації, а Ð´Ð»Ñ Ð²Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ‚Ð¾Ñ€Ñ–Ð² вказуєтьÑÑ Ð½ÐµÐ¾Ð±Ñ…Ñ–Ð´Ð½Ñ–Ñть роботи з нею при запиті реÑурÑів.</li> <li> <i>qMergeMess</i> — поєднувати ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñƒ черзі за рівніÑтю ÑповіщеннÑ.</li> <li> <i>quietanceRet</i> — можливіÑть відкликаннÑ-Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ ÑÑ‚Ð¸ÑˆÐµÐ½Ð½Ñ Ð²Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ‚Ð¾Ñ€Ñƒ, тобто, по факту — зворотного Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÑповіщеннÑ.</li></ul> <p>ÐаÑвніÑть Ð¿Ð¾Ð»Ñ "resStatic" вмикає Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу безпоÑередньо із таблиці реÑурÑів або файлу, вказуєтьÑÑ Ñƒ ÑпоÑіб подібний до <a href="#Media">примітиву "Медіа"</a>. </p><p>Змінні обміну: </p> <ul><li> <i>en</i>[0,1] — ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ð²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ (1) або вимкнути (0);</li> <li> <i>doNtf</i>[0,1] — виклик Ñценарію ÑповіщеннÑ;</li> <li> <i>doRes</i>[0,1] — виклик Ñценарію Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу;</li> <li> <i>res</i> — вміÑÑ‚ або ім'Ñ Ñ„Ð°Ð¹Ð»Ñƒ з вміÑтом реÑурÑу, Ð´Ð»Ñ Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ–Ñ… Ñценаріїв;</li> <li> <i>resTp</i> — тип реÑурÑу, на кшталт "audio/ogg"; Ñ” поверненнÑм та поміщаєтьÑÑ Ð´Ð¾ Ñтандартного виходу (Ð´Ð»Ñ Shell) Ð´Ð»Ñ <i>doRes</i>;</li> <li> <i>mess</i> — повідомленнÑ-параметри Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу або ÑповіщеннÑ;</li> <li> <i>lang</i> — мова поточного кориÑтувача або ÑиÑтеми;</li> <li> <i>prcID</i> — унікальний ідентифікатор процедури (на кшталт "ses_AGLKS_ntf2"), переважно Ð´Ð»Ñ Ð±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¾Ð³Ð¾ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñових файлів.</li></ul> <p>Приклади та коментарі до Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… ÑпоÑобів ÑповіщеннÑ: </p> <ul><li> Бузер (buzzer) на боці візуалізатору (flags=notify0) або Ñерверу візуалізації (flags=notifyServ0) із повтореннÑм та контролем програваннÑ:</li></ul> <dl><dd><ul><li> alarm = "10|Prm||0x02"</li> <li> notifyVisVision1 | notify1 = </li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c1">//flags=notify0|notifyServ0</span> <span class="k">if</span><span class="p">(</span><span class="nx">en</span> <span class="o">&&</span> <span class="p">(</span><span class="nx">ntfPrg</span><span class="o">=</span><span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="s2">"which beep"</span><span class="p">)).</span><span class="nx">length</span> <span class="o">&&</span> <span class="p">(</span><span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="s2">"test -s "</span><span class="o">+</span><span class="nx">prcID</span><span class="o">+</span><span class="s2">".pid"</span><span class="p">,</span><span class="kc">true</span><span class="p">)</span> <span class="o">||</span> <span class="c1">//No PID file</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="s2">"ps -A -o \"pid cmd\" | grep \"^ *$(cat "</span><span class="o">+</span><span class="nx">prcID</span><span class="o">+</span><span class="s2">".pid).*"</span><span class="o">+</span><span class="nx">ntfPrg</span><span class="p">.</span><span class="nx">parseLine</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">+</span><span class="s2">"\" > /dev/null"</span><span class="p">,</span><span class="kc">true</span><span class="p">))</span> <span class="p">)</span> <span class="c1">//No notify already</span> <span class="p">{</span> <span class="nx">ntfPrg</span> <span class="o">=</span> <span class="nx">ntfPrg</span><span class="p">.</span><span class="nx">parseLine</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="nx">ntfPrg</span><span class="o">+</span><span class="s2">" -f 1000 -l 100000 &\necho $! > "</span><span class="o">+</span><span class="nx">prcID</span><span class="o">+</span><span class="s2">".pid"</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">en</span> <span class="o">&&</span> <span class="o">!</span><span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="s2">"test -s "</span><span class="o">+</span><span class="nx">prcID</span><span class="o">+</span><span class="s2">".pid"</span><span class="p">,</span><span class="kc">true</span><span class="p">))</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="s2">"kill $(cat "</span><span class="o">+</span><span class="nx">prcID</span><span class="o">+</span><span class="s2">".pid); rm "</span><span class="o">+</span><span class="nx">prcID</span><span class="o">+</span><span class="s2">".pid "</span><span class="o">+</span><span class="nx">prcID</span><span class="o">+</span><span class="s2">".res;"</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span> </pre></div> <dl><dd><ul><li> notifyVisVision1 | notify1 = </li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c">#!/bin/sh</span> <span class="c">#flags=notify0|notifyServ0</span> <span class="k">if</span> <span class="nb">test</span> <span class="nv">$en</span> <span class="o">=</span> 1<span class="p">;</span> <span class="k">then</span> <span class="nv">ntfPrg</span><span class="o">=</span><span class="k">$(</span>which beep<span class="k">)</span> <span class="c">#No PID file || No notify already</span> <span class="k">if</span> <span class="nb">test</span> ! -s <span class="nv">$prcID</span>.pid <span class="o">||</span> ! ps -A -o <span class="s2">"pid cmd"</span> <span class="p">|</span> grep <span class="s2">"^ *</span><span class="k">$(</span>cat <span class="nv">$prcID</span>.pid<span class="k">)</span><span class="s2">.*</span><span class="nv">$ntfPrg</span><span class="s2">"</span> > /dev/null<span class="p">;</span> <span class="k">then</span> <span class="nv">$ntfPrg</span> -f <span class="m">1000</span> -l <span class="m">100000</span> <span class="p">&</span> <span class="nb">echo</span> <span class="nv">$!</span> > <span class="nv">$prcID</span>.pid <span class="k">fi</span> <span class="k">elif</span> <span class="nb">test</span> -s <span class="nv">$prcID</span>.pid<span class="p">;</span> <span class="k">then</span> <span class="nb">kill</span> <span class="k">$(</span>cat <span class="nv">$prcID</span>.pid<span class="k">)</span> rm <span class="nv">$prcID</span>.pid <span class="nv">$prcID</span>.res <span class="k">fi</span> </pre></div> <ul><li> Повторюване Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð³Ð¾Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ звукового файлу, одного загального, на боці візуалізатору (flags=notify2) або Ñерверу візуалізації (flags=notifyServ2), триваліÑть аудіо файлу Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ñ— мови має бути не більше 10 Ñекунд:</li></ul> <dl><dd><ul><li> alarm = "10|Prm||0x04"</li> <li> notify2 | notifyVisVision2 =</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c1">//flags=notify2|notifyServ2</span> <span class="k">if</span><span class="p">(</span><span class="nx">en</span><span class="p">)</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="s2">"play -q alarm.ogg"</span><span class="p">);</span> </pre></div> <dl><dd><ul><li> notify2 | notifyVisVision2 =</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c">#!/bin/sh</span> <span class="c">#flags=notify2|notifyServ2</span> <span class="k">if</span> <span class="nb">test</span> <span class="nv">$en</span> <span class="o">=</span> 1<span class="p">;</span> <span class="k">then</span> play -q alarm.ogg<span class="p">;</span> <span class="k">fi</span> </pre></div> <ul><li> ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ñ–Ð½Ð´Ð¸Ð²Ñ–Ð´ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° звукового файлу, на боці візуалізатору, триваліÑть аудіо файлу Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ñ— мови має бути не більше 10 Ñекунд:</li></ul> <dl><dd><ul><li> alarm = "10|Prm||0x04|res:al_prm1"</li> <li> notify2 =</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c1">//flags=queue</span> </pre></div> <dl><dd><ul><li> notifyVisVision2 =</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c1">//flags=notify2|queue</span> <span class="k">if</span><span class="p">(</span><span class="nx">doNtf</span> <span class="o">&&</span> <span class="nx">en</span> <span class="o">&&</span> <span class="nx">res</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileWrite</span><span class="p">(</span><span class="s2">"tmpPlay"</span><span class="p">,</span> <span class="nx">res</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="s2">"play -q tmpPlay"</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileRemove</span><span class="p">(</span><span class="s2">"tmpPlay"</span><span class="p">);</span> <span class="p">}</span> </pre></div> <dl><dd><ul><li> notifyVisVision2 =</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c">#!/bin/sh</span> <span class="c">#flags=notify2|queue</span> <span class="k">if</span> <span class="nb">test</span> <span class="nv">$doNtf</span> <span class="o">=</span> <span class="m">1</span> -a <span class="nv">$en</span> <span class="o">=</span> <span class="m">1</span> -a -s <span class="nv">$res</span><span class="p">;</span> <span class="k">then</span> play -q <span class="nv">$res</span><span class="p">;</span> <span class="k">fi</span> </pre></div> <ul><li> Синтез мови індивідуального ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° на боці візуалізатору, триваліÑть Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ñ— мови має бути не більше 10 Ñекунд:</li></ul> <dl><dd><ul><li> alarm = "10|Prm|ТекÑтове Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñинтезу мови|0x04"</li> <li> notify2 =</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c1">//flags=queue</span> </pre></div> <dl><dd><ul><li> notifyVisVision2 = </li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c1">//flags=notify2|queue</span> <span class="k">if</span><span class="p">(</span><span class="nx">doNtf</span> <span class="o">&&</span> <span class="nx">en</span> <span class="o">&&</span> <span class="nx">mess</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileWrite</span><span class="p">(</span><span class="s2">"tmpForSpeech"</span><span class="p">,</span> <span class="nx">mess</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="s2">"festival --tts tmpForSpeech"</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileRemove</span><span class="p">(</span><span class="s2">"tmpForSpeech"</span><span class="p">);</span> <span class="p">}</span> </pre></div> <dl><dd><ul><li> notifyVisVision2 = </li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c">#!/bin/sh</span> <span class="c">#flags=notify2|queue</span> <span class="k">if</span> <span class="nb">test</span> <span class="nv">$doNtf</span> <span class="o">=</span> <span class="m">1</span> -a <span class="nv">$en</span> <span class="o">=</span> <span class="m">1</span> -a <span class="s2">"x"</span> !<span class="o">=</span> <span class="s2">"x</span><span class="nv">$mess</span><span class="s2">"</span><span class="p">;</span> <span class="k">then</span> <span class="nb">echo</span> <span class="nv">$mess</span> > tmpForSpeech festival --tts tmpForSpeech rm tmpForSpeech <span class="k">fi</span> </pre></div> <ul><li> ÐŸÑ€Ð¸Ð³Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð²ÑƒÐºÐ¾Ð²Ð¾Ð³Ð¾ файлу, одного загального, та його Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð½Ð° боці візуалізатору (flags=notifyServ2) або Ñерверу візуалізації (flags=notifyServ2), триваліÑть аудіо файлу Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ñ— мови має бути не більше 10 Ñекунд:</li></ul> <dl><dd><ul><li> alarm = "10|Prm||0x04"</li> <li> notify2 = </li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c1">//flags=notify2|notifyServ2|resource</span> <span class="k">if</span><span class="p">(</span><span class="nx">doRes</span><span class="p">)</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileRead</span><span class="p">(</span><span class="s2">"alarm.ogg"</span><span class="p">);</span> <span class="c1">//Insert here a different method of the generation</span> <span class="k">if</span><span class="p">(</span><span class="nx">doNtf</span> <span class="o">&&</span> <span class="nx">en</span> <span class="o">&&</span> <span class="nx">res</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileWrite</span><span class="p">(</span><span class="s2">"tmpPlay"</span><span class="p">,</span> <span class="nx">res</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="s2">"play -q tmpPlay"</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileRemove</span><span class="p">(</span><span class="s2">"tmpPlay"</span><span class="p">);</span> <span class="p">}</span> </pre></div> <dl><dd><ul><li> notify2 = </li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c">#!/bin/sh</span> <span class="c">#flags=notify2|notifyServ2|resource</span> <span class="k">if</span> <span class="nb">test</span> <span class="nv">$doRes</span> <span class="o">=</span> 1<span class="p">;</span> <span class="k">then</span> cp -f alarm.ogg <span class="nv">$res</span><span class="p">;</span> <span class="k">fi</span> <span class="c">#Insert here a different method of the generation</span> <span class="k">if</span> <span class="nb">test</span> <span class="nv">$doNtf</span> <span class="o">=</span> <span class="m">1</span> -a <span class="nv">$en</span> <span class="o">=</span> <span class="m">1</span> -a -s <span class="nv">$res</span><span class="p">;</span> <span class="k">then</span> play -q <span class="nv">$res</span><span class="p">;</span> <span class="k">fi</span> </pre></div> <dl><dd><ul><li> notifyVisVision2 =</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c1">//flags=notify2|resource</span> <span class="k">if</span><span class="p">(</span><span class="nx">en</span> <span class="o">&&</span> <span class="nx">res</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileWrite</span><span class="p">(</span><span class="s2">"tmpPlay"</span><span class="p">,</span> <span class="nx">res</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="s2">"play -q tmpPlay"</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileRemove</span><span class="p">(</span><span class="s2">"tmpPlay"</span><span class="p">);</span> <span class="p">}</span> </pre></div> <dl><dd><ul><li> notifyVisVision2 =</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c">#!/bin/sh</span> <span class="c">#flags=notify2|resource</span> <span class="k">if</span> <span class="nb">test</span> <span class="nv">$en</span> <span class="o">=</span> <span class="m">1</span> -a -s <span class="nv">$res</span><span class="p">;</span> <span class="k">then</span> play -q <span class="nv">$res</span><span class="p">;</span> <span class="k">fi</span> </pre></div> <ul><li> ÐŸÑ€Ð¸Ð³Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ð´Ð¸Ð²Ñ–Ð´ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð²ÑƒÐºÐ¾Ð²Ð¾Ð³Ð¾ файлу через Ñинтез мови, на боці візуалізатору (flags=notify2) або Ñерверу візуалізації (flags=notifyServ2), триваліÑть Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ñ— мови має бути не більше 10 Ñекунд:</li></ul> <dl><dd><ul><li> alarm = "10|Prm|ТекÑтове Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñинтезу мови|0x04"</li> <li> notify2 =</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c1">//flags=notify2|notifyServ2|queue</span> <span class="k">if</span><span class="p">(</span><span class="nx">doRes</span> <span class="o">&&</span> <span class="nx">mess</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileWrite</span><span class="p">(</span><span class="s2">"tmpText"</span><span class="p">,</span> <span class="nx">mess</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="s2">"text2wave tmpText -o tmpWAV"</span><span class="p">);</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileRead</span><span class="p">(</span><span class="s2">"tmpWAV"</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileRemove</span><span class="p">(</span><span class="s2">"tmpText"</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileRemove</span><span class="p">(</span><span class="s2">"tmpWAV"</span><span class="p">);</span> <span class="p">}</span> <span class="k">if</span><span class="p">(</span><span class="nx">doNtf</span> <span class="o">&&</span> <span class="nx">en</span> <span class="o">&&</span> <span class="nx">res</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileWrite</span><span class="p">(</span><span class="s2">"tmpPlay"</span><span class="p">,</span> <span class="nx">res</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="s2">"play -q tmpPlay"</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileRemove</span><span class="p">(</span><span class="s2">"tmpPlay"</span><span class="p">);</span> <span class="p">}</span> </pre></div> <dl><dd><ul><li> notify2 =</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c">#!/bin/sh</span> <span class="c">#flags=notify2|notifyServ2|queue</span> <span class="k">if</span> <span class="nb">test</span> <span class="nv">$doRes</span> <span class="o">=</span> <span class="m">1</span> -a <span class="s2">"x"</span> !<span class="o">=</span> <span class="s2">"x</span><span class="nv">$mess</span><span class="s2">"</span><span class="p">;</span> <span class="k">then</span> <span class="nb">echo</span> <span class="nv">$mess</span> > tmpText text2wave tmpText -o <span class="nv">$res</span> rm tmpText <span class="k">fi</span> <span class="k">if</span> <span class="nb">test</span> <span class="nv">$doNtf</span> <span class="o">=</span> <span class="m">1</span> -a <span class="nv">$en</span> <span class="o">=</span> <span class="m">1</span> -a -s <span class="nv">$res</span><span class="p">;</span> <span class="k">then</span> play -q <span class="nv">$res</span><span class="p">;</span> <span class="k">fi</span> </pre></div> <dl><dd><ul><li> notifyVisVision2 =</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c1">//flags=notify2|queue</span> <span class="k">if</span><span class="p">(</span><span class="nx">en</span> <span class="o">&&</span> <span class="nx">res</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileWrite</span><span class="p">(</span><span class="s2">"tmpPlay"</span><span class="p">,</span> <span class="nx">res</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">system</span><span class="p">(</span><span class="s2">"play -q tmpPlay"</span><span class="p">);</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">fileRemove</span><span class="p">(</span><span class="s2">"tmpPlay"</span><span class="p">);</span> <span class="p">}</span> </pre></div> <dl><dd><ul><li> notifyVisVision2 =</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="c">#!/bin/sh</span> <span class="c">#flags=notify2|queue</span> <span class="k">if</span> <span class="nb">test</span> <span class="nv">$en</span> <span class="o">=</span> <span class="m">1</span> -a -s <span class="nv">$res</span><span class="p">;</span> <span class="k">then</span> play -q <span class="nv">$res</span><span class="p">;</span> <span class="k">fi</span> </pre></div> <p><br /> </p> <h3><span class="mw-headline" id=".D0.A3.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D1.96.D0.BD.D0.BD.D1.8F_.D0.BF.D1.80.D0.B0.D0.B2.D0.B0.D0.BC.D0.B8"><span class="mw-headline-number">3.7</span> Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸</span></h3> <p>Ð”Ð»Ñ Ð¿Ð¾Ð´Ñ–Ð»Ñƒ доÑтупу до інтерфейÑу ВУ та його Ñкладовим, кожний віджет міÑтить інформацію про влаÑника, його групи та права доÑтупу. Права доÑтупу запиÑуютьÑÑ Ñƒ виглÑді тріади: "<b>{кориÑтувач}{група[,група1,групаN]}{інші}</b>", де кожний елемент ÑкладаєтьÑÑ Ð· двох ознак доÑтупу, Ð´Ð»Ñ Ñкий прийнÑта наÑтупна інтерпретаціÑ: </p> <ul><li> <b>r</b> — право на переглÑд віджету;</li> <li> <b>w</b> — право на контроль над віджетом.</li></ul> <p>У режимі розробки викориÑтовуєтьÑÑ Ð¿Ñ€Ð¾Ñта Ñхема доÑтупу "root:UI|RWRWR_", що означає — вÑÑ– кориÑтувачі можуть відкривати та переглÑдати бібліотеки, Ñ—Ñ… компоненти та проєкти; а редагувати можуть вÑÑ– кориÑтувачі групи "UI" (кориÑтувацькі інтерфейÑи). </p><p>У режимі Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÑŽÑŽÑ‚ÑŒ права, опиÑані у компонентах інтерфейÑу, Ñкі передбачають можливіÑть наÑÐ»Ñ–Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð»Ð°Ñника та прав, зверху додолу. Причому, по замовченню, наÑÐ»Ñ–Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¾ у кожному віджеті, що означає — вони отримають влаÑника та права проєкту. У той-же чаÑ, прÑме вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð² Ñкладеного віджету розповÑюдить Ñ—Ñ… на вÑÑ– компоненти цього віджета. </p><p><br /> </p> <h3><span class="mw-headline" id=".D0.97.D0.B2.27.D1.8F.D0.B7.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F_.D0.B7_.D0.B4.D0.B8.D0.BD.D0.B0.D0.BC.D1.96.D0.BA.D0.BE.D1.8E"><span class="mw-headline-number">3.8</span> Зв'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð· динамікою</span></h3> <p>Ð”Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð´Ð¾ інтерфейÑу візуалізації актуальних даних, повинні викориÑтовуватиÑÑ Ð´Ð°Ð½Ñ– підÑиÑтеми "Збір даних (DAQ)". Природа цих даних наÑтупна: </p> <ol><li> параметри, що міÑÑ‚Ñть деÑку кількіÑть атрибутів;</li> <li> атрибути параметру можуть надавати дані п'Ñти базових типів: Логічний, Цілий, Реальний, Ð Ñдок та Об'єкт;<br /> Ñкі доповнено СВУ модифікаторами: "ОбираєтьÑÑ"; варіантами Ð Ñдка: "ТекÑÑ‚", "Переклад", "Колір", "ЗображеннÑ", "Шрифт", "ÐдреÑа"; варіантами Цілого: "ДатаЧаÑ".</li> <li> атрибути параметру можуть мати архів (Ñ–Ñторію);</li> <li> атрибути параметру можуть бути на читаннÑ, Ð·Ð°Ð¿Ð¸Ñ Ñ‚Ð° з повним доÑтупом.</li></ol> <p>Враховуючи перший пункт, треба забезпечити можливіÑть групового Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾ÑиланнÑ. Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ викориÑтовуємо <a href="../DAQ.html#LogicLev" title="Special:MyLanguage/Documents/DAQ">концепцію логічного рівнÑ</a>. </p><p>Згідно до пункту 2, зв'Ñзки забезпечують прозоре Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñ–Ð² та не потребують Ñпеціальної конфігурації. </p><p>Ð”Ð»Ñ Ð·Ð°Ð´Ð¾Ð²Ð¾Ð»ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñті доÑтупу до архівам, згідно до пункту 3, зв'Ñзки виконують перевірку типу атрибуту та, у випадку Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ "ÐдреÑи", до Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¼Ñ–Ñ‰Ð°Ñ”Ñ‚ÑŒÑÑ Ð°Ð´Ñ€ÐµÑа зв'Ñзку. </p><p>У термінах СВУ, динамічні зв'Ñзки та ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–ÐºÐ¸ Ñ” одним процеÑом, Ð´Ð»Ñ Ð¾Ð¿Ð¸Ñу конфігурації Ñкого передбачено вкладку "Обробка" віджетів. Вкладка міÑтить таблицю конфігурації влаÑтивоÑтей атрибутів та текÑÑ‚ процедури обчиÑÐ»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¶ÐµÑ‚Ñƒ. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:1074px;"><a class="image" href="http://oscada.org/wiki/File:VCA_wdg_proc_uk.png"><img class="thumbimage" height="766" src="../files/VCA_wdg_proc_uk.png" width="1072" /></a> <div class="thumbcaption">РиÑунок. Вкладка "Обробка" Ñторінки конфігурації віджета.</div></div></div></div> <p>Крім полів конфігурації атрибутів, у таблиці передбачаєтьÑÑ Ñтовпчик "Обробка", Ð´Ð»Ñ Ð²Ð¸Ð±Ñ–Ñ€ÐºÐ¾Ð²Ð¾Ð³Ð¾ викориÑÑ‚Ð°Ð½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² у обчиÑлювальній процедурі віджета, та Ñтовпчика "КонфігураціÑ", "Конфігураційний шаблон" Ð´Ð»Ñ Ð¾Ð¿Ð¸Ñу конфігурації зв'Ñзків. </p><p>Якщо у Ñтовпчику "Обробка" Ñтоїть true, то у обчиÑлювальній процедурі Ñтає доÑтупною змінна <i>{ідентифікатор віджета}_{ідентифікатор атрибуту}</i>, наприклад <i>cw_value</i>. </p><p>Стовпчик "КонфігураціÑ" дозволÑÑ” вказати тип зв'Ñзку атрибуту віджета: </p> <ul><li> <i>ПоÑтійна</i> — у вкладці зв'Ñзків віджету з'ÑвлÑєтьÑÑ Ð¿Ð¾Ð»Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñтійної, наприклад, оÑобливого кольору або заголовку шаблонних кадрів.</li> <li> <i>Вхідний зв'Ñзок</i> — зв'Ñзок з динамікою тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ.</li> <li> <i>Вихідний зв'Ñзок</i> — зв'Ñзок з динамікою тільки Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу.</li> <li> <i>Повний зв'Ñзок</i> — повний зв'Ñзок з динамікою, Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑ.</li> <li> <i>Зі ÑтилÑ</i> — брати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ñ– ÑÑ‚Ð¸Ð»Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ.</li></ul> <p>Стовпчик "Конфігураційний шаблон" дозволÑÑ” зв'Ñзати групи динамічних атрибутів. Ðаприклад, це можуть бути різні типи параметрів підÑиÑтеми "DAQ" та інші віджети інтерфейÑу. При коректному формуванні цього Ð¿Ð¾Ð»Ñ Ð¿Ñ€Ð°Ñ†ÑŽÑ” механізм автоматичного Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð², при визначені тільки параметру підÑиÑтеми "DAQ" або віджету інтерфейÑу, що Ñпрощує та приÑкорює Ð¿Ñ€Ð¾Ñ†ÐµÑ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ—. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ñтовпчика має наÑтупний формат: </p> <ul><li> <i>Ð”Ð»Ñ Ð¿Ð¾Ñтійної:</i> прÑме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ.</li> <li> <i>Ð”Ð»Ñ Ð·Ð²'Ñзку:</i> "<b>{параметр}|{ідентифікатор}</b>", де: <ul><li> <i>параметр</i> — група атрибутів;</li> <li> <i>ідентифікатор</i> — ідентифікатор атрибуту; Ñаме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ цьому полі ÑпівÑтавлÑєтьÑÑ Ð· атрибутами параметрів DAQ піÑÐ»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¾Ð²Ð¾Ð³Ð¾ зв'Ñзку, при автоматичному зв'Ñзувані;</li></ul></li> <li> <i>Ð”Ð»Ñ ÑтилÑ:</i> ідентифікатор-ім'Ñ Ð¿Ð¾Ð»Ñ ÑтилÑ.</li></ul> <p>Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð²'Ñзків може бути декількох типів, Ñкий визначаєтьÑÑ Ð¿Ñ€ÐµÑ„Ñ–ÐºÑом: </p> <ul><li> <i>val:</i> — ПрÑме Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· механізм зв'Ñзків. Ðаприклад, зв'Ñзок "val:100" завантажує Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 100 до атрибуту віджета. ЧаÑто викориÑтовуєтьÑÑ Ñƒ випадку відÑутноÑті кінцевої точки зв'Ñзку, з метою прÑмого вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ.</li> <li> <i>prm:</i> — Зв'Ñзок на атрибут параметру або параметр, загалом, Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¸ атрибутів підÑиÑтеми "Збір даних". Ðаприклад, зв'Ñзок "prm:/LogicLev/experiment/Pi/var" здійÑнює доÑтуп атрибуту віджета до атрибуту параметра підÑиÑтеми "Збір даних". Знак "(+)", у кінці адреÑи, вказує на вдале зв'ÑзуваннÑ-Ð»Ñ–Ð½ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° приÑутніÑть цільового об'єкту. Ð”Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² об'єктного типу допуÑтимий ієрархічний доÑтуп до конкретної влаÑтивоÑті об'єкту, шлÑхом Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñ Ñ—Ñ— шлÑху через Ñимвол '#', наприклад: "prm:/LogicLev/experiment/Pi/var#pr1/pr2".</li> <li> <i>wdg:</i> — Зв'Ñзок на атрибут іншого віджета або віджет, загалом, Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¸ атрибутів. Ðаприклад, зв'Ñзок "wdg:/ses_AGLKS/pg_so/pg_1/pg_ggraph/pg_1/a_bordColor" здійÑнює доÑтуп атрибуту одного віджету до атрибуту іншого. ПідтримуютьÑÑ Ñк абÑолютні, так Ñ– відноÑні шлÑхи зв'Ñзків. Точкою відліку адреÑи абÑолютного зв'Ñзку виÑтупає об'єкт ÐºÐ¾Ñ€ÐµÐ½Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ "VCAEngine", що означає — першим елементом абÑолютної адреÑи Ñ” ідентифікатор ÑеанÑу або проєкту. Перший елемент на боці ÑеанÑу опуÑкаєтьÑÑ, тому зв'Ñзки, вÑтановлені у проєкті, там працюють. ВідноÑні зв'Ñзки беруть відлік від віджету, де зв'Ñзок вказано. Спеціальним елементом відноÑного зв'Ñзку Ñ” елемент вищеÑтоÑчого вузла "..".</li> <li> <i>arh:</i> — ОÑобливий тип зв'Ñзку, доÑтупний тільки Ð´Ð»Ñ Ð¾ÐºÑ€ÐµÐ¼Ð¾Ð³Ð¾ атрибуту типу "ÐдреÑа", Ñкий дозволÑÑ” підключитиÑÑ Ð¿Ñ€Ñмо до архіву значень ("arh:CPU_load"). Може бути кориÑний Ð´Ð»Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñ Ð°Ñ€Ñ…Ñ–Ð²Ñƒ у ÑкоÑті джерела даних примітиву "Діаграма".</li></ul> <p>Обробка зв'Ñзків відбуваєтьÑÑ Ð· періодичніÑтю обчиÑÐ»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¶ÐµÑ‚Ñƒ, у порÑдку: </p> <ul><li> Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… вхідних зв'Ñзків;</li> <li> Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸ віджету;</li> <li> передача значень за вихідними зв'Ñзками.</li></ul> <p>Ðа риÑунку предÑтавлено вкладку зв'Ñзків з груповим призначеннÑм атрибутів, шлÑхом ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ параметру. Ðа наÑтупному риÑунку предÑтавлено індивідуальне Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð². </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:767px;"><a class="image" href="http://oscada.org/wiki/File:VCA_wdg_lnk_grp_uk.png"><img class="thumbimage" height="477" src="../files/VCA_wdg_lnk_grp_uk.png" width="765" /></a> <div class="thumbcaption">РиÑунок. Вкладка "Зв'Ñзки" Ñторінки конфігурації віджету з груповим призначеннÑм атрибутів шлÑхом Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ параметру.</div></div></div></div> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:767px;"><a class="image" href="http://oscada.org/wiki/File:VCA_wdg_lnk_attr_uk.png"><img class="thumbimage" height="508" src="../files/VCA_wdg_lnk_attr_uk.png" width="765" /></a> <div class="thumbcaption">РиÑунок. Вкладка "Зв'Ñзки" Ñторінки конфігурації віджету з індивідуальним призначеннÑм атрибутів.</div></div></div></div> <p>При розташуванні віджета до контейнеру віджетів вÑÑ– зв'Ñзки початкового віджета додаютьÑÑ Ð´Ð¾ переліку результуючих зв'Ñзків контейнеру віджетів, однак, тільки на глибину у один рівень вкладеннÑ. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:890px;"><a class="image" href="http://oscada.org/wiki/File:VCA_cntwdg_lnk_uk.png"><img class="thumbimage" height="675" src="../files/VCA_cntwdg_lnk_uk.png" width="888" /></a> <div class="thumbcaption">РиÑунок. Вкладка "Зв'Ñзки" Ñторінки конфігурації контейнеру віджетів, що включає віджети зі зв'Ñзками.</div></div></div></div> <p>З вищеÑказаного видно, що зв'Ñзки вÑтановлюютьÑÑ ÐºÐ¾Ñ€Ð¸Ñтувачем у процеÑÑ– конфігурації інтерфейÑу. Однак, Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñті ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ°Ð´Ñ€Ñ–Ð² загального Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð· функцією Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð´ÐµÑ‚Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… даних різних джерел одного типу, потрібен механізм <span id="DynLink" title="#DynLink">динамічного вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð²'Ñзків</span>. Такий механізм передбачаєтьÑÑ: </p> <ul><li> резервуваннÑм ключового ідентифікатору "<b><page></b>" Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¸ атрибутів зв'Ñзків у кадрів загального призначеннÑ;</li> <li> динамічним призначеннÑм зв'Ñзків з ідентифікатором "<b><page></b>", у процеÑÑ– Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ ÐºÐ°Ð´Ñ€Ñƒ загального Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° Ñигналом від іншого віджета.</li></ul> <p>РозглÑнемо приклад, коли Ñ” кадр загального Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "Панель контролю графіком" та багато "Графіків" на різних кадрах. "Панель контролю графіком" має зв'Ñзки з шаблонами: </p> <ul><li> tSek -> "<page>|tSek"</li> <li> tSize -> "<page>|tSize"</li> <li> trcPer -> "<page>|trcPer"</li> <li> valArch -> "<page>|valArch"</li></ul> <p>При цьому, кожний віджет "Графік" має атрибути "tSek", "tSize", "trcPer" та "valArch". За викликом Ñигналу Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ "Панелі контролю графіком" з будь-Ñкого віджету "Графік", відбуваєтьÑÑ Ð·Ð²'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² "Панелі контролю графіком" з атрибутами віджету "Графік", згідно шаблону. Ñк результат, вÑÑ– зміни на "Панелі контролю графіком" будуть відображатиÑÑ Ð½Ð° графіку, за поÑередництвом цих зв'Ñзків. </p><p>Якщо у віджета "Графік" наÑвні зовнішні зв'Ñзки на параметри підÑиÑтеми "Збір даних", зв'Ñзки "Панелі контролю графіком" будуть вÑтановлюватиÑÑ Ð½Ð° зовнішнє джерело. Крім того, Ñкщо у "Панелі контролю графіком" будуть заÑвлені зв'Ñзки на атрибути, відÑутні безпоÑередньо у віджета "Графік", то буде здійÑнюватиÑÑ Ð¿Ð¾ÑˆÑƒÐº наÑвноÑті таких атрибутів у зовнішнього джерела — першого на Ñкий вÑтановлено прÑмий зв'Ñзок, виконуючи, тим Ñамим, Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ñутніх зв'Ñзків. </p><p>Ð”Ð»Ñ Ð½Ð°Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ механізмі наведено таблицю. </p><p><b>ТаблицÑ.</b> Механізм динамічної лінковки. </p> <table class="wikitable"> <tr> <th> Ðтрибути "Панелі контролю графіком" (шаблон динамичного зв'Ñзку) </th> <th> Ðтрибути "Графіка" </th> <th> Ðтрибути зовнішнього "Параметру" </th> <th> Результуючий зв'Ñзок або Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð°, що зв'ÑзуєтьÑÑ </th></tr> <tr> <td> tSek (<page>|tSek) </td> <td> tSek </td> <td> - </td> <td> "Графік".tSek </td></tr> <tr> <td> tSize (<page>|tSize) </td> <td> tSize </td> <td> - </td> <td> "Графік".tSize </td></tr> <tr> <td> trcPer (<page>|trcPer) </td> <td> trcPer </td> <td> - </td> <td> "Графік".trcPer </td></tr> <tr> <td> valArch (<page>|valArch) </td> <td> valArch </td> <td> - </td> <td> "Графік".valArch </td></tr> <tr> <td> var (<page>|var) </td> <td> var </td> <td> var </td> <td> "Параметр".var </td></tr> <tr> <td> ed (<page>|ed) </td> <td> - </td> <td> ed </td> <td> "Параметр".ed </td></tr> <tr> <td> max (<page>|max) </td> <td> - </td> <td> - </td> <td> EVAL </td></tr> <tr> <td> min (<page>|min) </td> <td> - </td> <td> - </td> <td> EVAL </td></tr></table> <p><br /> </p> <h3><span class="mw-headline" id=".D0.9F.D1.80.D0.B8.D0.BC.D1.96.D1.82.D0.B8.D0.B2.D0.B8_.D0.B2.D1.96.D0.B4.D0.B6.D0.B5.D1.82.D1.96.D0.B2"><span class="mw-headline-number">3.9</span> <span id="WidgetPrimitives" title="#WidgetPrimitives">Примітиви віджетів</span></span></h3> <p>Будь-Ñкий наново Ñтворюваний віджет заÑновуєтьÑÑ Ð½Ð° одному з декількох примітивів — кінцевому елементі візуалізації, шлÑхом вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ€Ð¾Ð´Ð¸Ð½Ð½Ð¸Ñ… зв'Ñзків Ñк прÑмо на примітив, так Ñ– поÑередництвом декільком проміжних кориÑтувацьких віджетів. Кожний з примітивів міÑтить механізм моделі даних. ЕкземплÑÑ€ віджету зберігає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑтей влаÑної конфігурації примітиву. </p><p>До завдань інтерфейÑу візуалізації входить підтримка та робота з моделлю даних примітивів віджетів. Примітиви віджетів повинні бути ретельно опрацьовані та уніфіковані, з метою охопити Ñк можна більше можливоÑтей у Ñк можна меншій кількоÑті Ñлабко пов'Ñзаних один з одним, по призначенню, примітивів. </p><p><b>ТаблицÑ.</b> Бібліотека примітивів віджетів — базові елементи Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> ÐÐ°Ð¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ </th> <th> Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ </th></tr> <tr> <td> ElFigure </td> <td> Елементарна графічна фігура </td> <td> <p>Примітив Ñ” оÑновою відмальовки елементарних графічних фігур зі вÑілÑкими комбінаціÑми Ñ—Ñ… у одному об'єкті. ПередбачаєтьÑÑ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° наÑтупних елементарних фігур: </p> <ul><li> ЛініÑ.</li> <li> Дуга.</li> <li> Крива Без'Ñ”.</li> <li> Заливка замкненого проÑтору.<br /></li></ul> <p>Ð”Ð»Ñ Ð²ÑÑ–Ñ… фігур, що міÑÑ‚ÑтьÑÑ Ñƒ віджеті, вÑтановлюютьÑÑ Ñ”Ð´Ð¸Ð½Ñ– влаÑтивоÑті товщини, кольору та інше, також, передбачаєтьÑÑ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–Ñть ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ Ð²Ð¸Ñ‰ÐµÐ¿ÐµÑ€ÐµÐ»Ñ–Ñ‡ÐµÐ½Ð¸Ñ… атрибутів Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— фігури окремо та Ñ—Ñ… динамізаціÑ. </p> </td></tr> <tr> <td> FormEl </td> <td> Елемент форми </td> <td> <p>Включає підтримку Ñтандартних компонентів форми: </p> <ul><li> Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдку.</li> <li> Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту.</li> <li> Прапорець.</li> <li> Кнопка.</li> <li> Вибір з переліку.</li> <li> Перелік.</li> <li> Дерево.</li> <li> ТаблицÑ.</li> <li> Слайдер.</li> <li> Стрічка прокрутки. </li></ul> </td></tr> <tr> <td> Text </td> <td> ТекÑÑ‚ </td> <td> Елемент текÑту-мітка. ХарактеризуєтьÑÑ Ñ‚Ð¸Ð¿Ð¾Ð¼ шрифту, кольором, орієнтацією та вирівнюваннÑм. ПередбачаєтьÑÑ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° аргументів. </td></tr> <tr> <td> Media </td> <td> Медіа </td> <td> Елемент Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ€Ð°Ñтрових та векторних зображень різних форматів, Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ð½Ñ–Ð¼Ð¾Ð²Ð°Ð½Ð¸Ñ… зображень, Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð°ÑƒÐ´Ñ–Ð¾-фрагментів та переглÑд відео-фрагментів. </td></tr> <tr> <td> Diagram </td> <td> Діаграма </td> <td> Елемент діаграми з підтримкою можливоÑті Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ¾Ñ… потоків у реальному чаÑÑ– длÑ: трендів (чаÑових графіків), чаÑтотного Ñпектру, XY діаграм. </td></tr> <tr> <td> Protocol </td> <td> Протокол </td> <td> Елемент протоколу — візуалізатор повідомлень програми, з підтримкою декількох режимів роботи. </td></tr> <tr> <td> Document </td> <td> Документ </td> <td> Елемент Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð²Ñ–Ñ‚Ñ–Ð², журналів та іншої документації на оÑнові доÑтупних даних. </td></tr> <tr> <td> Box </td> <td> Контейнер </td> <td> МіÑтить механізм розташуваннÑ-Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ–Ð½ÑˆÐ¸Ñ… віджетів Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð¾Ð²Ð¸Ñ…, більш Ñкладних, віджетів та Ñторінок кінцевої візуалізації. </td></tr> <tr> <td> Function, <span style="color: red">у планах</span> </td> <td> Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ API об'єктної моделі OpenSCADA </td> <td> Ðевізуальний віджет, на боці виконаннÑ, що дозволÑÑ” включати обчиÑлювальні функції об'єктної моделі OpenSCADA до СВУ. </td></tr></table> <p><b>ТаблицÑ.</b> Загальний набір влаÑтивоÑтей/атрибутів віджету </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Ðомер </th> <th> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td> id </td> <td> Ідентифікатор </td> <td> - </td> <td> Ідентифікатор елементу. Ðтрибут тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ, прикликаний надати інформацію про ідентифікатор елементу. </td></tr> <tr> <td> path </td> <td> Путь </td> <td> - </td> <td> ШлÑÑ… до цього віджету. Ðтрибут тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð½Ð¾Ñ— інформації про Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ. </td></tr> <tr> <td> parent </td> <td> Батько </td> <td> - </td> <td> ШлÑÑ… до батьківÑького віджету. Ðтрибут тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€ÐµÐ´ÐºÑƒ від Ñкого уÑпадковано віджет. </td></tr> <tr> <td> owner </td> <td> ВлаÑник </td> <td> - </td> <td> ВлаÑник та групи віджету, у виглÑді "<b>{влаÑник}:{группа[,группа2,группаN]}</b>", по замовченню "root:UI". </td></tr> <tr> <td> perm </td> <td> ДоÑтуп </td> <td> - </td> <td> <p>Права доÑтупу до віджету, у виглÑді "<b>{кориÑтувач}{групи}{інші}</b>" Ð¿Ð»ÑŽÑ Ð¾Ð·Ð½Ð°ÐºÐ° наÑлідуваннÑ, що вмикає наÑÐ»Ñ–Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð»Ð°Ñника та його прав від вищеÑтоÑщого віджету.<br /> Де "<b>кориÑтувач</b>", "<b>групи</b>" та "<b>інші</b>" це: </p> <ul><li> "__" — немає доÑтупу;</li> <li> "R_" — тільки читаннÑ;</li> <li> "RW" — Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑ.<br /></li></ul> <p>По замовченню 01000 — наÑлідуваннÑ. </p> </td></tr> <tr> <td> root </td> <td> Корінь </td> <td> 1 </td> <td> Ідентифікатор віджету-примітиву (базового елементу), Ñкий лежить у оÑнові образу візуалізації віджету. </td></tr> <tr> <td> name </td> <td> Ім'Ñ </td> <td> - </td> <td> Ім'Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ. ДоÑтупне до модифікації ім'Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ. </td></tr> <tr> <td> dscr </td> <td> ÐžÐ¿Ð¸Ñ </td> <td> - </td> <td> ÐžÐ¿Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ. ТекÑтове поле короткого опиÑу. </td></tr> <tr> <td> en </td> <td> Ввімкнено </td> <td> 5 </td> <td> Стан "Ввімкнено" елементу. Вимкнений елемент не відображаєтьÑÑ Ð¿Ñ€Ð¸ виконані. </td></tr> <tr> <td> active </td> <td> Ðктивний </td> <td> 6 </td> <td> Стан "Ðктивний" елементу. Ðктивний елемент може отримувати Ñ„Ð¾ÐºÑƒÑ Ð¿Ñ€Ð¸ виконанні, тобто — отримувати клавіатурні та інші події з подальшою Ñ—Ñ… обробкою. </td></tr> <tr> <td> geomX </td> <td> ГеометріÑ: x </td> <td> 7 </td> <td> ГеометріÑ, координата 'x' Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ. </td></tr> <tr> <td> geomY </td> <td> ГеометріÑ: y </td> <td> 8 </td> <td> ГеометріÑ, координата 'y' Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ. </td></tr> <tr> <td> geomW </td> <td> ГеометріÑ: ширина </td> <td> 9 </td> <td> ГеометріÑ, ширина елементу. </td></tr> <tr> <td> geomH </td> <td> ГеометріÑ: виÑота </td> <td> 10 </td> <td> ГеометріÑ, виÑота елементу. </td></tr> <tr> <td> geomXsc </td> <td> ГеометріÑ: x маÑштаб </td> <td> 13 </td> <td> МаÑштаб елемента по горизонталі. </td></tr> <tr> <td> geomYsc </td> <td> ГеометріÑ: y маÑштаб </td> <td> 14 </td> <td> МаÑштаб елемента по вертикалі. </td></tr> <tr> <td> geomZ </td> <td> ГеометріÑ: z </td> <td> 11 </td> <td> ГеометріÑ, координата 'z' (рівень) елемента на кадрі. Також визначає порÑдок передачі фокуÑу між активними елементами. </td></tr> <tr> <td> geomMargin </td> <td> ГеометріÑ: відÑтуп </td> <td> 12 </td> <td> ГеометріÑ, полÑ-відÑтупи елементу. </td></tr> <tr> <td> tipTool </td> <td> Допомога: підказка </td> <td> 15 </td> <td> ТекÑÑ‚ короткої допомоги або підказки по даному елементу. Типово реалізуєтьÑÑ Ñк Ñпливаюча підказка, при утримані курÑору миші над елементом. </td></tr> <tr> <td> tipStatus </td> <td> Допомога: Ñтан </td> <td> 16 </td> <td> <p>ТекÑÑ‚ інформації про Ñтан елементу або рекомендації до дії над елементом. Типово реалізуєтьÑÑ Ñƒ виглÑді Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñƒ Ñ€Ñдку ÑтатуÑу, при утримувані курÑору миші над елементом. </p> <dl><dd> * ÐœÐ¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð´Ð°Ð½Ð¾Ð³Ð¾ атрибуту з ÑеанÑу кореневої Ñторінки здійÑнює Ð·Ð°Ð¿Ð¸Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð¾ Ñ€Ñдку ÑтатуÑу вікна візуалізації ÑеанÑу.</dd></dl> </td></tr> <tr> <td> contextMenu </td> <td> КонтекÑтне меню </td> <td> 17 </td> <td> <p>КонтекÑтне меню у виглÑді переліку Ñ€Ñдків: "<b>{ItName}:{Signal}</b>".<br /> Де: </p> <ul><li> "ItName" — ім'Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ;</li> <li> "Signal" — ім'Ñ Ñигналу, що формуєтьÑÑ Ð¿Ñ€Ð¸ обрані: "<b>usr_{Signal}</b>". </li></ul> </td></tr> <tr> <td> evProc </td> <td> Обробка подій </td> <td> - </td> <td> <p>Ðтрибут Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ñценарію обробки подій безпоÑереднього ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувацьким інтерфейÑом. Сценарій предÑтавлÑÑ” Ñобою перелік команд інтерфейÑу візуалізації, що генеруютьÑÑ Ð¿Ñ€Ð¸ надходженні події (атрибут <b>event</b>). ПрÑма обробка подій Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñторінками у виглÑді: "<b>{event}:{evSrc}:{com}:{prm}</b>". Де: </p> <ul><li> "event" — очікувана подіÑ;</li> <li> "evSrc" — джерело події;</li> <li> "com" — команда ÑеанÑу: open, next, prev;</li> <li> "prm" — параметр команди, де викориÑтовуєтьÑÑ: <ul><li> pg_so — прÑме ім'Ñ Ð±Ð°Ð¶Ð°Ð½Ð¾Ñ— Ñторінки, з префікÑом;</li> <li> 1 — ім'Ñ Ð½Ð¾Ð²Ð¾Ñ— Ñторінки у загальному шлÑху, без префікÑу;</li> <li> * — ім'Ñ Ñторінки беретьÑÑ Ð· ім'Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ñ— Ñторінки;</li> <li> $ — вказує на міÑце, відноÑно Ñкого відкриваєтьÑÑ Ñторінка.<br /></li></ul></li></ul> <p>Приклади: </p> <ul><li> ws_BtPress:/prev:prev:/pg_so/*/*/$</li> <li> ws_BtPress:/next:next:/pg_so/*/*/$</li> <li> ws_BtPress:/go_mn:open:/pg_so/*/mn/*</li> <li> ws_BtPress:/go_graph:open:/pg_so/*/ggraph </li></ul> </td></tr> <tr> <td> <i>Додаткові атрибути елементів, поміщених до проєкту у ролі Ñторінки.</i> </td></tr> <tr> <td> pgOpen </td> <td> Сторінка: відкрита </td> <td> - </td> <td> <p>Ознака "Сторінка відкрита". </p> <dl><dd> * ÐœÐ¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð· ÑеанÑу здійÑнює негайне відкриттÑ/Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´Ð°Ð½Ð¾Ñ— Ñторінки, та Ð´Ð»Ñ Ñторінок типу "Зв'Ñзок" Ви маєте віддавати перевагу викориÑтанню функції uiCmd() <a href="#UserAPI">кориÑтувацького API</a>, Ð´Ð»Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñторінками.</dd></dl> </td></tr> <tr> <td> pgNoOpenProc </td> <td> Сторінка: оброблÑти закритою </td> <td> - </td> <td> Ознака "Виконувати Ñторінку навіть Ñкщо вона закрита". </td></tr> <tr> <td> pgOpenSrc </td> <td> Сторінка: джерело Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ </td> <td> 3 </td> <td> <p>ÐŸÐ¾Ð²Ð½Ñ Ð°Ð´Ñ€ÐµÑа Ñторінки, що відкрила дану. </p> <dl><dd> * ЗапиÑ/Ð¾Ñ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð°Ð´Ñ€ÐµÑи віджету (ініціатору відкриттÑ), здійÑнює негайне відкриттÑ/Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñторінки. У випадку запиÑу адреÑи, та Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ <a href="#DynLink">інших умов</a>, здійÑнюєтьÑÑ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ зв'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ віджету з ініціатором. Ðле Ð´Ð»Ñ Ñторінок типу "Зв'Ñзок" Ви маєте віддавати перевагу викориÑтанню функції uiCmd() <a href="#UserAPI">кориÑтувацького API</a>, Ð´Ð»Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñторінками.</dd></dl> </td></tr> <tr> <td> pgGrp </td> <td> Сторінка: група </td> <td> 4 </td> <td> Група Ñторінок. ПОРОЖÐЯ та "main" група передбачають викориÑÑ‚Ð°Ð½Ð½Ñ Ñ†Ñ–Ñ”Ñ— Ñторінки Ñк Кореневу-оÑновну Ñторінку, тож така буде замінювати інші Кореневі-головні Ñторінки; група "fl" призначена Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ñƒ зовнішніх вікнах, Ñкі передбачено Ð´Ð»Ñ Ð±Ð°Ð³Ð°Ñ‚Ð¾Ñ€Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ одночаÑного Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñ‚Ð° Ñкі не мають відÑтежуватиÑÑ Ð½Ð° дублікати; решта передбачено Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñƒ контейнери-бокÑи або одноразового одночаÑного відкриттÑ, тож вони примуÑово перевірÑютьÑÑ Ð½Ð° дублікати, коли оÑтаннє відкриваєтьÑÑ, а попередні закриваютьÑÑ. </td></tr> <tr> <td colspan="4"> <i>Додаткові атрибути режиму Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ â€” ÑеанÑу.</i><br />(Віртуальні атрибути не доÑтупні у процедурі віджету) </td></tr> <tr> <td> event </td> <td> Події </td> <td> - </td> <td> Спеціальний атрибут збору подій віджету у переліку, поділеному новим Ñ€Ñдком. ДоÑтуп до атрибуту захищено критичною Ñекцією Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ð²Ñ‚Ñ€Ð°Ñ‚Ð¸ подій. Ðтрибут завжди доÑтупний у процедурі віджету. </td></tr> <tr> <td> load </td> <td> Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ </td> <td> -1 </td> <td> Віртуальна команда групового Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…. </td></tr> <tr> <td> focus </td> <td> Ð¤Ð¾ÐºÑƒÑ </td> <td> -2 </td> <td> Спеціальний атрибут індикації факту Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ„Ð¾ÐºÑƒÑу, активним віджетом. Ðтрибут цього віджету та вкладених віджетів доÑтупний у процедурах віджету. </td></tr> <tr> <td> perm </td> <td> ДоÑтуп </td> <td> -3 </td> <td> Віртуальний атрибут прав активного кориÑтувача на переглÑд та контроль над віджетом. </td></tr></table> <dl><dd> * — Спеціальна Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ віджета, виконувана у ÑеанÑÑ– проєкту при кориÑтувацькій модифікації.</dd></dl> <p>Рушій Ñередовища візуалізації передбачає активацію атрибутів, Ñпецифічних до візуалізатору. ÐŸÑ€Ð¾Ñ†ÐµÑ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ— здійÑнюєтьÑÑ Ð¿Ñ€Ð¸ відкритті ÑеанÑу візуалізації проєкту та передбачає, у цьому проєкті: ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñпецифічного атрибуту з вказаними влаÑтивоÑÑ‚Ñми, Ñкщо він відÑутній, та активацію відÑÑ‚ÐµÐ¶ÐµÐ½Ð½Ñ Ð¹Ð¾Ð³Ð¾ модифікації рушієм Ñередовища візуалізації, Ñк Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±Ñ€Ð°Ð·Ñ–Ð² примітивів. Ð”Ð»Ñ Ð±ÐµÐ·Ð¿Ð¾Ñереднього Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð°ÐºÐ¾Ð³Ð¾ атрибута можна також викориÑтовувати Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ñƒ атрибуту "vs_", що швидше Ñ– виключає Ñтадію активації. З переліком Ñпецифічних до візуалізатора атрибутів можна ознайомитиÑÑ Ñƒ документації відповідного візуалізатора. </p> <h4><span class="mw-headline" id=".D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82.D0.B0.D1.80.D0.BD.D0.B0_.D0.B3.D1.80.D0.B0.D1.84.D1.96.D1.87.D0.BD.D0.B0_.D1.84.D1.96.D0.B3.D1.83.D1.80.D0.B0_.28ElFigure.29"><span class="mw-headline-number">3.9.1</span> <span id="ElFigure" title="#ElFigure">Елементарна графічна фігура (ElFigure)</span></span></h4> <p>Примітив Ñ” оÑновою відмальовки елементарних графічних фігур з різноманітною Ñ—Ñ… комбінацією у одному об'єкті. Враховуючи широкий Ñпектр можливих фігур, Ñкі повинен підтримувати примітив, та, у цей-же чаÑ, бути доÑтатньо проÑтим у викориÑтанні та, по можливоÑті, у реалізації, було вирішено обмежити перелік базових фігур, викориÑтаних Ð´Ð»Ñ Ð¿Ð¾Ð±ÑƒÐ´Ð¾Ð²Ð¸ результуючих графічних об'єктів, до таких: лініÑ, дуга, крива Без'Ñ” та заливка замкнених контурів. ÒрунтуючиÑÑŒ вже на цих базових фігурах, можна будувати довільні фігури, комбінуючи базові. У рамках примітиву Ñ–Ñнує можливіÑть Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€Ð¾Ñті кольору у діапазоні [0...255], де '0' — повна прозоріÑть. </p><p><b>ТаблицÑ.</b> Ðабір додаткових влаÑтивоÑтей/атрибутів примітиву "Елементарна фігура (ElFigure)" </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Ðомер </th> <th> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td> lineWdth </td> <td> ЛініÑ: ширина </td> <td> 20 </td> <td> Ширина лінії. </td></tr> <tr> <td> lineClr </td> <td> ЛініÑ: колір </td> <td> 21 </td> <td> <p>Ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ у виглÑді "<b>{color}[-{alpha}]</b>", де: </p> <ul><li> "color" — Ñтандартне ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ або його чиÑлове предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð· трьох шіÑтнадцÑткових чиÑел окремих кольорів "#RRGGBB";</li> <li> "alpha" — рівень альфа-каналу [0...255], де 0 — повніÑтю прозорий.<br /></li></ul> <p>Приклади: </p> <ul><li> "red" — Ñуцільний червоний колір;</li> <li> "#FF0000" — Ñуцільний червоний колір у цифровому коді;</li> <li> "red-127" — напівпрозорий червоний колір.</li></ul> </td></tr> <tr> <td> lineStyle </td> <td> ЛініÑ: Ñтиль </td> <td> 22 </td> <td> Стиль лінії: Ñуцільна, пунктир, точкова. </td></tr> <tr> <td> bordWdth </td> <td> ГраницÑ: ширина </td> <td> 23 </td> <td> Ширина бордюру лінії. Ðульова ширина вказує на відÑутніÑть бордюру. </td></tr> <tr> <td> bordClr </td> <td> ГраницÑ: колір </td> <td> 24 </td> <td> Колір бордюру (деталі у атрибуті 21). </td></tr> <tr> <td> fillColor </td> <td> ЗаповненнÑ: колір </td> <td> 25 </td> <td> Колір заливки (деталі у атрибуті 21). </td></tr> <tr> <td> fillImg </td> <td> ЗаповненнÑ: Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ </td> <td> 26 </td> <td> <p>Ім'Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ виглÑді "<b>[{src}:]{name}</b>", де: </p> <ul><li> "src" — джерело зображеннÑ: <ul><li> <i>file</i> — прÑмо з локального файлу за шлÑхом;</li> <li> <i>res</i> — з таблиці реÑурÑів БД.</li></ul></li> <li> "name" — шлÑÑ… файлу або ідентифікатор реÑурÑу.<br /></li></ul> <p>Приклади: </p> <ul><li> "res:backLogo" — з таблиці реÑурÑів БД Ð´Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ñƒ "backLogo";</li> <li> "backLogo" — Ñк Ñ– попередній;</li> <li> "file:/var/tmp/backLogo.png" — з локального файлу за шлÑхом "/var/tmp/backLogo.png".</li></ul> </td></tr> <tr> <td> orient </td> <td> Кут повороту </td> <td> 28 </td> <td> Кут повороту вміÑту виджета. </td></tr> <tr> <td> mirror </td> <td> Ð’Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ </td> <td> 29 </td> <td> Ð’Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð²Ð¼Ñ–Ñту віджету, <span>наразі обмежене</span>. </td></tr> <tr> <td> elLst </td> <td> Перелік елементів </td> <td> 27 </td> <td> <p>Перелік графічних елементів у форматі: </p> <ul><li> ЛініÑ. Загальна форма запиÑу у переліку, Ð´Ð»Ñ Ñтатичних та динамічних параметрів (можуть змішуватиÑÑ):</li></ul> <dl><dd><dl><dd>"<b>line:({x}|{y}):({x}|{y})[:{width}[:{color}[:{bord_w}[:{bord_clr}[:{line_stl}]]]]]</b>"</dd> <dd>"<b>line:{p1}:{p2}[:w{n}[:c{n}[:w{n}[:c{n}[:s{n}]]]]]</b>"</dd></dl></dd></dl> <ul><li> Дуга. Загальна форма запиÑу у переліку, Ð´Ð»Ñ Ñтатичних та динамічних параметрів (можуть змішуватиÑÑ):</li></ul> <dl><dd><dl><dd>"<b>arc:({x}|{y}):({x}|{y}):({x}|{y}):({x}|{y}):({x}|{y})[:{width}[:{color}[:{bord_w}[:{bord_clr}[:{line_stl}]]]]]</b>"</dd> <dd>"<b>arc:{p1}:{p2}:{p3}:{p4}:{p5}[:w{n}[:c{n}[:w{n}[:c{n}[:s{n}]]]]]</b>"</dd></dl></dd> <dd><a class="image" href="http://oscada.org/wiki/File:VCA_arc.png"><img alt="VCA arc.png" height="215" src="../../en/files/VCA_arc.png" width="164" /></a> <dl><dd>p1, p2 — початкова та кінцева точка еліптичної дуги, відповідно;</dd> <dd>p3 — центр дуги;</dd> <dd>p4 — перший радіуÑ;</dd> <dd>p5 — другий радіуÑ.</dd></dl></dd></dl> <ul><li> Крива Без'Ñ”. Загальна форма запиÑу у переліку, Ð´Ð»Ñ Ñтатичних та динамічних параметрів (можуть змішуватиÑÑ):</li></ul> <dl><dd><dl><dd>"<b>bezier:({x}|{y}):({x}|{y}):({x}|{y}):({x}|{y})[:{width}[:{color}[:{bord_w}[:{bord_clr}[:{line_stl}]]]]]</b>"</dd> <dd>"<b>bezier:{p1}:{p2}:{p3}:{p4}[:w{n}[:c{n}[:w{n}[:c{n}[:s{n}]]]]]</b>"</dd></dl></dd></dl> <ul><li> Заливка. Загальна форма запиÑу у переліку, Ð´Ð»Ñ Ñтатичних та динамічних параметрів (можуть змішуватиÑÑ):</li></ul> <dl><dd><dl><dd>"<b>fill:({x}|{y}):({x}|{y}):...:({x}|{y})[:{fill_clr}[:{fill_img}]]</b>"</dd> <dd>"<b>fill:{p1}:{p2}:...:{pN}[:c{n}[:i{n}]]</b>"<br /></dd></dl></dd></dl> <p>Де: </p> <dl><dd><i>x, y</i> — прÑма точка (x,y), координати у пікÑелÑÑ… з плаваючою точкою;</dd> <dd><i>p1 ... pN</i> — динамічна точка 1...N;</dd> <dd><i>width, bord_w</i> — прÑма ширина лінії та бордюру у пікÑелÑÑ… з плаваючою точкою;</dd> <dd><i>w{n}</i> — динамічна ширина 'n';</dd> <dd><i>color, bord_clr, fill_clr</i> — прÑмий колір лінії, бордюру та заповненнÑ, у виглÑді назви або 32-бітного коду з альфа: {ім'Ñ}[-{AAA}], #RRGGBB-AAA;</dd> <dd><i>c{n}</i> — динамічний колір 'n';</dd> <dd><i>line_stl</i> — прÑмий Ñтиль лінії: 0-Суцільна, 1-Пунктирна, 2-Точкова;</dd> <dd><i>s{n}</i> — динамічний Ñтиль 'n';</dd> <dd><i>fill_img</i> — прÑме Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñƒ виді "[{src}%3A]{name}", де: <dl><dd>"src" — джерело зображеннÑ: <dl><dd><i>file</i> — безпоÑередньо з локального файлу за шлÑхом;</dd> <dd><i>res</i> — з таблиці реÑурÑів БД.</dd></dl></dd> <dd>"name" — шлÑÑ… файлу або ідентифікатор реÑурÑу.</dd></dl></dd> <dd><i>i{n}</i> — динамічне Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ 'n'.<br /></dd></dl> <p>Ðаприклад: </p> <ul><li> line:(50|25):(90.5|25):2:yellow:3:green:2</li> <li> arc:(25|50):(25|50):1:4:(25|50)::#000000-0</li> <li> fill:(25|50):(25|50):c2:i2</li> <li> fill:(50|25):(90.5|25):(90|50):(50|50):#d3d3d3:h_31 </li></ul> </td></tr> <tr> <td colspan="4"> <i>Ðтрибути кожної точки з переліку графічних фігур <b>elLst</b></i> </td></tr> <tr> <td> p{n}x </td> <td> Точка {n}:x </td> <td> 30+n*6 </td> <td> Координата 'x' точки <i>n</i>. </td></tr> <tr> <td> p{n}y </td> <td> Точка {n}:y </td> <td> 30+n*6+1 </td> <td> Координата 'y' точки <i>n</i>. </td></tr> <tr> <td> w{n} </td> <td> Ширина {n} </td> <td> 30+n*6+2 </td> <td> Ширина <i>n</i>. </td></tr> <tr> <td> Ñ{n} </td> <td> Колір {n} </td> <td> 30+n*6+3 </td> <td> Колір <i>n</i> (деталі у атрибуті 21). </td></tr> <tr> <td> i{n} </td> <td> Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ {n} </td> <td> 30+n*6+4 </td> <td> Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ <i>n</i> (деталі у атрибуті 26). </td></tr> <tr> <td> s{n} </td> <td> Стиль {n} </td> <td> 30+n*6+5 </td> <td> Стиль <i>n</i>. </td></tr></table> <h4><span class="mw-headline" id=".D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82_.D1.84.D0.BE.D1.80.D0.BC.D0.B8_.28FormEl.29"><span class="mw-headline-number">3.9.2</span> <span id="FormEl" title="#FormEl">Елемент форми (FormEl)</span></span></h4> <p>Примітив, призначений Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ, у розпорÑÐ´Ð¶ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача, Ñтандартних елементів форми. Загальний перелік атрибутів залежить від типу елементу. </p><p><b>ТаблицÑ.</b> Ðабір додаткових влаÑтивоÑтей/атрибутів примітиву "Елемент форми (FormEl)" </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Ðомер </th> <th> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td> elType </td> <td> Тип елементу </td> <td> 20 </td> <td> Тип елементу, від Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñкого залежить перелік додаткових атрибутів: <ul><li> Ð Ñдок Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ (0)</li> <li> Редактор текÑту (1)</li> <li> Прапорець (2)</li> <li> Кнопка (3)</li> <li> Вибір з переліку (ComboBox) (4)</li> <li> Перелік (5)</li> <li> Дерево (8)</li> <li> Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ (9)</li> <li> Слайдер (6)</li> <li> Стрічка Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ (7)</li></ul> </td></tr> <tr> <td colspan="4"> <i>Ð Ñдок редагуваннÑ:</i> </td></tr> <tr> <td> value </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </td> <td> 21 </td> <td> ВміÑÑ‚ Ñ€Ñдку. </td></tr> <tr> <td> view </td> <td> Вид </td> <td> 22 </td> <td> Вид Ñ€Ñдка редагуваннÑ: <ul><li> ТекÑÑ‚ (0)</li> <li> Комбо Ð‘Ð¾ÐºÑ (1)</li> <li> Ціле (2)</li> <li> Реальне (3)</li> <li> Ð§Ð°Ñ (4)</li> <li> Дата (5)</li> <li> Дата та Ñ‡Ð°Ñ (6)</li> <li> Пароль (7)</li></ul> </td></tr> <tr> <td> cfg </td> <td> ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ </td> <td> 23 </td> <td> <p>ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ñ€Ñдку. Формат Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¾Ð³Ð¾ Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ Ñ€Ñ–Ð·Ð½Ð¸Ñ… видів Ñ€Ñдка: </p> <dl><dd><i>ТекÑÑ‚</i> — ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ воду за шаблоном з параметрами (підтримуєтьÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ Qt у <a href="../Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">UI.Vision</a>): <dl><dd><dl><dd><b>A</b> — Потрібно ASCII алфавітний Ñимвол, [A-Za-z].</dd> <dd><b>a</b> — Дозволено, але не обов'Ñзково, ASCII алфавітний Ñимвол.</dd> <dd><b>N</b> — Потрібно ASCII алфавітно-цифровий Ñимвол, [A-Za-z0-9].</dd> <dd><b>n</b> — Дозволено, але не обов'Ñзково, ASCII алфавітно-цифровий Ñимвол.</dd> <dd><b>X</b> — Потрібно будь-Ñкий Ñимвол.</dd> <dd><b>x</b> — Дозволено, але не обов'Ñзково, будь-Ñкий Ñимвол.</dd> <dd><b>9</b> — Ðеобхідно ASCII цифру, [0-9].</dd> <dd><b>0</b> — Дозволено, але не обов'Ñзково, ASCII цифру.</dd> <dd><b>D</b> — Ðеобхідно ASCII цифру, [1-9].</dd> <dd><b>d</b> — Дозволено, але не обов'Ñзково, ASCII цифру.</dd> <dd><b>#</b> — Дозволено, але не обов'Ñзково, ASCII цифру або знаки плюÑ/мінуÑ.</dd> <dd><b>H</b> — Ðеобхідно Ñимвол шіÑтнадцÑткового чиÑла, [A-Fa-f0-9].</dd> <dd><b>h</b> — Дозволено, але не обов'Ñзково, Ñимвол шіÑтнадцÑткового чиÑла.</dd> <dd><b>B</b> — Ðеобхідно бінарний Ñимвол, [0-1].</dd> <dd><b>b</b> — Дозволено, але не обов'Ñзково, бінарний Ñимвол.</dd> <dd><b>></b> — Ð’ÑÑ– наÑтупні алфавітні Ñимволи у верхньому регіÑтрі.</dd> <dd><b><</b> — Ð’ÑÑ– наÑтупні алфавітні Ñимволи у нижньому регіÑтрі.</dd> <dd><b>!</b> — Ð’Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ€ÐµÐ³Ñ–Ñтру.</dd> <dd><b>\\</b> — ВикориÑтовуйте у роздільниках, Ð´Ð»Ñ ÐµÐºÑ€Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñпеціальних Ñимволів, Ñкі перелічено.</dd></dl></dd></dl></dd> <dd><i>КомбобокÑ</i> — перелік значень редагованого комбо-бокÑу, за Ñ€Ñдками.</dd> <dd><i>Ціле</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ†Ñ–Ð»Ð¾Ð³Ð¾ чиÑла у формі: "<b>{Мінімум}:{МакÑимум}:{КрокЗміни}:{ПрефікÑ}:{СуфікÑ}</b>".</dd> <dd><i>Реальне</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€ÐµÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ чиÑла в формі: "<b>{Мінімум}:{МакÑимум}:{КрокЗміни}:{ПрефікÑ}:{СуфікÑ}:{ЗнаківПіÑлÑКрапки}</b>".</dd> <dd><i>ЧаÑ</i>, <i>Дата</i>, <i>Дата та чаÑ</i> — формувати дату за шаблоном з параметрами: <dl><dd><dl><dd><b>d</b> — номер Ð´Ð½Ñ (1-31);</dd> <dd><b>dd</b> — номер Ð´Ð½Ñ (01-31);</dd> <dd><b>ddd</b> — Ñкорочене Ð½Ð°Ð¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð½Ñ ("Mon" ... "Sun");</dd> <dd><b>dddd</b> — повне Ð½Ð°Ð¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð½Ñ ("Monday" ... "Sunday");</dd> <dd><b>M</b> — номер міÑÑÑ†Ñ (1-12);</dd> <dd><b>MM</b> — номер міÑÑÑ†Ñ (01-12);</dd> <dd><b>MMM</b> — Ñкорочене ім'Ñ Ð¼Ñ–ÑÑÑ†Ñ ("Jan" ... "Dec");</dd> <dd><b>MMMM</b> — повне ім'Ñ Ð¼Ñ–ÑÑÑ†Ñ ("January" ... "December");</dd> <dd><b>yy</b> — оÑтанні дві цифри року;</dd> <dd><b>yyyy</b> — рік повніÑтю;</dd> <dd><b>h</b> — Ñ‡Ð°Ñ (0-23);</dd> <dd><b>hh</b> — Ñ‡Ð°Ñ (00-23);</dd> <dd><b>m</b> — хвилини (0-59);</dd> <dd><b>mm</b> — хвилини (00-59);</dd> <dd><b>s</b> — Ñекунди (0-59);</dd> <dd><b>ss</b> — Ñекунди (00-59);</dd> <dd><b>AP,ap</b> — відображати AM/PM або am/pm. </dd></dl></dd></dl></dd></dl> </td></tr> <tr> <td> confirm </td> <td> Підтверджувати </td> <td> 24 </td> <td> Ð’ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ підтвердженнÑ. </td></tr> <tr> <td> font </td> <td> Шрифт </td> <td> 25 </td> <td> <p>Ім'Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ у виглÑді "<b>{family} {size} {bold} {italic} {underline} {strike}</b>", де: </p> <ul><li> "family" — ÑімейÑтво шрифту, Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð±Ñ–Ð»Ñ–Ð² викориÑтовуйте Ñимвол '_', на кшталт: "Arial", "Courier", "Times_New_Roman";</li> <li> "size" — розмір шрифту у пікÑелÑÑ…;</li> <li> "bold" — підÑÐ¸Ð»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1);</li> <li> "italic" — нахиленіÑть шрифту (0 або 1);</li> <li> "underline" — підкреÑÐ»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1);</li> <li> "strike" — перекреÑÐ»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1).<br /></li></ul> <p>Приклади: </p> <ul><li> "Arial 10 1 0 0 0" — Arial шрифт розміром 10 пікÑелів та підÑилений. </li></ul> </td></tr> <tr> <td colspan="4"> <i>Редактор текÑту:</i> </td></tr> <tr> <td> value </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </td> <td> 21 </td> <td> ВміÑÑ‚ редактору. </td></tr> <tr> <td> wordWrap </td> <td> ПеренеÑÐµÐ½Ð½Ñ Ñлів </td> <td> 22 </td> <td> Ðвтоматичний перенеÑÐµÐ½Ð½Ñ Ñ‚ÐµÐºÑту за Ñловами. </td></tr> <tr> <td> confirm </td> <td> Підтверджувати </td> <td> 24 </td> <td> Ð’ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ підтвердженнÑ. </td></tr> <tr> <td> font </td> <td> Шрифт </td> <td> 25 </td> <td> Ім'Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ у виглÑді "<b>{family} {size} {bold} {italic} {underline} {strike}</b>" (деталі вище). </td></tr> <tr> <td colspan="4"> <i>Прапорець:</i> </td></tr> <tr> <td> name </td> <td> Ім'Ñ </td> <td> 26 </td> <td> Ім'Ñ/мітка прапорцÑ. </td></tr> <tr> <td> value </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </td> <td> 21 </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ. </td></tr> <tr> <td> font </td> <td> Шрифт </td> <td> 25 </td> <td> Ім'Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ у виглÑді "<b>{family} {size} {bold} {italic} {underline} {strike}</b>" (деталі вище). </td></tr> <tr> <td colspan="4"> <i>Кнопка:</i> </td></tr> <tr> <td> name </td> <td> Ім'Ñ </td> <td> 26 </td> <td> Ім'Ñ-Ð½Ð°Ð´Ð¿Ð¸Ñ Ð½Ð° кнопці. ДопуÑтимі Ñимволи '\n' Ð´Ð»Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñті вводу багаторÑдних надпиÑів. </td></tr> <tr> <td> value </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </td> <td> 21 </td> <td> <p>ЗначеннÑ, відрізнÑєтьÑÑ Ð´Ð»Ñ Ñ€Ñ–Ð·Ð½Ð¸Ñ… режимів: </p> <ul><li> "Стандарт" — параметри повтору подій при утримані <b>{затримка}-{інтервал}</b>, Ñ‡Ð°Ñ Ñƒ міліÑекундах;</li> <li> "Перемикач" — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ñ‡Ð°;</li> <li> "Меню" — перелік Ð°Ð´Ñ€ÐµÑ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñ–Ð² меню виду <b>/grp1/grp2/item1</b>;</li> <li> "ЗавантаженнÑ" — Ñ€Ñдок опиÑу <b>{ШаблонФайлів}|{Заголовок}|{ФайлПоЗамовчТаЗав}|{ФайлMime}</b> та вміÑÑ‚ завантаженого файлу із наÑтупного Ñ€Ñдка. Шаблон файлів у виглÑді "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (*.png *.xpm *.jpg);;CSV-файл (*.csv)".</li> <li> "ЗбереженнÑ" — Ñ€Ñдок опиÑу <b>{ШаблонФайлів}|{Заголовок}|{ФайлПоЗамовч}|{ФайлMime}</b> та вміÑÑ‚ файлу до Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ–Ð· наÑтупного Ñ€Ñдка. Шаблон файлів Ñк Ñ– вище.</li></ul> </td></tr> <tr> <td> img </td> <td> Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ </td> <td> 22 </td> <td> <p>Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° кнопці. Ім'Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ виглÑді "<b>[{src}:]{name}</b>", де: </p> <ul><li> "src" — джерело зображеннÑ: <ul><li> <i>file</i> — прÑмо з локального файлу за шлÑхом;</li> <li> <i>res</i> — з таблиці реÑурÑів БД.</li></ul></li> <li> "name" — шлÑÑ… файлу або ідентифікатор реÑурÑу.<br /></li></ul> <p>Приклади: </p> <ul><li> "res:backLogo" — з таблиці реÑурÑів БД Ð´Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ñƒ "backLogo";</li> <li> "backLogo" — Ñк Ñ– попередній;</li> <li> "file:/var/tmp/backLogo.png" — з локального файлу за шлÑхом "/var/tmp/backLogo.png".</li></ul> </td></tr> <tr> <td> color </td> <td> Колір </td> <td> 23 </td> <td> <p>Колір кнопки. Ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ у виглÑді "<b>{color}[-{alpha}]</b>", де: </p> <ul><li> "color" — Ñтандартне ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ або його чиÑлове предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð· трьох шіÑтнадцÑткових чиÑел окремих кольорів "#RRGGBB";</li> <li> "alpha" — рівень альфа-каналу [0...255], де 0 — повніÑтю прозорий.<br /></li></ul> <p>Приклади: </p> <ul><li> "red" — Ñуцільний червоний колір;</li> <li> "#FF0000" — Ñуцільний червоний колір у цифровому коді;</li> <li> "red-127" — напівпрозорий червоний колір.</li></ul> </td></tr> <tr> <td> colorText </td> <td> Колір: текÑÑ‚ </td> <td> 27 </td> <td> Колір текÑту (деталі вище). </td></tr> <tr> <td> mode </td> <td> Режим </td> <td> 24 </td> <td> <p>Режим роботи кнопки: </p> <ul><li> "Стандарт" — звичайна кнопка з можливіÑтю повтору подій при утримані, параметри у "value";</li> <li> "Перемикач" — кнопка з фікÑацією, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ "value";</li> <li> "Меню" — Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¼ÐµÐ½ÑŽ за натиÑком, перелік елементів у "value";</li> <li> "ЗавантаженнÑ" — Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ ÐºÐ¾Ñ€Ð¸Ñтувацького Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½ÐµÐ²ÐµÐ»Ð¸ÐºÐ¸Ñ… файлів через Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð²Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—; за натиÑком кнопки, у цьому режимі, відкриваєтьÑÑ Ð´Ñ–Ð°Ð»Ð¾Ð³ вибору файлу завантаженнÑ, а вміÑÑ‚ обраного файлу завантажуєтьÑÑ Ð´Ð¾ атрибуту "value";</li> <li> "ЗбереженнÑ" — Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ ÐºÐ¾Ñ€Ð¸Ñтувацького Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð½ÐµÐ²ÐµÐ»Ð¸ÐºÐ¸Ñ… файлів через Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð²Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—; при запиÑу вміÑту файлу до атрибуту "value" кориÑтувачу буде відкрито діалог обраннÑ/Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ Ð´Ð»Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ, піÑÐ»Ñ Ð¾Ð±Ñ€Ð°Ð½Ð½Ñ, вміÑÑ‚ атрибуту "value" збережетьÑÑ Ð´Ð¾ файлу, а "value" очиÑтитьÑÑ.</li></ul> </td></tr> <tr> <td> font </td> <td> Шрифт </td> <td> 25 </td> <td> Ім'Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ у виглÑді "<b>{family} {size} {bold} {italic} {underline} {strike}</b>" (деталі вище). </td></tr> <tr> <td colspan="4"> <i>СпиÑок:</i> </td></tr> <tr> <td> value </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </td> <td> 21 </td> <td> Поточне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑпиÑку. </td></tr> <tr> <td> items </td> <td> Елементи </td> <td> 22 </td> <td> Перелік елементів ÑпиÑку. </td></tr> <tr> <td> font </td> <td> Шрифт </td> <td> 25 </td> <td> Ім'Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ у виглÑді "<b>{family} {size} {bold} {italic} {underline} {strike}</b>" (деталі вище). </td></tr> <tr> <td> mult </td> <td> Множинний вибір </td> <td> 23 </td> <td> ДозволÑти вибір множини елементів ÑпиÑку. </td></tr> <tr> <td colspan="4"> <i>Вибір зі ÑпиÑку, Дерево:</i> </td></tr> <tr> <td> value </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </td> <td> 21 </td> <td> Поточне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑƒ. </td></tr> <tr> <td> items </td> <td> Елементи </td> <td> 22 </td> <td> Перелік елементів ÑпиÑку або ієрархічних елементів дерева у виглÑді шлÑху "<b>/{КÐТ}/{КÐТ}/{ЕЛЕМ}</b>". </td></tr> <tr> <td> font </td> <td> Шрифт </td> <td> 25 </td> <td> Ім'Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ у виглÑді "<b>{family} {size} {bold} {italic} {underline} {strike}</b>" (деталі вище). </td></tr> <tr> <td colspan="4"> <i>ТаблицÑ:</i> </td></tr> <tr> <td> set </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ </td> <td> 23 </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»Ñ–Ñ‚Ð¸Ð½ÐºÐ¸ таблиці з адреÑою у події "<b>ws_TableEdit_{colN}_{rowN}</b>". </td></tr> <tr> <td> value </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </td> <td> 21 </td> <td> <p>ÐдреÑа обраного елементу. Зміна ÑупроводжуєтьÑÑ Ð¿Ð¾Ð´Ñ–Ñ”ÑŽ "<b>ws_TableChangeSel</b>". Формат адреÑи залежить від режиму Ð¾Ð±Ñ€Ð°Ð½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ–: </p> <ul><li> "Клітинка" — адреÑа клітинки у форматі "<b>{row}:{col}</b>".</li> <li> "Ð Ñдок", "Стовпчик" — номер Ñ€Ñдка-Ñтовпчика або вміÑÑ‚ клітинки ключа Ñ€Ñдка-Ñтовпчика, вказаного атрибутом "keyID".</li></ul> </td></tr> <tr> <td> items </td> <td> Елементи </td> <td> 22 </td> <td> <p>Структура та вміÑÑ‚ таблиці у виглÑді XML: </p> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nt"><tbl></span> <span class="nt"><h><s></span>{Заголовок1}<span class="nt"></s><s></span>{Заголовок2}<span class="nt"></s></h></span> <span class="nt"><r><s></span>{Ð Ñдок1Стовпчик1Ð Ñдок}<span class="nt"></s><i></span>{Ð Ñдок1Стовпчик2Ціле}<span class="nt"></i></r></span> <span class="nt"><r><b></span>{Ð Ñдок2Стовпчик1Логічне}<span class="nt"></b><r></span>{Ð Ñдок2Стовпчик2Реальне}<span class="nt"></r></r></span> <span class="nt"></tbl></span> </pre></div> <p>Теги: </p> <dl><dd>"tbl" — ТаблицÑ, влаÑтивоÑті таблиці загалом: <ul><li> "sel" — режим обраннÑ-Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñ–Ð² таблиці: "row" — за Ñ€Ñдками, "col" — за Ñтовпчиками, "cell" — клітинками (по замовченню);</li> <li> "keyID" — номер ключового Ñ€Ñдка-Ñтовпчика, Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ð±Ð¾Ñ€Ñƒ;</li> <li> "colsWdthFit" — підлаштовувати розмір Ñтовпчиків, розмір Ñких не фікÑовано, під Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð²Ñієї ширини таблиці;</li> <li> "hHdrVis", "vHdrVis" — вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ñті горизонтального, вертикального заголовків;</li> <li> "sortEn" — Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ñмого ÑÐ¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° Ñтовпчиками.</li></ul></dd> <dd>"h" — Ð Ñдок заголовків, можливі атрибути тегів клітинок заголовку, Ð´Ð»Ñ Ñтовпчика загалом: <ul><li> "width" — ширина Ñтовпчика, у пікÑелÑÑ… або відÑотках (10%); вÑтановити у 0, щоб не показувати взагалі;</li> <li> "edit" — можливіÑть Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ (0 або 1) клітинок Ñтовпчика, по замовченню — ні (0);</li> <li> "color" — колір Ñтовпчика, загалом, у виглÑді ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ або його коду;</li> <li> "colorText" — колір текÑту Ñтовпчика, загалом, у виглÑді ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ або його коду;</li> <li> "font" — шрифт текÑту Ñтовпчика, загалом, у виглÑді типового Ñ€Ñдка OpenSCADA;</li> <li> "prec" — точніÑть значень клітинок реального типу у Ñтовпчику;</li> <li> "sort" — ÑÐ¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° даним Ñтовпчиком [0 — по зроÑтанню-типово; 1 — по убуванню];</li> <li> "align" — Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñтовпчика щодо: "left", "right" та "center".</li></ul></dd> <dd>"r" — Ð Ñдок значень, можливі атрибути тегів клітинок заголовку, Ð´Ð»Ñ Ñ€Ñдка загалом: <ul><li> "color" — колір Ñ€Ñдку, загалом, у виглÑді ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ або його коду;</li> <li> "colorText" — колір текÑту Ñ€Ñдка, загалом, у виглÑді ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ або його коду;</li> <li> "font" — шрифт текÑту Ñ€Ñдка, загалом, у виглÑді типового Ñ€Ñдка OpenSCADA;</li> <li> "prec" — точніÑть значень клітинок реального типу у Ñ€Ñдку.</li></ul></dd> <dd>"s", "t", "i", "r", "b" — клітинки типів даних: "Ð Ñдок", "ТекÑÑ‚", "Ціле", "Реальне" та "Логічне". Можливі атрибути: <ul><li> "color" — колір клітинки;</li> <li> "colorText" — колір текÑту клітинки, у виглÑді ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ або його коду;</li> <li> "prec" — точніÑть значень клітинки реального типу;</li> <li> "font" — шрифт текÑту клітинки, у виглÑді типового Ñ€Ñдка OpenSCADA;</li> <li> "img" — Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐ»Ñ–Ñ‚Ð¸Ð½ÐºÐ¸, у виглÑді "<b>[{src}:]{name}</b>", деталі вище;</li> <li> "edit" — можливіÑть Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ (0 або 1) клітинки, по замовченню — немає (0);</li> <li> "align" — Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ ÐºÐ»Ñ–Ñ‚Ð¸Ð½ÐºÐ¸ щодо: "left", "right" та "center".</li></ul></dd></dl> </td></tr> <tr> <td> font </td> <td> Шрифт </td> <td> 25 </td> <td> Ім'Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ у виглÑді "<b>{family} {size} {bold} {italic} {underline} {strike}</b>" (деталі вище). </td></tr> <tr> <td colspan="4"> <i>Слайдер та Ñтрічка гортаннÑ:</i> </td></tr> <tr> <td> value </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </td> <td> 21 </td> <td> ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ñлайдеру. </td></tr> <tr> <td> cfg </td> <td> ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ </td> <td> 22 </td> <td> <p>ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ñлайдеру у форматі: "<b>{ВертОрієнт}:{Мінімум}:{МакÑимум}:{ОдинКрок}:{СторКрок}</b>".<br /> Де: </p> <ul><li> "ВертОрієнт" — ознака вертикальної орієнтації (0 або 1), по замовченню Ð¾Ñ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°;</li> <li> "Мінімум" — мінімальне значеннÑ;</li> <li> "МакÑимум" — макÑимальне значеннÑ;</li> <li> "ОдинКрок" — розмір одного кроку;</li> <li> "СторКрок" — розмір Ñторінкового кроку. </li></ul> </td></tr></table> <h4><span class="mw-headline" id=".D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82_.D1.82.D0.B5.D0.BA.D1.81.D1.82.D1.83_.28Text.29"><span class="mw-headline-number">3.9.3</span> <span id="Text" title="#Text">Елемент текÑту (Text)</span></span></h4> <p>Даний примітив призначено Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ проÑтого та HTML текÑту, що викориÑтовуєтьÑÑ Ñƒ ролі міток та різних підпиÑів. З метою ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´ÐµÐºÐ¾Ñ€Ð°Ñ‚Ð¸Ð²Ð½Ð¸Ñ… оформлень, примітив підтримує Ð¾Ð±Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ‚ÐµÐºÑту рамкою. </p><p><b>ТаблицÑ.</b> Ðабір додаткових влаÑтивоÑтей/атрибутів примітиву "Елемент текÑту (Text)" </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Ðомер </th> <th> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td> backColor </td> <td> Фон: колір </td> <td> 20 </td> <td> <p>Фоновий колір. Ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ у виді "<b>{color}[-{alpha}]</b>", де: </p> <ul><li> "color" — Ñтандартне ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ або його чиÑлове предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð· трьох шіÑтнадцÑткових чиÑел окремих кольорів "#RRGGBB";</li> <li> "alpha" — рівень альфа-каналу [0...255], де 0 — повніÑтю прозорий.<br /></li></ul> <p>Приклади: </p> <ul><li> "red" — Ñуцільний червоний колір;</li> <li> "#FF0000" — Ñуцільний червоний колір у цифровому коді;</li> <li> "red-127" — напівпрозорий червоний колір.</li></ul> </td></tr> <tr> <td> backImg </td> <td> Фон: Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ </td> <td> 21 </td> <td> <p>Фонове зображеннÑ. Ім'Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ виді "<b>[{src}:]{name}</b>", де: </p> <ul><li> "src" — джерело зображеннÑ: <ul><li> <i>file</i> — прÑмо з локального файлу за шлÑхом;</li> <li> <i>res</i> — з таблиці реÑурÑів БД.</li></ul></li> <li> "name" — шлÑÑ… файлу або ідентифікатор реÑурÑу.<br /></li></ul> <p>Приклади: </p> <ul><li> "res:backLogo" — з таблиці реÑурÑів БД Ð´Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ñƒ "backLogo";</li> <li> "backLogo" — Ñк Ñ– попередній;</li> <li> "file:/var/tmp/backLogo.png" — з локального файлу за шлÑхом "/var/tmp/backLogo.png".</li></ul> </td></tr> <tr> <td> bordWidth </td> <td> ГраницÑ: ширина </td> <td> 22 </td> <td> Ширина бордюру. </td></tr> <tr> <td> bordColor </td> <td> ГраницÑ: колір </td> <td> 23 </td> <td> Колір бордюру (детальніше у атрибуті 20). </td></tr> <tr> <td> bordStyle </td> <td> ГраницÑ: Ñтиль </td> <td> 24 </td> <td> Стиль бордюру: "Ðемає" (0), "Точковий" (1), "Пунктирний" (2), "Суцільний" (3), "Подвійний" (4), "Канавка" (5), "Кромка" (6), "ВтиÑнутий" (7), "ВиÑтупаючий" (8). </td></tr> <tr> <td> font </td> <td> Шрифт </td> <td> 25 </td> <td> <p>Ім'Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ у виді "<b>{family} {size} {bold} {italic} {underline} {strike}</b>", де: </p> <ul><li> "family" — ÑімейÑтво шрифту, Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð±Ñ–Ð»Ñ–Ð² викориÑтовуйте Ñимвол '_', на кшталт: "Arial", "Courier", "Times_New_Roman";</li> <li> "size" — розмір шрифту у пікÑелÑÑ…;</li> <li> "bold" — підÑÐ¸Ð»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1);</li> <li> "italic" — нахиленіÑть шрифту (0 або 1);</li> <li> "underline" — підкреÑÐ»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1);</li> <li> "strike" — перекреÑÐ»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1).<br /></li></ul> <p>Приклади: </p> <ul><li> "Arial 10 1 0 0 0" — Arial шрифт розміром 10 пікÑелів та підÑилений. </li></ul> </td></tr> <tr> <td> color </td> <td> Колір </td> <td> 26 </td> <td> Колір текÑту (детальніше у атрибуті 20). </td></tr> <tr> <td> orient </td> <td> Кут повороту </td> <td> 27 </td> <td> ÐžÑ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ñ‚ÐµÐºÑту, кут повороту. </td></tr> <tr> <td> wordWrap </td> <td> ПеренеÑÐµÐ½Ð½Ñ Ñлів </td> <td> 28 </td> <td> Ðвтоматичне перенеÑÐµÐ½Ð½Ñ Ñ‚ÐµÐºÑту за Ñловами. </td></tr> <tr> <td> alignment </td> <td> Ð’Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ </td> <td> 29 </td> <td> Ð’Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту: "Зверху ліворуч" (0), "Зверху праворуч" (1), "Зверху у центрі" (2), "Зверху по ширині" (3), "Знизу ліворуч" (4), "Знизу праворуч" (5), "Знизу у центрі" (6), "Знизу по ширині" (7), "У центрі ліворуч" (8), "У центрі праворуч" (9), "У центрі" (10), "У центрі по ширині" (11). </td></tr> <tr> <td> inHtml </td> <td> Ð’ HTML </td> <td> 31 </td> <td> Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð° підтримка вміÑту аргументу <i>text</i> у HTML. </td></tr> <tr> <td> text </td> <td> ТекÑÑ‚ </td> <td> 30 </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚ÐµÐºÑту. ВикориÑтовуйте "<b>%{x}</b>" Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñƒ "x" (від 1). </td></tr> <tr> <td> numbArg </td> <td> КількіÑть аргументів </td> <td> 40 </td> <td> КількіÑть аргументів. </td></tr> <tr> <td colspan="4"> <i>Ðтрибути аргументів</i> </td></tr> <tr> <td> arg{x}val </td> <td> Ðргумент {x}: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </td> <td> 50+10*x </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñƒ <i>x</i>. </td></tr> <tr> <td> arg{x}tp </td> <td> Ðргумент {x}: тип </td> <td> 50+10*x+1 </td> <td> Тип аргументу <i>x</i>: "Цілий" (0), "Реальний" (1), "Ð Ñдок" (2). </td></tr> <tr> <td> arg{x}cfg </td> <td> Ðргумент {x}: ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ </td> <td> 50+10*x+2 </td> <td> <p>ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñƒ <i>x</i>: </p> <ul><li> "Ð Ñдок": <b>{len}</b> — ширина Ñ€Ñдка;</li> <li> "Реальний": <b>{wdth};{form};{prec}</b> — ширина, форма ('g', 'e', 'f') та точніÑть значеннÑ;</li> <li> "Цілий": <b>{len}</b> — ширина значеннÑ. </li></ul> </td></tr></table> <h4><span class="mw-headline" id=".D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82_.D0.B2.D1.96.D0.B4.D0.BE.D0.B1.D1.80.D0.B0.D0.B6.D0.B5.D0.BD.D0.BD.D1.8F_.D0.BC.D0.B5.D0.B4.D1.96.D0.B0-.D0.BC.D0.B0.D1.82.D0.B5.D1.80.D1.96.D0.B0.D0.BB.D1.96.D0.B2_.28Media.29"><span class="mw-headline-number">3.9.4</span> <span id="Media" title="#Media">Елемент Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼ÐµÐ´Ñ–Ð°-матеріалів (Media)</span></span></h4> <p>Даний примітив призначено Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ñ€Ñ–Ð·Ð½Ð¸Ñ… медіа-матеріалів, починаючи від проÑтих зображень та закінчуючи повноцінними аудіо та відео потоками. </p><p><b>ТаблицÑ.</b> Ðабір додаткових влаÑтивоÑтей/атрибутів примітиву "Елемент Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼ÐµÐ´Ñ–Ð°-матеріалів (Media)" </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Ðомер </th> <th> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td> backColor </td> <td> Фон: колір </td> <td> 20 </td> <td> <p>Фоновий колір. Ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ у виді "<b>{color}[-{alpha}]</b>", де: </p> <ul><li> "color" — Ñтандартне ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ або його чиÑлове предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð· трьох шіÑтнадцÑткових чиÑел окремих кольорів "#RRGGBB";</li> <li> "alpha" — рівень альфа-каналу [0...255], де 0 — повніÑтю прозорий.<br /></li></ul> <p>Приклади: </p> <ul><li> "red" — Ñуцільний червоний колір;</li> <li> "#FF0000" — Ñуцільний червоний колір у цифровому коді;</li> <li> "red-127" — напівпрозорий червоний колір.</li></ul> </td></tr> <tr> <td> backImg </td> <td> Фон: Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ </td> <td> 21 </td> <td> <p>Фонове зображеннÑ. Ім'Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ виді "<b>[{src}:]{name}</b>", де: </p> <ul><li> "src" — джерело зображеннÑ: <ul><li> <i>file</i> — прÑмо з локального файлу за шлÑхом;</li> <li> <i>res</i> — з таблиці реÑурÑів БД.</li></ul></li> <li> "name" — шлÑÑ… файлу або ідентифікатор реÑурÑу.<br /></li></ul> <p>Приклади: </p> <ul><li> "res:backLogo" — з таблиці реÑурÑів БД Ð´Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ñƒ "backLogo";</li> <li> "backLogo" — Ñк Ñ– попередній;</li> <li> "file:/var/tmp/backLogo.png" — з локального файлу за шлÑхом "/var/tmp/backLogo.png".</li></ul> </td></tr> <tr> <td> bordWidth </td> <td> ГраницÑ: ширина </td> <td> 22 </td> <td> Ширина бордюру. </td></tr> <tr> <td> bordColor </td> <td> ГраницÑ: колір </td> <td> 23 </td> <td> Колір бордюру (детальніше у атрибуті 20). </td></tr> <tr> <td> bordStyle </td> <td> ГраницÑ: Ñтиль </td> <td> 24 </td> <td> Стиль бордюру: "Ðемає", "Точковий", "Пунктирний", "Суцільний", "Подвійний", "Канавка", "Кромка", "ВтиÑнутий", "ВиÑтупаючий". </td></tr> <tr> <td> src </td> <td> Джерело </td> <td> 25 </td> <td> <p>Ім'Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° медіа у виді "<b>[{src}:]{name}</b>", де: </p> <ul><li> "src" — джерело: <ul><li> <i>file</i> — прÑмо з локального, візуалізатор та рущій, файлу за шлÑхом;</li> <li> <i>res</i> — з таблиці реÑурÑів БД;</li> <li> <i>data</i> — безпоÑередньо дані у формі "data:{mime}\n{base64}";</li> <li> <i>stream</i> — URL потоку Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾ або аудіо.</li></ul></li> <li> "name" — шлÑÑ… файлу або ідентифікатор реÑурÑу.<br /></li></ul> <p>Приклади: </p> <ul><li> "res:workMedia" — з таблиці реÑурÑів БД Ð´Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ñƒ "workMedia";</li> <li> "workMedia" — Ñк Ñ– попередній;</li> <li> "file:/var/tmp/workMedia.mng" — з локального файлу за шлÑхом "/var/tmp/workMedia.mng";</li> <li> "stream:http://localhost.localhost:5050" — Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾ або аудіо з URL.</li></ul> </td></tr> <tr> <td> type </td> <td> Тип </td> <td> 27 </td> <td> <p>Тип медіа: </p> <ul><li> "ЗображеннÑ" — раÑтрове або векторне (може не підтримуватиÑÑ) зображеннÑ, на кшталт: PNG, JPEG, GIF, SVG;</li> <li> "ÐнімаціÑ" — проÑте анімоване зображеннÑ, на кшталт: GIF, MNG;</li> <li> "Відео" — повне відео або потік, на кшталт: OGM, AVI, MKV, MPG, MP4;</li> <li> "Ðудіо" — проÑто аудіо або потік, на кшталт: OGG, MP3, WAV.</li></ul> </td></tr> <tr> <td> areas </td> <td> ОблаÑті карти </td> <td> 28 </td> <td> КількіÑть активних облаÑтей. </td></tr> <tr> <td colspan="4"> <i>Ðтрибути Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (Image)</i> </td></tr> <tr> <td> fit </td> <td> Заповнювати віджет </td> <td> 26 </td> <td> Ознака впиÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¼Ñ–Ñту у розмір віджету. </td></tr> <tr> <td> keepAspect </td> <td> Зберігати ÑÐ¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ð·Ð° впиÑÑƒÐ²Ð°Ð½Ð½Ñ </td> <td> 35 </td> <td> Ознака Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ ÑÐ¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñторін Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ впиÑувані у повні розміри віджету. </td></tr> <tr> <td colspan="4"> <i>Ðтрибути анімації-відеоролику (Animation)</i> </td></tr> <tr> <td> fit </td> <td> Заповнювати віджет </td> <td> 26 </td> <td> Ознака впиÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¼Ñ–Ñту у розмір віджету. </td></tr> <tr> <td> speed </td> <td> ШвидкіÑть Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ </td> <td> 29 </td> <td> ШвидкіÑть програваннÑ, у відÑотках від оригінальної швидкоÑті. Якщо Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼ÐµÐ½ÑˆÐµ або дорівнює 1% то Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ð¿Ð¸Ð½ÑєтьÑÑ. </td></tr> <tr> <td colspan="4"> <i>Ðтрибути повноформатного відео (Full video)</i> </td></tr> <tr> <td> play </td> <td> Грати </td> <td> 29 </td> <td> Відео/аудіо — "Грати". </td></tr> <tr> <td> roll </td> <td> Завертати Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ </td> <td> 30 </td> <td> ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ð¾ завершенню. </td></tr> <tr> <td> pause </td> <td> Пауза </td> <td> 31 </td> <td> ПризупинÑти програваннÑ. </td></tr> <tr> <td> size </td> <td> Розмір </td> <td> 32 </td> <td> Загальний розмір відео, у міліÑекундах. </td></tr> <tr> <td> seek </td> <td> ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ </td> <td> 33 </td> <td> ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾, у міліÑекундах. </td></tr> <tr> <td> volume </td> <td> ГучніÑть </td> <td> 34 </td> <td> ГучніÑть звуку [0...100]. </td></tr> <tr> <td colspan="4"> <i>Ðктивні облаÑті</i> </td></tr> <tr> <td> area{x}shp </td> <td> ОблаÑть {x}: образ </td> <td> 40+3*x </td> <td> Вид облаÑті <i>x</i>: "Квадрат", "ПолілініÑ", "Коло". </td></tr> <tr> <td> area{x}coord </td> <td> ОблаÑть {x}: координати </td> <td> 40+3*x+1 </td> <td> Координати облаÑті <i>x</i>, через кому йдуть координати: "x1,y1,x2,y2,xN,yN". </td></tr> <tr> <td> area{x}title </td> <td> ОблаÑть {x}: заголовок </td> <td> 40+3*x+2 </td> <td> Заголовок облаÑті <i>x</i>. </td></tr></table> <h4><span class="mw-headline" id=".D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82_.D0.BF.D0.BE.D0.B1.D1.83.D0.B4.D0.BE.D0.B2.D0.B8_.D0.B4.D1.96.D0.B0.D0.B3.D1.80.D0.B0.D0.BC_.28Diagram.29"><span class="mw-headline-number">3.9.5</span> <span id="Diagram" title="#Diagram">Елемент побудови діаграм (Diagram)</span></span></h4> <p>Цей примітив призначено Ð´Ð»Ñ Ð¿Ð¾Ð±ÑƒÐ´Ð¾Ð²Ð¸ різних діаграм у чаÑÑ–, включаючи графіки-тренди Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ процеÑу та архівних даних. Реалізовано наÑтупні типи діаграм: </p> <ul><li> "Графік-тренд" — будує графік значень параметру у чаÑÑ–.</li> <li> "Спектр" — будує чаÑтотний Ñпектр із значень параметрів. Вікно даних чаÑтотного Ñпектру формуєтьÑÑ Ð²Ð¸Ñ…Ð¾Ð´Ñчи із розміру віджету по горизонталі, у пікÑелÑÑ…, та доÑтупних даних параметрів, накладених на ґратку горизонтального розміру. У зв'Ñзку з цим, мінімальна виділювана чаÑтота визначаєтьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñм атрибуту "tSize" — "<b>1/tSize</b>", а макÑимальна, половинною шириною графіка у пікÑелÑÑ… помноженою на мінімальну чаÑтоту "<b>width/(2*tSize)</b>".</li> <li> "XY" — будує двомірний графік значень параметрів, парами на графік, де парні по оÑÑ– Y (0,2,4...) та непарні по оÑÑ– X (1,3,5...). Вказаний діапазон чаÑу даних викориÑтовуєтьÑÑ Ñƒ отримані значень параметрів оÑÑ– X та Y, з подальшим зображеннÑм.</li></ul> <p>Ð”Ð»Ñ Ð²ÑÑ–Ñ… типів діаграм можливе визначеннÑ, у ÑкоÑті джерела даних: </p> <ul><li> параметру підÑиÑтеми "Збір Даних";</li> <li> архіву значень;</li> <li> прÑмого блоку даних кориÑтувача.</li></ul> <p>ПідтримуєтьÑÑ Ñ€ÐµÐ¶Ð¸Ð¼ ÑÐ»Ñ–Ð´ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° поточними значеннÑми та значеннÑми з архіву, а також, можлива побудова графіків параметрів, що не мають архіву значень, шлÑхом Ð½Ð°ÐºÐ¾Ð¿Ð¸Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ… значень у буфері діаграми та тільки на момент активного Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— діаграми. </p><p>ÐŸÑ€Ð¾Ñ†ÐµÑ Ð´Ð¾Ñтупу до архівних даних оптимізовано шлÑхом Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð¼Ñ–Ð¶Ð½Ð¾Ð³Ð¾ буферу відображеннÑ, а також, упаковки трафіку даних при запиті, шлÑхом Ð¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… до ÑкоÑті доÑтатньої Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ. </p><p><b>ТаблицÑ.</b> Ðабір додаткових влаÑтивоÑтей/атрибутів примітиву "Елемент побудови діаграм (Diagram)" </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Ðомер </th> <th> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td> backColor </td> <td> Фон: колір </td> <td> 20 </td> <td> <p>Фоновий колір. Ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ у виді "<b>{color}[-{alpha}]</b>", де: </p> <ul><li> "color" — Ñтандартне ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ або його чиÑлове предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð· трьох шіÑтнадцÑткових чиÑел окремих кольорів "#RRGGBB";</li> <li> "alpha" — рівень альфа-каналу [0...255], де 0 — повніÑтю прозорий.<br /></li></ul> <p>Приклади: </p> <ul><li> "red" — Ñуцільний червоний колір;</li> <li> "#FF0000" — Ñуцільний червоний колір у цифровому коді;</li> <li> "red-127" — напівпрозорий червоний колір.</li></ul> </td></tr> <tr> <td> backImg </td> <td> Фон: Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ </td> <td> 21 </td> <td> <p>Фонове зображеннÑ. Ім'Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ виді "<b>[{src}:]{name}</b>", де: </p> <ul><li> "src" — джерело зображеннÑ: <ul><li> <i>file</i> — прÑмо з локального файлу за шлÑхом;</li> <li> <i>res</i> — з таблиці реÑурÑів БД.</li></ul></li> <li> "name" — шлÑÑ… файлу або ідентифікатор реÑурÑу.<br /></li></ul> <p>Приклади: </p> <ul><li> "res:backLogo" — з таблиці реÑурÑів БД Ð´Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ñƒ "backLogo";</li> <li> "backLogo" — Ñк Ñ– попередній;</li> <li> "file:/var/tmp/backLogo.png" — з локального файлу за шлÑхом "/var/tmp/backLogo.png".</li></ul> </td></tr> <tr> <td> bordWidth </td> <td> ГраницÑ: ширина </td> <td> 22 </td> <td> Ширина бордюру. </td></tr> <tr> <td> bordColor </td> <td> ГраницÑ: колір </td> <td> 23 </td> <td> Колір бордюру (детальніше у атрибуті 20). </td></tr> <tr> <td> bordStyle </td> <td> ГраницÑ: Ñтиль </td> <td> 24 </td> <td> Стиль бордюру: "Ðемає", "Точковий", "Пунктирний", "Суцільний", "Подвійний", "Канавка", "Кромка", "ВтиÑнутий", "ВиÑтупаючий". </td></tr> <tr> <td> trcPer </td> <td> Період ÑтеженнÑ, Ñекунд </td> <td> 25 </td> <td> Режим та періодичніÑть ÑтеженнÑ. </td></tr> <tr> <td> type </td> <td> Тип </td> <td> 26 </td> <td> Тип діаграми: "Графік", "Спектр", "XY". </td></tr> <tr> <td colspan="4"> <i>Ðтрибути, загальні Ð´Ð»Ñ Ð²ÑÑ–Ñ… типів</i> </td></tr> <tr> <td> tSek </td> <td> ЧаÑ: Ñекунди </td> <td> 27 </td> <td> Поточний чаÑ, Ñекунд. </td></tr> <tr> <td> tUSek </td> <td> ЧаÑ: мікроÑекунди </td> <td> 28 </td> <td> Поточний чаÑ, мікроÑекунди. </td></tr> <tr> <td> tSize </td> <td> Розмір, Ñекунди </td> <td> 29 </td> <td> Розмір даних, Ñекунди. </td></tr> <tr> <td> curSek </td> <td> КурÑор: Ñекунди </td> <td> 30 </td> <td> ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ ÐºÑƒÑ€Ñору, Ñекунди. </td></tr> <tr> <td> curUSek </td> <td> КурÑор: мікроÑекунди </td> <td> 31 </td> <td> ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ ÐºÑƒÑ€Ñору, мікроÑекунди. </td></tr> <tr> <td> curColor </td> <td> КурÑор: колір </td> <td> 32 </td> <td> Колір курÑору. </td></tr> <tr> <td> sclColor </td> <td> Шкала: колір </td> <td> 33 </td> <td> Колір шкали-решітки (детальніше у атрибуті 20). </td></tr> <tr> <td> sclHor </td> <td> Шкала: горизонтальна </td> <td> 34 </td> <td> Режим горизонтальної шкали-решітки: "Ðе зображувати", "Òратка", "Маркери", "Òратка та маркери", "Òратка (лог)", "Маркери (лог)", "Òратка та маркери (лог)". </td></tr> <tr> <td> sclHorScl </td> <td> Шкала: гориз. маÑштаб (%) </td> <td> 44 </td> <td> Горизонтальний маÑштаб графіку у відÑотках, виключно Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ñƒ "XY". </td></tr> <tr> <td> sclHorSclOff </td> <td> Шкала: зміщ. гориз. маÑштабу (%) </td> <td> 45 </td> <td> Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ маÑштабу у відÑотках, виключно Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ñƒ "XY". </td></tr> <tr> <td> sclVer </td> <td> Шкала: вертикальна </td> <td> 35 </td> <td> Режим вертикальної шкали-решітки: "Ðе зображувати", "Òратка", "Маркери", "Òратка та маркери", "Òратка (лог)", "Маркери (лог)", "Òратка та маркери (лог)". </td></tr> <tr> <td> sclVerScl </td> <td> Шкала: верт. маÑштаб (%) </td> <td> 40 </td> <td> Вертикальний маÑштаб графіку у відÑотках. </td></tr> <tr> <td> sclVerSclOff </td> <td> Шкала: зміщ. верт. маÑштабу (%) </td> <td> 41 </td> <td> Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ маÑштабу у відÑотках. </td></tr> <tr> <td> sclMarkColor </td> <td> Шкала: Маркери: колір </td> <td> 36 </td> <td> Колір маркерів шкали-решітки (детальніше у атрибуті 20). </td></tr> <tr> <td> sclMarkFont </td> <td> Шкала: Маркери: шрифт </td> <td> 37 </td> <td> <p>Шрифт маркерів шкали-решітки. Ім'Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ у виді "<b>{family} {size} {bold} {italic} {underline} {strike}</b>", де: </p> <ul><li> "family" — ÑімейÑтво шрифту, Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð±Ñ–Ð»Ñ–Ð² викориÑтовуйте Ñимвол '_', на кшталт: "Arial", "Courier", "Times_New_Roman";</li> <li> "size" — розмір шрифту у пікÑелÑÑ…;</li> <li> "bold" — підÑÐ¸Ð»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1);</li> <li> "italic" — нахиленіÑть шрифту (0 або 1);</li> <li> "underline" — підкреÑÐ»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1);</li> <li> "strike" — перекреÑÐ»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1).<br /></li></ul> <p>Приклади: </p> <ul><li> "Arial 10 1 0 0 0" — Arial шрифт розміром 10 пікÑелів та підÑилений.</li></ul> </td></tr> <tr> <td> valArch </td> <td> Ðрхіватор значень </td> <td> 38 </td> <td> Ðрхіватор значень у виглÑді "<b>{МодульÐрхівів}.{IdÐрхіватору}</b>". </td></tr> <tr> <td> valsForPix </td> <td> Значень на пікÑель </td> <td> 42 </td> <td> КількіÑть значень на пікÑель. Збільшити Ð´Ð»Ñ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð¾Ñ‡Ð½Ð¾Ñті екÑпорту на великих інтервалах чаÑу. </td></tr> <tr> <td> parNum </td> <td> КількіÑть параметрів </td> <td> 39 </td> <td> КількіÑть параметрів, що відображаютьÑÑ Ð½Ð° одному тренді. </td></tr> <tr> <td colspan="4"> <i>Ðтрибути типу: "Графік"</i> </td></tr> <tr> <td> sclHorPer </td> <td> Шкала: розмір гор. ґратки, Ñекунди </td> <td> 43 </td> <td> ФікÑований період ґратки горизонтальної шкали — вимикає автоматичне обчиÑÐ»ÐµÐ½Ð½Ñ Ð¿ÐµÑ€Ñ–Ð¾Ð´Ñƒ ґратки. ÐктивуєтьÑÑ Ñкщо кількіÑть періодів на загальний розмір більш двох та розмір одного періоду не менше 15 пікÑелів. </td></tr> <tr> <td colspan="4"> <i><u>Індивідуальні атрибути параметрів</u></i> </td></tr> <tr> <td> prm{X}addr </td> <td> Параметр {X}: адреÑа </td> <td> 50+10*{X} </td> <td> <p>Повна адреÑа до атрибуту параметру <i>X</i> DAQ або архіву.<br /> ПідтримуєтьÑÑ Ð¿Ñ€Ñме вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… за префікÑом: </p> <ul><li> "<b>data:{XMLNodeData}</b>" — Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð· прÑмо вÑтановлених даних;</li> <li> "<b>line:{значеннÑ}</b>" — Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð¾Ñ— лінії за значеннÑм, не має ÑенÑу Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ñƒ "XY".<br /></li></ul> <p>Приклад: </p> <ul><li> "/DAQ/System/AutoDA/MemInfo/use" — адреÑа до атрибуту "use" параметру "MemInfo" об'єкту контролера "AutoDA" DAQ Ð¼Ð¾Ð´ÑƒÐ»Ñ "System";</li> <li> "/Archive/va_CPULoad_load" — адреÑа до архіву "CPULoad_load";</li> <li> "data:<d s="1" aprox="1" tm="1369465209" tm_grnd="1369465200" per="1"></li></ul> <dl><dd>0 3.14</dd> <dd>1 3.141</dd> <dd>5 3.1415</d>" — 10 Ñекунд даних з періодом 1 Ñекунда від "25.05.2013 10:00:00"; можна не вказувати "tm" та "tm_grnd", у результаті чого буде підÑтавлено Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ діаграми, також, вÑтановленнÑм атрибуту "s", можна вказати на Ñ‡Ð°Ñ Ñƒ Ñекундах; "aprox" — апрокÑимувати перехід від однієї точки до іншої заміÑть підÑтавки попереднього Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ вÑÑ– точки періодичноÑті від упаковки;</dd></dl> <ul><li> "line:3.14159265" — горизонтальна Ð»Ñ–Ð½Ñ–Ñ Ð·Ð° значеннÑм "3.14159265".</li></ul> </td></tr> <tr> <td> prm{X}bordL </td> <td> Параметр {X}: Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶.: Ð½Ð¸Ð¶Ð½Ñ </td> <td> 50+10*{X}+1 </td> <td> ÐÐ¸Ð¶Ð½Ñ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ параметру <i>X</i>. </td></tr> <tr> <td> prm{X}bordU </td> <td> Параметр {X}: Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶.: Ð²ÐµÑ€Ñ…Ð½Ñ </td> <td> 50+10*{X}+2 </td> <td> Ð’ÐµÑ€Ñ…Ð½Ñ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ параметру <i>X</i>. </td></tr> <tr> <td> prm{X}color </td> <td> Параметр {X}: колір </td> <td> 50+10*{X}+3 </td> <td> Колір Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð³Ñ€Ð°Ñ„Ñ–ÐºÑƒ параметру <i>X</i> (детальніше у атрибуті 20). </td></tr> <tr> <td> prm{X}width </td> <td> Параметр {X}: ширина </td> <td> 50+10*{X}+6 </td> <td> Ширина лінії графіку параметра <i>X</i>, у пікÑелÑÑ…. </td></tr> <tr> <td> prm{X}scl </td> <td> Параметр {X}: шкала </td> <td> 50+10*{X}+5 </td> <td> Режим окремої вертикальної шкали параметру <i>X</i>: "Глобально", "Маркери", "Òратка та маркери", "Маркери (лог)", "Òратка та маркери (лог)". </td></tr> <tr> <td> prm{X}val </td> <td> Параметр {X}: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </td> <td> 50+10*{X}+4 </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñƒ <i>X</i> під курÑором, або на поточний чаÑ, Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° "XY". </td></tr> <tr> <td> prm{X}prop </td> <td> Параметр {X}: влаÑтивоÑті </td> <td> 50+10*{X}+7 </td> <td> ВлаÑтивоÑті реального архіву у виглÑді "<b>{BegArh}:{EndArh}:{DataPeriod}</b>", де "BegArh", "EndArh", "DataPeriod" — початок, кінець та період даних архіву, у Ñекундах, у реальному предÑтавлені, безпоÑередньо до мікроÑекунд (1e-6). </td></tr></table> <h4><span class="mw-headline" id=".D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82_.D0.BF.D0.BE.D0.B1.D1.83.D0.B4.D0.BE.D0.B2.D0.B8_.D0.BF.D1.80.D0.BE.D1.82.D0.BE.D0.BA.D0.BE.D0.BB.D1.96.D0.B2_.D0.BD.D0.B0_.D0.BE.D1.81.D0.BD.D0.BE.D0.B2.D1.96_.D0.B0.D1.80.D1.85.D1.96.D0.B2.D1.96.D0.B2_.D0.BF.D0.BE.D0.B2.D1.96.D0.B4.D0.BE.D0.BC.D0.BB.D0.B5.D0.BD.D1.8C_.28Protocol.29"><span class="mw-headline-number">3.9.6</span> <span id="Protocol" title="#Protocol">Елемент побудови протоколів на оÑнові архівів повідомлень (Protocol)</span></span></h4> <p>Цей примітив призначено Ð´Ð»Ñ Ð²Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— даних архіву повідомлень шлÑхом Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñ–Ð² з різними ÑпоÑобами візуалізації, починаючи від Ñтатичного Ñканувального переглÑду та закінчуючи динамічним ÑтеженнÑм. </p><p><b>ТаблицÑ.</b> Ðабір додаткових влаÑтивоÑтей/атрибутів примітиву "Елемент побудови протоколів на оÑнові архівів повідомлень (Protocol)" </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Ðомер </th> <th> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td> backColor </td> <td> Фон: колір </td> <td> 20 </td> <td> <p>Фоновий колір. Ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ у виді "<b>{color}[-{alpha}]</b>", де: </p> <ul><li> "color" — Ñтандартне ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ або його чиÑлове предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð· трьох шіÑтнадцÑткових чиÑел окремих кольорів "#RRGGBB";</li> <li> "alpha" — рівень альфа-каналу [0...255], де 0 — повніÑтю прозорий.<br /></li></ul> <p>Приклади: </p> <ul><li> "red" — Ñуцільний червоний колір;</li> <li> "#FF0000" — Ñуцільний червоний колір у цифровому коді;</li> <li> "red-127" — напівпрозорий червоний колір.</li></ul> </td></tr> <tr> <td> backImg </td> <td> Фон: Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ </td> <td> 21 </td> <td> <p>Фонове зображеннÑ. Ім'Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ виді "<b>[{src}:]{name}</b>", де: </p> <ul><li> "src" — джерело зображеннÑ: <ul><li> <i>file</i> — прÑмо з локального файлу за шлÑхом;</li> <li> <i>res</i> — з таблиці реÑурÑів БД.</li></ul></li> <li> "name" — шлÑÑ… файлу або ідентифікатор реÑурÑу.<br /></li></ul> <p>Приклади: </p> <ul><li> "res:backLogo" — з таблиці реÑурÑів БД Ð´Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ñƒ "backLogo";</li> <li> "backLogo" — Ñк Ñ– попередній;</li> <li> "file:/var/tmp/backLogo.png" — з локального файлу за шлÑхом "/var/tmp/backLogo.png".</li></ul> </td></tr> <tr> <td> font </td> <td> Шрифт </td> <td> 22 </td> <td> <p>Ім'Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ у виді "<b>{family} {size} {bold} {italic} {underline} {strike}</b>", де: </p> <ul><li> "family" — ÑімейÑтво шрифту, Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð±Ñ–Ð»Ñ–Ð² викориÑтовуйте Ñимвол '_', на кшталт: "Arial", "Courier", "Times_New_Roman";</li> <li> "size" — розмір шрифту у пікÑелÑÑ…;</li> <li> "bold" — підÑÐ¸Ð»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1);</li> <li> "italic" — нахиленіÑть шрифту (0 або 1);</li> <li> "underline" — підкреÑÐ»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1);</li> <li> "strike" — перекреÑÐ»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1).<br /></li></ul> <p>Приклади: </p> <ul><li> "Arial 10 1 0 0 0" — Arial шрифт розміром 10 пікÑелів та підÑилений.</li></ul> </td></tr> <tr> <td> headVis </td> <td> Заголовок видимий </td> <td> 23 </td> <td> ВидиміÑть заголовку таблиці. </td></tr> <tr> <td> time </td> <td> ЧаÑ, Ñекунди </td> <td> 24 </td> <td> Поточний чаÑ, Ñекунди. </td></tr> <tr> <td> tSize </td> <td> Розмір, Ñекунди </td> <td> 25 </td> <td> Розмір запиту даних, Ñекунди. Ð’Ñтановіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ '0' Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð²ÑÑ–Ñ… порушень, Ð´Ð»Ñ "lev" < 0. </td></tr> <tr> <td> trcPer </td> <td> Період ÑтеженнÑ, Ñекунди </td> <td> 26 </td> <td> Режим та періодичніÑть ÑтеженнÑ. </td></tr> <tr> <td> arch </td> <td> Ðрхіватор </td> <td> 27 </td> <td> Ðрхіватор повідомлень у виглÑді "<b>{МодульÐрхівів}.{IdÐрхіватору}</b>". </td></tr> <tr> <td> tmpl </td> <td> Шаблон </td> <td> 28 </td> <td> <p>Шаблон категорії або регулÑрний вираз "<b>/{re}/</b>". Ð”Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° зарезервовано Ñимволи: </p> <ul><li> '*' — множина будь-Ñких, група Ñимволів;</li> <li> '?' — будь-Ñкий, один Ñимвол;</li> <li> '\\' — викориÑтовуйте Ð´Ð»Ñ ÐµÐºÑ€Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñпеціальних Ñимволів.</li></ul> </td></tr> <tr> <td> lev </td> <td> Рівень </td> <td> 29 </td> <td> Рівень повідомлень. Ð’Ñтановіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ < 0 Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¸Ñ… порушень. </td></tr> <tr> <td> viewOrd </td> <td> ПорÑдок Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ </td> <td> 30 </td> <td> ПорÑдок відображеннÑ: "За чаÑом", "За рівнем", "За категорією", "За повідомленнÑм", "За чаÑом (обернений)", "За рівнем (обернений)", "За категорією (обернений)", "За повідомленнÑм (обернений)". </td></tr> <tr> <td> col </td> <td> Показати Ñтовпчики </td> <td> 31 </td> <td> <p>Перелік видимих та порÑдок Ñтовпчиків, поділених Ñимволом ';'. ПередбачаютьÑÑ Ñтовпчики: </p> <ul><li> "pos" — номер Ñ€Ñдку;</li> <li> "tm" — дата та Ñ‡Ð°Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ;</li> <li> "utm" — мікроÑекундна чаÑтина чаÑу повідомленнÑ;</li> <li> "lev" — рівень повідомленнÑ;</li> <li> "cat" — ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ñ–Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ;</li> <li> "mess" — текÑÑ‚ повідомленнÑ.</li></ul> </td></tr> <tr> <td> itProp </td> <td> ВлаÑтивоÑті елементу </td> <td> 32 </td> <td> КількіÑть влаÑтивоÑтей елементу. </td></tr> <tr> <td colspan="4"> <i><u>Індивідуальні атрибути влаÑтивоÑтей елемента</u></i> </td></tr> <tr> <td> it{X}lev </td> <td> Елемент {X}: рівень </td> <td> 40+5*{X} </td> <td> Критерій: рівень елементу <i>X</i> більш або дорівнює вказаному. </td></tr> <tr> <td> it{X}tmpl </td> <td> Елемент {X}: шаблону </td> <td> 40+5*{X}+1 </td> <td> Критерій: шаблон категорії елементу <i>X</i> (детальніше у атрибуті 28). </td></tr> <tr> <td> it{X}fnt </td> <td> Елемент {X}: шрифт </td> <td> 40+5*{X}+2 </td> <td> Шрифт елементу <i>X</i> (детальніше у атрибуті 22). </td></tr> <tr> <td> it{X}Ñolor </td> <td> Елемент {X}: кольору </td> <td> 40+5*{X}+3 </td> <td> Колір елементу <i>X</i> (детальніше у атрибуті 20). </td></tr></table> <h4><span class="mw-headline" id=".D0.95.D0.BB.D0.B5.D0.BC.D0.B5.D0.BD.D1.82_.D1.84.D0.BE.D1.80.D0.BC.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F_.D0.B7.D0.B2.D1.96.D1.82.D0.BD.D0.BE.D1.97_.D0.B4.D0.BE.D0.BA.D1.83.D0.BC.D0.B5.D0.BD.D1.82.D0.B0.D1.86.D1.96.D1.97_.28Document.29"><span class="mw-headline-number">3.9.7</span> <span id="Document" title="#Document">Елемент Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð²Ñ–Ñ‚Ð½Ð¾Ñ— документації (Document)</span></span></h4> <p>Примітив призначено Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð²Ñ–Ñ‚Ð½Ð¾Ñ—, оперативної та іншої документації на оÑнові шаблонів документів. </p><p><b>ТаблицÑ.</b> Ðабір додаткових влаÑтивоÑтей/атрибутів примітиву "Елемент Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð²Ñ–Ñ‚Ð½Ð¾Ñ— документації (Document)" </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Ðомер </th> <th> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td> style </td> <td> CSS </td> <td> 20 </td> <td> Правила CSS в Ñ€Ñдках, виду "<b>body { background-color:#818181; }</b>". </td></tr> <tr> <td> tmpl </td> <td> Шаблон </td> <td> 21 </td> <td> <p>Шаблон документу у XHTML, починаючи з тегу "body" та включаючи процедурні вÑтавки: </p> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nt"><body</span> <span class="na">docProcLang=</span><span class="s">"JavaLikeCalc.JavaScript"</span><span class="nt">></span> <span class="nt"><h1></span>ЗначеннÑ<span class="cp"><?dp return wCod+1.314;?></span><span class="nt"></h1></span> <span class="nt"></body></span> </pre></div> </td></tr> <tr> <td> doc </td> <td> Документ </td> <td> 22 </td> <td> Фінальний документ у XHTML, починаєтьÑÑ Ð· тегу "body". </td></tr> <tr> <td> font </td> <td> Шрифт </td> <td> 26 </td> <td> <p>Базовий шрифт текÑту документа. Ім'Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ у виді "<b>{family} {size} {bold} {italic} {underline} {strike}</b>", де: </p> <ul><li> "family" — ÑімейÑтво шрифту, Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð±Ñ–Ð»Ñ–Ð² викориÑтовуйте Ñимвол '_', на кшталт: "Arial", "Courier", "Times_New_Roman";</li> <li> "size" — розмір шрифту у пікÑелÑÑ…;</li> <li> "bold" — підÑÐ¸Ð»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1);</li> <li> "italic" — нахиленіÑть шрифту (0 або 1);</li> <li> "underline" — підкреÑÐ»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1);</li> <li> "strike" — перекреÑÐ»ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ (0 або 1).<br /></li></ul> <p>Приклади: </p> <ul><li> "Arial 10 1 0 0 0" — Arial шрифт розміром 10 пікÑелів та підÑилений.</li></ul> </td></tr> <tr> <td> bTime </td> <td> ЧаÑ: початок </td> <td> 24 </td> <td> Ð§Ð°Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ документу, Ñекунди. </td></tr> <tr> <td> time </td> <td> ЧаÑ: поточне </td> <td> 23 </td> <td> Ð§Ð°Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— документу, Ñекунди. ЗапиÑати Ñ‡Ð°Ñ Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— документа від цієї точки або нуль Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ—. </td></tr> <tr> <td> process </td> <td> У процеÑÑ– </td> <td> 27 </td> <td> Ознака процеÑу Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ñƒ окремим потоком. </td></tr> <tr> <td> n </td> <td> Розмір архіву </td> <td> 25 </td> <td> КількіÑть документів або глибина архіву. </td></tr> <tr> <td colspan="4"> <i>Ðтрибути увімкненого режиму архівуваннÑ</i> </td></tr> <tr> <td> aCur </td> <td> Ðрхів: курÑор: поточний </td> <td> - </td> <td> ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ документу у архіві. Ð—Ð°Ð¿Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ <i><0</i> здійÑнює архівацію поточного документу. </td></tr> <tr> <td> vCur </td> <td> Ðрхів: курÑор: вид </td> <td> - </td> <td> <p>Поточний візуалізований документ архіву. Ð—Ð°Ð¿Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ: </p> <ul><li> <i>-1</i> — вибір наÑтупного документу;</li> <li> <i>-2</i> — вибір попереднього документу.</li></ul> </td></tr> <tr> <td> aDoc </td> <td> Ðрхів: поточний документ </td> <td> - </td> <td> Поточний документ архіву у XHTML, починаєтьÑÑ Ð· тегу "body". </td></tr> <tr> <td> aSize </td> <td> Ðрхів: розмір </td> <td> - </td> <td> Реальний розмір архіву документу. </td></tr></table> <p>МожливоÑті примітиву "Документ": </p> <ul><li> Гнучке Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñтруктури документу на оÑнові мови гіпертекÑтової розмітки, що надає підтримку широких можливоÑтей Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð².</li> <li> Ð¤Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² за командою або розкладом, що необхідно Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð²Ñ–Ñ‚Ð½Ð¾Ñ— документації до архіву, з подальшим переглÑдом архіву.</li> <li> Ð¤Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² у режимі реального чаÑу, Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ñ—Ñ… повніÑтю динамічно та на оÑнові архівів за вказаний чаÑ.</li> <li> ВикориÑÑ‚Ð°Ð½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² віджету Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ– у документ значень та Ð°Ð´Ñ€ÐµÑ Ð½Ð° архіви, що дозволÑÑ” викориÑтовувати віджет документу Ñк шаблон, при формуванні звітів з іншими вхідними даними.</li></ul> <p>У оÑнові будь-Ñкого документу лежить XHTML-шаблон. XHTML-шаблон це тег "body" WEB-Ñторінки, що міÑтить Ñтатику документу у Ñтандарті XHTML 1.0 та елементи виконувальних інÑтрукцій на мові кориÑтувацького Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ OpenSCADA, у виглÑді <b><?dp {procedure} ?></b>. Результуючий документ формуєтьÑÑ ÑˆÐ»Ñхом Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€ та вÑтавки Ñ—Ñ… результату у документ. </p><p>Джерелом значень виконуваних інÑтрукцій Ñ” атрибути віджету цього примітиву, а також вÑÑ– механізми мови кориÑтувацького Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ OpenSCADA. Ðтрибути можуть додаватиÑÑ ÐºÐ¾Ñ€Ð¸Ñтувачем та лінкуватиÑÑ Ð½Ð° реальні атрибути параметрів або-ж бути автономними, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñких будуть формуватиÑÑ Ñƒ процедурі віджету. У випадку зі злінкованими атрибутами, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ вийматиÑÑ Ð· архіву-Ñ–Ñторії. </p><p>Ðа риÑунку зображено Ñтруктурну Ñхему віджету примітива "Документ". Згідно цієї Ñтруктури, "Документ" міÑтить: XHTML-шаблон, результатні документи та процедуру обробки даних. Джерелом даних процедури та результатних документів Ñ” атрибути віджету. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:556px;"><a class="image" href="http://oscada.org/wiki/File:VCA_document_uk.png"><img class="thumbimage" height="381" src="../files/VCA_document_uk.png" width="554" /></a> <div class="thumbcaption">РиÑунок. Структурна Ñхема примітиву "Документ".</div></div></div></div> <p>Передбачено роботу віджету у двох режимах: "Динамічний" та "Ðрхівний". ВідмінніÑтю архівного режиму Ñ” наÑвніÑть архіву визначеної глибини та атрибутів, що дозволÑють керувати процеÑом Ð°Ñ€Ñ…Ñ–Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° переглÑду вказаного документу у архіві. </p><p>Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ñƒ завжди здійÑнюєтьÑÑ Ñƒ момент вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ чаÑу <i>time</i> відноÑно вÑтановленого раніш початкового чаÑу документу у атрибуті <i>bTime</i>. При вимкненому архіві, результатний документ поміщаєтьÑÑ Ð±ÐµÐ·Ð¿Ð¾Ñередньо у атрибут <i>doc</i>. При увімкненому архіві, результатний документ поміщаєтьÑÑ Ð´Ð¾ клітинки під курÑором, атрибут <i>aCur</i>, а також у <i>doc</i>, Ñкщо Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÑƒÑ€Ñору архіву <i>aCur</i> та курÑору візуалізованого документу <i>vCur</i> збігаютьÑÑ. Ðтрибути архівних курÑорів передбачають декілька командних значень: </p> <ul><li> "aCur < 0" — переміщує курÑор архіватору на наÑтупну позицію, тим Ñамим залишаючи попередній документ у архіві та очищаючи документ під курÑором, Ñкщо кільцевий архів замкнувÑÑ.</li> <li> "vCur == -1" — вибір наÑтупного документу Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ, обраний документ копіюєтьÑÑ Ð´Ð¾ атрибуту <i>doc</i>.</li> <li> "vCur == -2" — вибір попереднього документу Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ, обраний документ копіюєтьÑÑ Ð´Ð¾ атрибуту <i>doc</i>.</li></ul> <p>Як було вказано вище, динаміка шаблону документа визначаєтьÑÑ Ð²Ñтавками виконуваних інÑтрукцій виду "<b><?dp {procedure} ?></b>". У процедурах можуть викориÑтовуватиÑÑ Ð¾Ð´Ð½Ð¾Ð¹Ð¼ÐµÐ½Ð½Ñ– атрибути віджету та функції кориÑтувацького інтерфейÑу Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ OpenSCADA. Крім атрибутів віджету, зарезервовано Ñпеціальні атрибути, дивиÑÑŒ таблицю. </p><p><b>ТаблицÑ.</b> Спеціальні та зарезервовані елементи шаблону. </p> <table class="wikitable"> <tr> <th> Ім'Ñ </th> <th> ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td colspan="2"> <i>Ðтрибути</i> </td></tr> <tr> <td> rez </td> <td> Ðтрибут результату Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸, вміÑÑ‚ Ñкого поміщаєтьÑÑ Ñƒ дерево документа. </td></tr> <tr> <td> lTime </td> <td> Ð§Ð°Ñ Ð¾Ñтаннього формуваннÑ. Якщо документ формуєтьÑÑ Ð²Ð¿ÐµÑ€ÑˆÐµ то <i>lTime</i> дорівнює <i>bTime</i>. </td></tr> <tr> <td> rTime </td> <td> МіÑтить Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ±Ð¸Ñ€ÑƒÐ²Ð°Ð½Ð¸Ñ… значень, Ñекунди, визначаєтьÑÑ Ð²Ñередині тегів з атрибутом "docRept". </td></tr> <tr> <td> rTimeU </td> <td> МіÑтить Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ±Ð¸Ñ€ÑƒÐ²Ð°Ð½Ð¸Ñ… значень, мікроÑекунди, визначаєтьÑÑ Ð²Ñередині тегів з атрибутом "docRept". </td></tr> <tr> <td> rPer </td> <td> МіÑтить період перебору значень, атрибут "docRept". </td></tr> <tr> <td> mTime, mTimeU, mLev, mCat, mVal </td> <td> <p>ВизначаютьÑÑ Ð²Ñередині тегів з атрибутом "docAMess" при розборі повідомлень архіву повідомлень: </p> <dl><dd><i>mTime</i> — Ñ‡Ð°Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ, Ñекунди;</dd> <dd><i>mTimeU</i> — Ñ‡Ð°Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ, мікроÑекунди;</dd> <dd><i>mLev</i> — рівень повідомленнÑ;</dd> <dd><i>mCat</i> — ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ñ–Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ;</dd> <dd><i>mVal</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ.</dd></dl> </td></tr> <tr> <td colspan="2"> <i>Спеціальні теги</i> </td></tr> <tr> <td colspan="2"> <i>Спеціальні атрибути Ñтандартних тегів</i> </td></tr> <tr> <td> body.docProcLang </td> <td> Мова виконуваних процедур документу, по замовченню це "JavaLikeCalc.JavaScript". </td></tr> <tr> <td> *.docRept="1s" </td> <td> Тег з указаним атрибутом розмножуєтьÑÑ, при формуванні, шлÑхом зÑуву чаÑу у атрибуті "rTime" на значеннÑ, вказане у даному атрибуті. </td></tr> <tr> <td> *.docAMess="1:PLC*" </td> <td> Вказує на необхідніÑть Ñ€Ð¾Ð·Ð¼Ð½Ð¾Ð¶ÐµÐ½Ð½Ñ Ñ‚ÐµÐ³Ñƒ з атрибутом, повідомленнÑми з архіву повідомлень за вказаний інтервал чаÑу, згідно Ñ€Ñ–Ð²Ð½Ñ "1" та шаблону запиту "PLC*", за категорією повідомленнÑ. У шаблоні запиту можуть вказуватиÑÑ <a class="extiw" href="https://en.wikipedia.org/wiki/Regular_expression" title="wikipedia:Regular expression">регулÑрні вирази</a> у виглÑді "<b>/{re}/</b>". Ð”Ð»Ñ Ð´Ð°Ð½Ð¾Ð³Ð¾ тегу, у процеÑÑ– розмноженнÑ, визначаютьÑÑ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸: "mTime", "mTimeU", "mLev", "mCat" и "mVal". </td></tr> <tr> <td> *.docAMessArchs="ArchMod0.Archivator0[;ArchModN.ArchivatorN]" </td> <td> Доповнює атрибут "*.docAMess" переліком архіваторів Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½ÑŒ. </td></tr> <tr> <td> *.docRevers="1" </td> <td> Вказує на Ñ–Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ€Ñдку Ñ€Ð¾Ð·Ð¼Ð½Ð¾Ð¶ÐµÐ½Ð½Ñ â€” оÑтанній нагорі. </td></tr> <tr> <td> *.docAppend="1" </td> <td> Ознака необхідноÑті Ð´Ð¾Ð´Ð°Ð½Ð½Ñ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸ до тегу процедури. Інакше результат Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð¼Ñ–Ð½ÑÑ” вміÑÑ‚ тегу. </td></tr> <tr> <td> body.docTime </td> <td> Ð§Ð°Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ñƒ, викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ <i>lTime</i> при наÑтупному формуванні документа. Ðе вÑтановлюєтьÑÑ ÐºÐ¾Ñ€Ð¸Ñтувачем! </td></tr> <tr> <td> table.export="1" </td> <td> Ð’Ð²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñті екÑпорту вміÑту вказаної таблиці у CSV-файл або інші табличні формати. </td></tr></table> <h4><span class="mw-headline" id=".D0.9A.D0.BE.D0.BD.D1.82.D0.B5.D0.B9.D0.BD.D0.B5.D1.80_.28Box.29"><span class="mw-headline-number">3.9.8</span> <span id="Box" title="#Box">Контейнер (Box)</span></span></h4> <p>Примітив контейнеру, викориÑтовуєтьÑÑ Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñкладених віджетів та/або Ñторінок кориÑтувацького інтерфейÑу. </p><p><b>ТаблицÑ.</b> Ðабір додаткових влаÑтивоÑтей/атрибутів примітиву "Контейнер (Box)" </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Ðомер </th> <th> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td> pgOpenSrc </td> <td> Сторінка: джерело Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ </td> <td> 3 </td> <td> Повна адреÑа Ñторінки, Ñка включена уÑередину даного контейнеру. </td></tr> <tr> <td> pgGrp </td> <td> Сторінка: група </td> <td> 4 </td> <td> Група контейнеру включених Ñторінок. Лише Ñторінки у такій групі включатимутьÑÑ Ð´Ð¾ цього бокÑу Ñк контейнеру. </td></tr> <tr> <td> backColor </td> <td> Фон: колір </td> <td> 20 </td> <td> <p>Фоновий колір. Ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ у виді "<b>{color}[-{alpha}]</b>", де: </p> <ul><li> "color" — Ñтандартне ім'Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ або його чиÑлове предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð· трьох шіÑтнадцÑткових чиÑел окремих кольорів "#RRGGBB";</li> <li> "alpha" — рівень альфа-каналу [0...255], де 0 — повніÑтю прозорий.<br /></li></ul> <p>Приклади: </p> <ul><li> "red" — Ñуцільний червоний колір;</li> <li> "#FF0000" — Ñуцільний червоний колір у цифровому коді;</li> <li> "red-127" — напівпрозорий червоний колір.</li></ul> </td></tr> <tr> <td> backImg </td> <td> Фон: Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ </td> <td> 21 </td> <td> <p>Фонове зображеннÑ. Ім'Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ виді "<b>[{src}:]{name}</b>", де: </p> <ul><li> "src" — джерело зображеннÑ: <ul><li> <i>file</i> — прÑмо з локального файлу за шлÑхом;</li> <li> <i>res</i> — з таблиці реÑурÑів БД.</li></ul></li> <li> "name" — шлÑÑ… файлу або ідентифікатор реÑурÑу.<br /></li></ul> <p>Приклади: </p> <ul><li> "res:backLogo" — з таблиці реÑурÑів БД Ð´Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ñƒ "backLogo";</li> <li> "backLogo" — Ñк Ñ– попередній;</li> <li> "file:/var/tmp/backLogo.png" — з локального файлу за шлÑхом "/var/tmp/backLogo.png".</li></ul> </td></tr> <tr> <td> bordWidth </td> <td> ГраницÑ: ширина </td> <td> 22 </td> <td> Ширина бордюру. </td></tr> <tr> <td> bordColor </td> <td> ГраницÑ: колір </td> <td> 23 </td> <td> Колір бордюру (детальніше у атрибуті 20). </td></tr> <tr> <td> bordStyle </td> <td> ГраницÑ: Ñтиль </td> <td> 24 </td> <td> Стиль бордюру: "Ðемає", "Точковий", "Пунктирний", "Суцільний", "Подвійний", "Канавка", "Кромка", "ВтиÑнутий", "ВиÑтупаючий". </td></tr></table> <p><br /> </p> <h3><span class="mw-headline" id=".D0.92.D0.B8.D0.BA.D0.BE.D1.80.D0.B8.D1.81.D1.82.D0.B0.D0.BD.D0.BD.D1.8F_.D0.91.D0.94_.D0.B4.D0.BB.D1.8F_.D0.B7.D0.B1.D0.B5.D1.80.D1.96.D0.B3.D0.B0.D0.BD.D0.BD.D1.8F_.D0.B1.D1.96.D0.B1.D0.BB.D1.96.D0.BE.D1.82.D0.B5.D0.BA_.D0.B2.D1.96.D0.B4.D0.B6.D0.B5.D1.82.D1.96.D0.B2_.D1.82.D0.B0_.D0.BF.D1.80.D0.BE.D1.94.D0.BA.D1.82.D1.96.D0.B2"><span class="mw-headline-number">3.10</span> ВикориÑÑ‚Ð°Ð½Ð½Ñ Ð‘Ð” Ð´Ð»Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐº віджетів та проєктів</span></h3> <p>Ð—Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… віджетів, бібліотек віджетів та проєктів реалізовано у БД, доÑтупних OpenSCADA. БД організовано за приналежніÑтю даних до бібліотеки-проєкту. Тобто, окрема бібліотека-проєкт зберігаєтьÑÑ Ñƒ окремій групі таблиць БД. Перелік бібліотек віджетів зберігаєтьÑÑ Ñƒ індекÑній таблиці бібліотек з іменем "VCALibs" та Ñтруктурою "Libs", а перелік проєктів у індекÑній таблиці "VCAPrjs" та Ñтруктурою "Projs". ЕкземплÑÑ€ цих таблиць ÑтворюєтьÑÑ Ñƒ кожній БД, де зберігаютьÑÑ Ð´Ð°Ð½Ñ– цього модулÑ. До Ñкладу таблиць, що належать бібліотеці віджетів та проєкту, входÑть наÑтупні: </p> <ul><li> "<b>{DB_TBL}</b>" — Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ð²Ñ–Ð´Ð¶ÐµÑ‚Ñ–Ð², що належать бібліотеці (Ñтруктура "LibWigets"), або Ñторінок, що належать проєкту (Ñтруктура "ProjPages");</li> <li> "<b>{DB_TBL}_io</b>" — Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ñ€Ð¾Ð±Ð¾Ñ‡Ð¸Ñ… влаÑтивоÑтей віджетів та вкладених віджетів бібліотеки (Ñтруктура "LibWidgetIO") або влаÑтивоÑтей Ñторінок проєкту (Ñтруктура "ProjPageIO");</li> <li> "<b>{DB_TBL}_uio</b>" — Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ ÐºÐ¾Ñ€Ð¸Ñтувацьких влаÑтивоÑтей віджетів та вкладених віджетів бібліотеки (Ñтруктура "LibWidgetUserIO") або кориÑтувацьких влаÑтивоÑтей Ñторінок проєкту (Ñтруктура "ProjPageUserIO");</li> <li> "<b>{DB_TBL}_incl</b>" — Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ð²Ñ–Ð´Ð¶ÐµÑ‚Ñ–Ð², вкладених у віджети-контейнери, бібліотеки (Ñтруктура "LibWidgetIncl") або проєкту (Ñтруктура "ProjPageWIncl");</li> <li> "<b>{DB_TBL}_mime</b>" — Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ñ€ÐµÑурÑів бібліотеки та Ñ—Ñ— віджетів (Ñтруктура "LibWidgetMime"), або проєкту та його Ñторінок (Ñтруктура "ProjMime");</li> <li> "<b>{DB_TBL}_stls</b>" — Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ Ñтильових параметрів проєкту (Ñтруктура "PrjStlsIO");</li> <li> "<b>{DB_TBL}_stl</b>" — заÑтаріла Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ Ñтильових параметрів проєкту (Ñтруктура "PrjStlIO");</li> <li> "<b>{DB_TBL}_ses</b>" — Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ð´Ð°Ð½Ð¸Ñ… режиму Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ, тобто ÑеанÑів (Ñтруктура "PrjSesIO").</li></ul> <p><a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../../en/files/At.png" width="22" /></a> <b>{DB_TBL}</b> наразі формуєтьÑÑ Ñƒ виглÑді "<b>wlb_{ID}</b>" Ð´Ð»Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐº та "<b>prj_{ID}</b>" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñ–Ð², а окреме поле <i>DB_TBL</i> таблиць "Libs", "Projs" заÑтаріле Ñ– буде видалене у випуÑку OpenSCADA 1.0! </p><p>Проекції (Ñтруктури) оÑновних таблиць такі: </p> <ul><li> <b>Libs(<u>ID</u>, NAME, DSCR, DB_TBL, ICO)</b> — бібліотеки віджетів <i>ID</i>.</li></ul> <dl><dd><dl><dd><i>ID</i> — ідентифікатор;</dd> <dd><i>NAME</i> — ім'Ñ;</dd> <dd><i>DSCR</i> — опиÑ;</dd> <dd><i>DB_TBL</i> (ЗÐСТÐРІЛЕ) — корінь таблиць БД з віджетами;</dd> <dd><i>ICO</i> — закодоване (Base64) Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ–ÐºÐ¾Ð½ÐºÐ¸ бібліотеки.</dd></dl></dd></dl> <ul><li> <b>LibWigets(<u>ID</u>, ICO, PARENT, PROC, PROC_PER, ATTRS, TIMESTAMP)</b> — віджети <i>ID</i> бібліотеки.</li></ul> <dl><dd><dl><dd><i>ID</i> — ідентифікатор;</dd> <dd><i>ICO</i> — закодоване (Base64) Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ–ÐºÐ¾Ð½ÐºÐ¸ віджету;</dd> <dd><i>PARENT</i> — адреÑа віджету оÑнови, у виглÑді <i>/wlb_originals/wdg_Box</i>;</dd> <dd><i>PROC</i> — Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° та мова процедури віджету;</dd> <dd><i>PROC_PER</i> — період обчиÑÐ»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸ віджету;</dd> <dd><i>ATTRS</i> — перелік атрибутів віджету, модифікованих кориÑтувачем;</dd> <dd><i>TIMESTAMP</i> — мітка чаÑу оÑтанньої модифікації.</dd></dl></dd></dl> <ul><li> <b>LibWidgetIO(<u>IDW</u>, <u>ID</u>, <u>IDC</u>, IO_VAL, SELF_FLG, CFG_TMPL, CFG_VAL)</b> — робочі атрибути <i>ID</i> віджету <i>IDW</i> дочірнього віджету <i>IDC</i>.</li></ul> <dl><dd><dl><dd><i>IDW</i> — ідентифікатор віджету;</dd> <dd><i>ID</i> — ідентифікатор атрибуту;</dd> <dd><i>IDC</i> — ідентифікатор дочірнього віджету;</dd> <dd><i>IO_VAL</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ;</dd> <dd><i>SELF_FLG</i> — внутрішні прапорці атрибутів;</dd> <dd><i>CFG_TMPL</i> — шаблон елементу конфігурації, заÑнованого на даному атрибуті;</dd> <dd><i>CFG_VAL</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ конфігурації (поÑиланнÑ, конÑтанта ...).</dd></dl></dd></dl> <ul><li> <b>LibWidgetUserIO(<u>IDW</u>, <u>ID</u>, <u>IDC</u>, NAME, IO_TP, IO_VAL, SELF_FLG, CFG_TMPL, CFG_VAL)</b> — кориÑтувацькі атрибути <i>ID</i> віджету <i>IDW</i> дочірнього віджету <i>IDC</i>.</li></ul> <dl><dd><dl><dd><i>IDW</i> — ідентифікатор віджету;</dd> <dd><i>ID</i> — ідентифікатор атрибуту;</dd> <dd><i>IDC</i> — ідентифікатор дочірнього віджету;</dd> <dd><i>NAME</i> — ім'Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ;</dd> <dd><i>IO_TP</i> — тип та головні прапорці атрибуту;</dd> <dd><i>IO_VAL</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ;</dd> <dd><i>SELF_FLG</i> — внутрішні прапорці атрибуту;</dd> <dd><i>CFG_TMPL</i> — шаблон елементу конфігурації, заÑнованого на даному атрибуті;</dd> <dd><i>CFG_VAL</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ конфігурації (поÑиланнÑ, конÑтанта ...).</dd></dl></dd></dl> <ul><li> <b>LibWidgetIncl(<u>IDW</u>, <u>ID</u>, PARENT, ATTRS)</b> — включені у контейнер <i>IDW</i> віджети <i>ID</i>.</li></ul> <dl><dd><dl><dd><i>IDW</i> — ідентифікатор віджету;</dd> <dd><i>ID</i> — ідентифікатор екземплÑру вкладеного віджету;</dd> <dd><i>PARENT</i> — адреÑа віджету оÑнови, у виглÑді <i>/wlb_originals/wdg_Box</i>;</dd> <dd><i>ATTRS</i> — перелік атрибутів віджету, модифікованих кориÑтувачем.</dd></dl></dd></dl> <ul><li> <b>LibWidgetMime(<u>ID</u>, MIME, DATA)</b> — audio, video, media та інші реÑурÑи віджетів <i>ID</i> бібліотеки.</li></ul> <dl><dd><dl><dd><i>ID</i> — ідентифікатор реÑурÑу;</dd> <dd><i>MIME</i> — MIME реÑурÑу, у форматі — "<b>{MIME};{Size}</b>";</dd> <dd><i>DATA</i> — дані реÑурÑу, кодовані Base64.</dd></dl></dd></dl> <ul><li> <b>Projs(<u>ID</u>, NAME, DSCR, DB_TBL, ICO, USER, GRP, PERMIT, PER, FLGS, STYLE)</b> — проєкти <i>ID</i> інтерфейÑу візуалізації.</li></ul> <dl><dd><dl><dd><i>ID</i> — ідентифікатор проєкту;</dd> <dd><i>NAME</i> — ім'Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ;</dd> <dd><i>DSCR</i> — Ð¾Ð¿Ð¸Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ;</dd> <dd><i>DB_TBL</i> (ЗÐСТÐРІЛЕ) — корінь таблиць БД зі Ñторінками;</dd> <dd><i>ICO</i> — закодоване (Base64) Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ–ÐºÐ¾Ð½ÐºÐ¸ проєкту;</dd> <dd><i>USER</i> — ім'Ñ Ð²Ð»Ð°Ñника проєкту;</dd> <dd><i>GRP</i> — ім'Ñ Ð³Ñ€ÑƒÐ¿Ð¸ кориÑтувачів проєкту;</dd> <dd><i>PERMIT</i> — права доÑтупу до проєкту;</dd> <dd><i>PER</i> — період обчиÑÐ»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ, у міліÑекундах;</dd> <dd><i>FLGS</i> — прапорці проєкту;</dd> <dd><i>STYLE</i> — типовий Ñтиль проєкту.</dd></dl></dd></dl> <ul><li> <b>ProjPages(<u>OWNER</u>, <u>ID</u>, ICO, PARENT, PROC, PROC_PER, FLGS, ATTRS, TIMESTAMP)</b> — Ñторінки <i>ID</i>, що міÑÑ‚ÑтьÑÑ Ñƒ проєкті-Ñторінці <i>OWNER</i>.</li></ul> <dl><dd><dl><dd><i>OWNER</i> — проєкт-Ñторінка — влаÑник даної Ñторінки, у виглÑді — "/AGLKS/so/1/gcadr";</dd> <dd><i>ID</i> — ідентифікатор Ñторінки;</dd> <dd><i>ICO</i> — закодоване (Base64) Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ–ÐºÐ¾Ð½ÐºÐ¸ Ñторінки;</dd> <dd><i>PARENT</i> — адреÑа віджету оÑнови, у виглÑді <i>/wlb_originals/wdg_Box</i>;</dd> <dd><i>PROC</i> — Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° та мова процедури Ñторінки;</dd> <dd><i>PROC_PER</i> — період обчиÑÐ»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸ Ñторінки;</dd> <dd><i>FLGS</i> — прапорці типів Ñторінки;</dd> <dd><i>ATTRS</i> — перелік атрибутів Ñторінки, модифікованих кориÑтувачем;</dd> <dd><i>TIMESTAMP</i> — мітка чаÑу оÑтанньої модифікації.</dd></dl></dd></dl> <ul><li> <b>ProjPageIO(<u>IDW</u>, <u>ID</u>, <u>IDC</u>, IO_VAL, SELF_FLG, CFG_TMPL, CFG_VAL)</b> — робочі атрибути Ñторінок, Ñтруктура фактично збігаєтьÑÑ Ð· таблицею "LibWidgetIO".</li> <li> <b>ProjPageUserIO(<u>IDW</u>, <u>ID</u>, <u>IDC</u>, NAME, IO_TP, IO_VAL, SELF_FLG, CFG_TMPL, CFG_VAL)</b> — кориÑтувацькі атрибути Ñторінок, Ñтруктура фактично збігаєтьÑÑ Ð· таблицею "LibWidgetUserIO".</li> <li> <b>ProjPageWIncl(<u>IDW</u>, <u>ID</u>, PARENT, ATTRS)</b> — віджети, включені на Ñторінки, Ñтруктура фактично збігаєтьÑÑ Ð· таблицею "LibWidgetIncl".</li> <li> <b>ProjMime(<u>ID</u>, MIME, DATA)</b> — audio, video, media та інші реÑурÑи Ñторінок проєктів, Ñтруктура фактично збігаєтьÑÑ Ð· таблицею "LibWidgetMime".</li> <li> <b>PrjStls(<u>SID</u>, <u>ID</u>, VAL)</b> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ <i>VAL</i> Ð¿Ð¾Ð»Ñ <i>ID</i> Ñтилю <i>SID</i> проєкту.</li></ul> <dl><dd><dl><dd><i>IDS</i> — ідентифікатор Ñтилю;</dd> <dd><i>ID</i> — ідентифікатор Ð¿Ð¾Ð»Ñ Ñтилю;</dd> <dd><i>VAL</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð»Ñ Ñтилю.</dd></dl></dd></dl> <ul><li> <b>PrjStl(<u>ID</u>, V_0, V_1, V_2, V_3, V_4, V_5, V_6, V_7, V_8, V_9)</b> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð»Ñ Ñтилю <i>ID</i> проєкту.</li></ul> <dl><dd><dl><dd><i>ID</i> — ідентифікатор Ð¿Ð¾Ð»Ñ Ñтилю;</dd> <dd><i>V_{N}</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð»Ñ Ñтилю Ð´Ð»Ñ Ñтилю <i>N</i>.</dd></dl></dd></dl> <ul><li> <b>ProjSess(<u>IDW</u>, <u>ID</u>, IO_VAL)</b> — Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ <i>IDW</i> Ð´Ð»Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… ÑеанÑів, що виконують проєкт.</li></ul> <dl><dd><dl><dd><i>IDW</i> — повний шлÑÑ… елементу проєкту;</dd> <dd><i>ID</i> — атрибут елементу;</dd> <dd><i>IO_VAL</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ.</dd></dl></dd></dl> <p><br /> </p> <h3><span class="mw-headline" id="API_.D0.BA.D0.BE.D1.80.D0.B8.D1.81.D1.82.D1.83.D0.B2.D0.B0.D1.86.D1.8C.D0.BA.D0.BE.D0.B3.D0.BE_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F"><span class="mw-headline-number">3.11</span> <span id="UserAPI" title="#UserAPI">API кориÑтувацького програмуваннÑ</span></span></h3> <p>API кориÑтувацького Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÑƒÑˆÑ–Ñ Ð²Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— безпоÑередньо предÑтавлено об'єктами OpenSCADA, що формують кориÑтувацький інтерфейÑ, а Ñаме "СеанÑом" та "Віджетами-Ñторінками". Ð”Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача ці об'єкти надають набір функцій управліннÑ: </p> <div class="floatright"><a class="image" href="http://oscada.org/wiki/File:Oscada_UserOM_VCAEngine_uk.png" title="Об'єктна модель кориÑтувача Ð¼Ð¾Ð´ÑƒÐ»Ñ VCAEngine."><img alt="Об'єктна модель кориÑтувача Ð¼Ð¾Ð´ÑƒÐ»Ñ VCAEngine." height="238" src="../files/Oscada_UserOM_VCAEngine_uk.png" width="360" /></a></div> <p><b>Об'єкт "СеанÑ" ( this.ownerSess() )</b> </p> <ul><li> <i>string user( )</i> — поточний кориÑтувач ÑеанÑу.</li> <li> <i>int alrmQuietance( int quit_tmpl, string wpath = "", bool ret = false )</i> — Ñтишує Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ <i>wpath</i> з шаблоном <i>quit_tmpl</i>. Якщо <i>wpath</i> це порожній Ñ€Ñдок то здійÑнюєтьÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ðµ ÑтишеннÑ. У Ñ€Ñдку <i>wpath</i>, через Ñимвол ';', може бути перелічено адреÑи декількох віджетів. При вÑтановлені <i>ret</i> здійÑнюєтьÑÑ Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ ÑтишеннÑ.</li> <li> <i>int reqTm( )</i> — Ñ‡Ð°Ñ Ð¾Ñтаннього запиту у Ñекундах від епохи 1.1.1970.</li> <li> <i>string reqUser( )</i> — кориÑтувач оÑтаннього запиту.</li> <li> <i>string reqLang( )</i> — мова оÑтаннього запиту.</li> <li> <i>int userActTm( )</i> — Ñ‡Ð°Ñ Ð¾Ñтанньої дії кориÑтувача у Ñекундах від епохи 1.1.1970.</li> <li> <i>bool uiCmd( string cmd, string prm, string src )</i> — надÑилає UI команду ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñторінками, Ñк то: "open", "next", "prev"; детальніше дивитьÑÑ Ñƒ <a href="#Events">Ñекції подій</a>. Ð¦Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¼Ð°Ñ” бути пріоритетною Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ñƒ керуванні Ñторінками перед прÑмим запиÑом до атрибутів Ñторінок "pgOpen" та "pgOpenSrc", оÑкільки це єдиний метод коректної Ð¿Ð¾Ð²Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð· <a href="#Project">лінкованими Ñторінками</a>.</li> <li> <i>int period( bool isReal = false )</i> — Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿ÐµÑ€Ñ–Ð¾Ð´Ñƒ Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ ÑеанÑу, <i>isReal</i> Ð´Ð»Ñ Ñ€ÐµÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ періоду.</li></ul> <p><b>Об'єкт "Віджет" (this)</b> </p> <ul><li> <i>TCntrNodeObj ownerSess( )</i> — об'єкт ÑеанÑу даного віджету.</li> <li> <i>TCntrNodeObj ownerPage( )</i> — об'єкт батьківÑької Ñторінки даного віджету.</li> <li> <i>TCntrNodeObj ownerWdg( bool base = false )</i> — об'єкт батьківÑького віджету даного віджету. При указанні <i>base</i> буде повернено й об'єкти Ñторінок.</li> <li> <i>TCntrNodeObj wdgAdd( string wid, string wname, string parent )</i> — додає віджет <i>wid</i> з ім'Ñм <i>wname</i> на оÑнові бібліотечного віджету <i>parent</i>.</li></ul> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 15px"><pre><span class="c1">//Додає новий віджет на оÑнові віджету текÑтового примітиву</span> <span class="nx">nw</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">wdgAdd</span><span class="p">(</span><span class="s2">"nw"</span><span class="p">,</span> <span class="s2">"Ðовий віджет"</span><span class="p">,</span> <span class="s2">"/wlb_originals/wdg_Text"</span><span class="p">);</span> <span class="nx">nw</span><span class="p">.</span><span class="nx">attrSet</span><span class="p">(</span><span class="s2">"geomX"</span><span class="p">,</span> <span class="mi">50</span><span class="p">).</span><span class="nx">attrSet</span><span class="p">(</span><span class="s2">"geomY"</span><span class="p">,</span> <span class="mi">50</span><span class="p">);</span> </pre></div> <ul><li> <i>bool wdgDel( string wid )</i> — видалÑÑ” віджет <i>wid</i>.</li> <li> <i>TCntrNodeObj wdgAt( string wid, bool byPath = false )</i> — підключаєтьÑÑ Ð´Ð¾ дочірнього або глобального віджету, за поÑередництвом шлÑху <i>byPath</i>. Ð”Ð»Ñ Ð²Ñ–Ð´Ñутніх Ñ– некоректних віджетів Ñ†Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ‚Ð°Ñ‚Ð¸Ð¼Ðµ "false", тоді Ñк коректний віджет при перетворені у BOOLEAN повертатиме "true". У випадку глобального Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° викориÑтати абÑолютний або відноÑний шлÑÑ… до віджету. Точкою відліку абÑолютної адреÑи виÑтупає об'єкт ÐºÐ¾Ñ€ÐµÐ½Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ "VCAEngine", а значить, першим елементом абÑолютної адреÑи Ñ” ідентифікатор ÑеанÑу, Ñкий опуÑкаєтьÑÑ. ВідноÑна адреÑа бере відлік від поточного віджету. Спеціальним елементом відноÑної адреÑи Ñ” елемент вищеÑтоÑщого вузла "..".</li> <li> <i>Array attrList()</i> — перелік атрибутів віджету.</li> <li> <i>bool attrPresent( string attr )</i> — перевірÑÑ” атрибут віджета <i>attr</i> на факт приÑутноÑті.</li> <li> <i>ElTp attr( string attr, bool fromSess = false )</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ віджету <i>attr</i> або з ÑеанÑу <i>fromSess</i>. Ð”Ð»Ñ Ð²Ñ–Ð´Ñутніх атрибутів повертає порожній Ñ€Ñдок.</li> <li> <i>TCntrNodeObj attrSet( string attr, ElTp vl, bool toSess = false )</i> — вÑтановлює Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ <i>vl</i> у атрибут віджету <i>attr</i> або ÑеанÑ, Ð´Ð»Ñ <i>toSess</i>. Повертає поточний об'єкт, Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÐ°Ñ‚ÐµÐ½Ð°Ñ†Ñ–Ñ— функцій вÑтановленнÑ.</li> <li> <i>string link( string attr, bool prm = false )</i> — поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ віджету <i>attr</i>. При вÑтановленні <i>prm</i> запитує поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸ атрибутів (параметр), предÑтавлене вказаним атрибутом.</li> <li> <i>string linkSet( string attr, string vl, bool prm = false )</i> — вÑтановлює поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ віджету <i>attr</i>. При вÑтановленні <i>prm</i> здійÑнює вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸ атрибутів (параметр), предÑтавленого вказаним атрибутом.</li></ul> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 15px"><pre><span class="c1">//Ð’Ñтановлює поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð²Ð¾Ñьмого тренду параметром</span> <span class="k">this</span><span class="p">.</span><span class="nx">linkSet</span><span class="p">(</span><span class="s2">"el8.name"</span><span class="p">,</span> <span class="s2">"prm:/LogicLev/experiment/Pi"</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span> </pre></div> <ul><li> <i>string {resource,mime}( string addr, string MIME = "" )</i> — реÑÑƒÑ€Ñ Ð¾Ð±'єкту за адреÑою <i>addr</i> (прÑме поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° реÑÑƒÑ€Ñ Ð°Ð±Ð¾ атрибут віджету з цим поÑиланнÑм) з типом <i>MIME</i>, з таблиці ÑеанÑу або джерела. Призначено Ð´Ð»Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу об'єкта та підÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð¹Ð¾Ð³Ð¾ у контекÑті ÑеанÑу, наприклад, зображень SVG.</li> <li> <i>int {resourceSet,mimeSet}( string addr, string data, string MIME = "" )</i> — вÑтановлює реÑÑƒÑ€Ñ Ð¾Ð±'єкту у <i>data</i> з типом <i>MIME</i> за адреÑою <i>addr</i>.</li> <li> <i>int messDebug( string mess ); int messInfo( string mess ); int messNote( string mess ); int messWarning( string mess ); int messErr( string mess ); int messCrit( string mess ); int messAlert( string mess ); int messEmerg( string mess );</i> — формує Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ <i>mess</i> з категорією — шлÑÑ… до даного віджету.</li> <li> <i>int calcPer( int set = EVAL )</i> — отриманнÑ, та вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð° <i>set</i> не EVAL, щодо актуального періоду обчиÑленнÑ-опрацюваннÑ. Зарезервовано наÑтупні Ñпеціальні значеннÑ: <ul><li> <b>0</b> — Ñкщо бажаєте періодичного Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ ÑеанÑу;</li> <li> <b>-1</b> — Ñкщо бажаєте викориÑтати період Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ñ‚ÑŒÐºÑ–Ð²Ñького віджету/Ñторінки/проєкту каÑкадно;</li> <li> <b>-2</b> — Ð´Ð»Ñ Ñ†Ñ–Ð»ÐºÐ¾Ð²Ð¸Ñ‚Ð¾Ð³Ð¾ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð¿ÐµÑ€Ñ–Ð¾Ð´Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ опрацюваннÑ.</li> <li> <b>-3</b> — відÑутній період чаÑу ÑеанÑу, Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ð½Ð¾Ð³Ð¾.</li></ul></li></ul> <p><b>Об'єкт "Віджет", примітиву "Документ" (this)</b> </p> <ul><li> <i>string getArhDoc( int nDoc)</i> — текÑÑ‚ документу архіву на глибині <i>nDoc</i> (0-{aSize-1}).</li></ul> <p><br /> ЗаÑтаріле але підтримуване API предÑтавлÑєтьÑÑ Ð³Ñ€ÑƒÐ¿Ð¾ÑŽ функцій безпоÑередньо у модулі Ñ€ÑƒÑˆÑ–Ñ Ð¡Ð’Ð£. Виклик цих функцій з процедури віджету може здійÑнюватиÑÑ Ð¿Ñ€Ñмо за ідентифікатором із префікÑом "<b>vca</b>" оÑкільки Ñ—Ñ… облаÑть імен визначаєтьÑÑ Ñƒ контекÑті Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€ віджетів. </p><p>ÐдреÑа у цих функціÑÑ… абÑолютна Ñ– рахуєтьÑÑ Ð²Ñ–Ð´ кореневого об'єкту Ð¼Ð¾Ð´ÑƒÐ»Ñ "VCAEngine", тобто перший елемент Ñ” ідентифікатором актуального ÑеанÑу. До прикладу: </p> <ul><li> <b>/ses_AGLKS/pg_so/pg_1/pg_mn/pg_1</b> — Ð´Ð»Ñ Ñторінки;</li> <li> <b>/ses_AGLKS/pg_so/pg_1/pg_mn/pg_1/wdg_test</b> — Ð´Ð»Ñ Ð²Ñ–Ð´Ð¶ÐµÑ‚Ñƒ;</li> <li> <b>/ses_AGLKS/pg_so/pg_1/pg_mn/pg_1/a_pgOpen</b> — Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ "pgOpen".</li></ul> <p><b>Перелік віджетів (WdgList)</b><br /> <i>ОпиÑ:</i> Повертає перелік віджетів, у контейнері віджетів, або дочірніх віджетів. Якщо вÑтановлено <i>pg</i>, то повертаєтьÑÑ Ð¿ÐµÑ€ÐµÐ»Ñ–Ðº Ñторінок проєктів та ÑеанÑу.<br /> <i>Параметри:</i> </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Тип </th> <th> Режим </th> <th> По замовчанню </th></tr> <tr> <td> list </td> <td> Перелік </td> <td> Ð Ñдок </td> <td> ÐŸÐ¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ </td> <td> </td></tr> <tr> <td> addr </td> <td> ÐдреÑа </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> </td></tr> <tr> <td> pg </td> <td> Сторінки </td> <td> Логічний </td> <td> Вхід </td> <td> 0 </td></tr></table> <p><b>ПриÑутніÑть вузла (NodePresent)</b><br /> <i>ОпиÑ:</i> Перевірка вузла на приÑутніÑть, включаючи віджети, атрибути та інше.<br /> <i>Параметри:</i> </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Тип </th> <th> Режим </th> <th> По замовченню </th></tr> <tr> <td> rez </td> <td> Результат </td> <td> Логічний </td> <td> ÐŸÐ¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ </td> <td> </td></tr> <tr> <td> addr </td> <td> ÐдреÑа </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> </td></tr></table> <p><b>Перелік атрибутів (AttrList)</b><br /> <i>ОпиÑ:</i> Повертає перелік атрибутів віджету. Якщо вÑтановлено <i>noUser</i> тоді повертаютьÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ атрибути не кориÑтувача.<br /> <i>Параметри:</i> </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Тип </th> <th> Режим </th> <th> По замовченню </th></tr> <tr> <td> list </td> <td> Перелік </td> <td> Ð Ñдок </td> <td> ÐŸÐ¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ </td> <td> </td></tr> <tr> <td> addr </td> <td> ÐдреÑа </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> </td></tr> <tr> <td> noUser </td> <td> Без кориÑтувацьких </td> <td> Логічний </td> <td> Вхід </td> <td> 1 </td></tr></table> <p><b>Отримати атрибут (AttrGet)</b><br /> <i>ОпиÑ:</i> ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ віджета. Запит може здійÑнюватиÑÑ Ñк указаннÑм повної адреÑи атрибуту у <i>addr</i>, так Ñ– окремо: адреÑу віджету у <i>addr</i> та ідентифікатор атрибута у <i>attr</i>.<br /> <i>Параметри:</i> </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Тип </th> <th> Режим </th> <th> По замовченню </th></tr> <tr> <td> val </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </td> <td> Ð Ñдок </td> <td> ÐŸÐ¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ </td> <td> </td></tr> <tr> <td> addr </td> <td> ÐдреÑа </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> </td></tr> <tr> <td> attr </td> <td> Ðтрибут </td> <td> Логічний </td> <td> Вхід </td> <td> </td></tr></table> <p><b>Ð’Ñтановити атрибут (AttrSet)</b><br /> <i>ОпиÑ:</i> Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ віджета. Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ðµ здійÑнюватиÑÑ Ñк указаннÑм повної адреÑи атрибуту у <i>addr</i>, так Ñ– окремо: адреÑу віджету у <i>addr</i> та ідентифікатор атрибута у <i>attr</i>.<br /> <i>Параметри:</i> </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Тип </th> <th> Режим </th> <th> По замовченню </th></tr> <tr> <td> addr </td> <td> ÐдреÑа </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> </td></tr> <tr> <td> val </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> </td></tr> <tr> <td> attr </td> <td> Ðтрибут </td> <td> Логічний </td> <td> Вхід </td> <td> </td></tr></table> <p><b>КориÑтувач ÑеанÑу (SesUser)</b><br /> <i>ОпиÑ:</i> Повертає кориÑтувача ÑеанÑу за шлÑхом віджета ÑеанÑу.<br /> <i>Параметри:</i> </p> <table class="wikitable"> <tr> <th> Ідентифікатор </th> <th> Ім'Ñ </th> <th> Тип </th> <th> Режим </th> <th> По замовченню </th></tr> <tr> <td> user </td> <td> КориÑтувач </td> <td> Ð Ñдок </td> <td> ÐŸÐ¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ </td> <td> </td></tr> <tr> <td> addr </td> <td> ÐдреÑа </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> </td></tr></table> <p><br /> </p> <h3><span class="mw-headline" id=".D0.A1.D0.B5.D1.80.D0.B2.D1.96.D1.81.D0.BD.D1.96_.D0.BA.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D0.B8-.D1.84.D1.83.D0.BD.D0.BA.D1.86.D1.96.D1.97_.D0.86.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.83_.D0.A3.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D1.96.D0.BD.D0.BD.D1.8F"><span class="mw-headline-number">3.12</span> СервіÑні команди-функції ІнтерфейÑу УправліннÑ</span></h3> <p>СервіÑні функції — це Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð¾Ñтупу до OpenSCADA із зовнішніх ÑиÑтем поÑередництвом <a href="../API.html#CntrNode" title="Special:MyLanguage/Documents/API">ІнтерфейÑу УправліннÑ</a>. Цей механізм покладено в оÑнову уÑього обміну вÑередині OpenSCADA, реалізованого шлÑхом Ñлабких зв'Ñзків та <a href="../Modules/SelfSystem.html" title="Special:MyLanguage/Modules/SelfSystem">влаÑного протоколу обміну OpenSCADA</a>. </p><p><b><u>Загальні віджети</u></b><br /> </p> <dl><dd><b><u>ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ визначених або вÑÑ–Ñ… візуальних атрибутів віджету</u></b><br /></dd> <dd>ЗÐП: <i><get path="/UI/VCAEngine/<b>{wAddr}</b>/%2fserv%2fattr"><b>{attributes}</b></get></i> <ul><li> <i>wAddr</i> — локальна адреÑа віджету, на кшталт "/wlb_AGLKS/wdg_CM101/wdg_ElFigure1";</li> <li> <i>attributes</i> — лише запитані атрибути у тегах "el" із тільки одним атрибутом ідентифікатору "id"; можлива цілковита відÑутніÑть тегів атрибутів Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ уÑÑ–Ñ… наÑвних.</li></ul></dd> <dd>ВІДП: <i><get path="/UI/VCAEngine/{wAddr}/%2fserv%2fattr" rez="<b>0</b>"><b>{attributes}</b></get></i> <ul><li> <i>attributes</i> — опрацьовувані атрибути у тегах "el": <i><el id="<b>{ID}</b>" p="<b>{pos}</b>" act="<b>{active}</b>"><b>{value}</b></el></i> <ul><li> <i>ID</i> — ідентифікатор атрибуту;</li> <li> <i>pos</i> — позиціÑ-Ñ–Ð½Ð´ÐµÐºÑ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ Ð´Ð»Ñ Ñтандартних;</li> <li> <i>active</i> — Ñтан активноÑті атрибуту, лише Ð´Ð»Ñ Ð¿Ñ€Ñмого запиту;</li> <li> <i>value</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ.</li></ul></li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><get</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/wlb_AGLKS/wdg_CM101/wdg_ElFigure1/%2fserv%2fattr"</span> <span class="na">rez=</span><span class="s">"0"</span> <span class="na">user=</span><span class="s">"roman"</span><span class="nt">></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"id"</span><span class="nt">></span>ElFigure1<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"path"</span><span class="nt">></span>/wlb_AGLKS/wdg_CM101/wdg_ElFigure1<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"parent"</span><span class="nt">></span>/wlb_originals/wdg_ElFigure<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"owner"</span><span class="nt">></span>root:UI<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"perm"</span><span class="nt">></span>948<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"root"</span> <span class="na">p=</span><span class="s">"1"</span><span class="nt">></span>ElFigure<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"name"</span> <span class="nt">/></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"dscr"</span> <span class="nt">/></span> <span class="nt"></get></span> </pre></div> <dl><dd><b><u>Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸ значень визначених атрибутів віджетів</u></b><br /></dd> <dd>ЗÐП[<b>root-UI</b>]: <i><set path="/UI/VCAEngine/<b>{wAddr}</b>/%2fserv%2fattr"><b>{attributes}</b></set></i> <ul><li> <i>wAddr</i> — локальна адреÑа віджету у модулі, на кшталт "/wlb_AGLKS/wdg_CM101/wdg_ElFigure1";</li> <li> <i>attributes</i> — атрибути зі значеннÑми у тегах "el": <i><el id="<b>{ID}</b>"><b>{value}</b></el></i> <ul><li> <i>ID</i> — ідентифікатор атрибуту;</li> <li> <i>value</i> — вÑтановлюване Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ.</li></ul></li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><set</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/wlb_AGLKS/wdg_CM101/wdg_ElFigure1/%2fserv%2fattr"</span><span class="nt">></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"name"</span><span class="nt">></span>Ðова назва<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"dscr"</span><span class="nt">></span>Ðовий опиÑ<span class="nt"></el></span> <span class="nt"></set></span> </pre></div> <dl><dd><b><u>ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ візуальних атрибутів гілки віджетів, оптимізовано Ð´Ð»Ñ Ð¼ÐµÑ€ÐµÐ¶</u></b><br /></dd> <dd>ЗÐП: <i><get path="/UI/VCAEngine/<b>{wAddr}</b>/%2fserv%2fattrBr" /></i> <ul><li> <i>wAddr</i> — локальна адреÑа віджету у модулі, на кшталт "/wlb_AGLKS/wdg_CM101/wdg_ElFigure1".</li></ul></dd> <dd>ВІДП: <i><get path="/UI/VCAEngine/{wAddr}/%2fserv%2fattrBr" rez="<b>0</b>"><b>{attributes}</b> <b>{widgets}</b></get></i> <ul><li> <i>attributes</i> — опрацьовані атрибути у тегах "el": <i><el id="<b>{ID}</b>" p="<b>{pos}</b>"><b>{value}</b></el></i> <ul><li> <i>ID</i> — ідентифікатор атрибуту;</li> <li> <i>pos</i> — позиціÑ-Ñ–Ð½Ð´ÐµÐºÑ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ Ð´Ð»Ñ Ñтандартних;</li> <li> <i>value</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ.</li></ul></li> <li> <i>widgets</i> — дочірні віджети у тегах "w": <i><w id="<b>{ID}</b>" lnkPath="<b>{lnkPath}</b>"><b>{attributes}</b> <b>{widgets}</b></w></i> <ul><li> <i>ID</i> — ідентифікатор віджету;</li> <li> <i>lnkPath</i> — шлÑÑ… до пов'Ñзаного віджету Ð´Ð»Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½Ñ–Ñ… віджетів бібліотек віджетів.</li></ul></li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><get</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/wlb_AGLKS/wdg_CM101/%2fserv%2fattrBr"</span> <span class="na">rez=</span><span class="s">"0"</span> <span class="na">user=</span><span class="s">"roman"</span><span class="nt">></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"id"</span><span class="nt">></span>CM101<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"path"</span><span class="nt">></span>/wlb_AGLKS/wdg_CM101<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"parent"</span><span class="nt">></span>/wlb_originals/wdg_Box<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"owner"</span><span class="nt">></span>root:UI<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"perm"</span><span class="nt">></span>948<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"root"</span> <span class="na">p=</span><span class="s">"1"</span><span class="nt">></span>Box<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"name"</span><span class="nt">></span>КМ101<span class="nt"></el></span> <span class="nt"><w</span> <span class="na">id=</span><span class="s">"AT101_1"</span> <span class="na">lnkPath=</span><span class="s">"/wlb_mnEls/wdg_cooler"</span><span class="nt">></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"id"</span><span class="nt">></span>AT101_1<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"path"</span><span class="nt">></span>/wlb_AGLKS/wdg_CM101/wdg_AT101_1<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"parent"</span><span class="nt">></span>/wlb_mnEls/wdg_cooler<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"owner"</span><span class="nt">></span>root:UI<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"perm"</span><span class="nt">></span>948<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"root"</span> <span class="na">p=</span><span class="s">"1"</span><span class="nt">></span>ElFigure<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"name"</span><span class="nt">></span>ÐТ101 1<span class="nt"></el></span> <span class="nt"></w></span> <span class="nt"></get></span> </pre></div> <p><b><u>Бібліотеки віджетів</u></b><br /> </p> <dl><dd><b><u>ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´ÐµÑ€ÐµÐ²Ð° віджетів бібліотек, оптимізовано Ð´Ð»Ñ Ð¼ÐµÑ€ÐµÐ¶</u></b><br /></dd> <dd>ЗÐП: <i><get path="/UI/VCAEngine/%2fserv%2fwlbBr" item="<b>{item}</b>" disIconsW="<b>{disIconsW}</b>" disIconsCW="<b>{disIconsCW}</b>" /></i> <ul><li> <i>item</i> — елемент бібліотеки отриманнÑ, Ñк шлÑÑ… "wlb_<b>{WLib}</b>[/wdg_<b>{Wdg}</b>[/wdg_<b>{ChildWdg}</b>]]", Ð´Ð»Ñ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ отримуватиметьÑÑ Ð²Ñе дерево;</li> <li> <i>disIconsW</i> — вимкнути Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… іконки Ð´Ð»Ñ Ð²Ñ–Ð´Ð¶ÐµÑ‚Ñ–Ð² [0|1];</li> <li> <i>disIconsCW</i> — вимкнути Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… іконки Ð´Ð»Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½Ñ–Ñ… віджетів [0|1].</li></ul></dd> <dd>ВІДП: <i><get path="/UI/VCAEngine/%2fserv%2fwlbBr" item="{item}" disIconsW="{disIconsW}" disIconsCW="{disIconsCW}" rez="<b>0</b>"><b>{wlibs}</b></get></i> <ul><li> <i>wlibs</i> — бібліотеки віджетів у тегах "wlb": <i><wlb id="{ID}" doc="{doc}">{name} <b>{icon}</b> <b>{widgets}</b></wlb></i> <ul><li> <i>icon</i> — тег "icon" із даними цієї іконки кодоване Base64;</li> <li> <i>widgets</i> — теги "w" із опиÑом бібліотек віджетів: <i><w id="{ID}" doc="{doc}" parent="<b>{parent}</b>">{name} {icon} <b>{widgets}</b></w></i> <ul><li> <i>parent</i> — адреÑа батька віджету;</li> <li> <i>widgets</i> — теги "Ñw" із опиÑом дочірніх віджетів: <i><cw id="{ID}" doc="{doc}">{name} {icon}</cw></i></li></ul></li></ul></li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><get</span> <span class="na">disIconsCW=</span><span class="s">"1"</span> <span class="na">disIconsW=</span><span class="s">"1"</span> <span class="na">item=</span><span class="s">"/wlb_AGLKS"</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/%2fserv%2fwlbBr"</span> <span class="na">rez=</span><span class="s">"0"</span> <span class="na">user=</span><span class="s">"roman"</span><span class="nt">></span> <span class="nt"><wlb</span> <span class="na">id=</span><span class="s">"AGLKS"</span><span class="nt">></span>ÐГЛКС <span class="nt"><ico></span>iVBORw0KGgoAA...AAAElFTkSuQmCC<span class="nt"></ico></span> <span class="nt"><w</span> <span class="na">id=</span><span class="s">"CM101"</span> <span class="na">parent=</span><span class="s">"/wlb_originals/wdg_Box"</span><span class="nt">></span>КМ101 <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"AT101_1"</span><span class="nt">></span>ÐТ101 1<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"AT101_2"</span><span class="nt">></span>ÐТ101 1<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"C101_1"</span><span class="nt">></span>C101/1<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"C101_2"</span><span class="nt">></span>C101/1<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"C101_3"</span><span class="nt">></span>C101/1<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"CM101"</span><span class="nt">></span>CM101<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"CM101_1"</span><span class="nt">></span>CM101_1<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"CM101_2"</span><span class="nt">></span>CM101_2<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"ElFigure1"</span><span class="nt">></span>ElFigure1<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"ElFigure2"</span><span class="nt">></span>ElFigure2<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"ElFigure3"</span><span class="nt">></span>ElFigure3<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"ElFigure4"</span><span class="nt">></span>ElFigure4<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"ElFigure5"</span><span class="nt">></span>ElFigure5<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"ElFigure6"</span><span class="nt">></span>ElFigure6<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"ElFigure7"</span><span class="nt">></span>ElFigure7<span class="nt"></cw></span> <span class="nt"></w></span> <span class="nt"><w</span> <span class="na">id=</span><span class="s">"KCH_MN1"</span> <span class="na">parent=</span><span class="s">"/wlb_originals/wdg_Box"</span><span class="nt">></span>KCH_MN1 <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"BC1"</span><span class="nt">></span>Кульовий кран<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"BC2"</span><span class="nt">></span>Кульовий кран<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"BC21"</span><span class="nt">></span>Кульовий кран<span class="nt"></cw></span> <span class="nt"><cw</span> <span class="na">id=</span><span class="s">"BC22"</span><span class="nt">></span>Кульовий кран<span class="nt"></cw></span> <span class="nt"></w></span> <span class="nt"><w</span> <span class="na">id=</span><span class="s">"comprEn"</span> <span class="na">parent=</span><span class="s">"/wlb_originals/wdg_ElFigure"</span><span class="nt">></span>Робота компреÑора<span class="nt"></w></span> <span class="nt"></wlb></span> <span class="nt"></get></span> </pre></div> <p><b><u>Проєкти СВУ</u></b><br /> </p> <dl><dd><b><u>ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑƒ проєктів розширене деÑкими опціÑми</u></b><br /></dd> <dd>ЗÐП: <i><get path="/UI/VCAEngine/[%2fbr%2fprj_|%2fprm%2fcfg%2fprj]" chkUserPerm="<b>{chkUserPerm}</b>" getChPgN="<b>{getChPgN}</b>" noName="<b>{noName}</b>" /></i> <ul><li> <i>chkUserPerm</i> — перевірка прав кориÑтувача перед включеннÑм до переліку [0|1];</li> <li> <i>getChPgN</i> — запит кількоÑті дочірніх Ñторінок у проєктах [0|1];</li> <li> <i>noName</i> — не повертати назви Ñторінок [0|1].</li></ul></dd> <dd>ВІДП: <i><get path="/UI/VCAEngine/[%2fbr%2fprj_|%2fprm%2fcfg%2fprj]" chkUserPerm="{chkUserPerm}" getChPgN="{getChPgN}" noName="{noName}" rez="<b>0</b>"><b>{projects}</b></get></i> <ul><li> <i>projects</i> — перелік проєктів у тегах "el", де назва у текÑті тегу та ідентифікатор у атрибуті "id". Розширено додатковими атрибутами: <ul><li> "chPgN" — кількіÑть дочірніх Ñторінок у проєкті за вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ "getChPgN".</li></ul></li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><get</span> <span class="na">getChPgN=</span><span class="s">"1"</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/%2fbr%2fprj_"</span> <span class="na">rez=</span><span class="s">"0"</span> <span class="na">user=</span><span class="s">"roman"</span><span class="nt">></span> <span class="nt"><el</span> <span class="na">chPgN=</span><span class="s">"2"</span> <span class="na">id=</span><span class="s">"AGLKS"</span><span class="nt">></span>ÐГЛКС<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">chPgN=</span><span class="s">"2"</span> <span class="na">id=</span><span class="s">"archBrowser"</span><span class="nt">></span>ОглÑд архівів<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">chPgN=</span><span class="s">"2"</span> <span class="na">id=</span><span class="s">"tmplSO"</span><span class="nt">></span>Групи Ñигналізації (шаблон)<span class="nt"></el></span> <span class="nt"></get></span> </pre></div> <dl><dd><b><u>Перевірка доÑтупу на Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ від кориÑтувача запиту</u></b><br /></dd> <dd>ЗÐП: <i><read path="/UI/VCAEngine/prj_<b>{proj}</b>/%2fserv%2faccess" /></i> <ul><li> <i>proj</i> — ідентифікатор проєкту.</li></ul></dd> <dd>ВІДП: <i><read path="/UI/VCAEngine/prj_{proj}/%2fserv%2faccess" rez="<b>0</b>"><b>{access}</b></get></i> <ul><li> <i>access</i> — ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð°ÑвноÑті доÑтупу [0|1].</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><read</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/prj_AGLKS/%2fserv%2faccess"</span> <span class="na">rez=</span><span class="s">"0"</span> <span class="na">user=</span><span class="s">"roman"</span><span class="nt">></span>1<span class="nt"></read></span> </pre></div> <p><b><u>СеанÑи проєктів</u></b><br /> </p> <dl><dd><b><u>ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑƒ ÑеанÑів розширене деÑкими параметрами</u></b><br /></dd> <dd>REQ: <i><get path="/UI/VCAEngine/[%2fbr%2fses_|%2fses%2fses]" chkUserPerm="<b>{chkUserPerm}</b>" onlyMy="<b>{onlyMy}</b>" /></i> <ul><li> <i>chkUserPerm</i> — перевірка прав кориÑтувача перед доданнÑм до переліку [0|1];</li> <li> <i>onlyMy</i> — додавати до переліку лише мої влаÑні ÑеанÑи [0|1].</li></ul></dd> <dd>RESP: <i><get path="/UI/VCAEngine/[%2fbr%2fses_|%2fses%2fses]" chkUserPerm="{chkUserPerm}" onlyMy="{onlyMy}" rez="<b>0</b>"><b>{sessions}</b></get></i> <ul><li> <i>sessions</i> — перелік ÑеанÑів у тегах "el", де ідентифікатор у текÑті тегу. Розширено додатковими атрибутами: <ul><li> "user" — кориÑтувач ÑеанÑу;</li> <li> "proj" — проєкт ÑеанÑу.</li></ul></li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><get</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/%2fses%2fses"</span> <span class="na">rez=</span><span class="s">"0"</span> <span class="na">onlyMy=</span><span class="s">"1"</span> <span class="na">user=</span><span class="s">"roman"</span><span class="nt">></span> <span class="nt"><el</span> <span class="na">user=</span><span class="s">"roman"</span> <span class="na">proj=</span><span class="s">"AGLKS"</span><span class="nt">></span>AGLKS<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">user=</span><span class="s">"roman"</span> <span class="na">proj=</span><span class="s">"AGLKS"</span><span class="nt">></span>AGLKS0<span class="nt"></el></span> <span class="nt"></get></span> </pre></div> <dl><dd><b><u>ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑƒ ÑеанÑів визначеного проєкту СВУ</u></b><br /></dd> <dd>ЗÐП: <i><list path="/UI/VCAEngine/%2fserv%2fsess" prj="<b>{project}</b>" /></i> <ul><li> <i>project</i> — ідентифікатор запитаного проєкту.</li></ul></dd> <dd>ВІДП: <i><list path="/UI/VCAEngine/%2fserv%2fsess" prj="{project}" rez="<b>0</b>"><b>{sessions}</b></list></i> <ul><li> <i>sessions</i> — ÑеанÑи у тегах "el".</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><list</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/%2fserv%2fsess"</span> <span class="na">prj=</span><span class="s">"AGLKS"</span> <span class="na">rez=</span><span class="s">"0"</span> <span class="na">user=</span><span class="s">"roman"</span><span class="nt">></span> <span class="nt"><el></span>AGLKS<span class="nt"></el></span> <span class="nt"></list></span> </pre></div> <dl><dd><b><u>ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ визначеного проєкту СВУ або ÑеанÑу проєкту</u></b><br /></dd> <dd>ЗÐП: <i><connect path="/UI/VCAEngine/%2fserv%2fsess" prj="<b>{project}</b>" sess="<b>{session}</b>" userChange="<b>{userChange}</b>" onlyMy="<b>{onlyMy}</b>" /></i> <ul><li> <i>project</i> — ідентифікатор запитаного проєкту, порожнє при підключені до наÑвного ÑеанÑу;</li> <li> <i>session</i> — ідентифікатор вже наÑвного ÑеанÑу, порожнє Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑеанÑу;</li> <li> <i>onlyMy</i> — ознака підключеннÑ-Ð¿ÐµÑ€ÐµÐ¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ ÑеанÑу лише Ñкщо він мій;</li> <li> <i>userChange</i> — ознака зміни кориÑтувача [0|1], тобто Ð´Ð»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— кориÑтувача.</li></ul></dd> <dd>ВІДП: <i><connect path="/UI/VCAEngine/%2fserv%2fsess" prj="<b>{project}</b>" sess="<b>{session}</b>" userChange="{userChange}" onlyMy="{onlyMy}" rez="<b>0</b>" conId="<b>{conId}</b>" userIsRoot="<b>{userIsRoot}</b>" /></i> <ul><li> <i>conId</i> — ідентифікатор Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÑеанÑу, викориÑтовуєтьÑÑ Ñƒ подальших запитах;</li> <li> <i>project</i> — ідентифікатор проєкту уÑпішно підключеного ÑеанÑу;</li> <li> <i>session</i> — ідентифікатор новоÑтвореного ÑеанÑу уÑпішно підключеного проєкту;</li> <li> <i>userIsRoot</i> — кориÑтувач має права ÑуперкориÑтувача [0|1].</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><connect</span> <span class="na">conId=</span><span class="s">"50860885"</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/%2fserv%2fsess"</span> <span class="na">prj=</span><span class="s">"AGLKS"</span> <span class="na">rez=</span><span class="s">"0"</span> <span class="na">sess=</span><span class="s">"AGLKS"</span> <span class="na">user=</span><span class="s">"roman"</span> <span class="na">userIsRoot=</span><span class="s">"1"</span> <span class="nt">/></span> </pre></div> <dl><dd><b><u>Ð’Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ визначеного ÑеанÑу проєкту СВУ</u></b><br /></dd> <dd>СеанÑи із нульовою кількіÑтю підключень тут також закриваютьÑÑ.<br /></dd> <dd>ЗÐП: <i><disconnect path="/UI/VCAEngine/%2fserv%2fsess" sess="<b>{session}</b>" conId="<b>{conId}</b>" /></i> <ul><li> <i>session</i> — ідентифікатор наÑвного ÑеанÑу;</li> <li> <i>conId</i> — ідентифікатор Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÑеанÑу.</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><disconnect</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/%2fserv%2fsess"</span> <span class="na">sess=</span><span class="s">"AGLKS"</span> <span class="na">conId=</span><span class="s">"50860885"</span> <span class="nt">/></span> </pre></div> <dl><dd><b><u>ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑƒ відкритих Ñторінок ÑеанÑу проєкту</u></b><br /></dd> <dd>ЗÐП[<b>{owner}-{grp}</b>]: <i><openlist path="/UI/VCAEngine/ses_<b>{session}</b>/%2fserv%2fpg" conId="<b>{conId}</b>" tm="<b>{clock}</b>" /></i> <ul><li> <i>owner</i>, <i>grp</i> — доÑтуп на Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð²Ð»Ð°Ñника проєкту або кориÑтувача у групі та відповідно до прав проєкту;</li> <li> <i>session</i> — ідентифікатор ÑеанÑу;</li> <li> <i>conId</i> — ідентифікатор Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÑеанÑу;</li> <li> <i>clock</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ лічильника (цикл життÑ) від попереднього опрацьованого запиту, Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ змінених.</li></ul></dd> <dd>ВІДП: <i><openlist path="/UI/VCAEngine/ses_{session}/%2fserv%2fpg" conId="{conId}" tm="<b>{clock}</b>" rez="<b>0</b>"><b>{pages}</b></openlist></i> <ul><li> <i>clock</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ лічильника (цикл життÑ) - 1 на Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ;</li> <li> <i>pages</i> — Ñторінки у тегах "pg": <i><pg pgGrp="<b>{pgGrp}</b>" updWdg="<b>{nUpdWdgs}</b>"><b>{ID}</b></pg></i> <ul><li> <i>ID</i> — ідентифікатор Ñторінки;</li> <li> <i>pgGrp</i> — група Ñторінок Ð´Ð»Ñ Ñ€Ð°Ð½Ð½ÑŒÐ¾Ð³Ð¾ обчиÑÐ»ÐµÐ½Ð½Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñторінок;</li> <li> <i>nUpdWdgs</i> — кількіÑть оновлених віджетів піÑÐ»Ñ Ð¾Ñтаннього запиту та Ð´Ð»Ñ Ð½ÐµÐ¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ "clock".</li></ul></li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><openlist</span> <span class="na">conId=</span><span class="s">"52760577"</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/ses_AGLKS/%2fserv%2fpg"</span> <span class="na">rez=</span><span class="s">"0"</span> <span class="na">tm=</span><span class="s">"1403"</span> <span class="na">user=</span><span class="s">"roman"</span><span class="nt">></span> <span class="nt"><pg></span>/ses_AGLKS/pg_so<span class="nt"></pg></span> <span class="nt"><pg</span> <span class="na">pgGrp=</span><span class="s">"so"</span><span class="nt">></span>/ses_AGLKS/pg_so/pg_1/pg_mn/pg_1<span class="nt"></pg></span> <span class="nt"><pg</span> <span class="na">pgGrp=</span><span class="s">"cntr"</span><span class="nt">></span>/ses_AGLKS/pg_control/pg_ElCadr<span class="nt"></pg></span> <span class="nt"></openlist></span> </pre></div> <dl><dd><b><u>Ð’Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð°Ð±Ð¾ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ñ— Ñторінки ÑеанÑу проєкту</u></b><br /></dd> <dd>ЗÐП[<b>{owner}-{grp}</b>]: <i><[open|close] path="/UI/VCAEngine/ses_<b>{session}</b>/%2fserv%2fpg" pg="<b>{page}</b>" /></i> <ul><li> <i>owner</i>, <i>grp</i> — доÑтуп на Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ Ð²Ð»Ð°Ñника проєкту або кориÑтувача у групі та відповідно до прав проєкту;</li> <li> <i>session</i> — ідентифікатор ÑеанÑу;</li> <li> <i>page</i> — адреÑа Ñторінки у контекÑті ÑеанÑу, на кшталт "/ses_AGLKS/pg_so/pg_1/pg_mn/pg_1".</li></ul></dd></dl> <dl><dd><b><u>ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÑтатуÑу Ñигналізації та реÑурÑу ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð»Ñ ÑеанÑу проєкту</u></b><br /></dd> <dd>ЗÐП[<b>{owner}-{grp}</b>]: <i><get path="/UI/VCAEngine/ses_<b>{session}</b>/%2fserv%2falarm" mode="<b>{mode}</b>" tp="<b>{typeNtf}</b>" wdg="<b>{widget}</b>" /></i> <ul><li> <i>owner</i>, <i>grp</i> — доÑтуп на Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð²Ð»Ð°Ñника проєкту або кориÑтувача у групі та відповідно до прав проєкту;</li> <li> <i>session</i> — ідентифікатор ÑеанÑу;</li> <li> <i>mode</i> — режим запиту, лише "resource" Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑів ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° пуÑто тільки ÑтатуÑ;</li> <li> <i>typeNtf</i> — тип ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу, дивітьÑÑ <a href="#Alarms">Ñекцію Ñигналізації</a>;</li> <li> <i>widget</i> — адреÑа віджету Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу ÑповіщеннÑ, порожньо Ð´Ð»Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾.</li></ul></dd> <dd>ВІДП: <i><get path="/UI/VCAEngine/ses_{session}/%2fserv%2falarm" mode="{mode}" tp="{typeNtf}" rez="<b>0</b>" alarmSt="<b>{alarmSt}</b>" tm="<b>{clock}</b>" wdg="<b>{widget}</b>" resTp="<b>{resTp}</b>" mess="<b>{message}</b>" lang="<b>{language}</b>"><b>{resource}</b></get></i> <ul><li> <i>alarmSt</i> — ÑÑ‚Ð°Ñ‚ÑƒÑ Ñигналізації Ñк опиÑано у <a href="#Alarms">Ñекції Ñигналізації</a>;</li> <li> <i>clock</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ лічильника (цикл життÑ) при формуванні реÑурÑу ÑповіщеннÑ;</li> <li> <i>widget</i> — адреÑа віджету джерела при формуванні реÑурÑу ÑповіщеннÑ;</li> <li> <i>message</i> — Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ–Ð· текÑту;</li> <li> <i>language</i> — мова ÑповіщеннÑ, переважно Ð´Ð»Ñ "message";</li> <li> <i>resTp</i> — тип реÑурÑу ÑповіщеннÑ;</li> <li> <i>resource</i> — реÑÑƒÑ€Ñ ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ ÐºÐ¾Ð´Ð¾Ð²Ð°Ð½Ð¸Ð¹ Base64 Ð´Ð»Ñ Ð±Ñ–Ð½Ð°Ñ€Ð½Ð¸Ñ… даних.</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><get</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/ses_AGLKS/%2fserv%2falarm"</span> <span class="na">mode=</span><span class="s">"resource"</span> <span class="na">tp=</span><span class="s">"1"</span> <span class="na">rez=</span><span class="s">"0"</span> <span class="na">user=</span><span class="s">"roman"</span> <span class="na">alarmSt=</span><span class="s">"460554"</span> <span class="na">tm=</span><span class="s">"0"</span> <span class="na">resTp=</span><span class="s">"audio/ogg;73.3428"</span> <span class="na">lang=</span><span class="s">"en_US.UTF-8"</span><span class="nt">></span> T2dnUwACA...Dg6gwAjo+PAQ== <span class="nt"></get></span> </pre></div> <dl><dd><b><u>СтишеннÑ-ÐºÐ²Ñ–Ñ‚Ð°Ñ†Ñ–Ñ ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñигналізації ÑеанÑу проєкту</u></b><br /></dd> <dd>ЗÐП[<b>{owner}-{grp}</b>]: <i><quietance path="/UI/VCAEngine/ses_<b>{session}</b>/%2fserv%2falarm" wdg="<b>{widget}</b>" tmpl="<b>{template}</b>" ret="<b>{return}</b>" /></i> <ul><li> <i>owner</i>, <i>grp</i> — доÑтуп на Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð²Ð»Ð°Ñника проєкту або кориÑтувача у групі та відповідно до прав проєкту;</li> <li> <i>session</i> — ідентифікатор ÑеанÑу;</li> <li> <i>widget</i> — адреÑа віджету Ð´Ð»Ñ ÑÑ‚Ð¸ÑˆÐµÐ½Ð½Ñ ÑповіщеннÑ, пуÑто Ð´Ð»Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾;</li> <li> <i>template</i> — шаблон ÑповіщеннÑ, тобто бітова збірка відповідно до типів Ñтишуваних Ñповіщень;</li> <li> <i>return</i> — ознака Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ ÑповіщеннÑ, тобто ÑÑ‚Ð¸ÑˆÐµÐ½Ð½Ñ Ð²Ð¸Ð¼Ð¸ÐºÐ°Ñ”Ñ‚ÑŒÑÑ.</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><quietance</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/ses_AGLKS/%2fserv%2falarm"</span> <span class="na">tmpl=</span><span class="s">"7"</span> <span class="nt">/></span> </pre></div> <dl><dd><b><u>ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ модифікованих візуальних атрибутів віджету ÑеанÑу</u></b><br /></dd> <dd>Перевизначає загальний ÑервіÑний запит віджетів "<i><get path='/UI/VCAEngine/{wAddr}/%2fserv%2fattr' /></i>" щодо Ñпецифіки ÑеанÑу.<br /></dd> <dd>ЗÐП: <i><get path="/UI/VCAEngine/ses_<b>{wAddr}</b>/%2fserv%2fattr" tm="<b>{clock}</b>" /></i> <ul><li> <i>wAddr</i> — локальна адреÑа віджету ÑеанÑу, на кшталт "/ses_AGLKS/pg_so/pg_2/pg_mn/pg_CM101/wdg_ElFigure1";</li> <li> <i>clock</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ лічильника (цикл життÑ) від попереднього опрацьованого запиту, Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ змінених; за нульового Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ð¼ÑƒÑово додаютьÑÑ ÑервіÑні-віртуальні атрибути: "perm", "name".</li></ul></dd> <dd>ВІДП: <i><get path="/UI/VCAEngine/ses_{wAddr}/%2fserv%2fattr" tm="{clock}" rez="<b>0</b>"><b>{attributes}</b></get></i> <ul><li> <i>attributes</i> — модифіковані від "clock" атрибути у тегах "el": <i><el id="<b>{ID}</b>" p="<b>{pos}</b>"><b>{value}</b></el></i> <ul><li> <i>ID</i> — ідентифікатор атрибуту;</li> <li> <i>pos</i> — позиціÑ-Ñ–Ð½Ð´ÐµÐºÑ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ Ð´Ð»Ñ Ñтандартних;</li> <li> <i>value</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ.</li></ul></li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><get</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/ses_AGLKS/pg_so/pg_2/pg_mn/pg_CM101/wdg_ElFigure1/%2fserv%2fattr"</span> <span class="na">rez=</span><span class="s">"0"</span> <span class="na">tm=</span><span class="s">"0"</span> <span class="na">user=</span><span class="s">"roman"</span><span class="nt">></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"perm"</span> <span class="na">p=</span><span class="s">"-3"</span><span class="nt">></span>6<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"root"</span> <span class="na">p=</span><span class="s">"1"</span><span class="nt">></span>ElFigure<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"en"</span> <span class="na">p=</span><span class="s">"5"</span><span class="nt">></span>1<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"active"</span> <span class="na">p=</span><span class="s">"6"</span><span class="nt">></span>0<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomX"</span> <span class="na">p=</span><span class="s">"7"</span><span class="nt">></span>488<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomY"</span> <span class="na">p=</span><span class="s">"8"</span><span class="nt">></span>250<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomW"</span> <span class="na">p=</span><span class="s">"9"</span><span class="nt">></span>16<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomH"</span> <span class="na">p=</span><span class="s">"10"</span><span class="nt">></span>100<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomXsc"</span> <span class="na">p=</span><span class="s">"13"</span><span class="nt">></span>1<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomYsc"</span> <span class="na">p=</span><span class="s">"14"</span><span class="nt">></span>0.75<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomZ"</span> <span class="na">p=</span><span class="s">"11"</span><span class="nt">></span>-9<span class="nt"></el></span> <span class="nt"></get></span> </pre></div> <dl><dd><b><u>Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸ значень визначених атрибутів віджету ÑеанÑу</u></b><br /></dd> <dd>Перевизначає загальний ÑервіÑний запит віджетів "<i><set path='/UI/VCAEngine/{wAddr}/%2fserv%2fattr' /></i>" щодо Ñпецифіки ÑеанÑу на кшталт Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ "event" та виÑÐ²Ð»ÐµÐ½Ð½Ñ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾Ñті-неактивноÑті кориÑтувача.<br /></dd> <dd>ЗÐП[<b>{owner}-{grp}</b>]: <i><set path="/UI/VCAEngine/ses_<b>{wAddr}</b>/%2fserv%2fattr" noUser="<b>{noUser}</b>"><b>{attributes}</b></set></i> <ul><li> <i>owner</i>, <i>grp</i> — доÑтуп на Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ Ð²Ð»Ð°Ñника проєкту або кориÑтувача у групі та відповідно до прав проєкту;</li> <li> <i>wAddr</i> — локальна адреÑа віджету ÑеанÑу, на кшталт "/ses_AGLKS/pg_so/pg_2/pg_mn/pg_CM101/wdg_ElFigure1";</li> <li> <i>noUser</i> — не маркувати це Ñк активніÑть кориÑтувача;</li> <li> <i>attributes</i> — атрибути зі значеннÑми у тегах "el": <i><el id="<b>{ID}</b>"><b>{value}</b></el></i> <ul><li> <i>ID</i> — ідентифікатор атрибуту;</li> <li> <i>value</i> — вÑтановлюване Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ.</li></ul></li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><set</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/ses_AGLKS/pg_so/pg_2/pg_mn/pg_CM101/wdg_ElFigure1/%2fserv%2fattr"</span><span class="nt">></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"name"</span><span class="nt">></span>Ðова назва<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"dscr"</span><span class="nt">></span>Ðовий опиÑ<span class="nt"></el></span> <span class="nt"></set></span> </pre></div> <dl><dd><b><u>ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ñƒ ÑкоÑті візуального та його ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð° відÑутноÑті</u></b><br /></dd> <dd>ЗÐП: <i><activate path="/UI/VCAEngine/ses_<b>{wAddr}</b>/%2fserv%2fattr%2f<b>{aID}</b>" aNm="<b>{aName}</b>" aTp="<b>{aType}</b>" aFlg="<b>{aFlags}</b>" aVls="<b>{aValues}</b>" aNms="<b>{aNames}</b>"><b>{aDef}</b></activate></i> <ul><li> <i>wAddr</i> — локальна адреÑа віджету ÑеанÑу, на кшталт "/ses_AGLKS/pg_so/pg_2/pg_mn/pg_CM101/wdg_ElFigure1";</li> <li> <i>aID</i> — ідентифікатор атрибуту ÑеанÑу;</li> <li> <i>aName</i> — ім'Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ при його Ñтворені;</li> <li> <i>aType</i> — тип атрибуту при його Ñтворені, дивітьÑÑ <a href="../API.html#TFld" title="Special:MyLanguage/Documents/API">об'єкт TFld</a>;</li> <li> <i>aFlags</i> — прапорці атрибуту при його Ñтворені, дивітьÑÑ <a href="../API.html#TFld" title="Special:MyLanguage/Documents/API">об'єкт TFld</a>;</li> <li> <i>aDef</i> — типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ при його Ñтворені;</li> <li> <i>aValues</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ Ð´Ð»Ñ Ð²Ð¸Ð±Ñ–Ñ€ÐºÐ¾Ð²Ð¸Ñ… типів при його Ñтворені;</li> <li> <i>aNames</i> — назви значень атрибуту Ð´Ð»Ñ Ð²Ð¸Ð±Ñ–Ñ€ÐºÐ¾Ð²Ð¸Ñ… типів при його Ñтворені.</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><activate</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/ses_AGLKS/pg_so/%2fserv%2fattr%2frunWin"</span> <span class="na">aNm=</span><span class="s">"Вікно виконаннÑ"</span> <span class="na">aTp=</span><span class="s">"1"</span> <span class="na">aFlg=</span><span class="s">"1"</span> <span class="na">aVls=</span><span class="s">"0;1;2"</span> <span class="na">aNms=</span><span class="s">"Original size;Maximize;Full screen"</span><span class="nt">></span>0<span class="nt"></activate></span> </pre></div> <dl><dd><b><u>ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ візуальних атрибутів гілки віджету ÑеанÑу, оптимізовано Ð´Ð»Ñ Ð¼ÐµÑ€ÐµÐ¶</u></b><br /></dd> <dd>Перевизначає загальний ÑервіÑний запит віджетів "<i><get path='/UI/VCAEngine/{wAddr}/%2fserv%2fattrBr' /></i>" щодо Ñпецифіки ÑеанÑу.<br /></dd> <dd>ЗÐП: <i><get path="/UI/VCAEngine/ses_<b>{wAddr}</b>/%2fserv%2fattrBr" tm="<b>{clock}</b>" FullTree="<b>{FullTree}</b>" /></i> <ul><li> <i>wAddr</i> — локальна адреÑа віджету ÑеанÑу, на кшталт "/ses_AGLKS/pg_so/pg_2/pg_mn/pg_CM101/wdg_ElFigure1";</li> <li> <i>clock</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ лічильника (цикл життÑ) від попереднього опрацьованого запиту, Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ змінених; за нульового Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ð¼ÑƒÑово додаютьÑÑ ÑервіÑні-віртуальні атрибути: "perm", "name".</li> <li> <i>fullTree</i> — Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ð½Ð¾Ð³Ð¾ дерева віджетів незалежно від наÑвноÑті змін, без атрибутів.</li></ul></dd> <dd>ВІДП: <i><get path="/UI/VCAEngine/ses_{wAddr}/%2fserv%2fattrBr" tm="{clock}" FullTree="{FullTree}" rez="<b>0</b>"><b>{attributes}</b> <b>{widgets}</b></get></i> <ul><li> <i>attributes</i> — опрацьовані атрибути у тегах "el": <i><el id="<b>{ID}</b>" p="<b>{pos}</b>"><b>{value}</b></el></i> <ul><li> <i>ID</i> — ідентифікатор атрибуту;</li> <li> <i>pos</i> — позиціÑ-Ñ–Ð½Ð´ÐµÐºÑ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ Ð´Ð»Ñ Ñтандартних;</li> <li> <i>value</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ.</li></ul></li> <li> <i>widgets</i> — дочірні віджети у тегах "w": <i><w id="<b>{ID}</b>"><b>{attributes}</b> <b>{widgets}</b></w></i> <ul><li> <i>ID</i> — ідентифікатор віджету.</li></ul></li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><get</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/ses_AGLKS/pg_so/pg_2/pg_mn/pg_CM101/%2fserv%2fattrBr"</span> <span class="na">rez=</span><span class="s">"0"</span> <span class="na">tm=</span><span class="s">"0"</span> <span class="na">user=</span><span class="s">"roman"</span><span class="nt">></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"name"</span> <span class="na">p=</span><span class="s">"-4"</span><span class="nt">></span>CM101<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"perm"</span> <span class="na">p=</span><span class="s">"-3"</span><span class="nt">></span>6<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"root"</span> <span class="na">p=</span><span class="s">"1"</span><span class="nt">></span>Box<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"en"</span> <span class="na">p=</span><span class="s">"5"</span><span class="nt">></span>1<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"active"</span> <span class="na">p=</span><span class="s">"6"</span><span class="nt">></span>0<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomX"</span> <span class="na">p=</span><span class="s">"7"</span><span class="nt">></span>0<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomY"</span> <span class="na">p=</span><span class="s">"8"</span><span class="nt">></span>0<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomW"</span> <span class="na">p=</span><span class="s">"9"</span><span class="nt">></span>900<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomH"</span> <span class="na">p=</span><span class="s">"10"</span><span class="nt">></span>580<span class="nt"></el></span> <span class="nt"><w</span> <span class="na">id=</span><span class="s">"AT101_1"</span><span class="nt">></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"perm"</span> <span class="na">p=</span><span class="s">"-3"</span><span class="nt">></span>6<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"root"</span> <span class="na">p=</span><span class="s">"1"</span><span class="nt">></span>ElFigure<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"en"</span> <span class="na">p=</span><span class="s">"5"</span><span class="nt">></span>1<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"active"</span> <span class="na">p=</span><span class="s">"6"</span><span class="nt">></span>0<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomX"</span> <span class="na">p=</span><span class="s">"7"</span><span class="nt">></span>338<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomY"</span> <span class="na">p=</span><span class="s">"8"</span><span class="nt">></span>320<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomW"</span> <span class="na">p=</span><span class="s">"9"</span><span class="nt">></span>80<span class="nt"></el></span> <span class="nt"><el</span> <span class="na">id=</span><span class="s">"geomH"</span> <span class="na">p=</span><span class="s">"10"</span><span class="nt">></span>100<span class="nt"></el></span> <span class="nt"></w></span> <span class="nt"></get></span> </pre></div> <dl><dd><b><u>ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñпецифічного до ÑеанÑу атрибуту віджету ÑеанÑу</u></b><br /></dd> <dd>ЗÐП: <i><get path="/UI/VCAEngine/ses_<b>{wAddr}</b>/%2fserv%2fattrSess%2f<b>{aID}</b>" /></i> <ul><li> <i>wAddr</i> — локальна адреÑа віджету ÑеанÑу, на кшталт "/ses_AGLKS/pg_so/pg_2/pg_mn/pg_CM101/wdg_ElFigure1";</li> <li> <i>aID</i> — ідентифікатор Ñпецифічного до ÑеанÑу атрибуту.</li></ul></dd> <dd>ВІДП: <i><get path="/UI/VCAEngine/ses_{wAddr}/%2fserv%2fattrSess%2f{aID}" rez="<b>0</b>"><b>{value}</b></get></i> <ul><li> <i>value</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ.</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><get</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/ses_AGLKS/pg_so/pg_2/pg_mn/pg_CM101/%2fserv%2fattrSess%2ftestA"</span> <span class="na">rez=</span><span class="s">"0"</span> <span class="na">user=</span><span class="s">"roman"</span><span class="nt">></span>теÑтове значеннÑ<span class="nt"></get></span> </pre></div> <dl><dd><b><u>Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñпецифічного до ÑеанÑу атрибуту віджету ÑеанÑу</u></b><br /></dd> <dd>ЗÐП[<b>{owner}-{grp}</b>]: <i><set path="/UI/VCAEngine/ses_<b>{wAddr}</b>/%2fserv%2fattrSess%2f<b>{aID}</b>"><b>{value}</b></get></i> <ul><li> <i>owner</i>, <i>grp</i> — доÑтуп на Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ Ð²Ð»Ð°Ñника проєкту або кориÑтувача у групі та відповідно до прав проєкту;</li> <li> <i>wAddr</i> — локальна адреÑа віджету ÑеанÑу, на кшталт "/ses_AGLKS/pg_so/pg_2/pg_mn/pg_CM101/wdg_ElFigure1";</li> <li> <i>aID</i> — ідентифікатор Ñпецифічного до ÑеанÑу атрибуту;</li> <li> <i>value</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ.</li></ul></dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 20pt"><pre><span class="nt"><set</span> <span class="na">path=</span><span class="s">"/UI/VCAEngine/ses_AGLKS/pg_so/pg_2/pg_mn/pg_CM101/%2fserv%2fattrSess%2ftestA"</span><span class="nt">></span>теÑтове значеннÑ<span class="nt"></set></span> </pre></div> <p><br /> </p> <h2><span class="mw-headline" id=".D0.9A.D0.BE.D0.BD.D1.84.D1.96.D0.B3.D1.83.D1.80.D0.B0.D1.86.D1.96.D1.8F_.D0.BC.D0.BE.D0.B4.D1.83.D0.BB.D1.8F_.D0.B7.D0.B0_.D0.BF.D0.BE.D1.81.D0.B5.D1.80.D0.B5.D0.B4.D0.BD.D0.B8.D1.86.D1.82.D0.B2.D0.BE.D0.BC_.D1.96.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.83_.D1.83.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D1.96.D0.BD.D0.BD.D1.8F_OpenSCADA"><span class="mw-headline-number">4</span> ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð·Ð° поÑередництвом інтерфейÑу ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ OpenSCADA</span></h2> <p>За поÑередництвом інтерфейÑу ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ OpenSCADA компоненти, Ñкі його викориÑтовують, можна конфігурувати з будь-Ñкого конфігуратору OpenSCADA. Даним модулем надаєтьÑÑ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð¾Ñтупу до вÑÑ–Ñ… об'єктів даних СВУ. Головна вкладка конфігураційної Ñторінки Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð½Ð°Ð´Ð°Ñ” доÑтуп до бібліотек віджетів та проєктів (риÑ.4.1). Вкладка "СеанÑи" надає доÑтуп до відкритих ÑеанÑів проєктів (риÑ.4.2). </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:670px;"><a class="image" href="http://oscada.org/wiki/File:VCAeng_main_uk.png"><img class="thumbimage" height="558" src="../files/VCAeng_main_uk.png" width="668" /></a> <div class="thumbcaption">РиÑ.4.1. Головна конфігураційна Ñторінка модулÑ.</div></div></div></div> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:670px;"><a class="image" href="http://oscada.org/wiki/File:VCAeng_sess_uk.png"><img class="thumbimage" height="531" src="../files/VCAeng_sess_uk.png" width="668" /></a> <div class="thumbcaption">РиÑ.4.2. Вкладка "СеанÑи" конфігураційної Ñторінки модулÑ.</div></div></div></div> <p>Крім переліку відкритих ÑеанÑів, вкладка на риÑунку 4.2 міÑтить таблицю з переліком ÑеанÑів, Ñкі мають ÑтворюватиÑÑ Ñ‚Ð° запуÑкатиÑÑ Ñƒ момент Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ OpenSCADA. Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑеанÑів за поÑередництвом цього механізму може бути кориÑним Ð´Ð»Ñ Web-інтерфейÑу. У такому випадку, при підключені Web-кориÑтувача, вÑÑ– дані вже готові та забезпечуєтьÑÑ Ð½ÐµÐ¿ÐµÑ€ÐµÑ€Ð²Ð½Ñ–Ñть Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ñ€Ñ…Ñ–Ð²Ð½Ð¸Ñ… документів. </p><p>ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÐºÐ¾Ð½Ñ‚ÐµÐ¹Ð½ÐµÑ€Ñ–Ð² віджетів у оÑобі бібліотек віджетів та проєктів виконуєтьÑÑ Ð·Ð° поÑередництвом Ñторінок на риÑунку 4.3 (Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ) та риÑунку 4.5 (Ð´Ð»Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ віджетів). Бібліотека віджетів міÑтить віджети, а проєкт — Ñторінки. Обидва типи контейнеру міÑÑ‚Ñть вкладку конфігурації реÑурÑів, що викориÑтовуютьÑÑ Ð²Ñ–Ð´Ð¶ÐµÑ‚Ð°Ð¼Ð¸ (риÑ.4.6). Сторінка проєкту також міÑтить вкладку "ДіагноÑтика" (риÑ.4.4) Ð´Ð»Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð° контролю за виконаннÑм Ñторінки у ÑеанÑах. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:827px;"><a class="image" href="http://oscada.org/wiki/File:VCAeng_pg_uk.png"><img class="thumbimage" height="690" src="../files/VCAeng_pg_uk.png" width="825" /></a> <div class="thumbcaption">РиÑ.4.3. Сторінка конфігурації проєктів.</div></div></div></div> <p>За допомогою цієї Ñторінки можна вÑтановити: </p> <ul><li> Стан контейнеру, а Ñаме: "Ввімкнено", ім'Ñ Ñховища (що міÑтить конфігурацію та з відÑтеженнÑм наÑвноÑті даних у різних Ñховищах та наданнÑм поÑлідовного Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚Ñ–Ð²), дата та Ñ‡Ð°Ñ Ð¾Ñтанньої модифікації, лічильник викориÑтаннÑ.</li></ul> <dl><dd> <a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../../en/files/At.png" width="22" /></a> Об'єкт вÑе ще підтримує Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ð´Ð»Ð¸ÑˆÐºÐ¾Ð²Ð¾Ñ— адреÑи Ñховку із таблицею до того чаÑу Ñк ви перейменуєте Ñ—Ñ— у Ñтандартну форму "<b>prj_{ObjID}</b>".</dd></dl> <ul><li> Ідентифікатор, ім'Ñ, Ð¾Ð¿Ð¸Ñ Ñ‚Ð° іконка контейнеру.</li> <li> ВлаÑник, група кориÑтувачів та права доÑтупу до елементу.</li> <li> Період обчиÑÐ»ÐµÐ½Ð½Ñ ÑеанÑів, заÑнованих на даному проєкті.</li> <li> Ознака ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð·Ð° потреби.</li></ul> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:1005px;"><a class="image" href="http://oscada.org/wiki/File:VCAeng_pg_diag_uk.png"><img class="thumbimage" height="643" src="../files/VCAeng_pg_diag_uk.png" width="1003" /></a> <div class="thumbcaption">РиÑ.4.4. Вкладка "ДіагноÑтика" проєкту.</div></div></div></div> <p>У цій вкладці можете обрати Ñ‡Ð°Ñ (або оновити до поточного) та глибину Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтичних повідомлень ÑеанÑів Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¾Ð³Ð¾ проєкту. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:869px;"><a class="image" href="http://oscada.org/wiki/File:VCAeng_wlb_uk.png"><img class="thumbimage" height="624" src="../files/VCAeng_wlb_uk.png" width="867" /></a> <div class="thumbcaption">РиÑ.4.5. Сторінка конфігурації бібліотек віджетів.</div></div></div></div> <p>За допомогою цієї Ñторінки можна вÑтановити: </p> <ul><li> Стан контейнеру, а Ñаме: "Ввімкнено", ім'Ñ Ñховища (що міÑтить конфігурацію та з відÑтеженнÑм наÑвноÑті даних у різних Ñховищах та наданнÑм поÑлідовного Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚Ñ–Ð²), дата та Ñ‡Ð°Ñ Ð¾Ñтанньої модифікації, лічильник викориÑтаннÑ.</li></ul> <dl><dd> <a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../../en/files/At.png" width="22" /></a> Об'єкт вÑе ще підтримує Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ð´Ð»Ð¸ÑˆÐºÐ¾Ð²Ð¾Ñ— адреÑи Ñховку із таблицею до того чаÑу Ñк ви перейменуєте Ñ—Ñ— у Ñтандартну форму "<b>wlb_{ObjID}</b>".</dd></dl> <ul><li> Ідентифікатор, ім'Ñ, Ð¾Ð¿Ð¸Ñ Ñ‚Ð° іконка контейнеру.</li></ul> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:691px;"><a class="image" href="http://oscada.org/wiki/File:VCAeng_mime_uk.png"><img class="thumbimage" height="605" src="../files/VCAeng_mime_uk.png" width="689" /></a> <div class="thumbcaption">РиÑ.4.6. Вкладка конфігурації реÑурÑів контейнеру.</div></div></div></div> <p>ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÑеанÑу проєкту значно відрізнÑєтьÑÑ Ð²Ñ–Ð´ конфігурації проєкту (риÑ.4.7), однак, також, міÑтить Ñторінки проєкту. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:972px;"><a class="image" href="http://oscada.org/wiki/File:VCAeng_pg_ses_uk.png"><img class="thumbimage" height="643" src="../files/VCAeng_pg_ses_uk.png" width="970" /></a> <div class="thumbcaption">РиÑ.4.7. Сторінка конфігурації ÑеанÑів проєктів.</div></div></div></div> <p>За допомогою цієї Ñторінки можна вÑтановити: </p> <ul><li> Стан ÑеанÑу, а Ñаме: "Ввімкнено"; "ВиконуєтьÑÑ"; кориÑтувач; влаÑник; група кориÑтувачів; доÑтуп; початковий проєкт; режим Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñƒ фоні; Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑеанÑу; лічильник клієнтÑьких підключень; чаÑ, кориÑтувач, мова оÑтаннього запиту; оÑÑ‚Ð°Ð½Ð½Ñ Ð´Ñ–Ñ ÐºÐ¾Ñ€Ð¸Ñтувача та залишок чаÑу до примуÑового закриттÑ.</li> <li> Період обрахунку ÑеанÑу.</li> <li> Поточний Ñтиль проєкту.</li> <li> Перелік відкритих Ñторінок.</li></ul> <p>Сторінки конфігурації візуальних елементів, розташованих у різних контейнерах, можуть Ñильно відрізнÑтиÑÑ, однак, Ñ†Ñ Ñ€Ñ–Ð·Ð½Ð¸Ñ†Ñ Ð¿Ð¾Ð»Ñгає у наÑвноÑті або відÑутноÑті окремих вкладок. Головна вкладка візуальних елементів фактично вÑюди однакова, відрізнÑючиÑÑŒ на одне конфігураційне поле та три у ÑеанÑÑ– (риÑ.4.8). У Ñторінок приÑутні вкладки дочірніх Ñторінок та вкладених віджетів. У контейнерних віджетів міÑтитьÑÑ Ð²ÐºÐ»Ð°Ð´ÐºÐ° вкладених віджетів. Ð’ÑÑ– візуальні елементи міÑÑ‚Ñть вкладку атрибутів (риÑ.4.9), крім логічних контейнерів проєктів. Елементи, на рівні Ñких можна формувати кориÑтувацьку процедуру та визначати зв'Ñзки, міÑÑ‚Ñть вкладки "Обробка" (риÑ.4.10) та "Зв'Ñзки" (риÑ.4.11). <a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../../en/files/At.png" width="22" /></a> Ð Ñдки ім'Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ у вкладці "Обробка" піÑÐ»Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ опрацьовуютьÑÑ Ñк допомога. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:866px;"><a class="image" href="http://oscada.org/wiki/File:VCAeng_vit_main_uk.png"><img class="thumbimage" height="766" src="../files/VCAeng_vit_main_uk.png" width="864" /></a> <div class="thumbcaption">РиÑ.4.8. Головна вкладка конфігурації візуальних елементів.</div></div></div></div> <p>За допомогою цієї Ñторінки можна отримати: </p> <ul><li> Стан елементу; щодо інформації: "Ввімкнено", кількіÑть викориÑтаннÑ, дата оÑтанньої модифікації, Ñтан обчиÑлювальної процедури; щодо контролю: "Включений", тип Ñторінки (Ð´Ð»Ñ Ñторінок), батьківÑький елемент та перехід до нього.</li> <li> Стан елементу у режимі ÑеанÑу виконаннÑ; щодо інформації: модифікаціÑ, період періодичного опрацюваннÑ, "ОпрацюваннÑ", викориÑтано чаÑу при виконанні піддерева та елементу у <a href="../Program_manual.html#Config" title="Special:MyLanguage/Documents/Program manual">режимі налагодженнÑ</a>, "Відкрито"; щодо контролю: "Відкрито", "ОпрацюваннÑ".</li> <li> Ідентифікатор, тип, корінь, шлÑÑ…, ім'Ñ, Ð¾Ð¿Ð¸Ñ Ñ‚Ð° іконка елементу.</li> <li> Періодичне Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ Ñƒ міліÑекундах — Ð´Ð»Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ контролю періодичного Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ Ð±ÑƒÐ´ÑŒ Ñкого елементу включно із тими, Ñкі не мають процедури опрацюваннÑ, але це Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ðµ бути викориÑтане дочірніми елементами у каÑкаді. Зарезервовано наÑтупні Ñпеціальні значеннÑ: <ul><li> <b>0</b> — бажаєте періодичного Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ Ñ–Ð· періодом ÑеанÑу;</li> <li> <b>-1</b> — бажаєте викориÑтати період Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ñ‚ÑŒÐºÑ–Ð²Ñького віджету/Ñторінки/проєкту каÑкадно;</li> <li> <b>-2</b> — Ð´Ð»Ñ Ñ†Ñ–Ð»ÐºÐ¾Ð²Ð¸Ñ‚Ð¾Ð³Ð¾ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð¿ÐµÑ€Ñ–Ð¾Ð´Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ опрацюваннÑ.</li></ul></li> <li> Команда — очиÑтити зміни.</li> <li> Команда — опуÑтити зміни віджета його предку.</li></ul> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:837px;"><a class="image" href="http://oscada.org/wiki/File:VCAeng_vit_attr_uk.png"><img class="thumbimage" height="740" src="../files/VCAeng_vit_attr_uk.png" width="835" /></a> <div class="thumbcaption">РиÑ.4.9. Вкладка атрибутів візуальних елементів.</div></div></div></div> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:944px;"><a class="image" href="http://oscada.org/wiki/File:VCAeng_vit_proc_uk.png"><img class="thumbimage" height="766" src="../files/VCAeng_vit_proc_uk.png" width="942" /></a> <div class="thumbcaption">РиÑ.4.10. Вкладка обробки візуальних елементів.</div></div></div></div> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:1087px;"><a class="image" href="http://oscada.org/wiki/File:VCAeng_vit_lnk_uk.png"><img class="thumbimage" height="563" src="../files/VCAeng_vit_lnk_uk.png" width="1085" /></a> <div class="thumbcaption">РиÑ.4.11. Вкладка зв'Ñзків візуальних елементів.</div></div></div></div> </div><table style="border-top: dotted 2px #999999; margin-top: 20pt; color: gray;" width="100%"><tr><td style="text-align: left;" width="40%"><a href="http://oscada.org/wiki/Modules/VCAEngine/uk">Modules/VCAEngine/uk</a> - <a href="http://oscada.org/en/main/about-the-project/licenses/">GFDL</a></td><td style="text-align: center;">April 2025</td><td style="text-align: right;" width="40%">OpenSCADA 1+r3018</td></tr></table></body> </html>