From 7a1c6fa62b0e7b2ecfadee8c0e427511c9def0c6 Mon Sep 17 00:00:00 2001 From: Salijoghli <107577102+Salijoghli@users.noreply.github.com> Date: Mon, 18 Aug 2025 15:23:02 +0400 Subject: [PATCH] adjustments in the header view --- ...a74cb003fe122016c1fbbcf3e1000c04cf89081298 | 1092 ++ ...acf8db420845bf639833006fe5177c216aa6c8e43d | 10031 +++++++++++ ...569d998f874aab8701beb5aafc2766b467934c1001 | 289 + ...695349c003328391ed923af2573be296fdf63304aa | 3 + ...5cdf8c94a398d124d5416513117ace4498c1a56947 | 46 + ...cd809c0ff97d6fad94dc8004656fc2d0106ee6e801 | 393 + ...6681a5edfc74084d02fb48f2b25262a050ff67c586 | 327 + ...d87947a5b6aeb45687b70fcfa869c3c3b363bb4d36 | Bin 0 -> 116028 bytes ...135f1e0b0aa2c855318f6205a2382c8296c307a6e9 | 7 + ...ee17111d89976750a3f44ad21352a708d2769be144 | 63 + ...59ed71ec339a04816bd7fe8112c1a0ce43903c4225 | 36 + ...71915c07ed4bf254913a47341867b452ef12ec8540 | 907 + ...62ba326e1bbb2827530cea8bc9db3a356a3e07179c | 160 + ...32de2734d7b675c828d0b3279b9d9818265c8ae343 | 59 + ...96c6c0bbe93e0836493b6a8c48c63fd0e2656575c0 | 19 + ...b91a8c780fceabf3816ae56c29a6d561f5e2bb4b19 | 5 + ...fd8261b337e9bb89a3092cee1a185f13d8ceaeb0bb | 4283 +++++ ...8a1bb1604312364452f944490e33c723cea3be8b84 | 706 + ...0cf688ee58f4caa117427dabde4682f87cd9259a76 | 43 + ...e98bd9f4947f2079cb276fd5882f41a6be9a2ea76e | 291 + ...d83d7b05fbab2b455cfb4dbff40a1b0f75d9d83fb6 | 297 + ...bba8ffc73397ca5ddc41377ac4381f9c030f1229a4 | 193 + ...38dc87308891e1b5754e3eb578298eb615368ef2ad | 84 + ...1ee4f02346dd403337bd980d1ed9b2c58124b90b12 | 578 + ...d2db69d7f7406efeef877ce0d77602979af9373a7c | 267 + ...fef88796373c1f8be3838e2c3284ed1bc4bc1d7e00 | 36 + ...40ef2d87ea12f14185bf99adac0ea57db0af90bfd8 | 13 + ...5257f517b4ff365e6ecdbb65751e05fcc13bc66881 | 5491 ++++++ ...dc5873d8e59f41442427c21948a2bf7deaecae7831 | 62 + ...79f9db6e42b614e5c442420b3ef2bc2ce3df7830b3 | 1030 ++ ...cf216157199feb8db414bcdebb0de6dce054278dc4 | 7 + ...578602e2b7a3b3f9e22f425f12c2382d39a5423b97 | 84 + ...81cf37484c1271d5dc8dd1bcecd1892051c008fb30 | 24 + ...198b8f5e6b16a8d215aa08765e966fe6150aa94bcd | 328 + ...b76b10ba5cb350539f734af24cf66f8b1f8cab2bc4 | 38 + ...9bdc6db97053670a8cde30245eadd98d3240685807 | 1092 ++ ...1508337325a3d1c1238e5edf5bd7ad801516d0c3c6 | 7 + ...e19c2a764dff894e44967e652b699bc5ce9c936fe1 | 332 + ...a6be571cdc581c3b83d64debee8930ca265d5813aa | 773 + ...2865d47d1eaf58d541fe0fd3bdae17f5e7d041c5a0 | 4 + ...1446a6e7a3be9028fa7458c9c284aebd605409019a | 549 + ...3dbf03a59158982b1d01cecec1182cb468a777d9bf | 290 + ...88c7f8c82d50053c0dce0bacd4619ac7ebbf1d6792 | 238 + ...e98cb0acfc7550c00d097824db3473678739130ab4 | 10 + ...061e27025b6599611fa0c031259329cc405d6934cb | 28 + ...c9943b5cc0da65edcf9b49da7fd0349ee753fd6dc5 | 19 + ...9a5a03350a62381e42cd40a5f128d6893ba710f027 | 290 + ...f2af8d9ce03f13ac90a8e9738f33d0a0d585c7de74 | 112 + ...0c3acf369f4f10b61b42c512db4f21ea9bd9a7b8d3 | 11 + ...b04f44c575783e06e0c719f8558d6c6cac8b2d8fd9 | 34 + ...4209598be84b707979d4b8cabf16a6152e615b44ea | 7 + ...3349e09ebfea92583850be43c9c64b1c40075a8909 | 318 + ...8ecc26cdc62120caec544b2e78676112f13199e15a | 1092 ++ ...6775287549eae7b53e6657483cd7fd80792d42ba21 | 4 + ...e445343d97b139ac5373f0b9402295c61a3320a16c | 32 + ...27a8f0fe496daa86b1c0599e64b7d86cb5a45d8cf0 | 359 + ...db6df9320e708a6bc299762e5e6e4551ca02209c8e | 37 + ...806e553489f813a5f4128bc147b8a175a756fd3e57 | 307 + ...5e73dfd6af21067986d76b1c245da21f733cb686b8 | 195 + ...3316c6dd436989ca566ae4b4cfb9b9b82765ce7079 | 251 + ...7d817419977f55ce172752b64f9caa0e9630d346e6 | 236 + ...611007aa34d3aa577d2a41a1760d152ef180cccf98 | 2727 +++ ...420cb3e458afbd3f91331ed14f7fe38cdc72a2cd90 | 10 + ...b06300087c48a921c32a351e0b20988c3b4751bfe4 | 15 + ...9b57973bf88ccc364f959332151105929db06f7279 | 57 + ...0ac560cec71a5d146de6a2fc6b9aa920f8f2c304da | 3189 ++++ ...0e7ca009ee4ddd167e81be93450e0ee4e28d1b1657 | 32 + ...3b7f9f7a2018a5d733f767cb57e5e7b1f4bb2825ff | 14 + ...5821025ae372a810ae421661be31a5e53ecced5b4c | 274 + ...0c1a6cc51f9044c8a6090e14da86d7bc6e33b37152 | 36 + ...372a016ce7a371d53e1d373ba7c283272ee12825a9 | 13 + ...29749142983079448cc4bea35f68b705f67e0fca07 | 16 + ...58c95c24c835a7634ee6d2521d16906f20a974e5cc | 109 + ...22c0017a8be722a720bccb621eb0e7eec997605172 | 322 + ...37d4b2bf663960af70869d03356bf08a5913ce4482 | 556 + ...1d525e591205c9363d4671ac73c4cdbdcccffc6eae | 214 + ...94f0522d5b86f2c42e78b21b234af3076462250b4e | 222 + ...35a85c31b8c4b8c7c638804fd9e6b6da0cc993725e | 10 + ...23d8b0e1ebdc95b090ac45ef18720edc345fa1e226 | 75 + ...f52674de423e01f14299efec0d85e5c67a1fa0e351 | 246 + ...4f275e3ad2ed3cef7d9d797635e1a4880a7f16bc9d | 24 + ...71939df400d97b581c8ab7c8e8eec87677b38efa12 | 60 + ...4439f1fd837d721335d5a66314792da691add3da8b | 63 + ...e2c7f152765a6cd713a73d39afa47f4d5ef5b96499 | 10 + ...cf28d4072fbef065693f8d9802229d271bcd48c6ad | 36 + ...9ef2017afda6b8abf75bff84826bca79e61a3acecb | 14895 ++++++++++++++++ ...bb0d87cfc0b7cc2acef452fd1ed16e642bed1ddff7 | 98 + ...e88ff4847cd2c7b3e5b67a55aaf19efbbec4299a47 | 1810 ++ ...6e75610beeca0680a26be26a9033336cbedcacbfd0 | 41 + ...f36371e7276433097292e3685a0cd25ad7901519a0 | 1075 ++ ...4b29407f27c18277fa031e40686aab70185c3c4efa | 13 + ...1e73341bc020a4426a4adbf382f82812887ba5417e | 7 + ...01010a3273755d8d4e090a792e16ab662ef31b3031 | 18 + ...dbbc0fb6adbf26de23ff509aedeb5d2372791fe42a | 1097 ++ ...cd931d1ef78941e5135b59ec81ab7d4fda7612eba3 | 40 + ...d2f5cab0be2b1ff9b6f1c3bd9ce20ac34f6aa91784 | 104 + ...df77120185f9a659920b0fbdda9819ac6b554285e4 | 535 + ...8fe1e4d1c6dbb9bbca67bb1aa721b929a0e5f4a2f2 | 38 + ...64f1dbb9101fc923e9ee2e137bc2b45b87f41626bd | 6838 +++++++ ...0ab3e36aef46fff856ea293aeb0130e901b2db6d53 | 28 + ...fc47fb874e0e9973f8a0a74bf91b9d5b089e10e98a | 509 + ...60e89175d0bf4ed1ea8de999fe4538c8e2dc414f0a | 28 + ...ba3174e978ab55761a0912ba2c982162372227b1b4 | 445 + ...1651569f1779270435946e6e0e17c9b43e2998e62f | 526 + ...8be241f378b60d1d49c70197979bdbc8973326a90c | Bin 0 -> 1183 bytes ...8eea7e282beda324eacc031a1566b2c8f4683b76d0 | 14 + ...435424fa3d38d747181b7c141aed5288e447f7e316 | 13 + ...e69923dfda1da4af1ec15f26871bc8d842f3f6a4a6 | 287 + ...edf50e737e37bbb9c847c851a6b93d85d34c231899 | 36 + ...30b334a487997c3b6635ed095b37d053604e7a9000 | 322 + ...f6b1ec0120b91d69fd010d796a97421ca11118abea | 290 + ...8216e15157c5c90216b052ad5a3b584caa91ed86d2 | 4 + ...18f9ddd07e7d6f67820a52840a06622df1c8b454a7 | 7 + ...c457bd949420be7223bdc5ce9b66bae8a56363ee21 | 382 + ...df404292d68a3bfd1b4bee66d3324d1236602be8a5 | 7 + ...c315822bef2a1f03f94e0f23e9eea6f60008db95aa | 415 + ...ba27bc8661d271deced8bd8fabacb076fd9f842512 | 685 + ...276347bfc07afd5718098a6064d63fd03b56351499 | 28 + ...6ea96ec60490820c0c6d0db77128d6d98bc3ce240c | 3 + ...ab1fb5e70917195b101f135a777083469becff1372 | 13 + ...57071f315ca507f7f7594b2f105bd49dd413fbc7e1 | 3 + ...7ed30c357a43744e508c00c68c27372c1d1cf460d8 | 531 + ...b0b48ed503fabf3fb3597841ac8397a64d6a61fe27 | 621 + ...40a3eff867ab21cbc8bd240c56dbe5582dbe757665 | 25 + ...e1f9d03137778f3eef8195498bff95525a7a3579ec | 83 + ...47e6939262bac1052d3a7de4a79fe5d7d280339641 | 10 + ...db92696ac720824686a02a09d851d26bb4f6eb8f29 | 290 + ...0b0e561d01b43246d513cfaa5843443a9c22742da7 | 8 + ...2a7b2b8c3281b08821c5391751a8a9b0fc9e012a32 | 24 + ...6d78d79dc11ecc603c9264784419c275669036ae95 | 702 + ...16c2a75c416f5464592df6ec57e70f6cc107fd308f | 4 + ...f5593986509c90e51e8b26c12db018229bdf3f653e | 3306 ++++ ...32185caa95c8e2acf670e1e0b26c0f47d0250c182f | 38 + ...827ca0438740f38536663cd8e9a84403688673b308 | 68 + ...c77a1bf8581befa322bbe4fbc2f0e10e8be31a422e | 98 + ...f4bd0cccf528e64f8d09a15442fd663efdfee0c333 | 61 + ...0b1360b0851f35a02144277c4515b6a8e4aa586011 | 10 + ...dd3cb55421597c58866e0202a76703a2c97df2ef70 | 10 + ...ef0e2014c871a741065272c055d18f6eb4c0dc8232 | 18 + ...cc2f8605c93adc6dd2738fb70e017217d9efe818fe | 323 + ...4a84b189c914940f60615ab4d397f8f7e5f5ae4186 | 334 + ...6eaaecc343b8c77448bfd07f3e7329f70fa740824e | 1037 ++ ...8eff91688dcff3e3be5fd50a11a1a1254e0407542b | 1323 ++ ...964665d955a58204342a0a097867399b5b5051f46f | 244 + ...c6df02dfb979c46c35b3d85f81e679f67c326331bd | 2923 +++ ...4bd779f529f5a6088344754ba8064759b2648c096b | 13 + ...285c807b9d853c80e42fd08c4793bb9ca218900088 | 73 + ...547990782bb217aae572a5630c40a2507721b85b11 | 10 + ...2bb7529b50242b68ba99553ffa4033a412cbfe8817 | 275 + ...685926091fcf848ec2236629b37a9d18b0d921e357 | 64 + ...6b359c653c3d482eb0272fb2869c66fa0227f2bdce | 696 + ...fbd751876e557da860562725e6cac5d0266f5d964a | 18 + ...2d3bd8c08d4f3facde4aecd62a8d8a4a87858b3bac | 10 + ...fe574588ebd649716d6be8a4c999d01078733369ea | 13 + ...348a431f51dcfb6b12e96fcf6a8045b296f881a3bf | 1387 ++ ...bba07262a089752a995b189b9101aafd7d2483de02 | 264 + ...fec0fe7b084efea8bf1bb0a77c82781fcda4375c90 | 17 + ...a041e31236c41dc9f15185928c7c3cc8f633c48c85 | 84 + ...80cfd8736c8b16812b5aabb7490cfae33978dc35e3 | 71 + ...8477c6f2f0894e393a4a0825ff55655b4367f0ae32 | 13 + ...ae90829cebb025847d277dab15e3827b7514822025 | 313 + ...28d86fb3e70a8048bd62605655a3ed01910e20adf3 | 10 + ...44ed1f23151b1ef69b2ed9148a981e557346027959 | 7 + ...4085ada9232a8423dc4c8e0ddb4da1368387e643aa | 57 + ...2fedfe3aa3f0205500cf903a401de03a437f128fd0 | 233 + ...b3e6112c88b1c69d9e879e50fdc3d6aed78149fe98 | 286 + ...2e45f30796c81009c5c79cf0a69a35511a1739fd8b | 299 + ...82db1e230e82d245e83235800ae0d156591ed75783 | 643 + ...f0f723b59b1d618454babbdf9581a6fdae60c87eaf | 495 + ...bf9bb617aa87ec1f198cc0b145d36dac8ae49b2efa | 130 + ...3c7c378f76daf952b742df59574c55625080b2f37e | 323 + ...0500a592c59bc5d0145edb68ec7a6323754f252376 | 319 + ...8990b9ef46361d857e49c5e495b1a39b5a33ba5a2e | 0 ...755e5351ca51c5c3dd1ef9d5c4c6397d3d1fc8a6a8 | 1062 ++ ...a27e33dcb031811b7a628e5f5a36f4df8082312bf0 | 679 + ...a7b473b5f072322bcec5dc016febcc1d3b8aac8fcd | 69 + ...30d6d4393f4e07f0c483a6f3a2eb71882040e88585 | 45 + ...5b30a4bac6f515f4a132f136ac3b2a4418b6632295 | 13 + ...1f67861d19f994dc7b218a3c365fad7760cd5681bc | 84 + ...2c7c4ce887fbb2e6cbae4cb12c26ed53ec3e51cd7a | 10 + ...1786c0065388a95bb25e09abd29078938c4ba2b573 | 2276 +++ ...12e1539dd2170bc9947d9f22e959fb1b4f4348923d | 10 + ...b47193f221dbd7772c5650a9566eb015c4266e70eb | 156 + ...c91042026636c3e6bcf2efce58c4987728e630e198 | 290 + ...758efd63702a7eea017e71775625530923b8965af6 | 9 + ...bb559f0e3fcef841852500a9c7f414611a79d7ca6c | 106 + ...4aab6315f5af83ee2057937cbe430dc68b795d01ba | 156 + ...706d4957edf57c579eb68976bd5c7ef31b669713be | 178 + ...f5cf4192ecd6f35258cb30740dfa0062abdc92a870 | 395 + ...13b2caf7b05861e0bfdd21a6b7aeeee1d74c308965 | 1001 ++ ...93c281dc6306de58ca77fc5f2970cc6a9037fd2c28 | 13 + ...f6fb251d24446d01d9b9dcc202770a38fce731642c | 1092 ++ ...f107c2454d3e96ce668900381aa1d6a19dd9d59936 | 112 + ...6e0e8ad3d0178879649b0a70b6a2cdc5875bed0f9b | 297 + ...8792d5b1cce48ee495b3a66292b3625e8132a46730 | 16 + ...92910f4a4528cb612933d38d5668eaf88620b6de3e | 403 + ...ea3e729e13cdb543068effa2b4749d76c052213d11 | 13 + ...99b76703567f16078606e1b83fb72ecdcaaa70e3c6 | 151 + ...0802020dec56c88e9130d3346ef2014556a74f9dd3 | 13 + ...a3be1445db4edfa75e884d832440cddfbbb7f18c51 | 112 + ...f849a25607dcfdf0c14e0823f12aaa957ccf96a22c | 130 + ...3d78260cd920b2e90a71df6d3edcebef05da6980f1 | 286 + ...be056dd361b374cf27fde39a43a4decc5953d29861 | 103 + ...7146578e45216dbd97ffbdaf29ca884be29ed6ac6c | 420 + ...9afce64f8e03919ebd66a057831e5635acbf8c4450 | 304 + ...34b32462c11b236794fbbad4b0b546d21727d79a51 | 108 + ...a8534fd94f5583d64438ed884c6fe35ff99a9ba024 | 43 + ...4dc524305d687742d1de4135bf7467c9d68e3f614a | 49 + ...847ca6cf0c9e1e532419f57f6287946dcbda1ccda7 | 293 + ...0088ed050017566884d00311645e3f8667e3cb297f | 108 + ...9ad391147f7db23cb4453cef3d7f2428181ed8f5ba | 10 + ...aadcf5eb2dd699fb87b7f95b24910ab4034d13f87b | 10 + ...4d2a97ce522151b0d3e0292a555273e591efa7c6bf | 257 + ...faf1ccb7cada0d9a7a410667be885d4e75d8f35b5a | 64 + ...438d3bc692f5cd2964bdd8c05d4e5599ad3968f97d | 44 + ...433bba836eea5e4f7fe0df5247baa978df7d220070 | 46 + ...393a41d66c02873b3946f9c3bc21746ef01299079d | 196 + ...5993cb456db72097ecfec1e3bd85e4d742a0b4215f | 323 + ...52c522041d786f6fc7f16febd1057c80f6e98154c1 | 1092 ++ ...ca8be17e883df9b0bd4443ffb33f518ab26ede7175 | 75 + ...c1049302fe514d59a6cf6c7f12c7862114b78d4ff7 | 246 + ...ae9fd654d82fca2c41c01cd5d874ab336547944790 | 41 + ...240524e73b0ff3b0975e4cf98fbefef9386b791fcf | 3450 ++++ ...0254a00b665c1dfafd470f9c018acf5eed23b44fdf | 490 + ...534bd1e7dab05c7c30d2ec9c1048f9cbcf0165507d | 233 + ...0a2485c870a1ecd256f3c8365a74740c4402a235c8 | 57 + ...704b9124a97554291b92c28104e8f6025b33d44fe2 | 241 + ...766bd8a3b6c425d0ad55d5ca425d1f68c69a9181b0 | 169 + ...66e6aca3a9284a1b710b77d924cef4bd8391ed1b59 | 588 + ...ad01eb713ce9ba7e5ac8ae413ea709b74b17ee6ab0 | 23 + ...b05c85d244cae3939edcf20f2078b8a39eb43d95e4 | 4244 +++++ ...9d38f958cf3ad09e0121d2bd3c4db92d33e1cddbbf | 7 + ...b655657d088ef8ff9a7d487fae3349124a80ccbdc5 | 13 + ...81c95a6986aaa6ac699d3d3ddb30153b090e59c9b9 | 313 + ...c7831f9ebe6624092f31f6915489e008f6388a8d80 | 1073 ++ ...97616dfeec681b5a4af4e8ce84918f1b71092e0a05 | Bin 0 -> 6188 bytes ...31d42f075c18e91f7da37f5b7332c665b1ea183e68 | 26 + ...9c62b754300c85932f47d99b300e0f46864acda199 | 457 + .../page-config/config.json | 20 +- .../Detailed_Views/MCM02-NC SORTER/view.json | 2754 +-- .../Docked_Views/Footer/resource.json | 17 + .../Docked_Views/Footer/thumbnail.png | Bin 0 -> 6188 bytes .../autStand/Docked_Views/Footer/view.json | 3260 ++++ .../Docked_Views/Header/resource.json | 17 + .../Docked_Views/Header/thumbnail.png | Bin 0 -> 1183 bytes .../Header/{Header => }/view.json | 211 +- conversion-report.txt | 4 + 247 files changed, 120233 insertions(+), 1560 deletions(-) create mode 100644 .resources/002b7221d230af4734e860a74cb003fe122016c1fbbcf3e1000c04cf89081298 create mode 100644 .resources/01d66e4c21b2de528f75f2acf8db420845bf639833006fe5177c216aa6c8e43d create mode 100644 .resources/08381443ad380f515be7f2569d998f874aab8701beb5aafc2766b467934c1001 create mode 100644 .resources/086a6effd72f2eaf808a75695349c003328391ed923af2573be296fdf63304aa create mode 100644 .resources/0ad8358a46168e951108455cdf8c94a398d124d5416513117ace4498c1a56947 create mode 100644 .resources/0af5e1f2e43aa7be3ef3b2cd809c0ff97d6fad94dc8004656fc2d0106ee6e801 create mode 100644 .resources/0b0d00ed6ff37b82d0b9b46681a5edfc74084d02fb48f2b25262a050ff67c586 create mode 100644 .resources/0c85cabab848f164ec5916d87947a5b6aeb45687b70fcfa869c3c3b363bb4d36 create mode 100644 .resources/0d5e6d571ad9b699e26369135f1e0b0aa2c855318f6205a2382c8296c307a6e9 create mode 100644 .resources/0f529dd3b96ad8d11b38e1ee17111d89976750a3f44ad21352a708d2769be144 create mode 100644 .resources/11e8c8b078a1b6f6c885c959ed71ec339a04816bd7fe8112c1a0ce43903c4225 create mode 100644 .resources/121f6e33f2e5bf6adbbca771915c07ed4bf254913a47341867b452ef12ec8540 create mode 100644 .resources/129159bc082aefdfb2ab2462ba326e1bbb2827530cea8bc9db3a356a3e07179c create mode 100644 .resources/12d005f2a35ff8534d3fe732de2734d7b675c828d0b3279b9d9818265c8ae343 create mode 100644 .resources/1320254589a36f136e1f8896c6c0bbe93e0836493b6a8c48c63fd0e2656575c0 create mode 100644 .resources/186d77e9c77aebef6e716fb91a8c780fceabf3816ae56c29a6d561f5e2bb4b19 create mode 100644 .resources/19e66b3f5221b50bde9f0bfd8261b337e9bb89a3092cee1a185f13d8ceaeb0bb create mode 100644 .resources/1a14099eb1a73658132ba28a1bb1604312364452f944490e33c723cea3be8b84 create mode 100644 .resources/1bade7893f8557a49e3f1c0cf688ee58f4caa117427dabde4682f87cd9259a76 create mode 100644 .resources/1ce69fd3e546bdb830be2ee98bd9f4947f2079cb276fd5882f41a6be9a2ea76e create mode 100644 .resources/1d8501163f1388a4681dafd83d7b05fbab2b455cfb4dbff40a1b0f75d9d83fb6 create mode 100644 .resources/1d90ce28583965db4844eebba8ffc73397ca5ddc41377ac4381f9c030f1229a4 create mode 100644 .resources/1eb2749f075f5c971d7c1f38dc87308891e1b5754e3eb578298eb615368ef2ad create mode 100644 .resources/1fbe5083340293eff7c4a91ee4f02346dd403337bd980d1ed9b2c58124b90b12 create mode 100644 .resources/21b1c29775009050a6a3bad2db69d7f7406efeef877ce0d77602979af9373a7c create mode 100644 .resources/224615fb9c98d6e86e29c0fef88796373c1f8be3838e2c3284ed1bc4bc1d7e00 create mode 100644 .resources/22ba155c31da33ace3663440ef2d87ea12f14185bf99adac0ea57db0af90bfd8 create mode 100644 .resources/23ccfcf82511fed8b9a7515257f517b4ff365e6ecdbb65751e05fcc13bc66881 create mode 100644 .resources/248a9ef42da6345b1b06f1dc5873d8e59f41442427c21948a2bf7deaecae7831 create mode 100644 .resources/25e771e0117ab0c5bdaf4779f9db6e42b614e5c442420b3ef2bc2ce3df7830b3 create mode 100644 .resources/295c8403e00dabfc746e93cf216157199feb8db414bcdebb0de6dce054278dc4 create mode 100644 .resources/296ec4f70ae24bfed7e13d578602e2b7a3b3f9e22f425f12c2382d39a5423b97 create mode 100644 .resources/2a5caa53738f67380789ee81cf37484c1271d5dc8dd1bcecd1892051c008fb30 create mode 100644 .resources/2f86ca204a5c841cacd327198b8f5e6b16a8d215aa08765e966fe6150aa94bcd create mode 100644 .resources/30a96bd63380948aab8ac8b76b10ba5cb350539f734af24cf66f8b1f8cab2bc4 create mode 100644 .resources/30afa22cb8bc2c85c801a19bdc6db97053670a8cde30245eadd98d3240685807 create mode 100644 .resources/3112d4b4bde4180f2aa3ba1508337325a3d1c1238e5edf5bd7ad801516d0c3c6 create mode 100644 .resources/322c9a5fa05fdfd83b125be19c2a764dff894e44967e652b699bc5ce9c936fe1 create mode 100644 .resources/322e1238c0a626228737b6a6be571cdc581c3b83d64debee8930ca265d5813aa create mode 100644 .resources/3335fe09460960476d91602865d47d1eaf58d541fe0fd3bdae17f5e7d041c5a0 create mode 100644 .resources/369c41092b804afad9f8d51446a6e7a3be9028fa7458c9c284aebd605409019a create mode 100644 .resources/378b924c2c2a4f8fb55da93dbf03a59158982b1d01cecec1182cb468a777d9bf create mode 100644 .resources/3968275e0d5589471426a988c7f8c82d50053c0dce0bacd4619ac7ebbf1d6792 create mode 100644 .resources/3ab807518c7993b31e38fbe98cb0acfc7550c00d097824db3473678739130ab4 create mode 100644 .resources/3aec308817a72ecdad90d6061e27025b6599611fa0c031259329cc405d6934cb create mode 100644 .resources/3b38d1d2b51471ae53f5b4c9943b5cc0da65edcf9b49da7fd0349ee753fd6dc5 create mode 100644 .resources/3d18eaae8a62afcc2038659a5a03350a62381e42cd40a5f128d6893ba710f027 create mode 100644 .resources/3f573caed8ff595829ea5ff2af8d9ce03f13ac90a8e9738f33d0a0d585c7de74 create mode 100644 .resources/406c9715212bd7420f5c110c3acf369f4f10b61b42c512db4f21ea9bd9a7b8d3 create mode 100644 .resources/409f5a51f30eacf96be24db04f44c575783e06e0c719f8558d6c6cac8b2d8fd9 create mode 100644 .resources/41e36512aef41a4810b4094209598be84b707979d4b8cabf16a6152e615b44ea create mode 100644 .resources/47661ee6590e5d5ffeefe03349e09ebfea92583850be43c9c64b1c40075a8909 create mode 100644 .resources/47a0bdd48c02699603ef878ecc26cdc62120caec544b2e78676112f13199e15a create mode 100644 .resources/4912c71b763616560a60666775287549eae7b53e6657483cd7fd80792d42ba21 create mode 100644 .resources/4a09061ecd72294b5eeaf0e445343d97b139ac5373f0b9402295c61a3320a16c create mode 100644 .resources/4a71a4e6794c6fd99697d927a8f0fe496daa86b1c0599e64b7d86cb5a45d8cf0 create mode 100644 .resources/4a9a483e98241b7ced748ddb6df9320e708a6bc299762e5e6e4551ca02209c8e create mode 100644 .resources/4bac23adea4aa448b68092806e553489f813a5f4128bc147b8a175a756fd3e57 create mode 100644 .resources/4bdd9a1373c775c1f848c75e73dfd6af21067986d76b1c245da21f733cb686b8 create mode 100644 .resources/4bf17c38923dcf173637fc3316c6dd436989ca566ae4b4cfb9b9b82765ce7079 create mode 100644 .resources/4d58d77f732a0205c177dc7d817419977f55ce172752b64f9caa0e9630d346e6 create mode 100644 .resources/4df21545e34eae9d00b424611007aa34d3aa577d2a41a1760d152ef180cccf98 create mode 100644 .resources/4e36ff0e8416ea1d19aaf2420cb3e458afbd3f91331ed14f7fe38cdc72a2cd90 create mode 100644 .resources/4e8cd05f5087d60df1b9a2b06300087c48a921c32a351e0b20988c3b4751bfe4 create mode 100644 .resources/4fe9aa0e6014156977edfe9b57973bf88ccc364f959332151105929db06f7279 create mode 100644 .resources/50205d600c4f1edc2555df0ac560cec71a5d146de6a2fc6b9aa920f8f2c304da create mode 100644 .resources/515cc93a636dbcce4e41de0e7ca009ee4ddd167e81be93450e0ee4e28d1b1657 create mode 100644 .resources/5186fea8de8f5f2bd557f83b7f9f7a2018a5d733f767cb57e5e7b1f4bb2825ff create mode 100644 .resources/52340c1f62d299de9e3d565821025ae372a810ae421661be31a5e53ecced5b4c create mode 100644 .resources/55cb77098cb1791a316acb0c1a6cc51f9044c8a6090e14da86d7bc6e33b37152 create mode 100644 .resources/560f423574a3690f0eab47372a016ce7a371d53e1d373ba7c283272ee12825a9 create mode 100644 .resources/5612e8ceaeb36017686fa929749142983079448cc4bea35f68b705f67e0fca07 create mode 100644 .resources/57fe1cd3b9819c30321b7858c95c24c835a7634ee6d2521d16906f20a974e5cc create mode 100644 .resources/5875fb704c0899784be0b722c0017a8be722a720bccb621eb0e7eec997605172 create mode 100644 .resources/58af92c1d4d4d6485761cc37d4b2bf663960af70869d03356bf08a5913ce4482 create mode 100644 .resources/58cf0f73055a24cbe4afd01d525e591205c9363d4671ac73c4cdbdcccffc6eae create mode 100644 .resources/59309a6d0ceac828b9e66194f0522d5b86f2c42e78b21b234af3076462250b4e create mode 100644 .resources/597068b20095b58444dfd835a85c31b8c4b8c7c638804fd9e6b6da0cc993725e create mode 100644 .resources/5ad3e4281e8c6d233aa13123d8b0e1ebdc95b090ac45ef18720edc345fa1e226 create mode 100644 .resources/5b6402b0856cc9b3e7f42df52674de423e01f14299efec0d85e5c67a1fa0e351 create mode 100644 .resources/5c5e7b3aaefcab42416ac34f275e3ad2ed3cef7d9d797635e1a4880a7f16bc9d create mode 100644 .resources/5c8fc404417622a301b77571939df400d97b581c8ab7c8e8eec87677b38efa12 create mode 100644 .resources/5fd2a17201ab199dcdc0ae4439f1fd837d721335d5a66314792da691add3da8b create mode 100644 .resources/61045eb8fb7420134e78bfe2c7f152765a6cd713a73d39afa47f4d5ef5b96499 create mode 100644 .resources/63321feefd488902852bebcf28d4072fbef065693f8d9802229d271bcd48c6ad create mode 100644 .resources/6511bf15e1367fd94d08c69ef2017afda6b8abf75bff84826bca79e61a3acecb create mode 100644 .resources/66f7fcdb6fc442dac30292bb0d87cfc0b7cc2acef452fd1ed16e642bed1ddff7 create mode 100644 .resources/6993ce855a4083afa7738be88ff4847cd2c7b3e5b67a55aaf19efbbec4299a47 create mode 100644 .resources/69a0f1c8c1174057096fab6e75610beeca0680a26be26a9033336cbedcacbfd0 create mode 100644 .resources/6ae7e10baf7e57a00159b5f36371e7276433097292e3685a0cd25ad7901519a0 create mode 100644 .resources/6b846e67ed47e87c0171434b29407f27c18277fa031e40686aab70185c3c4efa create mode 100644 .resources/6c3dfac11ecefcb1bdcfaa1e73341bc020a4426a4adbf382f82812887ba5417e create mode 100644 .resources/6ccfc01a8e64c6fbc013b201010a3273755d8d4e090a792e16ab662ef31b3031 create mode 100644 .resources/6dfb903a6a996267e77063dbbc0fb6adbf26de23ff509aedeb5d2372791fe42a create mode 100644 .resources/6eb217cfaef275db08b608cd931d1ef78941e5135b59ec81ab7d4fda7612eba3 create mode 100644 .resources/6f09fcfd0835066f388bfdd2f5cab0be2b1ff9b6f1c3bd9ce20ac34f6aa91784 create mode 100644 .resources/6f871948781c6bee2a2a9bdf77120185f9a659920b0fbdda9819ac6b554285e4 create mode 100644 .resources/6f8bc9136f57196c124e4a8fe1e4d1c6dbb9bbca67bb1aa721b929a0e5f4a2f2 create mode 100644 .resources/71a967ac9cb07505dd2dbd64f1dbb9101fc923e9ee2e137bc2b45b87f41626bd create mode 100644 .resources/71debdaff3c573977c6dd50ab3e36aef46fff856ea293aeb0130e901b2db6d53 create mode 100644 .resources/7217fe8a224d6e380c577cfc47fb874e0e9973f8a0a74bf91b9d5b089e10e98a create mode 100644 .resources/72dce1db3100659b2d0ed960e89175d0bf4ed1ea8de999fe4538c8e2dc414f0a create mode 100644 .resources/73f4f0fa3eafc761d1673eba3174e978ab55761a0912ba2c982162372227b1b4 create mode 100644 .resources/73f7954d7da2b23bb30a8a1651569f1779270435946e6e0e17c9b43e2998e62f create mode 100644 .resources/7453f79a163e8b92f338238be241f378b60d1d49c70197979bdbc8973326a90c create mode 100644 .resources/7535d2e816561e2a5a15dc8eea7e282beda324eacc031a1566b2c8f4683b76d0 create mode 100644 .resources/784661f0d2ba96a754becb435424fa3d38d747181b7c141aed5288e447f7e316 create mode 100644 .resources/7a71b1f3831b8d00a450fbe69923dfda1da4af1ec15f26871bc8d842f3f6a4a6 create mode 100644 .resources/7c2470fb6d223918b6f8d8edf50e737e37bbb9c847c851a6b93d85d34c231899 create mode 100644 .resources/7d584ddfa3c0ef6496248230b334a487997c3b6635ed095b37d053604e7a9000 create mode 100644 .resources/7db5e65317e04cb83190b7f6b1ec0120b91d69fd010d796a97421ca11118abea create mode 100644 .resources/7f010c0d4439a7d002cf798216e15157c5c90216b052ad5a3b584caa91ed86d2 create mode 100644 .resources/7f38f3eab888f8d3ea06ed18f9ddd07e7d6f67820a52840a06622df1c8b454a7 create mode 100644 .resources/819fc9f77d8943f886e855c457bd949420be7223bdc5ce9b66bae8a56363ee21 create mode 100644 .resources/81f0baaff79c53ef241c49df404292d68a3bfd1b4bee66d3324d1236602be8a5 create mode 100644 .resources/826eff61070943343853a7c315822bef2a1f03f94e0f23e9eea6f60008db95aa create mode 100644 .resources/84aedd34f0b4297bff5187ba27bc8661d271deced8bd8fabacb076fd9f842512 create mode 100644 .resources/84f5c37c55bd967cf6a7d7276347bfc07afd5718098a6064d63fd03b56351499 create mode 100644 .resources/8818577f7792c51ddd6c876ea96ec60490820c0c6d0db77128d6d98bc3ce240c create mode 100644 .resources/892d5bd99d78c4c7f40ad2ab1fb5e70917195b101f135a777083469becff1372 create mode 100644 .resources/896ce58342ffe4acb15f1357071f315ca507f7f7594b2f105bd49dd413fbc7e1 create mode 100644 .resources/89c7c14bb7a26c455c47487ed30c357a43744e508c00c68c27372c1d1cf460d8 create mode 100644 .resources/8af3a0556ef5e21e769f8db0b48ed503fabf3fb3597841ac8397a64d6a61fe27 create mode 100644 .resources/8afe0f9320b1a4adbd6c1440a3eff867ab21cbc8bd240c56dbe5582dbe757665 create mode 100644 .resources/8be3eb3237c4d98fda64b6e1f9d03137778f3eef8195498bff95525a7a3579ec create mode 100644 .resources/8d545612f2b70d26dccfb947e6939262bac1052d3a7de4a79fe5d7d280339641 create mode 100644 .resources/8d802b0b50228ed2565b1bdb92696ac720824686a02a09d851d26bb4f6eb8f29 create mode 100644 .resources/8df077407e5333e1bd70e10b0e561d01b43246d513cfaa5843443a9c22742da7 create mode 100644 .resources/8e3469fd4c640edd3064012a7b2b8c3281b08821c5391751a8a9b0fc9e012a32 create mode 100644 .resources/8e34859d5b5ac4d11e2e056d78d79dc11ecc603c9264784419c275669036ae95 create mode 100644 .resources/8e9985a867c191f599d77616c2a75c416f5464592df6ec57e70f6cc107fd308f create mode 100644 .resources/8f988db83bca2ea2ca9baff5593986509c90e51e8b26c12db018229bdf3f653e create mode 100644 .resources/9066a25f4a84aa578bc81632185caa95c8e2acf670e1e0b26c0f47d0250c182f create mode 100644 .resources/90f85261c8ded8ba8dd6c9827ca0438740f38536663cd8e9a84403688673b308 create mode 100644 .resources/93fbbd2d3b66102297e3d2c77a1bf8581befa322bbe4fbc2f0e10e8be31a422e create mode 100644 .resources/94099e62b52428a373d483f4bd0cccf528e64f8d09a15442fd663efdfee0c333 create mode 100644 .resources/941ecaaabce15435aeb6d90b1360b0851f35a02144277c4515b6a8e4aa586011 create mode 100644 .resources/96b898945159ce7fbf3ed6dd3cb55421597c58866e0202a76703a2c97df2ef70 create mode 100644 .resources/973105551a2cc0a1a26e65ef0e2014c871a741065272c055d18f6eb4c0dc8232 create mode 100644 .resources/97d6f37525c72f9c5ed23dcc2f8605c93adc6dd2738fb70e017217d9efe818fe create mode 100644 .resources/9d6a2ea9b8dc45d3a47dc74a84b189c914940f60615ab4d397f8f7e5f5ae4186 create mode 100644 .resources/9ee66303347dbd78d4cc226eaaecc343b8c77448bfd07f3e7329f70fa740824e create mode 100644 .resources/9fb35103d4f3e2a545d47d8eff91688dcff3e3be5fd50a11a1a1254e0407542b create mode 100644 .resources/a01e996ef008915f4edd4d964665d955a58204342a0a097867399b5b5051f46f create mode 100644 .resources/a05e5ee1ec359b038e5d86c6df02dfb979c46c35b3d85f81e679f67c326331bd create mode 100644 .resources/a2f1631184ec6945bd4b214bd779f529f5a6088344754ba8064759b2648c096b create mode 100644 .resources/a2f3525ec1ef97219c689f285c807b9d853c80e42fd08c4793bb9ca218900088 create mode 100644 .resources/a428a5a22585f00356ab98547990782bb217aae572a5630c40a2507721b85b11 create mode 100644 .resources/a48e961115578e539b88fe2bb7529b50242b68ba99553ffa4033a412cbfe8817 create mode 100644 .resources/a53ed87e14e0e6c8d483fb685926091fcf848ec2236629b37a9d18b0d921e357 create mode 100644 .resources/a6a6ba3ca5588fcf79d1266b359c653c3d482eb0272fb2869c66fa0227f2bdce create mode 100644 .resources/a6ac2c3e3630f2ce032a7ffbd751876e557da860562725e6cac5d0266f5d964a create mode 100644 .resources/a7a51bdab4f2e795feacb82d3bd8c08d4f3facde4aecd62a8d8a4a87858b3bac create mode 100644 .resources/a7c485e5272f2f907fc261fe574588ebd649716d6be8a4c999d01078733369ea create mode 100644 .resources/a7dcacd2e0ed258203104a348a431f51dcfb6b12e96fcf6a8045b296f881a3bf create mode 100644 .resources/a84a4864a7b228b6dfa6a7bba07262a089752a995b189b9101aafd7d2483de02 create mode 100644 .resources/a8c43be0f1607c74bd78fffec0fe7b084efea8bf1bb0a77c82781fcda4375c90 create mode 100644 .resources/a99ad7c52e9d24380f63c5a041e31236c41dc9f15185928c7c3cc8f633c48c85 create mode 100644 .resources/aa836e4f47a5b2b0af024080cfd8736c8b16812b5aabb7490cfae33978dc35e3 create mode 100644 .resources/ac1d56d60ffc4b972bcc058477c6f2f0894e393a4a0825ff55655b4367f0ae32 create mode 100644 .resources/ae3072a006fe8ffc01840dae90829cebb025847d277dab15e3827b7514822025 create mode 100644 .resources/ae6f15937671d219adbf9728d86fb3e70a8048bd62605655a3ed01910e20adf3 create mode 100644 .resources/af805333dcd041a41ed50544ed1f23151b1ef69b2ed9148a981e557346027959 create mode 100644 .resources/b0a81bb3dfa0a0904783d34085ada9232a8423dc4c8e0ddb4da1368387e643aa create mode 100644 .resources/b1969eb2cf2dbea4302e342fedfe3aa3f0205500cf903a401de03a437f128fd0 create mode 100644 .resources/b1cc309fe47cbff1d761ffb3e6112c88b1c69d9e879e50fdc3d6aed78149fe98 create mode 100644 .resources/b2329aa61c513199edddf62e45f30796c81009c5c79cf0a69a35511a1739fd8b create mode 100644 .resources/b4db0e9a9baa9e386a541c82db1e230e82d245e83235800ae0d156591ed75783 create mode 100644 .resources/b5b39c7f1257c074180e04f0f723b59b1d618454babbdf9581a6fdae60c87eaf create mode 100644 .resources/b646c9c085c9bcbffd2d6abf9bb617aa87ec1f198cc0b145d36dac8ae49b2efa create mode 100644 .resources/b9096d493b10d4ac64e5363c7c378f76daf952b742df59574c55625080b2f37e create mode 100644 .resources/b925d000320ca364358c980500a592c59bc5d0145edb68ec7a6323754f252376 rename BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/Footer/view.json => .resources/b98b0c6e1aa5ba7ac2575c8990b9ef46361d857e49c5e495b1a39b5a33ba5a2e (100%) create mode 100644 .resources/b9d2f87f39bc63ef3bec45755e5351ca51c5c3dd1ef9d5c4c6397d3d1fc8a6a8 create mode 100644 .resources/bc9ab1b93c7a6e61b1ae7ea27e33dcb031811b7a628e5f5a36f4df8082312bf0 create mode 100644 .resources/bc9c09b323a9f752f615aba7b473b5f072322bcec5dc016febcc1d3b8aac8fcd create mode 100644 .resources/bfc21a9ec6c32f571e10c330d6d4393f4e07f0c483a6f3a2eb71882040e88585 create mode 100644 .resources/c04f510f8e9c341bb0d3485b30a4bac6f515f4a132f136ac3b2a4418b6632295 create mode 100644 .resources/c22ac63abfb9a7a635184a1f67861d19f994dc7b218a3c365fad7760cd5681bc create mode 100644 .resources/c2601e72150a6be62816682c7c4ce887fbb2e6cbae4cb12c26ed53ec3e51cd7a create mode 100644 .resources/c27f57d68cfe254040fe001786c0065388a95bb25e09abd29078938c4ba2b573 create mode 100644 .resources/c37d7b84dd70a0c30bb90512e1539dd2170bc9947d9f22e959fb1b4f4348923d create mode 100644 .resources/c4064c23b6b45cbe8774ccb47193f221dbd7772c5650a9566eb015c4266e70eb create mode 100644 .resources/c4b11a62c77de72749d2fac91042026636c3e6bcf2efce58c4987728e630e198 create mode 100644 .resources/c5cbebcb426fadfad2bbe3758efd63702a7eea017e71775625530923b8965af6 create mode 100644 .resources/cb9355f102afc2ddd48731bb559f0e3fcef841852500a9c7f414611a79d7ca6c create mode 100644 .resources/cbbbf2ebe8e1ead0fd196d4aab6315f5af83ee2057937cbe430dc68b795d01ba create mode 100644 .resources/ccbf71f248b4cddc0c5774706d4957edf57c579eb68976bd5c7ef31b669713be create mode 100644 .resources/d0d272fbc909e084c41f6cf5cf4192ecd6f35258cb30740dfa0062abdc92a870 create mode 100644 .resources/d2e3aa36d1ba6b72820b4713b2caf7b05861e0bfdd21a6b7aeeee1d74c308965 create mode 100644 .resources/d30f506ea841278c9262ac93c281dc6306de58ca77fc5f2970cc6a9037fd2c28 create mode 100644 .resources/d3bc2c48f8b4977f4af45af6fb251d24446d01d9b9dcc202770a38fce731642c create mode 100644 .resources/d3f447c13f858ee593d553f107c2454d3e96ce668900381aa1d6a19dd9d59936 create mode 100644 .resources/d6d5e1b875627a31ba89016e0e8ad3d0178879649b0a70b6a2cdc5875bed0f9b create mode 100644 .resources/d7708674a0c68b2602557b8792d5b1cce48ee495b3a66292b3625e8132a46730 create mode 100644 .resources/d7f9d5faaeddecd6dd07a892910f4a4528cb612933d38d5668eaf88620b6de3e create mode 100644 .resources/d8531ce71f5d55eedf1488ea3e729e13cdb543068effa2b4749d76c052213d11 create mode 100644 .resources/d86c9c80184cca595b562b99b76703567f16078606e1b83fb72ecdcaaa70e3c6 create mode 100644 .resources/d95848c2a566e004940b840802020dec56c88e9130d3346ef2014556a74f9dd3 create mode 100644 .resources/da58916084ff6d2ba3f6dca3be1445db4edfa75e884d832440cddfbbb7f18c51 create mode 100644 .resources/dd587d3408d7038ad48dcdf849a25607dcfdf0c14e0823f12aaa957ccf96a22c create mode 100644 .resources/de3495c33eb729464cd6f23d78260cd920b2e90a71df6d3edcebef05da6980f1 create mode 100644 .resources/e0745a3ffe1729baa0ee83be056dd361b374cf27fde39a43a4decc5953d29861 create mode 100644 .resources/e0b991fa7c4dfa142453747146578e45216dbd97ffbdaf29ca884be29ed6ac6c create mode 100644 .resources/e0e7e09a9c43cc199b14ee9afce64f8e03919ebd66a057831e5635acbf8c4450 create mode 100644 .resources/e166b5e7752ed9af121d6f34b32462c11b236794fbbad4b0b546d21727d79a51 create mode 100644 .resources/e1b97afca00c0d8bcc8796a8534fd94f5583d64438ed884c6fe35ff99a9ba024 create mode 100644 .resources/e1e9cb08f09307c6f146984dc524305d687742d1de4135bf7467c9d68e3f614a create mode 100644 .resources/e20ba159c1d89575d1b263847ca6cf0c9e1e532419f57f6287946dcbda1ccda7 create mode 100644 .resources/e2f8ac4facf19c3de66cd70088ed050017566884d00311645e3f8667e3cb297f create mode 100644 .resources/e30811e0d009c98f34a1529ad391147f7db23cb4453cef3d7f2428181ed8f5ba create mode 100644 .resources/e4ee7a3a294388e22ed40eaadcf5eb2dd699fb87b7f95b24910ab4034d13f87b create mode 100644 .resources/e81ba7121edef42ef349574d2a97ce522151b0d3e0292a555273e591efa7c6bf create mode 100644 .resources/e83c5faa1d6beb5333e40efaf1ccb7cada0d9a7a410667be885d4e75d8f35b5a create mode 100644 .resources/e9663f9a6bfbb0302408eb438d3bc692f5cd2964bdd8c05d4e5599ad3968f97d create mode 100644 .resources/eb3d0835779c03c59cacc8433bba836eea5e4f7fe0df5247baa978df7d220070 create mode 100644 .resources/ed29a16c1d7312f66b9bf3393a41d66c02873b3946f9c3bc21746ef01299079d create mode 100644 .resources/ef938b2a07893e216e272e5993cb456db72097ecfec1e3bd85e4d742a0b4215f create mode 100644 .resources/efcdaa177efbd2ab3afd7752c522041d786f6fc7f16febd1057c80f6e98154c1 create mode 100644 .resources/efe2c62559adb70420a86fca8be17e883df9b0bd4443ffb33f518ab26ede7175 create mode 100644 .resources/f1bdfce353418dd494505dc1049302fe514d59a6cf6c7f12c7862114b78d4ff7 create mode 100644 .resources/f2ca90d03a77d7c61f6967ae9fd654d82fca2c41c01cd5d874ab336547944790 create mode 100644 .resources/f32ef7a52e416470388fb1240524e73b0ff3b0975e4cf98fbefef9386b791fcf create mode 100644 .resources/f41534f390938ac58790720254a00b665c1dfafd470f9c018acf5eed23b44fdf create mode 100644 .resources/f4873ded43213f344d8880534bd1e7dab05c7c30d2ec9c1048f9cbcf0165507d create mode 100644 .resources/f5d5b3fc3be0e8f46d02700a2485c870a1ecd256f3c8365a74740c4402a235c8 create mode 100644 .resources/f6a27c9b8c48bb0587df49704b9124a97554291b92c28104e8f6025b33d44fe2 create mode 100644 .resources/f8dd5849cbaf59443404e7766bd8a3b6c425d0ad55d5ca425d1f68c69a9181b0 create mode 100644 .resources/f9b5bc7ac6d3f64b63cf6366e6aca3a9284a1b710b77d924cef4bd8391ed1b59 create mode 100644 .resources/f9e495b56234135e882c24ad01eb713ce9ba7e5ac8ae413ea709b74b17ee6ab0 create mode 100644 .resources/fad1c687459ea36dfc5f14b05c85d244cae3939edcf20f2078b8a39eb43d95e4 create mode 100644 .resources/fb58f84db080c110adfc319d38f958cf3ad09e0121d2bd3c4db92d33e1cddbbf create mode 100644 .resources/fbb12b5f6b54c6385b4871b655657d088ef8ff9a7d487fae3349124a80ccbdc5 create mode 100644 .resources/fbece6a5c417baaa418f3e81c95a6986aaa6ac699d3d3ddb30153b090e59c9b9 create mode 100644 .resources/fcdc32cca3bf6bd7e3b6b1c7831f9ebe6624092f31f6915489e008f6388a8d80 create mode 100644 .resources/fd38c85b4fe815c20aac8297616dfeec681b5a4af4e8ce84918f1b71092e0a05 create mode 100644 .resources/fe0644f5c3ac02de9c1f9c31d42f075c18e91f7da37f5b7332c665b1ea183e68 create mode 100644 .resources/fe109525974c059498bbbe9c62b754300c85932f47d99b300e0f46864acda199 create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/resource.json create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/thumbnail.png create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/view.json create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/resource.json create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/thumbnail.png rename BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/{Header => }/view.json (79%) create mode 100644 conversion-report.txt diff --git a/.resources/002b7221d230af4734e860a74cb003fe122016c1fbbcf3e1000c04cf89081298 b/.resources/002b7221d230af4734e860a74cb003fe122016c1fbbcf3e1000c04cf89081298 new file mode 100644 index 00000000..a2dd6629 --- /dev/null +++ b/.resources/002b7221d230af4734e860a74cb003fe122016c1fbbcf3e1000c04cf89081298 @@ -0,0 +1,1092 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "LaneStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}", + "where": "1\u003d1" + }, + "queryPath": "Status/LaneStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "lane", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Lane" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Lane Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/01d66e4c21b2de528f75f2acf8db420845bf639833006fe5177c216aa6c8e43d b/.resources/01d66e4c21b2de528f75f2acf8db420845bf639833006fe5177c216aa6c8e43d new file mode 100644 index 00000000..a698d92e --- /dev/null +++ b/.resources/01d66e4c21b2de528f75f2acf8db420845bf639833006fe5177c216aa6c8e43d @@ -0,0 +1,10031 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "MCM02" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "expression": "\"http://127.0.0.1:5500/MCM02.svg?var\" + toMillis(now(1000))" + }, + "type": "expr" + } + } + }, + "props": { + "fit": { + "mode": "fill" + } + }, + "type": "ia.display.image" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "direction": "column", + "style": { + "overflow": "hidden", + "pointerEvents": "none" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "page": "/mcm01" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 0.0333, + "width": 0.0646, + "x": 0.0177, + "y": 0.6167 + }, + "props": { + "primary": false, + "text": "MCM01 - FLUID INBOUND" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "NCS1_1_SOL1" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.1724, + "y": 0.4556 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL2" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.1891, + "y": 0.4389 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL3" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.1891, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL4" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2099, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL5" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2099, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL6" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2307, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL7" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2307, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL8" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2516, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL9" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2516, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL10" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2724, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL11" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2724, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL12" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2901, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL13" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.2901, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL14" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3073, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL15" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3073, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL16" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3281, + "y": 0.4713 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL17" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3281, + "y": 0.45 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL18" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3453, + "y": 0.4713 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL19" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3453, + "y": 0.45 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL20" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3661, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL21" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.3661, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL22" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.387, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL23" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.387, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL24" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4078, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL25" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4078, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL26" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4286, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL27" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4286, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL28" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4531, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL29" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4531, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL30" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4724, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL31" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4724, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL32" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4932, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL33" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.4932, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL34" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5141, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL35" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5141, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL36" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5349, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL37" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5349, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL38" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5521, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL39" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5521, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL40" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5698, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL41" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5698, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL42" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL43" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL44" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL45" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL46" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.6115, + "y": 0.4713 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL47" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.6115, + "y": 0.45 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL48" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.6323, + "y": 0.4713 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL49" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.6323, + "y": 0.45 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL50" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.649, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL51" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.649, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL52" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.6661, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL53" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.6661, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL54" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.687, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL55" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.687, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL56" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7078, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL57" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7078, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL58" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7286, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL59" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7286, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL60" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7495, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL61" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7495, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL62" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7703, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL63" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7703, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL64" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7911, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL65" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.7911, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL66" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.812, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL67" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.812, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL68" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8328, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL69" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8328, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL70" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL71" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL72" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL73" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL74" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8703, + "y": 0.4398 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL75" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.8703, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL77" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.887, + "y": 0.463 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL78" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.9036, + "y": 0.4537 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SOL76" + }, + "position": { + "height": 0.0204, + "width": 0.012, + "x": 0.887, + "y": 0.4389 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Solenoid" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_EPC2" + }, + "position": { + "height": 0.0278, + "width": 0.0156, + "x": 0.0109, + "y": 0.5028 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/EPC" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_EPC1" + }, + "position": { + "height": 0.0278, + "width": 0.0156, + "x": 0.0099, + "y": 0.3926 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/EPC" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.1906, + "y": 0.5065 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_14_SIO1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.137, + "y": 0.3787 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SS1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.9281, + "y": 0.4019 + }, + "props": { + "params": { + "tagProps": [ + "System/MCM01/Station/SSPB/UL6_1_SS1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/SS_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.2146, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera" + }, + "position": { + "height": 0.0278, + "width": 0.0208, + "x": 0.9688, + "y": 0.5074 + }, + "props": { + "params": { + "directionLeft": true, + "forceFaultStatus": null, + "forceRunningStatus": null, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Camera" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_JR2" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.0792, + "y": 0.5 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_JR1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.0802, + "y": 0.3991 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_VFD1" + }, + "position": { + "height": 0.0241, + "width": 0.0135, + "x": 0.063, + "y": 0.3981 + }, + "props": { + "params": { + "tagProps": [ + "value" + ] + }, + "path": "autStand/Equipment/VFD" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_13_VFD1" + }, + "position": { + "height": 0.0241, + "width": 0.0135, + "x": 0.1068, + "y": 0.3981 + }, + "props": { + "params": { + "tagProps": [ + "value" + ] + }, + "path": "autStand/Equipment/VFD" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_14_VFD1" + }, + "position": { + "height": 0.0241, + "width": 0.0135, + "x": 0.1411, + "y": 0.3981 + }, + "props": { + "params": { + "tagProps": [ + "value" + ] + }, + "path": "autStand/Equipment/VFD" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_13_SIO1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.1031, + "y": 0.3787 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_SIO1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.0417, + "y": 0.4 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_12_BCN1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.0818, + "y": 0.3778 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_13_ENW1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.1057, + "y": 0.4546 + }, + "props": { + "params": { + "tagProps": [ + "value" + ] + }, + "path": "autStand/Equipment/Encoder" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_14_ENW1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.137, + "y": 0.4546 + }, + "props": { + "params": { + "tagProps": [ + "value" + ] + }, + "path": "autStand/Equipment/Encoder" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM2" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.2635, + "y": 0.5065 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM3" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.3172, + "y": 0.5065 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM5" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.5078, + "y": 0.5278 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM4" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.4, + "y": 0.525 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM6" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.5797, + "y": 0.5269 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM7" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.6552, + "y": 0.5259 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM8" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.7302, + "y": 0.5259 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM9" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.8021, + "y": 0.525 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.2323, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.2698, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH105_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.3057, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH107_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.3688, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH109_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.4063, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.4432, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.5177, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.5521, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.5896, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.6589, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.6958, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.7349, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.8036, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.8443, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.8818, + "y": 0.2296 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.8812, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.8422, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.8057, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.7297, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.6885, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.6542, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.5813, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.549, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.5115, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.4437, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.4068, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_EN1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.3682, + "y": 0.6722 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.6009 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.5843 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.5676 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.5954 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.5769 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.5972 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.5787 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5021, + "y": 0.6 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5021, + "y": 0.5833 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5021, + "y": 0.5667 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.5981 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.5796 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.5963 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.5787 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.5667 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.5833 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.6 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6859, + "y": 0.5806 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6859, + "y": 0.5972 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.5796 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.5972 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.7948, + "y": 0.563 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.7948, + "y": 0.5796 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.7948, + "y": 0.5963 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8318, + "y": 0.5787 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8318, + "y": 0.5981 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8693, + "y": 0.5759 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8693, + "y": 0.5954 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_BNC1_B" + }, + "position": { + "height": 0.0176, + "width": 0.0104, + "x": 0.2146, + "y": 0.3083 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_BNC1_A" + }, + "position": { + "height": 0.0176, + "width": 0.0104, + "x": 0.2146, + "y": 0.3242 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.2536, + "y": 0.3157 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.2146, + "y": 0.338 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.2536, + "y": 0.3343 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH105_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.2911, + "y": 0.3315 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH105_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.2911, + "y": 0.313 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH107_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.3065 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH107_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.3231 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH109_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.3139 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH107_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.3398 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH109_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.3324 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.3352 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.3167 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5, + "y": 0.3065 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5, + "y": 0.3231 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.3157 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5, + "y": 0.3398 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.3343 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.3343 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.3157 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.3074 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.3241 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6865, + "y": 0.3176 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.3407 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.6865, + "y": 0.3361 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.3361 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.3176 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.7937, + "y": 0.3074 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_BNC1_A" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.7937, + "y": 0.3241 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8333, + "y": 0.3222 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.7937, + "y": 0.3407 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8333, + "y": 0.3407 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_BNC1_G" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8708, + "y": 0.3407 + }, + "props": { + "params": { + "name": "green", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_BNC1_B" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.8708, + "y": 0.3222 + }, + "props": { + "params": { + "name": "blue", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_EPC1" + }, + "position": { + "height": 0.0278, + "width": 0.0156, + "x": 0.9091, + "y": 0.3968 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/EPC" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_EPC2" + }, + "position": { + "height": 0.0278, + "width": 0.0156, + "x": 0.9096, + "y": 0.5023 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/EPC" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Beacon_63" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.9115, + "y": 0.3731 + }, + "props": { + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_BNC1_R" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.9115, + "y": 0.3565 + }, + "props": { + "params": { + "name": "red", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_BNC1_H" + }, + "position": { + "height": 0.0185, + "width": 0.0104, + "x": 0.9115, + "y": 0.3398 + }, + "props": { + "params": { + "name": "horn", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR1" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.1927, + "y": 0.3824 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR3" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.3391, + "y": 0.3852 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR5" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.475, + "y": 0.388 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR7" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.6208, + "y": 0.3907 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR9" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.7698, + "y": 0.3907 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR4" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.3422, + "y": 0.5157 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR6" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.4854, + "y": 0.5139 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR8" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.6312, + "y": 0.513 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_JR10" + }, + "position": { + "height": 0.0231, + "width": 0.013, + "x": 0.7766, + "y": 0.5111 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/JR_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.2625, + "y": 0.3722 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH109_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.4005, + "y": 0.3722 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.5432, + "y": 0.3722 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.6542, + "y": 0.3741 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.837, + "y": 0.3741 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_FIOM10" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.8698, + "y": 0.525 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE1" + }, + "position": { + "height": 0.0315, + "width": 0.1307, + "x": 0.2018, + "y": 0.4046 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE3" + }, + "position": { + "height": 0.037, + "width": 0.1307, + "x": 0.345, + "y": 0.4009 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE5" + }, + "position": { + "height": 0.037, + "width": 0.1307, + "x": 0.4898, + "y": 0.4009 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE7" + }, + "position": { + "height": 0.037, + "width": 0.1307, + "x": 0.6357, + "y": 0.4009 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE9" + }, + "position": { + "height": 0.037, + "width": 0.1307, + "x": 0.7815, + "y": 0.4009 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE4" + }, + "position": { + "height": 0.0296, + "width": 0.1307, + "x": 0.3476, + "y": 0.4852 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE6" + }, + "position": { + "height": 0.0306, + "width": 0.1323, + "x": 0.4893, + "y": 0.4852 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE8" + }, + "position": { + "height": 0.0324, + "width": 0.1323, + "x": 0.6331, + "y": 0.4852 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE10" + }, + "position": { + "height": 0.0306, + "width": 0.1349, + "x": 0.7815, + "y": 0.4833 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_PE1" + }, + "position": { + "height": 0.0352, + "width": 0.0573, + "x": 0.2026, + "y": 0.3454 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.2391, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Photoeye_1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.2781, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH105_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.2781, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH107_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3432, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4188, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH109_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3797, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4839, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5594, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5203, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6318, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.7766, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.813, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.8521, + "y": 0.3435 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6323, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4854, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5219, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5604, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3406, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3771, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4161, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_PE1" + }, + "position": { + "height": 0.038, + "width": 0.0557, + "x": 0.7797, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.8146, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_PE1" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.8536, + "y": 0.5389 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_0" + }, + "position": { + "height": 0.0278, + "width": 0.0208, + "x": 0.9688, + "y": 0.5074 + }, + "props": { + "params": { + "directionLeft": true, + "forceFaultStatus": null, + "forceRunningStatus": null, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Camera" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SS2" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.9297, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "System/MCM01/Station/SSPB/UL6_1_SS1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/SS_Button" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_SIO1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.9102, + "y": 0.5333 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_VFD1" + }, + "position": { + "height": 0.0241, + "width": 0.0135, + "x": 0.9104, + "y": 0.5546 + }, + "props": { + "params": { + "tagProps": [ + "value" + ] + }, + "path": "autStand/Equipment/VFD" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.2542, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_Ch105_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.2911, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_Ch107_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.3599, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_Ch109_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.3964, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.4328, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.501, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5401, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5781, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.6495, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.6875, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.725, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.7943, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8323, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8698, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.3594, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.3958, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.4328, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5021, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5401, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.576, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.6495, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.6859, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.724, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.7958, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8339, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_PRX1" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8703, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "MCM02" + }, + "position": { + "height": 0.0278, + "width": 0.0219, + "x": 0.2437, + "y": 0.5519 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/MCM" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_DPM1" + }, + "position": { + "height": 0.0231, + "width": 0.0156, + "x": 0.3363, + "y": 0.4278 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/DPM" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NCS1_1_DPM2" + }, + "position": { + "height": 0.0231, + "width": 0.0156, + "x": 0.6222, + "y": 0.4278 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/DPM" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.3984, + "y": 0.5574 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.5432, + "y": 0.5574 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.6896, + "y": 0.5574 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_FIOM1" + }, + "position": { + "height": 0.0185, + "width": 0.0208, + "x": 0.8349, + "y": 0.5574 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.2307, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.2703, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_Ch105_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.3073, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_Ch107_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.376, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_Ch109_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.4125, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.449, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5172, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5563, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5943, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.6656, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.7036, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.7411, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8104, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8484, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8859, + "y": 0.3944 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.3755, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.412, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.449, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5182, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5563, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.5922, + "y": 0.5046 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.6656, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.7021, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.7401, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.812, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.85, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_PRX2" + }, + "position": { + "height": 0.0185, + "width": 0.0156, + "x": 0.8865, + "y": 0.5037 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/ProxSwitch" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH101_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.2026, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH103_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.2391, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH105_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.2781, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH107_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3432, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH109_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3797, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH111_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4188, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH113_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4839, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH115_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5203, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH117_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5594, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH119_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6318, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH121_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH123_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH125_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.7766, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH127_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.813, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH129_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.8521, + "y": 0.2778 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH108_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3406, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH110_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.3771, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH112_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4161, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH114_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.4854, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH116_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5219, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH118_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.5604, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH120_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6323, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH122_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH124_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH126_PE2" + }, + "position": { + "height": 0.038, + "width": 0.0557, + "x": 0.7797, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH128_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.8146, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_CH130_PE2" + }, + "position": { + "height": 0.037, + "width": 0.0573, + "x": 0.8536, + "y": 0.6083 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long (1)" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "S03_1_LRPE11" + }, + "position": { + "height": 0.0306, + "width": 0.1349, + "x": 0.7815, + "y": 0.4833 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Photoeye_Long" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "mode": "percent", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/08381443ad380f515be7f2569d998f874aab8701beb5aafc2766b467934c1001 b/.resources/08381443ad380f515be7f2569d998f874aab8701beb5aafc2766b467934c1001 new file mode 100644 index 00000000..70b24ca8 --- /dev/null +++ b/.resources/08381443ad380f515be7f2569d998f874aab8701beb5aafc2766b467934c1001 @@ -0,0 +1,289 @@ +{ + "custom": { + "disconnected": true, + "plc": "", + "searchId": "value", + "state": 1, + "string": "Running" + }, + "params": { + "name": "amber", + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "!isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Starting", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Running" + }, + { + "input": 2, + "output": "EStop or Faulted" + }, + { + "input": 3, + "output": "Gridlock Prevention" + }, + { + "input": 4, + "output": "Full" + }, + { + "input": 5, + "output": "Jammed" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.name": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 20 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "substring({view.params.name}, 0, 1)" + }, + "type": "expr" + } + } + }, + "props": { + "textStyle": { + "fontSize": "20px", + "textAlign": "center", + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-JR\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_beacons" + }, + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#FF0000" + }, + { + "input": 3, + "output": "#FF00FF" + }, + { + "input": 4, + "output": "#0000D9" + }, + { + "input": 5, + "output": "#FF8C00" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "borderStyle": "solid", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/086a6effd72f2eaf808a75695349c003328391ed923af2573be296fdf63304aa b/.resources/086a6effd72f2eaf808a75695349c003328391ed923af2573be296fdf63304aa new file mode 100644 index 00000000..7146a086 --- /dev/null +++ b/.resources/086a6effd72f2eaf808a75695349c003328391ed923af2573be296fdf63304aa @@ -0,0 +1,3 @@ +SELECT DISTINCT sorter +FROM package_history +ORDER BY sorter ASC; \ No newline at end of file diff --git a/.resources/0ad8358a46168e951108455cdf8c94a398d124d5416513117ace4498c1a56947 b/.resources/0ad8358a46168e951108455cdf8c94a398d124d5416513117ace4498c1a56947 new file mode 100644 index 00000000..d934726c --- /dev/null +++ b/.resources/0ad8358a46168e951108455cdf8c94a398d124d5416513117ace4498c1a56947 @@ -0,0 +1,46 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs, + SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational, + SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine, + SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter=:sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp AS time, + hour, + /* Counts: */ + success AS success_count, + awcs AS awcs_issues_count, + operational AS operational_issues_count, + machine AS machine_issues_count, + scanner AS scanner_issues_count, + /* PPH: */ + success AS success_pph, + awcs AS awcs_issues_pph, + operational AS operational_issues_pph, + machine AS machine_issues_pph, + scanner AS scanner_issues_pph, + /* Percents: */ + ROUND(success/total, 4) AS success_percent, + ROUND(awcs/total, 4) AS awcs_issues_percent, + ROUND(operational/total, 4) AS operational_issues_percent, + ROUND(machine/total, 4) AS machine_issues_percent, + ROUND(scanner/total, 4) AS scanner_issues_percent +FROM SORTERS +ORDER BY start_timestamp; \ No newline at end of file diff --git a/.resources/0af5e1f2e43aa7be3ef3b2cd809c0ff97d6fad94dc8004656fc2d0106ee6e801 b/.resources/0af5e1f2e43aa7be3ef3b2cd809c0ff97d6fad94dc8004656fc2d0106ee6e801 new file mode 100644 index 00000000..4b2e1414 --- /dev/null +++ b/.resources/0af5e1f2e43aa7be3ef3b2cd809c0ff97d6fad94dc8004656fc2d0106ee6e801 @@ -0,0 +1,393 @@ +{ + "custom": {}, + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "", + "tagPathControl": "", + "view": "" + }, + "propConfig": { + "params.enableTooltip": { + "paramDirection": "input", + "persistent": true + }, + "params.label": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPathControl": { + "paramDirection": "input", + "persistent": true + }, + "params.view": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 135 + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Status" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}.jsonValues" + }, + "transforms": [ + { + "expression": "try(\r\n\tif(jsonGet({value}, \"Estop_Active\") \u0026\u0026 {[default]Gateway/ToggleTag},\r\n\t\t\"#F00\",\t\t// Estop\r\n\t\tif(jsonGet({value}, \"bStarted\"),\r\n\t\t\t\"#0F0\",\t// Running\r\n\t\t\t\"#AAA\"\t// Stopped\r\n\t\t)\r\n\t),\r\n\t\"#808080\" // Unknown\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 1 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Text" + }, + "position": { + "height": "calc(100% - 10px)", + "width": "calc(100% - 10px)", + "x": 5, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({view.params.label}, {value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFF", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 1, + "fontSize": "12px", + "fontWeight": "bold", + "overflow": "hidden", + "paddingLeft": "5px", + "textOverflow": "ellipsis", + "textTransform": "uppercase", + "user-select": "none", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.params.enableTooltip" + }, + "type": "property" + } + }, + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "if(isGood({value}),\r\n\tjsonGet({value}, \"tooltip\"),\r\n\t\"Tooltip not configured\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.tagPathControl\n\tif tagPath \u003c\u003e \"\":\n\t\ttags \u003d [tagPath + \"/SetStart\"]\n\t\tvalues \u003d [1]\n\t\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Start" + }, + "position": { + "height": 25, + "width": 25, + "x": "calc(100% - 60px)", + "y": "calc(50% - 12.5px)" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPathControl": "{view.params.tagPathControl}" + }, + "tagPath": "{tagPathControl}/SetStart" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPathControl": "{view.params.tagPathControl}" + }, + "tagPath": "{tagPathControl}/Alarms/bStarted" + }, + "transforms": [ + { + "expression": "coalesce({value}, false)", + "type": "expression" + }, + { + "fallback": "#888888", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#32CD32" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "â–º", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "14px" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.tagPathControl\n\tif tagPath \u003c\u003e \"\":\n\t\ttags \u003d [tagPath + \"/SetStop\"]\n\t\tvalues \u003d [1]\n\t\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Stop" + }, + "position": { + "height": 25, + "width": 25, + "x": "calc(100% - 32.5px)", + "y": "calc(50% - 12.5px)" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPathControl": "{view.params.tagPathControl}" + }, + "tagPath": "{tagPathControl}/SetStop" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPathControl": "{view.params.tagPathControl}" + }, + "tagPath": "{tagPathControl}/Alarms/bStarted" + }, + "transforms": [ + { + "expression": "coalesce({value}, true)", + "type": "expression" + }, + { + "fallback": "#888888", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "â– ", + "textStyle": { + "fontFamily": "monospace", + "fontSize": "14px" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "cursor": "pointer" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openWindow", + "params": [], + "script": "\tview \u003d self.view.params.view\n\tif view in [\"\", None]:\n\t\tview \u003d \"Windows/Graphics/\"+self.getChild(\"Text\").props.text.replace(\" \", \"_\")\n\t# Open window:\n\twindow \u003d \"Windows/GraphicsWrapper\"\n\tparams \u003d {\"view\": view}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + } + ], + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/0b0d00ed6ff37b82d0b9b46681a5edfc74084d02fb48f2b25262a050ff67c586 b/.resources/0b0d00ed6ff37b82d0b9b46681a5edfc74084d02fb48f2b25262a050ff67c586 new file mode 100644 index 00000000..ee4066a0 --- /dev/null +++ b/.resources/0b0d00ed6ff37b82d0b9b46681a5edfc74084d02fb48f2b25262a050ff67c586 @@ -0,0 +1,327 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "S1-CH1" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "isRightOfSorter": false, + "mirror": false + }, + "status": { + "tagPath": "[default]MCP03/S01/S01_CH01" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.isRightOfSorter": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.mirror": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 349, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ChuteLabel" + }, + "position": { + "height": 30, + "width": 100, + "x": 198, + "y": 298.8 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.props.status.tagPath" + }, + "transforms": [ + { + "code": "\treturn utils.prettyName(value.split(\"/\")[-1])", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Chute" + }, + "position": { + "height": 20, + "width": 60, + "x": 220, + "y": 195 + }, + "propConfig": { + "props.params": { + "binding": { + "config": { + "struct": { + "alwaysShowAll": true, + "isClickable": false, + "isRightOfSorter": "{view.params.props.config.isRightOfSorter}", + "mirror": "{view.params.props.config.mirror}", + "tagPath": "{view.params.props.status.tagPath}" + }, + "waitOnAll": true + }, + "type": "expr-struct" + } + } + }, + "props": { + "path": "Templates/Areas/FlexChute", + "style": { + "transform": "scale(3) rotate(90deg)" + } + }, + "type": "ia.display.view" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/CH/SetEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Enable" + }, + "position": { + "height": 40, + "width": 120, + "x": 120, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "enabled": false, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Enable" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/CH/SetEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Disable" + }, + "position": { + "height": 40, + "width": 120, + "x": 260, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "enabled": false, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Red" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Disable" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "ChuteLabel_0" + }, + "position": { + "height": 35, + "width": 260, + "x": 120, + "y": 63 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/StatusText" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/0c85cabab848f164ec5916d87947a5b6aeb45687b70fcfa869c3c3b363bb4d36 b/.resources/0c85cabab848f164ec5916d87947a5b6aeb45687b70fcfa869c3c3b363bb4d36 new file mode 100644 index 0000000000000000000000000000000000000000..d8fbcb474fa698d29311ebf69adf0955e5b8eb82 GIT binary patch literal 116028 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 JDl{FU{||5$(2xKC literal 0 HcmV?d00001 diff --git a/.resources/0d5e6d571ad9b699e26369135f1e0b0aa2c855318f6205a2382c8296c307a6e9 b/.resources/0d5e6d571ad9b699e26369135f1e0b0aa2c855318f6205a2382c8296c307a6e9 new file mode 100644 index 00000000..88063614 --- /dev/null +++ b/.resources/0d5e6d571ad9b699e26369135f1e0b0aa2c855318f6205a2382c8296c307a6e9 @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#FF0000" + } + } +} \ No newline at end of file diff --git a/.resources/0f529dd3b96ad8d11b38e1ee17111d89976750a3f44ad21352a708d2769be144 b/.resources/0f529dd3b96ad8d11b38e1ee17111d89976750a3f44ad21352a708d2769be144 new file mode 100644 index 00000000..3ae30422 --- /dev/null +++ b/.resources/0f529dd3b96ad8d11b38e1ee17111d89976750a3f44ad21352a708d2769be144 @@ -0,0 +1,63 @@ +################################################################ +################################################################ +## Version: 1.0 / Author: Dillon Uzar +## +## DESC: For use in WCS Sorting Lane Lookup & Recording +## WARN: Modifying code may cause system to function incorrectly +################################################################ +################################################################ + +import time + +####################################################### +####################################################### +####################################################### +#### Constants +####################################################### + +# Logger: +LOG = system.util.logger("PE BreakCount Handler") + +# For inserting data into database: +CONFIRM_INSERT_QUERY = "INSERT IGNORE INTO pe_history (lane_id,count) VALUES (?,?)" + +####################################################### +####################################################### +####################################################### +#### Parsing Utils +####################################################### + +def logTime(title, trackID, seconds): + millisec = round(seconds * 1000, 1) + if millisec > 4: + LOG.info("%s[ID=%s] took longer than expected (%sms to process)" % (title, trackID, millisec)) + +####################################################### +####################################################### +####################################################### +#### PLC Event Handling +####################################################### + +def processBreak(laneID, count): + # This function handles confirm events, and logs the event in SQL + # Ensure ID is valid + if count > 0: + start_time = time.time() + # Log confirm event in SQL: + # Insert into Package History: + system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, [laneID, count]) + logTime("PE_BREAK[DB_INSERT]", laneID, time.time() - start_time) + +def processBreakAsync(laneID, count): + # This function handles confirm events, and logs the event in SQL + # Ensure ID is valid + if count > 0: + def processConfirmInner(): + start_time = time.time() + # Log confirm event in SQL: + # Insert into Package History: + system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, [laneID, count]) + logTime("PE_BREAK[DB_INSERT]", laneID, time.time() - start_time) + + system.util.invokeAsynchronous(processConfirmInner) + \ No newline at end of file diff --git a/.resources/11e8c8b078a1b6f6c885c959ed71ec339a04816bd7fe8112c1a0ce43903c4225 b/.resources/11e8c8b078a1b6f6c885c959ed71ec339a04816bd7fe8112c1a0ce43903c4225 new file mode 100644 index 00000000..4cd97f3d --- /dev/null +++ b/.resources/11e8c8b078a1b6f6c885c959ed71ec339a04816bd7fe8112c1a0ce43903c4225 @@ -0,0 +1,36 @@ +{ + "base": { + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(245,245,245,1) 0%, rgba(235,235,235,1) 70%, rgba(208,208,208,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundImage": "linear-gradient(0deg, rgba(245,245,245,1) 0%, rgba(235,235,235,1) 70%, rgba(208,208,208,1) 100%);", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "cursor": "pointer" + } + }, + { + "pseudo": "disabled", + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(208,208,208,1) 0%, rgba(208,208,208,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#555555", + "cursor": "not-allowed" + } + } + ] +} \ No newline at end of file diff --git a/.resources/121f6e33f2e5bf6adbbca771915c07ed4bf254913a47341867b452ef12ec8540 b/.resources/121f6e33f2e5bf6adbbca771915c07ed4bf254913a47341867b452ef12ec8540 new file mode 100644 index 00000000..a4139cb2 --- /dev/null +++ b/.resources/121f6e33f2e5bf6adbbca771915c07ed4bf254913a47341867b452ef12ec8540 @@ -0,0 +1,907 @@ +{ + "custom": {}, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/So01_CH01" + }, + "propConfig": { + "params.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.isClickable": { + "paramDirection": "input", + "persistent": true + }, + "params.isRightOfSorter": { + "paramDirection": "input", + "persistent": true + }, + "params.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 60 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 20, + "width": 38, + "x": 22 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/CH/IsChuteMode" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "coalesce({value}, true)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false, + "type": "bar" + }, + "status": { + "color": "#FFF" + } + }, + "type": "dex.display.conveyor" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Gaylord" + }, + "position": { + "height": 16, + "width": 16, + "x": 22, + "y": 2 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "try( tag({view.params.tagPath}+\"/CH/IsCartMode\")\r\n\t||tag({view.params.tagPath}+\"/CH/IsGLLMode\"),\r\n\ttrue\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.gaylord" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Chute" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0" + }, + "width": 23 + }, + "propConfig": { + "props.config.isClickable": { + "binding": { + "config": { + "expression": "!{view.params.isClickable}" + }, + "type": "expr" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/CH/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "LS1" + }, + "position": { + "height": 6, + "width": 6, + "x": 19, + "y": 14 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/LS1/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GR Presence)\u003cbr\u003e\"))", + "type": "expression" + }, + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "BCN1_GRN" + }, + "position": { + "height": 5, + "rotate": { + "angle": "-90deg" + }, + "width": 5, + "x": 10, + "y": 15 + }, + "propConfig": { + "position.x": { + "binding": { + "config": { + "expression": "if({../BCN1_AMB.meta.visible}, 10, 5)" + }, + "type": "expr" + }, + "persistent": true + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/GRN/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_AMB" + }, + "position": { + "height": 5, + "rotate": { + "angle": "-90deg" + }, + "width": 5, + "x": 5, + "y": 15 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_BLU" + }, + "position": { + "height": 5, + "rotate": { + "angle": "-90deg" + }, + "width": 5, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/BLU/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GS1_ENABLE" + }, + "position": { + "height": 6, + "width": 6, + "x": 38, + "y": 14 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GS1/Enable/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PE3" + }, + "position": { + "height": 6, + "rotate": { + "anchor": "0 50%" + }, + "width": 8, + "x": 3, + "y": 2 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/PE3/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GL 100% Full)\u003cbr\u003e\"))", + "type": "expression" + }, + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PE4" + }, + "position": { + "height": 6, + "rotate": { + "anchor": "0 50%", + "angle": "-45deg" + }, + "width": 8, + "x": 5, + "y": 10 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/PE4/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GL Presence)\u003cbr\u003e\"))", + "type": "expression" + }, + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PE2" + }, + "position": { + "height": 6, + "width": 28, + "x": 13, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/PE2/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GR 50% Full)\u003cbr\u003e\"))", + "type": "expression" + }, + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PE1B" + }, + "position": { + "height": 6, + "rotate": { + "anchor": "0 50%" + }, + "width": 20, + "x": 15 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.isRightOfSorter" + }, + "transforms": [ + { + "fallback": "-45deg", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "45deg" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "position.y": { + "binding": { + "config": { + "path": "view.params.isRightOfSorter" + }, + "transforms": [ + { + "fallback": 14, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 0 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/PE1B/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GR 100% Full)\u003cbr\u003e\"))", + "type": "expression" + }, + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PE1A" + }, + "position": { + "height": 6, + "rotate": { + "anchor": "0 50%" + }, + "width": 20, + "x": 15 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.isRightOfSorter" + }, + "transforms": [ + { + "fallback": "45deg", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "-45deg" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "position.y": { + "binding": { + "config": { + "path": "view.params.isRightOfSorter" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 14 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/PE1A/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonSet({value}, \"tooltip\", replace(jsonGet({value}, \"tooltip\"), \"\u003cbr\u003e\", \" (GR 100% Full)\u003cbr\u003e\"))", + "type": "expression" + }, + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RS1_RESTART" + }, + "position": { + "height": 6, + "width": 6, + "x": 44, + "y": 14 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/RS1/Restart/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FIO1" + }, + "position": { + "height": 5, + "width": 10, + "x": 50, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/FIO1/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.eip" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(1, -1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openPopup", + "params": [], + "script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"FlexChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"chutedestination\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t\"isRightOfSorter\": self.view.params.isRightOfSorter,\n\t\t\t\t\t\"mirror\": self.view.params.mirror\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/129159bc082aefdfb2ab2462ba326e1bbb2827530cea8bc9db3a356a3e07179c b/.resources/129159bc082aefdfb2ab2462ba326e1bbb2827530cea8bc9db3a356a3e07179c new file mode 100644 index 00000000..138c3b1c --- /dev/null +++ b/.resources/129159bc082aefdfb2ab2462ba326e1bbb2827530cea8bc9db3a356a3e07179c @@ -0,0 +1,160 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 400, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "try(\r\n\tproperty(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\"),\r\n\t\"No Configs\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"export-data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "100%", + "y": 40 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "struct": { + "auth": "{session.props.auth.user.roles}", + "tabs": "{[default]Gateway/ConfigTabs}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\"]\n\tauth \u003d value.auth\n\ttabs \u003d value.tabs\n\tisNotAuth \u003d (auth \u003d\u003d None or len(auth) \u003d\u003d 0 or len([i for i in auth if i in roles]) \u003d\u003d 0)\n\treturn [v[\"title\"] for v in utils.datasetToJSON(tabs) if v[\"isVisible\"] and not (v[\"isSupervisor\"] and isNotAuth)]", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "width": 140 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + } + }, + "type": "ia.container.tab" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "height": "calc(100% - 75px)", + "width": "100%", + "y": 75 + }, + "propConfig": { + "props.path": { + "binding": { + "config": { + "expression": " \"Windows/Configs/\"\r\n+replace(\r\n\tproperty(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\"),\r\n\t\" \",\r\n\t\"\"\r\n)" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "path": "Windows/Configs/Shifts" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "min-width": "1000px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/12d005f2a35ff8534d3fe732de2734d7b675c828d0b3279b9d9818265c8ae343 b/.resources/12d005f2a35ff8534d3fe732de2734d7b675c828d0b3279b9d9818265c8ae343 new file mode 100644 index 00000000..34dce851 --- /dev/null +++ b/.resources/12d005f2a35ff8534d3fe732de2734d7b675c828d0b3279b9d9818265c8ae343 @@ -0,0 +1,59 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 820 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "OXD_Inbound" + }, + "position": { + "height": 800, + "width": 636, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Inbound", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Singulator" + }, + "position": { + "height": 40, + "width": 128, + "x": 630, + "y": 79 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1320254589a36f136e1f8896c6c0bbe93e0836493b6a8c48c63fd0e2656575c0 b/.resources/1320254589a36f136e1f8896c6c0bbe93e0836493b6a8c48c63fd0e2656575c0 new file mode 100644 index 00000000..5d17949f --- /dev/null +++ b/.resources/1320254589a36f136e1f8896c6c0bbe93e0836493b6a8c48c63fd0e2656575c0 @@ -0,0 +1,19 @@ +WITH INDUCTS AS ( + SELECT + DATE_FORMAT(MIN(timestamp), "%Y-%m-%d %H:%i:00") AS time, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id = :induct + GROUP BY DATE_FORMAT(timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*60) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM INDUCTS; \ No newline at end of file diff --git a/.resources/186d77e9c77aebef6e716fb91a8c780fceabf3816ae56c29a6d561f5e2bb4b19 b/.resources/186d77e9c77aebef6e716fb91a8c780fceabf3816ae56c29a6d561f5e2bb4b19 new file mode 100644 index 00000000..29a285e2 --- /dev/null +++ b/.resources/186d77e9c77aebef6e716fb91a8c780fceabf3816ae56c29a6d561f5e2bb4b19 @@ -0,0 +1,5 @@ +{ + "base": { + "style": {} + } +} \ No newline at end of file diff --git a/.resources/19e66b3f5221b50bde9f0bfd8261b337e9bb89a3092cee1a185f13d8ceaeb0bb b/.resources/19e66b3f5221b50bde9f0bfd8261b337e9bb89a3092cee1a185f13d8ceaeb0bb new file mode 100644 index 00000000..03181be6 --- /dev/null +++ b/.resources/19e66b3f5221b50bde9f0bfd8261b337e9bb89a3092cee1a185f13d8ceaeb0bb @@ -0,0 +1,4283 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 650, + "width": 1450 + } + }, + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 0.0462, + "width": 0.0897, + "x": 0.0097, + "y": 0.0123 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Conveyor" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0862, + "y": 0.0123 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Chute" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.16, + "y": 0.0123 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.1077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "EStop or Faulted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0869, + "y": 0.64 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Beacons" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_13" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0869, + "y": 0.6892 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "center" + }, + "text": "Horn" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_18" + }, + "position": { + "height": 0.0462, + "width": 0.0759, + "x": 0.38, + "y": 0.8277 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "EIP Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_19" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.0559, + "y": 0.6892 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OFF" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_20" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.1421, + "y": 0.6892 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "right" + }, + "text": "ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_33" + }, + "position": { + "height": 0.0462, + "width": 0.1028, + "x": 0.2269, + "y": 0.6892 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Starting" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_34" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.4228, + "y": 0.8769 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OK" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_36" + }, + "position": { + "height": 0.0462, + "width": 0.0828, + "x": 0.5669, + "y": 0.2892 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "EPC Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_37" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.6014, + "y": 0.3385 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Idle" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_39" + }, + "position": { + "height": 0.0462, + "width": 0.1172, + "x": 0.3821, + "y": 0.2892 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Photoeye Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_40" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.4317, + "y": 0.3346 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Clear" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_46" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.6355, + "y": 0.8731 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OK" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_47" + }, + "position": { + "height": 0.0462, + "width": 0.1103, + "x": 0.5834, + "y": 0.8277 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Scanner Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_52" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.4076, + "y": 0.6292 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OK" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_53" + }, + "position": { + "height": 0.0462, + "width": 0.1034, + "x": 0.3703, + "y": 0.58 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "VFD Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_55" + }, + "position": { + "height": 0.0462, + "width": 0.1103, + "x": 0.469, + "y": 0.8277 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Encoder Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_56" + }, + "position": { + "height": 0.0462, + "width": 0.1586, + "x": 0.4731, + "y": 0.0123 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Control Station Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_57" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.4076, + "y": 0.0615 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Start" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.1154 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_0" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.1154 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_1" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.1615 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FF8C00", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_2" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.1615 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FF8C00", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_63" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.1538 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Jammed" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_3" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.2538 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#00F", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_4" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.2538 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#00F", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_64" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.2462 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Full" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_66" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.2923 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "50% Full" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_5" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.3 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FF0", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_6" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.3 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FF0", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_7" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.3462 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "limegreen", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_8" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.3462 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "limegreen", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_67" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.3385 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Running" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_9" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.3923 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#87CEFA", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_73" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.3846 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Energy Management" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_10" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.4385 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#CCFFCC", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_11" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.4385 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#CCFFCC", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_74" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.4308 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Enabled, Not Running" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_12" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.4846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#D3D3D3", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_75" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.4769 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Off (Inactive)" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_13" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.0692 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#808080", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_14" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.0692 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#808080", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_76" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.0615 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "No Comm or Disabled by HMI / PLC" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_15" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.5769 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FFF", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_16" + }, + "position": { + "height": 0.0308, + "width": 0.0345, + "x": 0.1034, + "y": 0.5769 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FFF", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_77" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.5692 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Non Powered Equipment" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_OFF_HRN" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.0276, + "y": 0.6969 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN_ON_HRN" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.2014, + "y": 0.6969 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#888", + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_78" + }, + "position": { + "height": 0.0462, + "width": 0.1028, + "x": 0.2269, + "y": 0.7349 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "EStop or Faulted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_ON_RED" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.2014, + "y": 0.7431 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_79" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.1421, + "y": 0.7349 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "right" + }, + "text": "ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_80" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0859, + "y": 0.7349 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "center" + }, + "text": "Red" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_81" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.0559, + "y": 0.7349 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OFF" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_OFF_RED" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.0276, + "y": 0.7431 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_82" + }, + "position": { + "height": 0.0462, + "width": 0.1028, + "x": 0.2269, + "y": 0.8279 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Full" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_83" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.1421, + "y": 0.8279 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "right" + }, + "text": "ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_84" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0859, + "y": 0.8295 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "center" + }, + "text": "Blue" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_ON_PUR" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.2014, + "y": 0.7892 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#D900D9", + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_85" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.0559, + "y": 0.7822 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OFF" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_OFF_PUR" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.0276, + "y": 0.7892 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_86" + }, + "position": { + "height": 0.0462, + "width": 0.1028, + "x": 0.2269, + "y": 0.8736 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Jammed" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_87" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.1421, + "y": 0.8736 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "right" + }, + "text": "ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_88" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0859, + "y": 0.8752 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "center" + }, + "text": "Amber" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_89" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.0559, + "y": 0.8279 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OFF" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_ON_AMB" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.2014, + "y": 0.8815 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#FF8C00", + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN_OFF_BLU" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.0276, + "y": 0.8354 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_90" + }, + "position": { + "height": 0.0462, + "width": 0.1028, + "x": 0.2269, + "y": 0.9209 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Running" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_91" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.1421, + "y": 0.9209 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "right" + }, + "text": "ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_92" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0859, + "y": 0.9225 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "center" + }, + "text": "Green" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_93" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.0559, + "y": 0.8752 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OFF" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_ON_GRN" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.2014, + "y": 0.9276 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN_OFF_AMB" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.0276, + "y": 0.8815 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "ON_EIP" + }, + "position": { + "height": 0.0308, + "width": 0.0276, + "x": 0.3862, + "y": 0.8846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "Label_94" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.4228, + "y": 0.9231 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Fault" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "OFF_EIP" + }, + "position": { + "height": 0.0308, + "width": 0.0276, + "x": 0.3862, + "y": 0.9308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "Estop" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.5772, + "y": 0.3462 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "Label_38" + }, + "position": { + "height": 0.0462, + "width": 0.0628, + "x": 0.6014, + "y": 0.3846 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Actuated" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Estop_0" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.5772, + "y": 0.3923 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "button": "#F00" + }, + "showAlways": true + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "Encoder" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.4979, + "y": 0.8846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.encoder" + }, + { + "meta": { + "name": "Label_54" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.5207, + "y": 0.8769 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OK" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_95" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.5207, + "y": 0.9231 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Fault" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Encoder_0" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.4979, + "y": 0.9308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.encoder" + }, + { + "meta": { + "name": "Scanner" + }, + "position": { + "height": 0.0231, + "width": 0.0207, + "x": 0.609, + "y": 0.8846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.scanner" + }, + { + "meta": { + "name": "Label_50" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.6355, + "y": 0.9192 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Fault" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Scanner_0" + }, + "position": { + "height": 0.0231, + "width": 0.0207, + "x": 0.609, + "y": 0.9308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.scanner" + }, + { + "meta": { + "name": "PushButton" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3841, + "y": 0.0692 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "button": "#CFC" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_58" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.5317, + "y": 0.0615 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Stop" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_0" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.5083, + "y": 0.0692 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "button": "#FCC" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_59" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.6559, + "y": 0.0615 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Restart" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_1" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6324, + "y": 0.0692 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "button": "#BBB" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_96" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.5317, + "y": 0.1077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Stop Pressed" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_97" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.6559, + "y": 0.1077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Restart Pressed" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_2" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6324, + "y": 0.1154 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "base": "#000", + "button": "#BBB" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PushButton_3" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.5083, + "y": 0.1154 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "base": "#000", + "button": "#FCC" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_98" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.4076, + "y": 0.1077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Start Pressed" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_4" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3841, + "y": 0.1154 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "base": "#000", + "button": "#CFC" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_99" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.5317, + "y": 0.1538 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Stop Illuminated" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_100" + }, + "position": { + "height": 0.0462, + "width": 0.1083, + "x": 0.6559, + "y": 0.1538 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Restart Illuminated" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_101" + }, + "position": { + "height": 0.0462, + "width": 0.0966, + "x": 0.4076, + "y": 0.1538 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Start Illuminated" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_5" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6324, + "y": 0.1615 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "button": "#FFF" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PushButton_6" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.5083, + "y": 0.1615 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "button": "#F00" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PushButton_7" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3841, + "y": 0.1615 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_102" + }, + "position": { + "height": 0.0923, + "width": 0.0966, + "x": 0.6559, + "y": 0.2077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Restart Pressed / Illuminted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_8" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6324, + "y": 0.2077 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "base": "#000", + "button": "#FFF" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_103" + }, + "position": { + "height": 0.0923, + "width": 0.0966, + "x": 0.5317, + "y": 0.2077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Stop Pressed / Illuminted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_9" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.5083, + "y": 0.2077 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "base": "#000", + "button": "#F00" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Label_104" + }, + "position": { + "height": 0.0923, + "width": 0.0966, + "x": 0.4076, + "y": 0.2077 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Start Pressed / Illuminted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PushButton_10" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3841, + "y": 0.2077 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "base": "#000" + }, + "showAlways": true + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PhotoEye" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.3834, + "y": 0.3462 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Label_45" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.4317, + "y": 0.3808 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Blocked" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PhotoEye_0" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.3834, + "y": 0.3923 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#000", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Label_60" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.4317, + "y": 0.4269 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Disabled" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PhotoEye_1" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.3834, + "y": 0.4385 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#00F", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Label_61" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.48, + "y": 0.4731 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "(Flashing) Jammed / Clear" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PhotoEye_2" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.3834, + "y": 0.4846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PhotoEye_3" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.4317, + "y": 0.4846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Label_62" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.48, + "y": 0.5192 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "(Flashing) Jammed / Blocked" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PhotoEye_4" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.4317, + "y": 0.5308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#000", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PhotoEye_5" + }, + "position": { + "height": 0.0231, + "width": 0.0352, + "x": 0.3834, + "y": 0.5308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "VFD" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3834, + "y": 0.6369 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "right": "#0F0" + }, + "showAlways": true + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_65" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.4076, + "y": 0.6754 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Disconnect" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "VFD_0" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3834, + "y": 0.6831 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_68" + }, + "position": { + "height": 0.0462, + "width": 0.1724, + "x": 0.4352, + "y": 0.7215 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "(Flashing) Faulted / OK" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "VFD_1" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3834, + "y": 0.7292 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "right": "#F00" + }, + "showAlways": true + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "VFD_2" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.411, + "y": 0.7292 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "right": "#0F0" + }, + "showAlways": true + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_69" + }, + "position": { + "height": 0.0462, + "width": 0.1828, + "x": 0.4352, + "y": 0.7677 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "(Flashing) Faulted / Disconnect" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "VFD_3" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.411, + "y": 0.7754 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "VFD_4" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.3834, + "y": 0.7754 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "right": "#F00" + }, + "showAlways": true + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_105" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.5231 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Manual / Maintenance Mode" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor_18" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.5308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#AC5F00", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Conveyor_19" + }, + "position": { + "height": 0.0308, + "width": 0.0552, + "x": 0.0276, + "y": 0.2077 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#D900D9", + "showAlways": true + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "Label_70" + }, + "position": { + "height": 0.0462, + "width": 0.2207, + "x": 0.16, + "y": 0.2 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Anti-Gridlock Prevention Mode" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DivertPaddle" + }, + "position": { + "height": 0.0308, + "rotate": { + "angle": "180deg" + }, + "width": 0.0345, + "x": 0.7945, + "y": 0.0692 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "paddleThickness": "20%" + } + }, + "type": "dex.display.divertpaddle" + }, + { + "meta": { + "name": "LimitSwitch" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6972, + "y": 0.3462 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": "PX" + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "MCP" + }, + "position": { + "height": 0.0369, + "width": 0.0414, + "x": 0.7062, + "y": 0.8846 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#0F0", + "showAlways": true + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "Label_48" + }, + "position": { + "height": 0.0462, + "width": 0.1103, + "x": 0.6883, + "y": 0.8277 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "MCP Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_49" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.7541, + "y": 0.88 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OK" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_51" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.7541, + "y": 0.9262 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Fault" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "MCP " + }, + "position": { + "height": 0.0369, + "width": 0.0414, + "x": 0.7062, + "y": 0.9308 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#F00", + "showAlways": true + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "Label_71" + }, + "position": { + "height": 0.0462, + "width": 0.1103, + "x": 0.6834, + "y": 0.526 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Gaylord Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_72" + }, + "position": { + "height": 0.0462, + "width": 0.1103, + "x": 0.7862, + "y": 0.0123 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Divert Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_106" + }, + "position": { + "height": 0.0462, + "width": 0.0828, + "x": 0.8437, + "y": 0.0615 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Retracted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_107" + }, + "position": { + "height": 0.0462, + "width": 0.0828, + "x": 0.8437, + "y": 0.1141 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Extended" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DivertPaddle_0" + }, + "position": { + "height": 0.0308, + "rotate": { + "angle": "180deg" + }, + "width": 0.0345, + "x": 0.7945, + "y": 0.1234 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "paddleThickness": "20%" + }, + "status": { + "color": "#0F0", + "isExtended": true, + "isRetracted": false + } + }, + "type": "dex.display.divertpaddle" + }, + { + "meta": { + "name": "Label_108" + }, + "position": { + "height": 0.0462, + "width": 0.0828, + "x": 0.8437, + "y": 0.1618 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Fault" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DivertPaddle_1" + }, + "position": { + "height": 0.0308, + "rotate": { + "angle": "180deg" + }, + "width": 0.0345, + "x": 0.7945, + "y": 0.1615 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "paddleThickness": "20%" + }, + "status": { + "color": "#F00" + } + }, + "type": "dex.display.divertpaddle" + }, + { + "meta": { + "name": "Label_110" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.7207, + "y": 0.3385 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Inactive" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_111" + }, + "position": { + "height": 0.0462, + "width": 0.1379, + "x": 0.6676, + "y": 0.2892 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center", + "textDecoration": "underline" + }, + "text": "Prox Switch Status" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_112" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.7207, + "y": 0.3846 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Actuated" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "LimitSwitch_0" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6972, + "y": 0.3923 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": "PX" + }, + "status": { + "color": [ + "#0F0" + ], + "showAlways": true + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "Label_115" + }, + "position": { + "height": 0.0462, + "width": 0.1241, + "x": 0.7186, + "y": 0.5753 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Not Present" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Gaylord_1" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6965, + "y": 0.583 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "inner": "#AAA" + }, + "showAlways": true + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "Label_118" + }, + "position": { + "height": 0.0462, + "width": 0.1241, + "x": 0.7186, + "y": 0.6214 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Present" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Gaylord_4" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6965, + "y": 0.6291 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "inner": "#AAA", + "outer": "#0F0" + }, + "showAlways": true + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "Label_119" + }, + "position": { + "height": 0.0462, + "width": 0.1241, + "x": 0.7186, + "y": 0.6676 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Present / Enabled" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Gaylord_5" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6965, + "y": 0.6753 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "inner": "#0F0", + "outer": "#0F0" + }, + "showAlways": true + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "Label_121" + }, + "position": { + "height": 0.0462, + "width": 0.1241, + "x": 0.7186, + "y": 0.7138 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Full" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Gaylord_7" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6965, + "y": 0.7215 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": { + "inner": "#00F", + "outer": "#0F0" + }, + "showAlways": true + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "LimitSwitch_1" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.6972, + "y": 0.4387 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": "PX" + }, + "status": { + "color": [ + "#F00" + ], + "showAlways": true + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "Label_113" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.7207, + "y": 0.431 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Faulted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_114" + }, + "position": { + "height": 0.0462, + "width": 0.1814, + "x": 0.8139, + "y": 0.2892 + }, + "props": { + "style": { + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "left", + "textDecoration": "underline" + }, + "text": "Nav Button Icons (Footer)" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Alarm_Icon" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.8199, + "y": 0.3462 + }, + "props": { + "color": "#FFF", + "path": "material/notifications_active", + "style": { + "backgroundColor": "#000000" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label_116" + }, + "position": { + "height": 0.0462, + "width": 0.109, + "x": 0.8401, + "y": 0.3385 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "General Alarm" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Emergency_Icon" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.8199, + "y": 0.3951 + }, + "props": { + "color": "#FFF", + "path": "material/all_out", + "style": { + "backgroundColor": "#FF0000" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label_117" + }, + "position": { + "height": 0.0462, + "width": 0.109, + "x": 0.8401, + "y": 0.3874 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Estop Alarm" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_120" + }, + "position": { + "height": 0.0462, + "width": 0.109, + "x": 0.8401, + "y": 0.4363 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Jam Alarm" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Jam_Icon" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.8199, + "y": 0.444 + }, + "props": { + "color": "#FFF", + "path": "material/skip_next", + "style": { + "backgroundColor": "#FF8C00" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label_122" + }, + "position": { + "height": 0.0462, + "width": 0.109, + "x": 0.8401, + "y": 0.4852 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Full Alarm" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Full_Icon" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.8199, + "y": 0.4929 + }, + "props": { + "color": "#FFF", + "path": "material/skip_next", + "style": { + "backgroundColor": "#0000FF" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Manual_Icon" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.8199, + "y": 0.5418 + }, + "props": { + "color": "#FFF", + "path": "material/build", + "style": { + "backgroundColor": "#AC5F00" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label_123" + }, + "position": { + "height": 0.0462, + "width": 0.109, + "x": 0.8401, + "y": 0.5341 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Manual Mode" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_109" + }, + "position": { + "height": 0.0462, + "width": 0.1228, + "x": 0.2269, + "y": 0.7822 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "Gridlock Prevention " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_ON_BLU" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.2014, + "y": 0.8354 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#00F", + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Label_124" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.1421, + "y": 0.7822 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "right" + }, + "text": "ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_125" + }, + "position": { + "height": 0.0462, + "width": 0.069, + "x": 0.0859, + "y": 0.7822 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "center" + }, + "text": "Purple" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_126" + }, + "position": { + "height": 0.0462, + "width": 0.0414, + "x": 0.0559, + "y": 0.9225 + }, + "props": { + "style": { + "fontSize": 18, + "textAlign": "left" + }, + "text": "OFF" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "BCN_OFF_GRN" + }, + "position": { + "height": 0.0308, + "width": 0.0138, + "x": 0.0276, + "y": 0.9276 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + } + ], + "meta": { + "name": "Legend" + }, + "props": { + "mode": "percent", + "style": { + "classes": "window", + "min-width": 1450 + } + }, + "type": "ia.container.coord" + }, + { + "children": [ + { + "events": { + "dom": { + "onDoubleClick": { + "config": { + "script": "\tif len(self.props.selectionData) \u003d\u003d 1:\n\t\tselected \u003d self.props.selectionData[0]\n\t\tvalue \u003d self.props.selection[0]\n\t\t# Check if valid file:\n\t\tif selected.value !\u003d \"\":\n\t\t\t# Is file, so update viewer:\n\t\t\tself.getSibling(\"DocumentViewer\").props.src \u003d \"/documents/\"+selected.value\n\t\t\t# Update header:\n\t\t\titem \u003d self.props\n\t\t\tfor part in selected.itemPath.split(\"/\"):\n\t\t\t\titem \u003d item.items[int(part)]\n\t\t\tself.getSibling(\"Header\").props.text \u003d item.label\n\t\telse:\n\t\t\t# Isn\u0027t file, so must be directory. Expand it:\n\t\t\titem \u003d self.props\n\t\t\tfor part in selected.itemPath.split(\"/\"):\n\t\t\t\titem \u003d item.items[int(part)]\n\t\t\t# Expand it:\n\t\t\titem.expanded \u003d not item.expanded" + }, + "scope": "G", + "type": "script" + } + }, + "system": { + "onStartup": { + "config": { + "script": "\tself.refreshList()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Tree" + }, + "position": { + "height": "calc(100% - 95px)", + "width": 300, + "y": 25 + }, + "propConfig": { + "position.height": { + "binding": { + "config": { + "expression": "if({../Button_Background.meta.visible},\r\n\t\"calc(100% - 95px)\",\r\n\t\"calc(100% - 25px)\"\r\n)" + }, + "type": "expr" + }, + "persistent": true + }, + "props.style.borderBottomWidth": { + "binding": { + "config": { + "expression": "if({../Button_Background.meta.visible},\r\n\t2,\r\n\t0\r\n)" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "appearance": { + "defaultNodeIcons": { + "collapsed": { + "path": "material/folder" + }, + "empty": { + "path": "material/stop" + }, + "expanded": { + "path": "material/folder_open" + } + }, + "expandIcons": { + "collapsed": { + "path": "material/arrow_right" + }, + "expanded": { + "path": "material/arrow_drop_down" + } + } + }, + "style": { + "backgroundColor": "#FFF", + "borderBottomStyle": "solid", + "borderBottomWidth": 2, + "borderRightColor": "#000", + "borderRightStyle": "solid", + "borderRightWidth": 2, + "user-select": "none" + } + }, + "scripts": { + "customMethods": [ + { + "name": "refreshList", + "params": [], + "script": "\tself.props.items \u003d documents.getDocuments()\n\tif self.getSibling(\"DocumentViewer\").props.src \u003d\u003d \"\":\n\t\tfor i, item in enumerate(self.props.items):\n\t\t\tif item.label \u003d\u003d \"Description of Operations.pdf\":\n\t\t\t\tself.getSibling(\"DocumentViewer\").props.src \u003d \"/documents/Description of Operations.pdf\"\n\t\t\t\tself.getSibling(\"Header\").props.text \u003d item.label\n\t\t\t\tself.props.selection \u003d [str(i)]\n\t\t\t\tbreak" + }, + { + "name": "getPath", + "params": [ + "path" + ], + "script": "\timport os\n\t\n\tpaths \u003d path.split(\"/\")\n\tfullPath \u003d \"\"\n\titems \u003d self.props.items\n\tfor i in range(len(paths)):\n\t\tpath \u003d int(paths[i])\n\t\tif len(items) \u003e path:\n\t\t\tfullPath \u003d os.path.join(fullPath, items[path].label)\n\t\t\titems \u003d items[path].items\n\t\n\treturn fullPath" + } + ], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "custom-documents-refreshlist", + "pageScope": true, + "script": "\tself.refreshList()", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.tree" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 25, + "width": 300 + }, + "props": { + "style": { + "backgroundColor": "#808080", + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": 2, + "borderRightColor": "#000", + "borderRightStyle": "solid", + "borderRightWidth": 2, + "color": "#FFF", + "fontSize": "16px", + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "Documents" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DocumentViewer" + }, + "position": { + "height": "calc(100% - 25px)", + "width": "calc(100% - 300px)", + "x": 300, + "y": 25 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{this.props.src} !\u003d \"\" \u0026\u0026 {this.props.src} !\u003d None" + }, + "type": "expr" + } + } + }, + "props": { + "allowFullScreen": true + }, + "type": "ia.display.iframe" + }, + { + "meta": { + "name": "Header" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 300 + }, + "props": { + "style": { + "backgroundColor": "#808080", + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": 2, + "color": "#FFF", + "fontSize": "16px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverflow": "ellipsis", + "user-select": "none", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Button_Background" + }, + "position": { + "height": 70, + "width": 300, + "y": "calc(100% - 70px)" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "({session.props.device.type} \u003d \"designer\" || isAuthorized(\r\n\tfalse,\r\n\t\u0027Authenticated/Roles/Administrator\u0027,\r\n\t\u0027Authenticated/Roles/Developer\u0027\r\n))" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "style": { + "backgroundColor": "#AAA", + "borderRightColor": "#000", + "borderRightStyle": "solid", + "borderRightWidth": 2, + "color": "#FFF", + "user-select": "none" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": [ + { + "config": { + "draggable": false, + "id": "sOoyBhnt", + "modal": true, + "overlayDismiss": true, + "resizable": false, + "showCloseIcon": true, + "title": "Upload Custom Document", + "type": "open", + "viewPath": "Popups/CustomDocuments/PDFUpload" + }, + "enabled": false, + "scope": "C", + "type": "popup" + }, + { + "config": { + "script": "\tdata \u003d self.getSibling(\"Tree\").props.selectionData\n\tif len(data) \u003d\u003d 0 or (len(data) \u003d\u003d 1 and data[0].value \u003d\u003d \"\"):\n\t\tid \u003d \"sOoyBhnt\"\n\t\tview \u003d \"Popups/CustomDocuments/PDFUpload\"\n\t\ttitle \u003d \"Upload Custom Document\"\n\t\tparams \u003d {\n\t\t\t\"parentFolder\": self.getSibling(\"Tree\").getPath(data[0].itemPath) if len(data) \u003d\u003d 1 else \"\"\n\t\t}\n\t\tsystem.perspective.openPopup(id, view, params, title, showCloseIcon\u003dTrue, draggable\u003dFalse, resizable\u003dFalse, modal\u003dTrue, overlayDismiss\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + ] + } + }, + "meta": { + "name": "Button_UploadDocument" + }, + "position": { + "height": 32, + "width": 146, + "x": 2, + "y": "calc(100% - 33px)" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Button_Background.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "path": "../Tree.props.selectionData" + }, + "transforms": [ + { + "code": "\treturn len(value) \u003d\u003d 0 or (len(value) \u003d\u003d 1 and value[0].value \u003d\u003d \"\")", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Upload" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdata \u003d self.getSibling(\"Tree\").props.selectionData\n\tfilenames \u003d [self.getSibling(\"Tree\").getPath(data[i].itemPath) for i in range(len(data))]\n\tid \u003d \"YCx5ripz\"\n\tview \u003d \"Popups/CustomDocuments/DeleteConfirmation\"\n\ttitle \u003d \"Delete Confirmation\"\n\tparams \u003d {\n\t\t\"filenames\": filenames\n\t}\n\tsystem.perspective.openPopup(id, view, params, title, showCloseIcon\u003dTrue, draggable\u003dFalse, resizable\u003dFalse, modal\u003dTrue, overlayDismiss\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_DeleteDocument" + }, + "position": { + "height": 32, + "width": 146, + "x": 150, + "y": "calc(100% - 33px)" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Button_Background.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "path": "../Tree.props.selection" + }, + "transforms": [ + { + "code": "\treturn len(value)\u003e0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "enabled": false, + "style": { + "classes": "Buttons/Grey" + }, + "text": "Delete" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdata \u003d self.getSibling(\"Tree\").props.selectionData\n\tif len(data) \u003d\u003d 0 or (len(data) \u003d\u003d 1 and data[0].value \u003d\u003d \"\"):\n\t\tid \u003d \"NU5O9skq\"\n\t\tview \u003d \"Popups/CustomDocuments/CreateFolder\"\n\t\ttitle \u003d \"Create Documents Folder\"\n\t\tparams \u003d {\n\t\t\t\"parentFolder\": self.getSibling(\"Tree\").getPath(data[0].itemPath) if len(data) \u003d\u003d 1 else \"\"\n\t\t}\n\t\tsystem.perspective.openPopup(id, view, params, title, showCloseIcon\u003dTrue, draggable\u003dFalse, resizable\u003dFalse, modal\u003dTrue, overlayDismiss\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_CreateFolder" + }, + "position": { + "height": 32, + "width": 294, + "x": 2, + "y": "calc(100% - 68px)" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Button_Background.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "path": "../Tree.props.selectionData" + }, + "transforms": [ + { + "code": "\treturn len(value) \u003d\u003d 0 or (len(value) \u003d\u003d 1 and value[0].value \u003d\u003d \"\")", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Create Folder" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.getSibling(\"Tree\").props.selection \u003d []" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_UnselectAll" + }, + "position": { + "height": 20, + "width": 95, + "x": 202, + "y": 2 + }, + "propConfig": { + "meta.visible": { + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey", + "fontSize": "11px" + }, + "text": "Unselect All" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Documents" + }, + "position": { + "tabIndex": 1 + }, + "type": "ia.container.coord" + } + ], + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "width": 250 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + }, + "tabs": [ + "Legend", + "Documents" + ] + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "root" + }, + "position": { + "x": 0, + "y": 0 + }, + "props": { + "style": { + "classes": "window", + "min-width": 1450 + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1a14099eb1a73658132ba28a1bb1604312364452f944490e33c723cea3be8b84 b/.resources/1a14099eb1a73658132ba28a1bb1604312364452f944490e33c723cea3be8b84 new file mode 100644 index 00000000..fed42469 --- /dev/null +++ b/.resources/1a14099eb1a73658132ba28a1bb1604312364452f944490e33c723cea3be8b84 @@ -0,0 +1,706 @@ +{ + "custom": { + "class": 2 + }, + "params": { + "classDropdownValue": [ + "Error" + ], + "titleExtra": "0 rows" + }, + "propConfig": { + "custom.class": { + "binding": { + "config": { + "path": "view.params.classDropdownValue" + }, + "transforms": [ + { + "code": "\tvalue \u003d list(value)\n\tif \"Message\" in value:\n\t\treturn 0\n\telif \"Warning\" in value:\n\t\treturn 1\n\telif \"Error\" in value:\n\t\treturn 2\n\telse:\n\t\treturn 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.classDropdownValue": { + "paramDirection": "input", + "persistent": true + }, + "params.classDropdownValue[0]": { + "paramDirection": "input", + "persistent": true + }, + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tscreen \u003d alarms.resolveScreenBySource(event.value.source)\n\tif screen \u003c\u003e \"\":\n\t\twindow \u003d \"Windows/GraphicsWrapper\"\n\t\tparams \u003d {\"view\": screen}\n\t\tsystem.perspective.navigate(\"/\")\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "class": "{view.custom.class}", + "endDate": "{session.custom.timewidget.endDate}", + "priority": "if({view.custom.class} \u003e 0, 1, 0)", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Alarms/History" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + }, + { + "code": "\toutput_json \u003d []\n\t# Transform dataset into json:\n\tfor row in range(value.getRowCount()):\n\t\trow_object \u003d {\"value\": {}}\n\t\t# Populate row values:\n\t\tfor col in range(value.getColumnCount()):\n\t\t\trow_object[\"value\"][value.getColumnName(col)] \u003d value.getValueAt(row, col)\n\t\t\t# Check if endtime isn\u0027t reached:\n\t\t\tif value.getColumnName(col) \u003d\u003d \u0027endtime\u0027 and value.getValueAt(row, col) in [None, \"\"]:\n\t\t\t\trow_object[\u0027style\u0027] \u003d {\"background\": \"#F4B084\"}\n\t\t# Append to json output:\n\t\toutput_json.append(row_object)\n\t# Return as json:\n\treturn output_json", + "type": "script" + } + ], + "type": "query" + }, + "persistent": true + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "id", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Number (ID)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "starttime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "endtime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "duration", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "class", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Class" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Location" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "description", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Description" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "plctag", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Tag" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "source", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": "" + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Alarm History\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1bade7893f8557a49e3f1c0cf688ee58f4caa117427dabde4682f87cd9259a76 b/.resources/1bade7893f8557a49e3f1c0cf688ee58f4caa117427dabde4682f87cd9259a76 new file mode 100644 index 00000000..a8988884 --- /dev/null +++ b/.resources/1bade7893f8557a49e3f1c0cf688ee58f4caa117427dabde4682f87cd9259a76 @@ -0,0 +1,43 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + COUNT(*) AS total, + /* PPH Data */ + SUM(sort_code="Success") AS success, + SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs, + SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational, + SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine, + SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner, + /* Problem Solve Data */ + SUM(sort_code="No Read") AS no_read, + SUM(sort_code="No Code") AS no_code, + SUM(sort_code="Multi Label") AS multi_label, + /* Sorter Error Data */ + SUM(sort_code="Gap Err") AS gap_err, + SUM(sort_code="Div Fail") AS div_fail, + SUM(sort_code="Dest None") AS dest_none, + SUM(sort_code="Lost") AS lost + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter = :sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +), DATA AS ( +SELECT + total, + /* PPH: */ + ROUND((SUM((total - machine - scanner)*60) OVER w)/(:movAvgMin+1)) AS total_pph, + /* Problem Solve Percents: */ + no_read+no_code+multi_label AS scanner, + /* Sorter Error Percents: */ + gap_err+div_fail+dest_none+lost AS sorter +FROM SORTERS +WINDOW w AS (ORDER BY STR_TO_DATE(time, "%Y-%m-%d %H:%i:00") RANGE BETWEEN INTERVAL :movAvgMin MINUTE PRECEDING AND CURRENT ROW) +) +SELECT + MAX(total_pph) AS total_pph, + /* Problem Solve Percents: */ + ROUND(SUM(scanner)/SUM(total), 4) AS scanner, + /* Sorter Error Percents: */ + ROUND(SUM(sorter)/SUM(total), 4) AS sorter +FROM DATA; \ No newline at end of file diff --git a/.resources/1ce69fd3e546bdb830be2ee98bd9f4947f2079cb276fd5882f41a6be9a2ea76e b/.resources/1ce69fd3e546bdb830be2ee98bd9f4947f2079cb276fd5882f41a6be9a2ea76e new file mode 100644 index 00000000..9dcb2379 --- /dev/null +++ b/.resources/1ce69fd3e546bdb830be2ee98bd9f4947f2079cb276fd5882f41a6be9a2ea76e @@ -0,0 +1,291 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "S1-CH1" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "mirror": false, + "rotate": false + }, + "status": { + "tagPath": "[default]MCP06/PS04/PS04_17CH" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.rotate": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 349, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ChuteLabel" + }, + "position": { + "height": 35, + "width": 260, + "x": 120, + "y": 63 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/StatusText" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/Conv/SetEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Enable" + }, + "position": { + "height": 40, + "width": 120, + "x": 120, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Enable" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/Conv/SetEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Disable" + }, + "position": { + "height": 40, + "width": 120, + "x": 260, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Red" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Disable" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "SpiralChute" + }, + "position": { + "height": 92, + "width": 94, + "x": 203.775, + "y": 154.5 + }, + "propConfig": { + "props.params": { + "binding": { + "config": { + "struct": { + "alwaysShowAll": true, + "isClickable": false, + "mirror": "{view.params.props.config.mirror}", + "tagPath": "{view.params.props.status.tagPath}" + }, + "waitOnAll": true + }, + "type": "expr-struct" + }, + "persistent": false + } + }, + "props": { + "path": "Templates/Areas/RRChute", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1d8501163f1388a4681dafd83d7b05fbab2b455cfb4dbff40a1b0f75d9d83fb6 b/.resources/1d8501163f1388a4681dafd83d7b05fbab2b455cfb4dbff40a1b0f75d9d83fb6 new file mode 100644 index 00000000..9cd0fca2 --- /dev/null +++ b/.resources/1d8501163f1388a4681dafd83d7b05fbab2b455cfb4dbff40a1b0f75d9d83fb6 @@ -0,0 +1,297 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "PE1" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false, + "type": "reflector" + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PhotoEye" + }, + "position": { + "height": 30, + "width": 102, + "x": 48.5, + "y": 20 + }, + "propConfig": { + "props.config.type": { + "binding": { + "config": { + "path": "view.params.props.config.type" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1d90ce28583965db4844eebba8ffc73397ca5ddc41377ac4381f9c030f1229a4 b/.resources/1d90ce28583965db4844eebba8ffc73397ca5ddc41377ac4381f9c030f1229a4 new file mode 100644 index 00000000..40b8cdfa --- /dev/null +++ b/.resources/1d90ce28583965db4844eebba8ffc73397ca5ddc41377ac4381f9c030f1229a4 @@ -0,0 +1,193 @@ +{ + "custom": {}, + "params": { + "parentFolder": "" + }, + "propConfig": { + "params.parentFolder": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 300, + "width": 400 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Markdown" + }, + "position": { + "height": "calc(100% - 150px)", + "width": "calc(100% - 50px)", + "x": 25, + "y": 60 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "struct": { + "folderName": "{../TextField.props.text}", + "parentFolder": "{view.params.parentFolder}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\timport os\n\t\n\ttext \u003d \"Are you sure you would like to create the following folder:\\n\"\n\ttext +\u003d \"\\n* \"+os.path.join(value.parentFolder, value.folderName)\n\treturn text", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "type": "ia.display.markdown" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\timport os\n\t\n\tparentFolder \u003d self.view.params.parentFolder\n\tfolderName \u003d self.getSibling(\"TextField\").props.text\n\tdocuments.createFolder(os.path.join(parentFolder, folderName))\n\tsystem.perspective.sendMessage(\"custom-documents-refreshlist\", {})\n\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Yes" + }, + "position": { + "height": 55, + "width": 100, + "x": 25, + "y": 235 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../TextField.props.text" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d \"\":\n\t\treturn False\n\t# Only support alphanumeric folder names:\n\treturn \"\".join([c for c in value if c.isalpha() or c.isdigit() or c\u003d\u003d\u0027 \u0027]).strip() \u003d\u003d value", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Yes" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_No" + }, + "position": { + "height": 55, + "width": 100, + "x": "calc(100% - 125px)", + "y": 235 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "No" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TextField" + }, + "position": { + "height": 32, + "width": "calc(100% - 125px)", + "x": 115, + "y": 10 + }, + "props": { + "deferUpdates": false + }, + "type": "ia.input.text-field" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 32, + "width": 110, + "y": 10 + }, + "props": { + "style": { + "textAlign": "right" + }, + "text": "Folder Name:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_BadFolderName" + }, + "position": { + "height": 12, + "width": 250, + "x": 120, + "y": 42 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "!{../Button_Yes.props.enabled}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "color": "red", + "fontSize": "12px" + }, + "text": "* Empty or contains invalid characters" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1eb2749f075f5c971d7c1f38dc87308891e1b5754e3eb578298eb615368ef2ad b/.resources/1eb2749f075f5c971d7c1f38dc87308891e1b5754e3eb578298eb615368ef2ad new file mode 100644 index 00000000..8654f2c3 --- /dev/null +++ b/.resources/1eb2749f075f5c971d7c1f38dc87308891e1b5754e3eb578298eb615368ef2ad @@ -0,0 +1,84 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1993, + "width": 4243 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "HSS_Sorter" + }, + "position": { + "height": 1973, + "width": 4223, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/HSS_Sorter", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Singulator" + }, + "position": { + "height": 40, + "width": 125, + "x": 170, + "y": 720 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(3)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_Runout" + }, + "position": { + "height": 40, + "width": 74, + "x": 3760, + "y": 1840 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]RunoutStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(3)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/1fbe5083340293eff7c4a91ee4f02346dd403337bd980d1ed9b2c58124b90b12 b/.resources/1fbe5083340293eff7c4a91ee4f02346dd403337bd980d1ed9b2c58124b90b12 new file mode 100644 index 00000000..580c8f0a --- /dev/null +++ b/.resources/1fbe5083340293eff7c4a91ee4f02346dd403337bd980d1ed9b2c58124b90b12 @@ -0,0 +1,578 @@ +{ + "custom": {}, + "params": { + "alwaysShowAll": false, + "chuteNum": "", + "isClickable": true, + "mirror": false, + "tagPath": "" + }, + "propConfig": { + "params.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.chuteNum": { + "paramDirection": "input", + "persistent": true + }, + "params.isClickable": { + "paramDirection": "input", + "persistent": true + }, + "params.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 115, + "width": 95 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 48, + "rotate": { + "anchor": "0 0", + "angle": -90 + }, + "width": 79, + "x": 21, + "y": 115 + }, + "propConfig": { + "props.config.isClickable": { + "binding": { + "config": { + "expression": "!{view.params.isClickable}" + }, + "type": "expr" + } + }, + "props.config.showLabel": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Conv/Parameters.LabelFull" + }, + "overlayOptOut": true, + "type": "tag" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Conv/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(1, -1) translateY(-100%)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "y": 67 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/BLU/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "y": 82 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_GRN" + }, + "position": { + "height": 16, + "width": 16, + "y": 97 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/GRN/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GS1_ENABLE" + }, + "position": { + "height": 20, + "width": 20, + "x": 21, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GS1/Enable/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GS1_RESTART" + }, + "position": { + "height": 20, + "width": 20, + "x": 40, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/RS1/Restart/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Full_PE" + }, + "position": { + "height": 10, + "rotate": { + "angle": 180 + }, + "width": 62, + "x": 17, + "y": 69 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Full_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Jam_PE" + }, + "position": { + "height": 10, + "rotate": { + "angle": 180 + }, + "width": 62, + "x": 17, + "y": 99 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Jam_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 15, + "width": "100%" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.params.chuteNum" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "fontFamily": "Arial", + "fontSize": "15px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Half_PE" + }, + "position": { + "height": 10, + "rotate": { + "angle": 180 + }, + "width": 62, + "x": 17, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Half_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FIO1" + }, + "position": { + "height": 15, + "rotate": { + "angle": "-90deg" + }, + "width": 30, + "x": -7, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/FIO1/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(1, -1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "type": "dex.display.eip" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openPopup", + "params": [], + "script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"DivChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"divchute\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t#\"rotate\": self.view.params.rotate,\n\t\t\t\t\t\"mirror\": self.view.params.mirror\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/21b1c29775009050a6a3bad2db69d7f7406efeef877ce0d77602979af9373a7c b/.resources/21b1c29775009050a6a3bad2db69d7f7406efeef877ce0d77602979af9373a7c new file mode 100644 index 00000000..d4c9a152 --- /dev/null +++ b/.resources/21b1c29775009050a6a3bad2db69d7f7406efeef877ce0d77602979af9373a7c @@ -0,0 +1,267 @@ +{ + "custom": { + "disconnected": 0, + "plc": "value", + "priority": 0, + "priority_string": "No active alarms", + "searchId": "value", + "state": 0, + "state_string": "Normal" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "type": "property" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 4 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 4, + "output": 1 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"High\",\r\n0, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"Communication Faulted\",\r\n0, \"Normal\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 30, + "width": 41 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "text": "MCM", + "textStyle": { + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Low" + }, + { + "input": 3, + "output": "Alarms-Styles/Medium" + }, + { + "input": 4, + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_dpm_mcm" + }, + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.disconnected},\r\n \u0027#808080\u0027,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \u0027#FF0000\u0027,\r\n if(\r\n {view.custom.state} \u003d 0,\r\n \u0027#00D900\u0027,\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "mode": "percent", + "style": { + "borderStyle": "solid", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/224615fb9c98d6e86e29c0fef88796373c1f8be3838e2c3284ed1bc4bc1d7e00 b/.resources/224615fb9c98d6e86e29c0fef88796373c1f8be3838e2c3284ed1bc4bc1d7e00 new file mode 100644 index 00000000..16de430d --- /dev/null +++ b/.resources/224615fb9c98d6e86e29c0fef88796373c1f8be3838e2c3284ed1bc4bc1d7e00 @@ -0,0 +1,36 @@ +{ + "base": { + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(255,0,0,1) 0%, rgba(245,0,0,1) 70%, rgba(208,0,0,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundImage": "linear-gradient(0deg, rgba(255,0,0,1) 0%, rgba(245,0,0,1) 70%, rgba(208,0,0,1) 100%);", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "cursor": "pointer" + } + }, + { + "pseudo": "disabled", + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(208,0,0,1) 0%, rgba(208,0,0,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#555555", + "cursor": "not-allowed" + } + } + ] +} \ No newline at end of file diff --git a/.resources/22ba155c31da33ace3663440ef2d87ea12f14185bf99adac0ea57db0af90bfd8 b/.resources/22ba155c31da33ace3663440ef2d87ea12f14185bf99adac0ea57db0af90bfd8 new file mode 100644 index 00000000..e5f99826 --- /dev/null +++ b/.resources/22ba155c31da33ace3663440ef2d87ea12f14185bf99adac0ea57db0af90bfd8 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#007EFCB3" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/23ccfcf82511fed8b9a7515257f517b4ff365e6ecdbb65751e05fcc13bc66881 b/.resources/23ccfcf82511fed8b9a7515257f517b4ff365e6ecdbb65751e05fcc13bc66881 new file mode 100644 index 00000000..590ba7ed --- /dev/null +++ b/.resources/23ccfcf82511fed8b9a7515257f517b4ff365e6ecdbb65751e05fcc13bc66881 @@ -0,0 +1,5491 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1601, + "width": 949 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PRS03_01CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "-30deg" + }, + "width": 120, + "x": 813, + "y": 181 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS03_04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 108, + "x": 907, + "y": 87 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS03_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 148, + "x": 800, + "y": 87 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS03_06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 408, + "x": 653, + "y": 87 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_06/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "bar" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS04_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 430, + "x": 507, + "y": 41 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS04_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 622, + "x": 58, + "y": 60.8 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS04_04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 600, + "x": 58, + "y": 681 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 501, + "x": 112, + "y": 1601 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06NP" + }, + "position": { + "height": 34, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 336, + "x": 118, + "y": 766 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "showLabel": false + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "PS2-6\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_01" + }, + "position": { + "height": 30, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 112, + "y": 1101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_02" + }, + "position": { + "height": 30, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 1042 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_03" + }, + "position": { + "height": 30, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 973 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_04" + }, + "position": { + "height": 30, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 904 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_05" + }, + "position": { + "height": 30, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 835 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 766 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_06/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_07" + }, + "position": { + "height": 17, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 697 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_07/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_08" + }, + "position": { + "height": 17, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 628 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_08/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_09" + }, + "position": { + "height": 17, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 559 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_09/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_10" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 70, + "x": 112, + "y": 490 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_10/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_06_SG01_14" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 671, + "x": 161, + "y": 430 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_14/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_08" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 202, + "x": 112, + "y": 421 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_10" + }, + "position": { + "height": 11, + "rotate": { + "anchor": "0 0" + }, + "width": 112, + "x": 151, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_10A" + }, + "position": { + "height": 11, + "rotate": { + "anchor": "0 0" + }, + "width": 112, + "x": 151, + "y": 189 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10A/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_11" + }, + "position": { + "height": 20, + "width": 18, + "x": 262, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_11/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_12" + }, + "position": { + "height": 20, + "width": 18, + "x": 279, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_12/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_13" + }, + "position": { + "height": 20, + "width": 18, + "x": 296, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_13/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_14" + }, + "position": { + "height": 20, + "width": 18, + "x": 313, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_14/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_15" + }, + "position": { + "height": 20, + "width": 18, + "x": 330, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_15/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_16" + }, + "position": { + "height": 20, + "width": 18, + "x": 347, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_16/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_17" + }, + "position": { + "height": 20, + "width": 118, + "x": 364, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_17/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_18" + }, + "position": { + "height": 20, + "width": 224, + "x": 481, + "y": 180 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_18/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_10" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 255, + "x": 523, + "y": 302 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_12" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 444, + "x": 250, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_13" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 633, + "x": 250, + "y": 763 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_15" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 80, + "x": 211, + "y": 1435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_15/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS03_02CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "-30deg" + }, + "width": 40, + "x": 905, + "y": 105 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "conveyorWidth": 20, + "side": "left", + "type": "chute" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "PRS03_03CHNP" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "-120deg" + }, + "width": 40, + "x": 906, + "y": 107 + }, + "props": { + "config": { + "angle": 60, + "conveyorWidth": 20, + "enableHighlight": false, + "isClickable": false, + "side": "left", + "type": "chute" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "PRS3-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "PRS04_02PT" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 40, + "x": 78, + "y": 61 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_02PT/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "PRS04_05CHNP" + }, + "position": { + "height": 75, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 75, + "x": 113, + "y": 1280 + }, + "props": { + "config": { + "conveyorWidth": 20, + "enableHighlight": false, + "isClickable": false, + "side": "left" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "PRS4-5CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "PS02_09PT" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 40, + "x": 112, + "y": 220 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_09PT/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RE03_11PT" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 40, + "x": 270, + "y": 322 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_11PT/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RE03_14CHNP" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 40, + "x": 250, + "y": 1395 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RE3-14CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "MCP11" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 50, + "x": 160, + "y": 1223 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/MCP11/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "MCP21" + }, + "position": { + "height": 20, + "width": 50, + "x": 595, + "y": 120 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/MCP21/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "PRS03_04_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 871, + "y": 50 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_04/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS03_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 684, + "y": 50 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS04_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 484, + "y": 3 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS04_02PT_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 21, + "y": 42 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_02PT/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS04_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 59, + "y": 560 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS04_04_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 59, + "y": 1209 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_04/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 133, + "y": 1275 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 1060 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 1001 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 932 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_04_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 863 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_04/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 794 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_06_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 725 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_06/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_07_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 657 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_07/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_08_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 586 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_08/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_09_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 85, + "y": 530 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_09/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_10_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 95, + "y": 445 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_10/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_14_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 162, + "y": 1060 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_14/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_08_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 133, + "y": 221 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_09PT_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 135, + "y": 164 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_09PT/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_10A_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 171, + "y": 201 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10A/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_10_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 171, + "y": 163 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_11_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 261, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_11/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_12_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 278, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_12/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_13_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 295, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_13/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_14_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 312, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_14/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_15_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 329, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_15/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_16_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 346, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_16/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_17_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 363, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_17/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_18_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 671, + "y": 163 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_18/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_10_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 487, + "y": 265 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_11PT_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 213, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_11PT/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_12_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 213, + "y": 747 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_13_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 213, + "y": 1327 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_15_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 179, + "y": 1398 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_15/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_06_SG01_09_ENC" + }, + "position": { + "height": 16, + "rotate": { + "angle": "PS02_06_SG01_09_ENC1" + }, + "width": 16, + "x": 95, + "y": 495 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_09/ENC/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.encoder" + }, + { + "meta": { + "name": "PRS03_05_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 701, + "y": 46 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS03_05_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 701, + "y": 88 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS03_05_EPC3" + }, + "position": { + "height": 20, + "width": 20, + "x": 779, + "y": 46 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/EPC3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS03_05_EPC4" + }, + "position": { + "height": 20, + "width": 20, + "x": 779, + "y": 88 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/EPC4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS04_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 17, + "y": 608 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS04_03_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 59, + "y": 608 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_05_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 1104 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_05_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 1124 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_08_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 340 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_08_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 340 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_08_EPC3" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 401 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/EPC3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_08_EPC4" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 401 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/EPC4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_10_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 388, + "y": 261 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_10_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 388, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_13_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 251, + "y": 1363 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_13_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 209, + "y": 503 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_13_EPC3" + }, + "position": { + "height": 20, + "width": 20, + "x": 209, + "y": 442 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/EPC3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS03_05_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 739, + "y": 46 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS03_05_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 758, + "y": 46 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS03_05_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 739, + "y": 88 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS03_05_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 758, + "y": 88 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS04_01_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_01/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS04_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 17, + "y": 629 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS04_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 17, + "y": 648 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS04_03_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 59, + "y": 629 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS04_03_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 59, + "y": 648 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS04_04_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 17, + "y": 1257 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_04/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_05_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 1125 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_05_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 1144 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_05_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 1145 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_05_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 1164 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_08_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 361 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_08_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 380 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_08_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 361 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_08_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 91, + "y": 380 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_10_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 206, + "y": 159 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_10_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 426, + "y": 261 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_10_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 445, + "y": 261 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_10_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 426, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_10_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 445, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_12_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 251, + "y": 401 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_12_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 209, + "y": 463 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_12_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 209, + "y": 482 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_13_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 251, + "y": 1323 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_13_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 251, + "y": 1342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01A_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 506, + "y": 159 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01A/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS03_04_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 812, + "y": 51 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_04/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS03_05_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 670, + "y": 88 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS04_01_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 100, + "y": 42 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_01/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS04_03_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 59, + "y": 607 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS04_03_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 22, + "y": 607 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_05_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 133, + "y": 1274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_05_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 96, + "y": 1294 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_08_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 133, + "y": 339 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_08_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 96, + "y": 339 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_17_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 413, + "y": 164 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_17/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_17_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 382, + "y": 164 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_17/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_18_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 658, + "y": 201 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_18/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_10_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 357, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_10_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 326, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_12_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 251, + "y": 452 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_13_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 214, + "y": 1374 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_15_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 148, + "y": 1399 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_15/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS03_05_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 722, + "y": 50 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS03_05_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 722, + "y": 20 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS03_05_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 722, + "y": 35 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS03_05_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 722, + "y": 88 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_05/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS04_01_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 100, + "y": 4 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_01/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS04_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "y": 639 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS04_03_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 80, + "y": 644 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS04_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 80, + "y": 629 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS04_04_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 21, + "y": 1240 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_04/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_05_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 154, + "y": 1140 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_05_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 154, + "y": 1125 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_05_BCN2_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 74, + "y": 1145 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/BCN2/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_05_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 74, + "y": 1160 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_05_BCN3_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 171, + "y": 1125 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/BCN3/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_08_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 154, + "y": 341 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_08_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 74, + "y": 361 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_08_BCN3_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 154, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/BCN3/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_10_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 189, + "y": 163 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_10_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 409, + "y": 265 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_10_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 409, + "y": 303 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_12_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 192, + "y": 463 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_12_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 272, + "y": 401 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_13_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 272, + "y": 1338 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_13_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 272, + "y": 1323 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01A_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 489, + "y": 163 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01A/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS03_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 67, + "x": 823, + "y": 163 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS03_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 915, + "y": 100 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS03_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 811, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS03_04_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 898, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_04/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS03_06_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 618, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_06/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS03_06_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 651, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS03/PRS03_06/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS04_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 99, + "y": 11 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS04_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 28, + "y": 669 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS04_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 68, + "y": 72 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS04_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 28, + "y": 1229 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PRS04/PRS04_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_05_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 142, + "y": 1195 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_05_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 102, + "y": 1357 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_05_PE3" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 102, + "y": 1589 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_05/PE3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_06_SG01_07_PE1" + }, + "position": { + "height": 10, + "width": 32, + "x": 102, + "y": 629.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_07/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_06_SG01_09_PE1" + }, + "position": { + "height": 10, + "width": 32, + "x": 102, + "y": 516.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_09/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_06_SG01_09_PE2" + }, + "position": { + "height": 10, + "width": 32, + "x": 102, + "y": 533.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP11/PS02_06/SG01_09/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_08_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 102, + "y": 237 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_08/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_10_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 170, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_10/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_11_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 273, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_11/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_12_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 290, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_12/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_13_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 307, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_13/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_14_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 324, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_14/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_15_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 341, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_15/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_16_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 366, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_16/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_18_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 705, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_18/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_17_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 377, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_17/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_10_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 270, + "y": 312 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_10/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_12_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 260, + "y": 363 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_12/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_13_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 260, + "y": 1394 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_13_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 220, + "y": 1296 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_13/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_15_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 147, + "y": 1405 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_15/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_15_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 208, + "y": 1405 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_15/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE3Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 152, + "y": 1440 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "RE3" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RE3Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 152, + "y": 1440 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/adiPPH_RE/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "PRS4Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 55, + "x": 42, + "y": 1360 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "PRS4" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "PRS4Label_Tooltip" + }, + "position": { + "height": 25, + "width": 55, + "x": 42, + "y": 1360 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/adiPPH_PRS/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "SGINLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 60, + "x": 152, + "y": 1240 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SG IN" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SGINLabel_Tooltip" + }, + "position": { + "height": 25, + "width": 60, + "x": 152, + "y": 1240 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/adiPPH_Singulator_Input/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "SGOUTLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 80, + "x": 152, + "y": 230 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SG OUT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SGOUTLabel_Tooltip" + }, + "position": { + "height": 25, + "width": 80, + "x": 152, + "y": 230 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/adiPPH_Singulator_Output/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "PS02_16_TPE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 355, + "y": 170 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/PS02/PS02_16/TPE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/248a9ef42da6345b1b06f1dc5873d8e59f41442427c21948a2bf7deaecae7831 b/.resources/248a9ef42da6345b1b06f1dc5873d8e59f41442427c21948a2bf7deaecae7831 new file mode 100644 index 00000000..7c76b7b6 --- /dev/null +++ b/.resources/248a9ef42da6345b1b06f1dc5873d8e59f41442427c21948a2bf7deaecae7831 @@ -0,0 +1,62 @@ +WITH range_alarm_events AS ( + SELECT *, + /* Get the last time this event was active within the given time range*/ + ( + /* Search for the clear event (if exists) for the outer query's active event */ + SELECT MIN(eventtime) + FROM alarm_events e2 + WHERE e2.eventid = e.eventid /* eventid is unique per alarm instance */ + AND e2.eventtime >= e.eventtime + AND e2.eventtype = 1 /* Look only for the clear event */ + ORDER BY eventtime ASC + LIMIT 1 + ) AS endtime + FROM alarm_events e + /* The range for both start/end allows for index optimizations */ + WHERE eventtime BETWEEN :startDate AND :endDate + /* Filter out system events */ + AND eventflags & 1 != 1 + /* Filter priority */ + AND priority >= :priority + /* Filter for Active events */ + AND eventtype = 0 + ORDER BY eventtime DESC + LIMIT 2000 +), range_alarm_events2 AS ( + SELECT *, + LEAST(COALESCE(endtime, NOW()), :endDate) AS endtime_est, /* Clamp to end of time range if clear event is after end time */ + TIMESTAMPDIFF(SECOND, eventtime, LEAST(COALESCE(endtime, NOW()), :endDate)) AS duration + FROM range_alarm_events +) +SELECT e.id, + e.eventtime AS starttime, e.endtime, + /* Translate duration to a string */ + CAST(SEC_TO_TIME(FLOOR(e.duration)) AS CHAR) AS duration, + /* Retrieve data */ + ddevice.strvalue AS device, + displaypath AS description, + e.source, + /* Translate priority to string */ + dclass.strvalue AS class, + CASE + WHEN e.priority=4 THEN "Critical" + WHEN e.priority=3 THEN "High" + WHEN e.priority=2 THEN "Medium" + WHEN e.priority=1 THEN "Low" + WHEN e.priority=0 THEN "Diagnostic" + ELSE "N/A" + END AS priority, + /* Retrieve PLCTag */ + dtag.strvalue AS plctag +FROM range_alarm_events2 e +/* Lookup PLCTag */ +JOIN alarm_event_data dtag ON e.id = dtag.id AND dtag.propname = "PLCTag" +/* Lookup Device */ +JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" +/* Lookup Class */ +JOIN alarm_event_data dclass ON e.id = dclass.id AND dclass.propname = "Class" +WHERE CASE + WHEN dclass.strvalue = "Error" THEN 2 + WHEN dclass.strvalue = "Warning" THEN 1 + WHEN dclass.strvalue = "Message" THEN 0 + END >= :class; \ No newline at end of file diff --git a/.resources/25e771e0117ab0c5bdaf4779f9db6e42b614e5c442420b3ef2bc2ce3df7830b3 b/.resources/25e771e0117ab0c5bdaf4779f9db6e42b614e5c442420b3ef2bc2ce3df7830b3 new file mode 100644 index 00000000..35f76b89 --- /dev/null +++ b/.resources/25e771e0117ab0c5bdaf4779f9db6e42b614e5c442420b3ef2bc2ce3df7830b3 @@ -0,0 +1,1030 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 60, + "width": 1600 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onDexClick": { + "config": { + "script": "\twindow \u003d \"Popups/DeviceWrapper\"\n\tparams \u003d {\n\t\t\"deviceType\": event.type.split(\".\")[-1],\n\t\t\"props\": event.props,\n\t\t\"meta\": event.meta,\n\t\t\"custom\": event.custom\n\t}\n\t# Change device type if available:\n\ttry:\n\t\ttagPath \u003d \"[default]\"+params[\"props\"].status.tagPath+\"/Parameters.DeviceType\"\n\t\tvalue \u003d system.tag.readBlocking([tagPath])[0]\n\t\tif value.quality.isGood():\n\t\t\tparams[\"deviceType\"] \u003d value.value\n\texcept:\n\t\tpass\n\t# Open window, if one is specified:\n\tid \u003d event.props.status.tagPath\n\ttitle \u003d utils.extractName(event.props.status)\n\tif self.session.custom.isMobile:\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)\n\telse:\n\t\tsystem.perspective.openPopup(id, window, params, title, resizable\u003dTrue)" + }, + "scope": "G", + "type": "script" + }, + "onDexComponentClick": { + "config": { + "script": "\tparams \u003d {\n\t\t\"type\": event.type,\n\t\t\"props\": event.props,\n\t\t\"meta\": event.meta,\n\t\t\"custom\": event.custom\n\t}\n\tsystem.perspective.openPopup(event.meta.name, \"Windows/Popup/Conveyor\", params)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "DexManager" + }, + "position": { + "height": 10, + "width": 10 + }, + "propConfig": { + "props.config": { + "binding": { + "config": { + "path": "session.custom.dexmanager.config" + }, + "type": "property" + } + }, + "props.highlight": { + "binding": { + "config": { + "path": "session.custom.dexmanager.highlight" + }, + "enabled": false, + "type": "property" + } + }, + "props.override": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\t{session.custom.heatmapSettings.data},\r\n\t0\r\n)" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d 0:\n\t\treturn {}\n\telse:\n\t\tdata \u003d value\n\t\taggregate \u003d {}\n\t\taggregate_conv \u003d {}\n\t\tmaxCount \u003d 0\n\t\t# Perform aggregates:\n\t\tfor r in range(data.getRowCount()):\n\t\t\tdevice \u003d data.getValueAt(r, \"device\")\n\t\t\tcount \u003d data.getValueAt(r, \"count\")\n\t\t\t# Add count to device:\n\t\t\taggregate[device] \u003d aggregate[device] + count if device in aggregate else count\n\t\t\t# Check if new max:\n\t\t\tmaxCount \u003d aggregate[device] if aggregate[device] \u003e maxCount else maxCount\n\t\t\t# Retrieve conveyor name:\n\t\t\tconv \u003d device.split(\".\")[0]\n\t\t\t# Add count to conveyor:\n\t\t\taggregate_conv[conv] \u003d aggregate_conv[conv] + count if conv in aggregate_conv else count\n\t\t\t# Check if new max:\n\t\t\tmaxCount \u003d aggregate_conv[conv] if aggregate_conv[conv] \u003e maxCount else maxCount\n\t\t# Convert to overrides:\n\t\tresult \u003d {}\n\t\tfor k, v in aggregate.items():\n\t\t\tresult[k] \u003d {\n\t\t\t\t\"tooltip\": k+\"\u003cbr\u003eCount: \"+str(v),\n\t\t\t\t\"color\": \"#FF\"+(format(255 - int(round(255 * v / maxCount)), \u0027x\u0027).zfill(2)*2)\n\t\t\t}\n\t\tfor k, v in aggregate_conv.items():\n\t\t\tresult[\"conveyor_\"+k] \u003d {\n\t\t\t\t\"tooltip\": k+\"\u003cbr\u003eCount: \"+str(v),\n\t\t\t\t\"color\": \"#FF\"+(format(255 - int(round(255 * v / maxCount)), \u0027x\u0027).zfill(2)*2)\n\t\t\t}\n\t\treturn result", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.overrideAll.config.enableHighlight": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "enabled": false, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.overrideAll.config.isClickable": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.overrideAll.status.color": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#FFF" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.overrideAll.status.tooltip": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.show": { + "binding": { + "config": { + "struct": { + "heatmapDevices": "{session.custom.heatmapSettings.devices}", + "heatmapEnabled": "{session.custom.heatmapSettings.enabled}", + "show": "{session.custom.dexmanager.show}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tif value.heatmapEnabled:\n\t\tdevices \u003d [v.value for v in value.heatmapDevices]\n\t\treturn {\n\t\t\t\"Beacons\": \"Beacons\" in devices,\n\t\t\t\"ConveyorLabels\": True,\n\t\t\t\"ConveyorPatterns\": False,\n\t\t\t\"Conveyors\": True,\n\t\t\t\"DivertPaddles\": True,\n\t\t\t\"EIPs\": \"EIPs\" in devices,\n\t\t\t\"Encoders\": \"Encoders\" in devices,\n\t\t\t\"Estops\": \"Estops\" in devices,\n\t\t\t\"Gaylords\": True,\n\t\t\t\"LimitSwitches\": \"LimitSwitches\" in devices,\n\t\t\t\"MCPs\": \"MCPs\" in devices,\n\t\t\t\"PhotoEyes\": \"PhotoEyes\" in devices,\n\t\t\t\"PushButtons\": \"PushButtons\" in devices,\n\t\t\t\"Scanners\": \"Scanners\" in devices,\n\t\t\t\"VFDs\": \"VFDs\" in devices\n\t\t}\n\telse:\n\t\treturn value.show#{k: v.value for k, v in value.show.iteritems()}", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "overrideAll": { + "config": { + "enableHighlight": null + }, + "status": {} + } + }, + "type": "dex.controller.manager" + }, + { + "meta": { + "name": "Label_Date" + }, + "position": { + "height": 28, + "width": 90 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Date" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_Time" + }, + "position": { + "height": 28, + "width": 90, + "y": 28 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Time" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "1px", + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_Site" + }, + "position": { + "height": 56, + "width": 90, + "x": 88 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "{[default]Gateway/Parameters.Customer}" + }, + "transforms": [ + { + "code": "\treturn system.project.getProjectName() + \" \" + value", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_IPAddr" + }, + "position": { + "height": 28, + "width": 120, + "x": 176 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "session.props.host" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tif self.session.props.auth.user.userName is not None:\n\t\t#system.perspective.print(\"Logout\")\n\t\tsystem.perspective.logout()\n\telse:\n\t\t#system.perspective.print(\"Login\")\n\t\tsystem.perspective.login()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Label_User" + }, + "position": { + "height": 28, + "width": 120, + "x": 176, + "y": 28 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "coalesce({session.props.auth.user.userName}, \"LOGIN\")" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "1px", + "classes": "Docked/StatusText", + "cursor": "pointer" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/help" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Legend" + }, + "position": { + "height": 52, + "width": 100, + "x": 988, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Help" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": [ + { + "config": { + "page": "/" + }, + "scope": "C", + "type": "nav" + }, + { + "config": { + "params": { + "view": "Windows/Graphics/Overview" + }, + "view": "Windows/GraphicsWrapper" + }, + "scope": "C", + "type": "nav" + } + ] + } + }, + "meta": { + "name": "Nav_Overview" + }, + "position": { + "height": 52, + "width": 100, + "x": 356, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Overview" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "action": "Toggle", + "type": "Page" + }, + "scope": "C", + "type": "fullscreen" + } + } + }, + "meta": { + "name": "Nav_ToggleFull" + }, + "position": { + "height": 52, + "width": 100, + "x": 1090, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Fullscreen" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_Status" + }, + "position": { + "height": 56, + "width": 60, + "x": 294 + }, + "props": { + "style": { + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Status" + }, + "position": { + "height": 40, + "width": 40, + "x": 304, + "y": 8 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/CommStatusColor" + }, + "type": "tag" + } + } + }, + "props": { + "elements": [ + { + "cx": 20, + "cy": 20, + "fill": {}, + "r": 19, + "stroke": { + "paint": "#000", + "width": 2 + }, + "style": {}, + "type": "circle" + } + ], + "preserveAspectRatio": "none", + "viewBox": "0 0 40 40" + }, + "type": "ia.shapes.svg" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/active" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_ActiveAlarms" + }, + "position": { + "height": 52, + "width": 100, + "x": 458, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Active Alarms" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/hitlist" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_HitList" + }, + "position": { + "height": 25, + "width": 100, + "x": 560, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Hit List" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/history" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_History" + }, + "position": { + "height": 25, + "width": 100, + "x": 560, + "y": 29 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "History" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/statistics" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Statistics" + }, + "position": { + "height": 52, + "width": 100, + "x": 662, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Statistics" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/status" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Status" + }, + "position": { + "height": 52, + "width": 100, + "x": 764, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Status" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": 40, + "width": 40, + "x": 304, + "y": 8 + }, + "propConfig": { + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/CommStatusTooltip" + }, + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/custom-reports" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_CustomReports" + }, + "position": { + "height": 52, + "width": 100, + "x": 1192, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Custom Reports" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/config" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Config" + }, + "position": { + "height": 52, + "width": 100, + "x": 1294, + "y": 2 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\", \"Maintenance\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Config", + "visible": true + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\twindow\u003d\"Popups/Heatmap/Config\"\n\tif self.session.custom.isMobile:\n\t\tsystem.perspective.navigate(view\u003dwindow)\n\telse:\n\t\tsystem.perspective.openPopup(\"HeatmapSettings\", window, title\u003d\"Heatmap Configuration\", modal\u003dTrue, overlayDismiss\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Nav_AlarmHeatmap" + }, + "position": { + "height": 52, + "width": 100, + "x": 1498, + "y": 2 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "expression": "!{session.custom.heatmapSettings.enabled}" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Alarm Heatmap", + "visible": true + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "LabelHeatMap", + "visible": false + }, + "position": { + "height": 56, + "width": 732, + "x": 458 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "type": "property" + }, + "persistent": true + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\tif({[default]Gateway/ToggleTag},\r\n\t\t\"#FF0\",\r\n\t\t\"#F00\"\r\n\t),\r\n\t\"#AAA\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderBottomStyle": "none", + "borderBottomWidth": 2, + "borderLeftStyle": "solid", + "borderLeftWidth": 2, + "borderRightStyle": "solid", + "borderRightWidth": 2, + "borderTopStyle": "none", + "borderTopWidth": 2, + "fontWeight": "bold", + "lineHeight": "16px", + "textAlign": "center", + "textTransform": "uppercase" + }, + "text": "Heatmap Mode Active" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "LabelFireAlarm", + "visible": null + }, + "position": { + "height": 56, + "width": 178 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/FireAlarm" + }, + "type": "tag" + }, + "persistent": true + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if({[default]Gateway/FireAlarm},\r\n\tif({[default]Gateway/ToggleTag},\r\n\t\t\"#FF0\",\r\n\t\t\"#F00\"\r\n\t),\r\n\t\"#AAA\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderBottomStyle": "none", + "borderBottomWidth": 2, + "borderLeftStyle": "solid", + "borderLeftWidth": 2, + "borderRightStyle": "solid", + "borderRightWidth": 2, + "borderTopStyle": "none", + "borderTopWidth": 2, + "fontWeight": "bold", + "lineHeight": "16px", + "textAlign": "center", + "textTransform": "uppercase" + }, + "text": "Building Fire Alarm" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/commission" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Commission" + }, + "position": { + "height": 52, + "width": 100, + "x": 1396, + "y": 2 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\", \"Maintenance\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Commission", + "visible": true + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/cameras" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_JamCameras" + }, + "position": { + "height": 52, + "width": 100, + "x": 866, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Jam Cameras" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/autStand" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "autStand" + }, + "position": { + "height": 52, + "width": 117, + "x": 1599.67, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Navigate to autStand" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background": "#AAA", + "border-bottom": "2px solid #000", + "border-top": "2px solid #000" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/295c8403e00dabfc746e93cf216157199feb8db414bcdebb0de6dce054278dc4 b/.resources/295c8403e00dabfc746e93cf216157199feb8db414bcdebb0de6dce054278dc4 new file mode 100644 index 00000000..fb1801e0 --- /dev/null +++ b/.resources/295c8403e00dabfc746e93cf216157199feb8db414bcdebb0de6dce054278dc4 @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#808080" + } + } +} \ No newline at end of file diff --git a/.resources/296ec4f70ae24bfed7e13d578602e2b7a3b3f9e22f425f12c2382d39a5423b97 b/.resources/296ec4f70ae24bfed7e13d578602e2b7a3b3f9e22f425f12c2382d39a5423b97 new file mode 100644 index 00000000..6c665e31 --- /dev/null +++ b/.resources/296ec4f70ae24bfed7e13d578602e2b7a3b3f9e22f425f12c2382d39a5423b97 @@ -0,0 +1,84 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 306, + "width": 948 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "OXD_Problem_Solve" + }, + "position": { + "height": 286, + "width": 928, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Problem_Solve", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Singulator" + }, + "position": { + "height": 40, + "width": 128, + "x": 50, + "y": 247 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Sorter" + }, + "position": { + "height": 40, + "width": 97, + "x": 760, + "y": 247 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/2a5caa53738f67380789ee81cf37484c1271d5dc8dd1bcecd1892051c008fb30 b/.resources/2a5caa53738f67380789ee81cf37484c1271d5dc8dd1bcecd1892051c008fb30 new file mode 100644 index 00000000..9dce5720 --- /dev/null +++ b/.resources/2a5caa53738f67380789ee81cf37484c1271d5dc8dd1bcecd1892051c008fb30 @@ -0,0 +1,24 @@ +WITH LANES AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + lane_id AS lane, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id LIKE "CH%" + GROUP BY lane_id + ORDER BY lane_id +) +SELECT + start_timestamp, + end_timestamp, + lane, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/2f86ca204a5c841cacd327198b8f5e6b16a8d215aa08765e966fe6150aa94bcd b/.resources/2f86ca204a5c841cacd327198b8f5e6b16a8d215aa08765e966fe6150aa94bcd new file mode 100644 index 00000000..0d972b24 --- /dev/null +++ b/.resources/2f86ca204a5c841cacd327198b8f5e6b16a8d215aa08765e966fe6150aa94bcd @@ -0,0 +1,328 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "Conveyor" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false, + "showLabel": true, + "type": "belt" + }, + "status": { + "color": "#aaa", + "isManual": false, + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 30, + "width": 150, + "x": 20, + "y": 20 + }, + "propConfig": { + "meta.name": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Label" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Conveyor\u0027)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.config.showLabel": { + "binding": { + "config": { + "path": "view.params.props.config.showLabel" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.config.type": { + "binding": { + "config": { + "path": "view.params.props.config.type" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/30a96bd63380948aab8ac8b76b10ba5cb350539f734af24cf66f8b1f8cab2bc4 b/.resources/30a96bd63380948aab8ac8b76b10ba5cb350539f734af24cf66f8b1f8cab2bc4 new file mode 100644 index 00000000..3c5cdd11 --- /dev/null +++ b/.resources/30a96bd63380948aab8ac8b76b10ba5cb350539f734af24cf66f8b1f8cab2bc4 @@ -0,0 +1,38 @@ +WITH INDUCTS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + sorter, + induct, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct, DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +), SORTERS AS ( + SELECT + start_timestamp, + sorter, + SUM(total) AS total + FROM INDUCTS + GROUP BY sorter, start_timestamp +) +SELECT + I.start_timestamp AS time, + hour, + /* Counts: */ + I.total AS total_count, + /* PPH: */ + I.total AS total_pph, + /* Percents: */ + ROUND(I.total/S.total, 4) AS 'total/sorter_percent' +FROM INDUCTS I, SORTERS S +WHERE induct=:induct AND I.sorter=S.sorter AND I.start_timestamp=S.start_timestamp +ORDER BY I.start_timestamp ASC; \ No newline at end of file diff --git a/.resources/30afa22cb8bc2c85c801a19bdc6db97053670a8cde30245eadd98d3240685807 b/.resources/30afa22cb8bc2c85c801a19bdc6db97053670a8cde30245eadd98d3240685807 new file mode 100644 index 00000000..f14bb253 --- /dev/null +++ b/.resources/30afa22cb8bc2c85c801a19bdc6db97053670a8cde30245eadd98d3240685807 @@ -0,0 +1,1092 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "SpiralLaneStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}", + "where": "\"lane LIKE \\\"CH-2%\\\"\"" + }, + "queryPath": "Status/LaneStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "lane", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Lane" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Spiral Lane Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/3112d4b4bde4180f2aa3ba1508337325a3d1c1238e5edf5bd7ad801516d0c3c6 b/.resources/3112d4b4bde4180f2aa3ba1508337325a3d1c1238e5edf5bd7ad801516d0c3c6 new file mode 100644 index 00000000..c9d94602 --- /dev/null +++ b/.resources/3112d4b4bde4180f2aa3ba1508337325a3d1c1238e5edf5bd7ad801516d0c3c6 @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFDC00" + } + } +} \ No newline at end of file diff --git a/.resources/322c9a5fa05fdfd83b125be19c2a764dff894e44967e652b699bc5ce9c936fe1 b/.resources/322c9a5fa05fdfd83b125be19c2a764dff894e44967e652b699bc5ce9c936fe1 new file mode 100644 index 00000000..d9655407 --- /dev/null +++ b/.resources/322c9a5fa05fdfd83b125be19c2a764dff894e44967e652b699bc5ce9c936fe1 @@ -0,0 +1,332 @@ +{ + "custom": {}, + "params": { + "titleExtra": "5 rows", + "usesTimewidget": false + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "false" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "SpiralStatus" + }, + "position": { + "height": "100%", + "width": "50%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]SpiralStatus" + }, + "type": "tag" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "status", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Status" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "count", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Count (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "percent", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Percentage (%)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0.##%", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Spiral Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "PieChart" + }, + "position": { + "height": "100%", + "width": "50%", + "x": "50%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]SpiralStatus" + }, + "type": "tag" + } + } + }, + "props": { + "colors": [ + "limegreen", + "#FF0", + "#00F", + "#AAA", + "#FF8C00", + "#F00", + "#808080" + ], + "style": { + "borderLeftColor": "#000", + "borderLeftStyle": "solid", + "borderLeftWidth": 2 + }, + "threeDimensional": true, + "title": "Spiral Status" + }, + "type": "ia.chart.pie" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/322e1238c0a626228737b6a6be571cdc581c3b83d64debee8930ca265d5813aa b/.resources/322e1238c0a626228737b6a6be571cdc581c3b83d64debee8930ca265d5813aa new file mode 100644 index 00000000..08179f1c --- /dev/null +++ b/.resources/322e1238c0a626228737b6a6be571cdc581c3b83d64debee8930ca265d5813aa @@ -0,0 +1,773 @@ +{ + "custom": {}, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "mirror": false, + "rotation": 0, + "tagPath": "[default]MCP03/CH_20105/CH_20105" + }, + "propConfig": { + "params.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.isClickable": { + "paramDirection": "input", + "persistent": true + }, + "params.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.rotation": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 60, + "width": 85 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Gaylord_16" + }, + "position": { + "height": 31, + "width": 31, + "x": 54, + "y": 29 + }, + "propConfig": { + "props.config.isClickable": { + "binding": { + "config": { + "expression": "!{view.params.isClickable}" + }, + "type": "expr" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GLL/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "props": { + "config": {} + }, + "type": "dex.display.gaylord" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "SpiralChute_241" + }, + "position": { + "height": 60, + "width": 60 + }, + "propConfig": { + "props.config.isClickable": { + "binding": { + "config": { + "expression": "!{view.params.isClickable}" + }, + "type": "expr" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/CH/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "props": { + "config": {} + }, + "type": "dex.display.spiralchute" + }, + { + "meta": { + "name": "GS1" + }, + "position": { + "height": 13, + "width": 13, + "x": 72, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GS1/Enable/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "BCN1_GRN", + "visible": false + }, + "position": { + "height": 10, + "rotate": {}, + "width": 10, + "x": 61 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.rotation" + }, + "type": "property" + } + }, + "position.y": { + "binding": { + "config": { + "expression": "if({view.params.rotation} \u003d 180, 0, 18)" + }, + "type": "expr" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/GRN/Graphics" + }, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_AMB" + }, + "position": { + "height": 10, + "rotate": {}, + "width": 10, + "x": 61, + "y": 9 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.rotation" + }, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Ch_Full_PE" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0 0", + "angle": "315deg" + }, + "width": 30, + "x": 1, + "y": 53 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Ch_Full_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RS1" + }, + "position": { + "height": 13, + "width": 13, + "x": 72 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/RS1/Restart/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GLL_Open_PX" + }, + "position": { + "height": 10, + "rotate": {}, + "width": 10, + "x": 72, + "y": 49 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.rotation" + }, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GLL_Open_PX/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": "PX" + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "GLL_Closed_PX" + }, + "position": { + "height": 10, + "rotate": {}, + "width": 10, + "x": 61, + "y": 49 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.rotation" + }, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GLL_Closed_PX/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": "PX" + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "BCN1_BLU" + }, + "position": { + "height": 10, + "rotate": {}, + "width": 10, + "x": 61 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "path": "view.params.rotation" + }, + "type": "property" + } + }, + "position.y": { + "binding": { + "config": { + "expression": "if({view.params.rotation} \u003d 180, 18, 0)" + }, + "type": "expr" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/BLU/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Ch_Half_PE" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0 0", + "angle": 135 + }, + "width": 30, + "x": 58, + "y": 6 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Ch_Half_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GLL_Cart_Full_PE" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 16, + "x": 81, + "y": 47 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GLL_Cart_Full_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GLL_Present_PE" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 16, + "x": 68, + "y": 33 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/GLL_Present_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Ch_Jam_PE" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0 0", + "angle": 225 + }, + "width": 30, + "x": 53, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/CH_Jam_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FIO" + }, + "position": { + "height": 10, + "rotate": { + "angle": 270 + }, + "width": 20, + "x": -5, + "y": 5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/FIO1/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "Cart_Present_PE" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 16, + "x": 75, + "y": 33 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Cart_Present_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "diffuse" + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openPopup", + "params": [], + "script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"SpiralChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"spiralchute\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t\"rotation\": self.view.params.rotation\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/3335fe09460960476d91602865d47d1eaf58d541fe0fd3bdae17f5e7d041c5a0 b/.resources/3335fe09460960476d91602865d47d1eaf58d541fe0fd3bdae17f5e7d041c5a0 new file mode 100644 index 00000000..74c51aa7 --- /dev/null +++ b/.resources/3335fe09460960476d91602865d47d1eaf58d541fe0fd3bdae17f5e7d041c5a0 @@ -0,0 +1,4 @@ +SELECT DISTINCT lane_id +FROM pe_history +WHERE lane_id LIKE "CH%" +ORDER BY lane_id; \ No newline at end of file diff --git a/.resources/369c41092b804afad9f8d51446a6e7a3be9028fa7458c9c284aebd605409019a b/.resources/369c41092b804afad9f8d51446a6e7a3be9028fa7458c9c284aebd605409019a new file mode 100644 index 00000000..397564ca --- /dev/null +++ b/.resources/369c41092b804afad9f8d51446a6e7a3be9028fa7458c9c284aebd605409019a @@ -0,0 +1,549 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "MCP" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 180, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "MCP" + }, + "position": { + "height": 40, + "width": 100, + "x": 50, + "y": 15 + }, + "propConfig": { + "meta.name": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Label" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027MCP\u0027)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "CPU_Switch" + }, + "position": { + "height": 40, + "rotate": { + "angle": "135deg" + }, + "width": 40, + "x": 80, + "y": 100 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU.jsonValues" + }, + "overlayOptOut": true, + "transforms": [ + { + "code": "\ttry:\n\t\tif value.Key_Run:\n\t\t\treturn \"0deg\"\n\t\telif value.Key_Rem:\n\t\t\treturn \"45deg\"\n\t\telif value.Key_Pgm:\n\t\t\treturn \"90deg\"\n\t\telse:\n\t\t\treturn \"135deg\"\n\texcept:\n\t\treturn \"135deg\"", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.elements[0].d": { + "binding": { + "config": { + "expression": "if({this.position.rotate.angle}\u003d\"135deg\",\r\n\t\"M40,40L0,0\",\r\n\t\"M40,40L0,0H20M0,0V20\"\r\n)" + }, + "overlayOptOut": true, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "elements": [ + { + "d": "M40,40L0,0", + "fill": { + "paint": "none" + }, + "stroke": { + "linecap": "square", + "paint": "#000", + "width": 5 + }, + "type": "path" + } + ], + "viewBox": "0 0 41 41" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 20, + "width": 40, + "x": 40, + "y": 70 + }, + "propConfig": { + "props.style.borderWidth": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU/Key_Run" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "forceQuality({value}, 192)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 2 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 0, + "fontSize": 11, + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "RUN" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 20, + "width": 40, + "x": 80, + "y": 70 + }, + "propConfig": { + "props.style.borderWidth": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU/Key_Rem" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "forceQuality({value}, 192)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 2 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 0, + "fontSize": 11, + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "REM" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "height": 20, + "width": 40, + "x": 120, + "y": 70 + }, + "propConfig": { + "props.style.borderWidth": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU/Key_Pgm" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "forceQuality({value}, 192)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 2 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 0, + "fontSize": 11, + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "PGM" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/378b924c2c2a4f8fb55da93dbf03a59158982b1d01cecec1182cb468a777d9bf b/.resources/378b924c2c2a4f8fb55da93dbf03a59158982b1d01cecec1182cb468a777d9bf new file mode 100644 index 00000000..fa1c77fc --- /dev/null +++ b/.resources/378b924c2c2a4f8fb55da93dbf03a59158982b1d01cecec1182cb468a777d9bf @@ -0,0 +1,290 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "VFD" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": { + "left": "#B3B3B3", + "right": "#D3D3D3" + }, + "showAlways": true, + "tagPath": "[default]MCP03/RO02/RO02_03/VFD", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "VFD" + }, + "position": { + "height": 64, + "width": 64, + "x": 67.5, + "y": 17.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_15" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/3968275e0d5589471426a988c7f8c82d50053c0dce0bacd4619ac7ebbf1d6792 b/.resources/3968275e0d5589471426a988c7f8c82d50053c0dce0bacd4619ac7ebbf1d6792 new file mode 100644 index 00000000..fd816f35 --- /dev/null +++ b/.resources/3968275e0d5589471426a988c7f8c82d50053c0dce0bacd4619ac7ebbf1d6792 @@ -0,0 +1,238 @@ +{ + "custom": {}, + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "", + "view": "" + }, + "propConfig": { + "params.enableTooltip": { + "paramDirection": "input", + "persistent": true + }, + "params.label": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + }, + "params.view": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 80 + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Status" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}.jsonValues" + }, + "transforms": [ + { + "expression": "try(\r\n\tif(jsonGet({value}, \"Estop_Active\") \u0026\u0026 {[default]Gateway/ToggleTag},\r\n\t\t\"#F00\",\t\t// Estop\r\n\t\tif(jsonGet({value}, \"bStarted\"),\r\n\t\t\t\"#0F0\",\t// Running\r\n\t\t\t\"#AAA\"\t// Stopped\r\n\t\t)\r\n\t),\r\n\t\"#808080\" // Unknown\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 1 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Text" + }, + "position": { + "height": "calc(100% - 10px)", + "width": "calc(100% - 10px)", + "x": 5, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({view.params.label}, {value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFF", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 1, + "fontSize": "12px", + "fontWeight": "bold", + "overflow": "hidden", + "paddingLeft": "5px", + "textOverflow": "ellipsis", + "textTransform": "uppercase", + "user-select": "none", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{view.params.enableTooltip} \u0026\u0026 {view.params.tagPath} !\u003d \"\"" + }, + "type": "expr" + } + }, + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "if(isGood({value}),\r\n\tjsonGet({value}, \"tooltip\"),\r\n\t\"Tooltip not configured\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + } + ], + "events": { + "dom": { + "onMouseEnter": { + "config": { + "script": "\tself.session.custom.areaHover \u003d nav.getAreas(self.view.params.view)" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseLeave": { + "config": { + "script": "\tself.session.custom.areaHover \u003d []" + }, + "enabled": false, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root" + }, + "props": { + "style": { + "cursor": "pointer" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openWindow", + "params": [], + "script": "\tview \u003d self.view.params.view\n\tif view in [\"\", None]:\n\t\tview \u003d \"Windows/Graphics/\"+self.getChild(\"Text\").props.text.replace(\" \", \"_\")\n\t# Open window:\n\twindow \u003d \"Windows/GraphicsWrapper\"\n\tparams \u003d {\"view\": view}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + } + ], + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/3ab807518c7993b31e38fbe98cb0acfc7550c00d097824db3473678739130ab4 b/.resources/3ab807518c7993b31e38fbe98cb0acfc7550c00d097824db3473678739130ab4 new file mode 100644 index 00000000..ea4de112 --- /dev/null +++ b/.resources/3ab807518c7993b31e38fbe98cb0acfc7550c00d097824db3473678739130ab4 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#00CC00", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/3aec308817a72ecdad90d6061e27025b6599611fa0c031259329cc405d6934cb b/.resources/3aec308817a72ecdad90d6061e27025b6599611fa0c031259329cc405d6934cb new file mode 100644 index 00000000..26ff5815 --- /dev/null +++ b/.resources/3aec308817a72ecdad90d6061e27025b6599611fa0c031259329cc405d6934cb @@ -0,0 +1,28 @@ +WITH LANES AS ( + SELECT + DATE_FORMAT(MIN(timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id=:lane + GROUP BY DATE_FORMAT(timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp, + hour, + /* Counts: */ + total AS total_count, + /* PPH: */ + total AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/3b38d1d2b51471ae53f5b4c9943b5cc0da65edcf9b49da7fd0349ee753fd6dc5 b/.resources/3b38d1d2b51471ae53f5b4c9943b5cc0da65edcf9b49da7fd0349ee753fd6dc5 new file mode 100644 index 00000000..45d20bcc --- /dev/null +++ b/.resources/3b38d1d2b51471ae53f5b4c9943b5cc0da65edcf9b49da7fd0349ee753fd6dc5 @@ -0,0 +1,19 @@ +WITH INDUCTS AS ( + SELECT + DATE_FORMAT(MIN(timestamp), "%Y-%m-%d %H:%i:00") AS time, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id = :chute + GROUP BY DATE_FORMAT(timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*60) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM INDUCTS; \ No newline at end of file diff --git a/.resources/3d18eaae8a62afcc2038659a5a03350a62381e42cd40a5f128d6893ba710f027 b/.resources/3d18eaae8a62afcc2038659a5a03350a62381e42cd40a5f128d6893ba710f027 new file mode 100644 index 00000000..e2287142 --- /dev/null +++ b/.resources/3d18eaae8a62afcc2038659a5a03350a62381e42cd40a5f128d6893ba710f027 @@ -0,0 +1,290 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "VFD" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": { + "left": "#B3B3B3", + "right": "#D3D3D3" + }, + "showAlways": true, + "tagPath": "[default]MCP03/RO02/RO02_03/VFD", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "VFD" + }, + "position": { + "height": 64, + "width": 64, + "x": 67.5, + "y": 2.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_15" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/3f573caed8ff595829ea5ff2af8d9ce03f13ac90a8e9738f33d0a0d585c7de74 b/.resources/3f573caed8ff595829ea5ff2af8d9ce03f13ac90a8e9738f33d0a0d585c7de74 new file mode 100644 index 00000000..f4749ba2 --- /dev/null +++ b/.resources/3f573caed8ff595829ea5ff2af8d9ce03f13ac90a8e9738f33d0a0d585c7de74 @@ -0,0 +1,112 @@ +{ + "custom": {}, + "params": { + "filenames": [] + }, + "propConfig": { + "params.filenames": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 300, + "width": 400 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Markdown" + }, + "position": { + "height": "calc(100% - 100px)", + "width": "calc(100% - 50px)", + "x": 25, + "y": 25 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "path": "view.params.filenames" + }, + "transforms": [ + { + "code": "\ttext \u003d \"Are you sure you would like to delete the following config files:\\n\"\n\tfor val in value:\n\t\ttext +\u003d \"\\n* \"+val.value\n\treturn text", + "type": "script" + } + ], + "type": "property" + } + } + }, + "type": "ia.display.markdown" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tfilenames \u003d [filename.value for filename in self.view.params.filenames]\n\terr \u003d reports.deleteConfigs(filenames)\n\tsystem.perspective.sendMessage(\"custom-reports-refreshlist\", {})\n\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Yes" + }, + "position": { + "height": 55, + "width": 100, + "x": 25, + "y": 235 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Yes" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_No" + }, + "position": { + "height": 55, + "width": 100, + "x": "calc(100% - 125px)", + "y": 235 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "No" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/406c9715212bd7420f5c110c3acf369f4f10b61b42c512db4f21ea9bd9a7b8d3 b/.resources/406c9715212bd7420f5c110c3acf369f4f10b61b42c512db4f21ea9bd9a7b8d3 new file mode 100644 index 00000000..bf380672 --- /dev/null +++ b/.resources/406c9715212bd7420f5c110c3acf369f4f10b61b42c512db4f21ea9bd9a7b8d3 @@ -0,0 +1,11 @@ +SELECT + sorter, + scanner, + COUNT(*) AS count, + ROUND(COUNT(*)*3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate)) AS rate, + ROUND(AVG(gap_leading/10), 1) AS avg_gap_leading, + ROUND(AVG(gap_trailing/10), 1) AS avg_gap_trailing, + ROUND(AVG(pkg_length/10), 1) AS avg_pkg_length +FROM package_history +WHERE s04_timestamp BETWEEN :startDate AND :endDate +GROUP BY sorter, scanner; \ No newline at end of file diff --git a/.resources/409f5a51f30eacf96be24db04f44c575783e06e0c719f8558d6c6cac8b2d8fd9 b/.resources/409f5a51f30eacf96be24db04f44c575783e06e0c719f8558d6c6cac8b2d8fd9 new file mode 100644 index 00000000..11223177 --- /dev/null +++ b/.resources/409f5a51f30eacf96be24db04f44c575783e06e0c719f8558d6c6cac8b2d8fd9 @@ -0,0 +1,34 @@ +WITH SCANNERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + COUNT(*) AS total, + SUM(scanner_status NOT IN ("No Read", "No Code", "Multi Label")) AS good_read, + SUM(scanner_status = "No Read") AS no_read, + SUM(scanner_status = "No Code") AS no_code, + SUM(scanner_status = "Multi Label") AS multi_label + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND scanner = :scanner + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + good_read AS good_read_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + /* PPH: */ + ROUND(total*60) AS total_pph, + ROUND(good_read*60) AS good_read_pph, + ROUND(no_read*60) AS no_read_pph, + ROUND(no_code*60) AS no_code_pph, + ROUND(multi_label*60) AS multi_label_pph, + /* Percents: */ + ROUND(good_read/total, 4) AS good_read_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent +FROM SCANNERS; \ No newline at end of file diff --git a/.resources/41e36512aef41a4810b4094209598be84b707979d4b8cabf16a6152e615b44ea b/.resources/41e36512aef41a4810b4094209598be84b707979d4b8cabf16a6152e615b44ea new file mode 100644 index 00000000..d615c70f --- /dev/null +++ b/.resources/41e36512aef41a4810b4094209598be84b707979d4b8cabf16a6152e615b44ea @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#CCCCFF" + } + } +} \ No newline at end of file diff --git a/.resources/47661ee6590e5d5ffeefe03349e09ebfea92583850be43c9c64b1c40075a8909 b/.resources/47661ee6590e5d5ffeefe03349e09ebfea92583850be43c9c64b1c40075a8909 new file mode 100644 index 00000000..e01cc362 --- /dev/null +++ b/.resources/47661ee6590e5d5ffeefe03349e09ebfea92583850be43c9c64b1c40075a8909 @@ -0,0 +1,318 @@ +{ + "custom": {}, + "params": { + "maxZoom": 8 + }, + "propConfig": { + "params.maxZoom": { + "binding": { + "config": { + "expression": "8" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 3200, + "width": 8300 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Smalls" + }, + "position": { + "height": 195, + "width": 755, + "x": 1213, + "y": 859 + }, + "props": { + "params": { + }, + "path": "Windows/Graphics/Templates/Smalls", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Unloads" + }, + "position": { + "height": 1727, + "width": 1707, + "x": 180, + "y": 55 + }, + "props": { + "params": { + }, + "path": "Windows/Graphics/Templates/Unloads", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "EastSpirals" + }, + "position": { + "height": 1500, + "width": 2281, + "x": 1800, + "y": 1576 + }, + "props": { + "params": { + }, + "path": "Windows/Graphics/Templates/EastSpirals", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "WestSpirals" + }, + "position": { + "height": 1479, + "width": 1937, + "x": 133, + "y": 1576 + }, + "props": { + "params": { + }, + "path": "Windows/Graphics/Templates/WestSpirals", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "EastLoops" + }, + "position": { + "height": 1698, + "width": 1942, + "x": 6209, + "y": 1398 + }, + "props": { + "params": { + }, + "path": "Windows/Graphics/Templates/EastLoops", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "WestLoops" + }, + "position": { + "height": 1787, + "width": 2072, + "x": 4272, + "y": 1309 + }, + "props": { + "params": { + }, + "path": "Windows/Graphics/Templates/WestLoops", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "WestLoopsNavButton" + }, + "position": { + "height": 40, + "width": 120, + "x": 5274, + "y": 2101 + }, + "props": { + "params": { + "label": "West Loops", + "tagPath": "", + "view": "Windows/Graphics/West_Loops" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UpperLoopsNavButton" + }, + "position": { + "height": 40, + "width": 120, + "x": 6088, + "y": 2101 + }, + "props": { + "params": { + "label": "Upper Loops", + "tagPath": "", + "view": "Windows/Graphics/Upper_Loops" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "WestSpiralsNavButton" + }, + "position": { + "height": 40, + "width": 105, + "x": 262, + "y": 2540 + }, + "props": { + "params": { + "label": "West Spirals", + "tagPath": "", + "view": "Windows/Graphics/West_Spirals" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "EastSpiralsNavButton" + }, + "position": { + "height": 40, + "width": 105, + "x": 3257, + "y": 1380 + }, + "props": { + "params": { + "label": "East Spirals", + "tagPath": "", + "view": "Windows/Graphics/East_Spirals" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SmallsNavButton" + }, + "position": { + "height": 40, + "width": 80, + "x": 2200, + "y": 936 + }, + "props": { + "params": { + "label": "Smalls", + "tagPath": "", + "view": "Windows/Graphics/Smalls" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UnloadsNavButton" + }, + "position": { + "height": 40, + "width": 80, + "x": 843, + "y": 929 + }, + "props": { + "params": { + "label": "Unloads", + "tagPath": "", + "view": "Windows/Graphics/Unloads" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "EastLoopsNavButton" + }, + "position": { + "height": 40, + "width": 120, + "x": 7215, + "y": 2101 + }, + "props": { + "params": { + "label": "East Loops", + "tagPath": "", + "view": "Windows/Graphics/East_Loops" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/47a0bdd48c02699603ef878ecc26cdc62120caec544b2e78676112f13199e15a b/.resources/47a0bdd48c02699603ef878ecc26cdc62120caec544b2e78676112f13199e15a new file mode 100644 index 00000000..21a3e630 --- /dev/null +++ b/.resources/47a0bdd48c02699603ef878ecc26cdc62120caec544b2e78676112f13199e15a @@ -0,0 +1,1092 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ManualLaneStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}", + "where": "\"lane LIKE \\\"AS%CH\\\"\"" + }, + "queryPath": "Status/LaneStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "lane", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Lane" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Manual Lane Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4912c71b763616560a60666775287549eae7b53e6657483cd7fd80792d42ba21 b/.resources/4912c71b763616560a60666775287549eae7b53e6657483cd7fd80792d42ba21 new file mode 100644 index 00000000..33955d92 --- /dev/null +++ b/.resources/4912c71b763616560a60666775287549eae7b53e6657483cd7fd80792d42ba21 @@ -0,0 +1,4 @@ +SELECT DISTINCT destination_act AS lane +FROM package_history +WHERE destination_act IS NOT NULL +ORDER BY lane ASC; \ No newline at end of file diff --git a/.resources/4a09061ecd72294b5eeaf0e445343d97b139ac5373f0b9402295c61a3320a16c b/.resources/4a09061ecd72294b5eeaf0e445343d97b139ac5373f0b9402295c61a3320a16c new file mode 100644 index 00000000..6ccc3441 --- /dev/null +++ b/.resources/4a09061ecd72294b5eeaf0e445343d97b139ac5373f0b9402295c61a3320a16c @@ -0,0 +1,32 @@ +import os + +LOG = system.util.logger("HMI Setup") + +def upload(): + system.gui.messageBox("Please provide the file location of the Description of Operations...") + path = system.file.openFile('pdf') + if path == None: + system.gui.messageBox("No path given!") + else: + # Load file contents as csv: + tags = {} + try: + project = system.util.getProjectName() + print "Opening file..." + with open(path, 'rb') as pdf: + payload = { "data": pdf.read() } + print "Uploading file..." + system.util.sendMessage(project, "setup-doo", payload, "G") + print "Done!" + except: + # In case the csv file is corrupt or in a bad format, ignore it: + system.gui.messageBox("Failed to open file!") + +def store(data): + path = os.path.join(os.getcwd(), "webserver", "webapps", "main", "pdfs") + if not os.path.exists(path): + os.makedirs(path) + path = os.path.join(path, "Description of Operations.pdf") + with open(path, 'wb') as pdf: + pdf.write(data) + LOG.info("Uploaded new Description of Operations: /pdfs/Description of Operations.pdf") diff --git a/.resources/4a71a4e6794c6fd99697d927a8f0fe496daa86b1c0599e64b7d86cb5a45d8cf0 b/.resources/4a71a4e6794c6fd99697d927a8f0fe496daa86b1c0599e64b7d86cb5a45d8cf0 new file mode 100644 index 00000000..a0fa2d7f --- /dev/null +++ b/.resources/4a71a4e6794c6fd99697d927a8f0fe496daa86b1c0599e64b7d86cb5a45d8cf0 @@ -0,0 +1,359 @@ +{ + "custom": {}, + "params": { + "titleExtra": "4 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "GaylordStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Status/GaylordStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "gaylord", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Gaylord" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Cycles (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 130 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Gaylord Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4a9a483e98241b7ced748ddb6df9320e708a6bc299762e5e6e4551ca02209c8e b/.resources/4a9a483e98241b7ced748ddb6df9320e708a6bc299762e5e6e4551ca02209c8e new file mode 100644 index 00000000..90214158 --- /dev/null +++ b/.resources/4a9a483e98241b7ced748ddb6df9320e708a6bc299762e5e6e4551ca02209c8e @@ -0,0 +1,37 @@ +WITH LANES AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + lane_id AS chute, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id LIKE "RS%4CH" + GROUP BY lane_id + ORDER BY lane_id +) +SELECT + start_timestamp, + end_timestamp, + chute, + /*CASE chute + WHEN "RE5-1CH" THEN "RB49/40" + WHEN "RE5-2CH" THEN "RB47/48" + WHEN "RE5-3CH" THEN "RB45/46" + WHEN "RE5-4CH" THEN "RB43/44" + WHEN "RE5-5CH" THEN "RB41/42" + WHEN "RE5-6CH" THEN "RB22/21" + WHEN "RE5-7CH" THEN "RB24/23" + WHEN "RE5-8CH" THEN "RB26/25" + WHEN "RE5-9CH" THEN "RB28/27" + WHEN "RE5-10CH" THEN "RB20/29" + ELSE "Unknown" + END AS robins,*/ + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/4bac23adea4aa448b68092806e553489f813a5f4128bc147b8a175a756fd3e57 b/.resources/4bac23adea4aa448b68092806e553489f813a5f4128bc147b8a175a756fd3e57 new file mode 100644 index 00000000..47022bf0 --- /dev/null +++ b/.resources/4bac23adea4aa448b68092806e553489f813a5f4128bc147b8a175a756fd3e57 @@ -0,0 +1,307 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "FIO" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "EIP" + }, + "position": { + "height": 45, + "width": 90, + "x": 54.5, + "y": 12.5 + }, + "propConfig": { + "meta.name": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Label" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027EIP\u0027)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4bdd9a1373c775c1f848c75e73dfd6af21067986d76b1c245da21f733cb686b8 b/.resources/4bdd9a1373c775c1f848c75e73dfd6af21067986d76b1c245da21f733cb686b8 new file mode 100644 index 00000000..7df03faf --- /dev/null +++ b/.resources/4bdd9a1373c775c1f848c75e73dfd6af21067986d76b1c245da21f733cb686b8 @@ -0,0 +1,195 @@ +{ + "custom": {}, + "params": { + "alwaysShowAll": false, + "mirror": false, + "tagPath": "[default]MCP02/CH_20130/CH_20130" + }, + "propConfig": { + "params.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 81, + "width": 50 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "meta": { + "name": "CH" + }, + "position": { + "height": 30, + "rotate": { + "angle": "180deg" + }, + "width": "100%", + "y": 4 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/CH/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "CH_Jam_PE" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 43, + "x": 2, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/CH_Jam_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 18, + "y": 65 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(1, -1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openPopup", + "params": [], + "script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"SpiralChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"spiralchute\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t\"mirror\": self.view.params.mirror\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4bf17c38923dcf173637fc3316c6dd436989ca566ae4b4cfb9b9b82765ce7079 b/.resources/4bf17c38923dcf173637fc3316c6dd436989ca566ae4b4cfb9b9b82765ce7079 new file mode 100644 index 00000000..cc44d06a --- /dev/null +++ b/.resources/4bf17c38923dcf173637fc3316c6dd436989ca566ae4b4cfb9b9b82765ce7079 @@ -0,0 +1,251 @@ +{ + "custom": { + "disconnected": true, + "plc": "", + "searchId": "value", + "state": 0, + "string": "Unknown" + }, + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "!isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "OK" + }, + { + "input": 2, + "output": "Faulted" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 40 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "text": "FIO", + "textStyle": { + "fontSize": "20px", + "textAlign": "center", + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-JR\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_fio_safety" + }, + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "borderStyle": "solid", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4d58d77f732a0205c177dc7d817419977f55ce172752b64f9caa0e9630d346e6 b/.resources/4d58d77f732a0205c177dc7d817419977f55ce172752b64f9caa0e9630d346e6 new file mode 100644 index 00000000..02a2441c --- /dev/null +++ b/.resources/4d58d77f732a0205c177dc7d817419977f55ce172752b64f9caa0e9630d346e6 @@ -0,0 +1,236 @@ +{ + "custom": { + "state_string": "OK", + "string": "OK" + }, + "params": { + "tagProps": [ + "value" + ] + }, + "propConfig": { + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 1, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 4 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 6 + }, + { + "input": 7, + "output": 7 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "OK" + }, + { + "input": 1, + "output": "Fault" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 20 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "EncoderIcon" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#47FF47", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "cx": 12, + "cy": "12", + "fill": {}, + "name": "statusCircle", + "rx": "10", + "ry": "10", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "ellipse" + }, + { + "d": "M 4.6516854,13.685393 H 9.8292135", + "fill": {}, + "name": "segLeft", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "M 9.6000004,13.469662 V 8.2112357", + "fill": {}, + "name": "segUpLeft", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "M 19.829214,13.685393 H 14.651685", + "fill": {}, + "name": "segRight", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "M 14.880899,13.469662 V 8.211236", + "fill": {}, + "name": "segUpRight", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + }, + { + "d": "m 9.8154019,8.4404597 4.8815551,0.013462", + "fill": {}, + "name": "segTop", + "stroke": { + "paint": "#000000", + "width": 1 + }, + "type": "path" + } + ], + "viewBox": "0 0 24 24" + }, + "type": "ia.shapes.svg" + } + ], + "meta": { + "name": "Encoder", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_encoders" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4df21545e34eae9d00b424611007aa34d3aa577d2a41a1760d152ef180cccf98 b/.resources/4df21545e34eae9d00b424611007aa34d3aa577d2a41a1760d152ef180cccf98 new file mode 100644 index 00000000..ab882359 --- /dev/null +++ b/.resources/4df21545e34eae9d00b424611007aa34d3aa577d2a41a1760d152ef180cccf98 @@ -0,0 +1,2727 @@ +{ + "custom": { + "currentTab": 0, + "isHeatmap": false + }, + "params": {}, + "propConfig": { + "custom.currentTab": { + "persistent": true + }, + "custom.isHeatmap": { + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 100, + "width": 1400 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Background" + }, + "position": { + "height": "100%", + "width": 32 + }, + "props": { + "style": { + "background": "#808080", + "border-right": "2px solid #000" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif self.view.custom.currentTab !\u003d 0:\n\t\tself.view.custom.currentTab \u003d 0" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Navigation" + }, + "position": { + "height": 31, + "width": 28, + "x": 1, + "y": 1 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Icon_Navigation" + }, + "position": { + "height": 22, + "width": 22, + "x": 4, + "y": 5 + }, + "propConfig": { + "props.color": { + "binding": { + "config": { + "path": "view.custom.currentTab" + }, + "transforms": [ + { + "fallback": "#AAAAAA", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#000000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "color": "#000000", + "path": "material/navigation", + "style": { + "pointer-events": "none" + } + }, + "type": "ia.display.icon" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif self.view.custom.currentTab !\u003d 1:\n\t\tself.view.custom.currentTab \u003d 1" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Alarms" + }, + "position": { + "height": 31, + "width": 28, + "x": 1, + "y": 33 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Icon_Alarms" + }, + "position": { + "height": 22, + "width": 22, + "x": 4, + "y": 38 + }, + "propConfig": { + "props.color": { + "binding": { + "config": { + "expression": "if({../AlarmContainer/Table.custom.hasAlarms}\r\n \u0026\u0026 {[default]Gateway/ToggleTag},\r\n \"#F00\",\r\n if({view.custom.currentTab} \u003d 1,\r\n \"#000\",\r\n \"#AAA\"\r\n )\r\n)" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "color": "#AAA", + "path": "material/notifications_active", + "style": { + "pointer-events": "none" + } + }, + "type": "ia.display.icon" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tif self.view.custom.currentTab !\u003d 2:\n\t\tself.view.custom.currentTab \u003d 2" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Options" + }, + "position": { + "height": 31, + "width": 28, + "x": 1, + "y": 65 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Icon_Options" + }, + "position": { + "height": 22, + "width": 22, + "x": 4, + "y": 70 + }, + "propConfig": { + "props.color": { + "binding": { + "config": { + "path": "view.custom.currentTab" + }, + "transforms": [ + { + "fallback": "#AAAAAA", + "inputType": "scalar", + "mappings": [ + { + "input": 2, + "output": "#000000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "color": "#AAAAAA", + "path": "material/settings", + "style": { + "pointer-events": "none" + } + }, + "type": "ia.display.icon" + }, + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 24, + "width": 100, + "x": 110 + }, + "props": { + "style": { + "backgroundColor": "#DDD", + "borderBottomStyle": "solid", + "borderLeftStyle": "solid", + "borderRightStyle": "solid", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Time:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\twindow\u003d\"Popups/Heatmap/Config\"\n\tif self.session.custom.isMobile:\n\t\tsystem.perspective.navigate(view\u003dwindow)\n\telse:\n\t\tsystem.perspective.openPopup(\"HeatmapSettings\", window, title\u003d\"Heatmap Configuration\", modal\u003dTrue, overlayDismiss\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ConfigButton" + }, + "position": { + "height": 32, + "width": 108, + "x": 1, + "y": 1 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "!{session.custom.heatmapSettings.enabled}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Configure" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdata \u003d self.getSibling(\"AlarmTable\").getChild(\"Table\")\n\tutils.downloadCSV(data, \"Heatmap\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ExportButton" + }, + "position": { + "height": 31, + "width": 108, + "x": 1, + "y": 34 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\theatmapSettings \u003d self.session.custom.heatmapSettings\n\theatmapSettings.enabled \u003d False\n\t# Clear data:\n\theatmapSettings.data \u003d system.dataset.clearDataset(heatmapSettings.data)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ExitButton" + }, + "position": { + "height": 31, + "width": 108, + "x": 1, + "y": 66 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "exit mode" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "height": 24, + "width": 350, + "x": 210 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "struct": { + "heatmapEnable": "{session.custom.heatmapSettings.enabled}", + "time": "{session.custom.heatmapSettings.time}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tif value.heatmapEnable:\n\t\treturn value.time.start.value + \" to \" + value.time.end.value\n\telse:\n\t\treturn \"\"", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "alignVertical": "top", + "style": { + "backgroundColor": "#CCC", + "borderBottomStyle": "solid", + "borderRightStyle": "solid", + "overflow": "hidden", + "textOverflow": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "height": 24, + "width": 100, + "x": 110, + "y": 24 + }, + "props": { + "style": { + "backgroundColor": "#DDD", + "borderBottomStyle": "solid", + "borderLeftStyle": "solid", + "borderRightStyle": "solid", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Shifts:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_4" + }, + "position": { + "height": 24, + "width": 100, + "x": 110, + "y": 48 + }, + "props": { + "style": { + "backgroundColor": "#DDD", + "borderBottomStyle": "solid", + "borderLeftStyle": "solid", + "borderRightStyle": "solid", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Alarms:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_5" + }, + "position": { + "height": 24, + "width": 100, + "x": 110, + "y": 72 + }, + "props": { + "style": { + "backgroundColor": "#DDD", + "borderBottomStyle": "solid", + "borderLeftStyle": "solid", + "borderRightStyle": "solid", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Devices:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_6" + }, + "position": { + "height": 24, + "width": 350, + "x": 210, + "y": 24 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\t{session.custom.heatmapSettings.shiftsText},\r\n\t\"\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "alignVertical": "top", + "style": { + "backgroundColor": "#CCC", + "borderBottomStyle": "solid", + "borderRightStyle": "solid", + "overflow": "hidden", + "textOverflow": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_7" + }, + "position": { + "height": 24, + "width": 350, + "x": 210, + "y": 48 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\t{session.custom.heatmapSettings.alarmsText},\r\n\t\"\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "alignVertical": "top", + "style": { + "backgroundColor": "#CCC", + "borderBottomStyle": "solid", + "borderRightStyle": "solid", + "overflow": "hidden", + "textOverflow": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_8" + }, + "position": { + "height": 24, + "width": 350, + "x": 210, + "y": 72 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\t{session.custom.heatmapSettings.devicesText},\r\n\t\"\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "alignVertical": "top", + "style": { + "backgroundColor": "#CCC", + "borderBottomStyle": "solid", + "borderRightStyle": "solid", + "overflow": "hidden", + "textOverflow": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\twindow \u003d \"Windows/GraphicsWrapper\"\n\tplctag \u003d self.props.data.getValueAt(event.row, \"plctag\")\n\tscreen \u003d alarms.resolveScreen(event.value.device, plctag)\n\tparams \u003d {\"view\": screen}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + }, + "scope": "G", + "type": "script" + }, + "onSelectionChange": { + "config": { + "script": "\tif event.selectedRow \u003c\u003e None:\n\t\tdevice \u003d self.props.data.getValueAt(event.selectedRow, \"device\")\n\t\tself.session.custom.alarmHighlight \u003d device\n\telse:\n\t\tself.session.custom.alarmHighlight \u003d \"\"" + }, + "scope": "G", + "type": "script" + } + }, + "dom": { + "onKeyDown": { + "config": { + "script": "\tif event.key \u003d\u003d \"Escape\": # Escape key\n\t\tself.props.selection.selectedColumn \u003d None\n\t\tself.props.selection.selectedRow \u003d None" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "200%", + "width": "200%", + "x": "-50%", + "y": "-50%" + }, + "propConfig": { + "custom.hasAlarms": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Design/ActiveAlarms" + }, + "transforms": [ + { + "code": "\trows \u003d []\n\tfor r in range(value.getRowCount()):\n\t\tif value.getValueAt(r, \"Class\") \u003c\u003e \"Error\":\n\t\t\trows.append(r)\n\treturn system.dataset.deleteRows(value, rows).getRowCount()\u003e0", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.data": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.data" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tself.props.selectedColumn \u003d None\n\tself.session.custom.alarmHighlight \u003d \"\"" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "color": "#FF0000", + "fontFamily": "Helvetica", + "fontSize": "22px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "duration", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "classes": "", + "fontSize": "26px", + "fontWeight": "bold" + }, + "title": "Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 200 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "count", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "classes": "", + "fontSize": "26px", + "fontWeight": "bold" + }, + "title": "Count" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 200 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "classes": "", + "fontSize": "26px", + "fontWeight": "bold" + }, + "title": "Location" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "description", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "classes": "", + "fontSize": "26px", + "fontWeight": "bold" + }, + "title": "Description" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "selectedColumn": null, + "style": { + "fontFamily": "Helvetica", + "fontSize": "24px", + "fontWeight": "bold", + "transform": "scale(0.5)" + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "AlarmTable" + }, + "position": { + "height": "100%", + "width": "calc(100% - 560px)", + "x": 560 + }, + "props": { + "style": { + "min-width": "786px" + } + }, + "type": "ia.container.coord" + } + ], + "meta": { + "name": "HeatmapContainer", + "visible": false + }, + "position": { + "height": "100%", + "width": "calc(100% - 32px)", + "x": 32 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "type": "property" + }, + "persistent": true + } + }, + "type": "ia.container.coord" + }, + { + "meta": { + "name": "NavigationContainer" + }, + "position": { + "height": "100%", + "width": "calc(100% - 32px)", + "x": 32 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.custom.currentTab" + }, + "transforms": [ + { + "fallback": "false", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "{session.custom.heatmapSettings.enabled}\u003dfalse" + } + ], + "outputType": "expression", + "type": "map" + } + ], + "type": "property" + } + }, + "props.instances": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Areas" + }, + "transforms": [ + { + "code": "\treturn nav.genButtonsFromDataset(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "enableTransitions": false, + "transitionSettings": { + "duration": "1s", + "timingFunction": "linear" + } + }, + "type": "ia.display.viewcanvas" + }, + { + "children": [ + { + "meta": { + "name": "Background" + }, + "position": { + "height": "100%", + "width": 182 + }, + "props": { + "style": { + "background": "#AAA", + "border-right": "2px solid #000" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/active" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button_Active" + }, + "position": { + "height": 23, + "width": 172, + "x": 4, + "y": 23 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Active" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/hitlist" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button_HitList" + }, + "position": { + "height": 23, + "width": 172, + "x": 4, + "y": 48 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Hit List" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/history" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button_History" + }, + "position": { + "height": 23, + "width": 172, + "x": 4, + "y": 73 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "History" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_Alarms" + }, + "position": { + "height": 21, + "width": 180 + }, + "props": { + "style": { + "backgroundColor": "#FF8A8A", + "border-bottom": "2px solid #000", + "fontFamily": "Helvetica", + "fontSize": "11px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Showing 9 Alarms" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tscreen \u003d alarms.resolveScreenBySource(event.value.source)\n\tif screen \u003c\u003e \"\":\n\t\twindow \u003d \"Windows/GraphicsWrapper\"\n\t\tparams \u003d {\"view\": screen}\n\t\tsystem.perspective.navigate(\"/\")\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + }, + "scope": "G", + "type": "script" + }, + "onSelectionChange": { + "config": { + "script": "\tif event.selectedRow \u003c\u003e None:\n\t\tdevice \u003d self.props.data.getValueAt(event.selectedRow, \"device\")\n\t\tself.session.custom.alarmHighlight \u003d device\n\telse:\n\t\tself.session.custom.alarmHighlight \u003d \"\"" + }, + "scope": "G", + "type": "script" + } + }, + "dom": { + "onKeyDown": { + "config": { + "script": "\tif event.key \u003d\u003d \"Escape\": # Escape key\n\t\tself.props.selection.selectedColumn \u003d None\n\t\tself.props.selection.selectedRow \u003d None" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "calc(100% - 182px)", + "x": 182 + }, + "propConfig": { + "custom.hasAlarms": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/ActiveAlarms" + }, + "transforms": [ + { + "code": "\tfor r in range(value.getRowCount()):\n\t\tif value.getValueAt(r, \"Class\") \u003d\u003d \"Error\":\n\t\t\treturn True\n\treturn False", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.data": { + "binding": { + "config": { + "expression": "if({../AlarmContainer.meta.visible} \u0026\u0026 {page.props.primaryView} !\u003d null \u0026\u0026 {session.custom.currentGraphic} !\u003d null,\r\n\t// We return ActiveAlarms anyway, regardless of result, because we want to subscribe to the above too\r\n\t{[default]Gateway/ActiveAlarms},\r\n\t{[default]Gateway/ActiveAlarms}\r\n)" + }, + "transforms": [ + { + "code": "\tif self.parent.parent.getChild(\"AlarmContainer\").meta.visible:\n\t\trows \u003d []\n\t\tfor r in range(value.getRowCount()):\n\t\t\tif value.getValueAt(r, \"Class\") !\u003d \"Error\":\n\t\t\t\trows.append(r)\n\t\ta \u003d system.dataset.deleteRows(value, rows)\n\t\tscreen \u003d self.page.props.primaryView\n\t\tshownRows \u003d totalRows \u003d a.getRowCount()\n\t\tif screen \u003d\u003d \"Windows/GraphicsWrapper\":\n\t\t\ta \u003d alarms.filterAlarms(self.session.custom.currentGraphic, a)\n\t\t\tshownRows \u003d a.getRowCount()\n\t\t# Update alarm label:\n\t\talarmLabel \u003d self.parent.getChild(\"Label_Alarms\")\n\t\tif shownRows \u003c\u003e totalRows:\n\t\t\talarmLabel.props.text \u003d \u0027Showing {:n} of {:n} Alarms\u0027.format(shownRows, totalRows)\n\t\telse:\n\t\t\talarmLabel.props.text \u003d \u0027Showing {:n} Alarms\u0027.format(totalRows)\n\t\treturn a\n\telse:\n\t\treturn system.dataset.clearDataset(value)", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#FF0000", + "fontFamily": "Helvetica", + "fontSize": "11px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "id", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Number (ID)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "eventtime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Event Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 135 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "duration", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "class", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Class" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 75 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Location" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "description", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Description" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "plctag", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "classes": "", + "fontSize": "13px", + "fontWeight": "bold" + }, + "title": "Tag" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "source", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Alarm Data" + } + }, + "pager": { + "bottom": false + }, + "rows": { + "height": 15, + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "12px", + "fontWeight": "bold", + "minWidth": "786px", + "transform": "scale(1)" + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "AlarmContainer", + "visible": false + }, + "position": { + "height": "100%", + "width": "calc(100% - 32px)", + "x": 32 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.custom.currentTab" + }, + "transforms": [ + { + "fallback": "false", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "{session.custom.heatmapSettings.enabled}\u003dfalse" + } + ], + "outputType": "expression", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "type": "ia.container.coord" + }, + { + "children": [ + { + "custom": { + "selectedState": "value" + }, + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tval \u003d self.props.selected\n\tif val in [True, False]:\n\t\tfor child in self.parent.getChildren():\n\t\t\tif child.meta.name.startswith(\"Checkbox\"):\n\t\t\t\tchild.props.selected \u003d val\n\telse:\n\t\tself.props.selected \u003d False" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Show_Devices" + }, + "position": { + "height": 24, + "width": 160, + "x": 50 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "expression": " {../Checkbox_Beacons.props.selected}\r\n||{../Checkbox_DivertPaddles.props.selected}\r\n||{../Checkbox_EIPs.props.selected}\r\n||{../Checkbox_Encoders.props.selected}\r\n||{../Checkbox_Estops.props.selected}\r\n||{../Checkbox_ProxSwitches.props.selected}\r\n||{../Checkbox_MCPs.props.selected}\r\n||{../Checkbox_PhotoEyes.props.selected}\r\n||{../Checkbox_PushButtons.props.selected}\r\n||{../Checkbox_Scanners.props.selected}\r\n||{../Checkbox_VFDs.props.selected}" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderBottomStyle": "solid", + "fontSize": "16px", + "fontWeight": "bold" + }, + "text": "Show Devices" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_Beacons" + }, + "position": { + "height": 24, + "width": 180, + "x": 50, + "y": 24 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.Beacons" + }, + "type": "property" + } + } + }, + "props": { + "text": "Beacons" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_DivertPaddles" + }, + "position": { + "height": 24, + "width": 180, + "x": 50, + "y": 48 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.ConveyorLabels" + }, + "type": "property" + } + } + }, + "props": { + "text": "Conveyor Labels" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_EIPs" + }, + "position": { + "height": 24, + "width": 180, + "x": 50, + "y": 72 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.EIPs" + }, + "type": "property" + } + } + }, + "props": { + "text": "EIPs" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_Encoders" + }, + "position": { + "height": 24, + "width": 180, + "x": 220 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.Encoders" + }, + "type": "property" + } + } + }, + "props": { + "text": "Encoders" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_Estops" + }, + "position": { + "height": 24, + "width": 180, + "x": 220, + "y": 24 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.Estops" + }, + "type": "property" + } + } + }, + "props": { + "text": "Estops" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_ProxSwitches" + }, + "position": { + "height": 24, + "width": 180, + "x": 220, + "y": 48 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.LimitSwitches" + }, + "type": "property" + } + } + }, + "props": { + "text": "Prox Switches" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_MCPs" + }, + "position": { + "height": 24, + "width": 180, + "x": 220, + "y": 72 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.MCPs" + }, + "type": "property" + } + } + }, + "props": { + "text": "MCPs" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_PhotoEyes" + }, + "position": { + "height": 24, + "width": 180, + "x": 390 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.PhotoEyes" + }, + "type": "property" + } + } + }, + "props": { + "text": "Photo Eyes" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_PushButtons" + }, + "position": { + "height": 24, + "width": 180, + "x": 390, + "y": 24 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.PushButtons" + }, + "type": "property" + } + } + }, + "props": { + "text": "Push Buttons" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_Scanners" + }, + "position": { + "height": 24, + "width": 180, + "x": 390, + "y": 48 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.Scanners" + }, + "type": "property" + } + } + }, + "props": { + "text": "Scanners" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "Checkbox_VFDs" + }, + "position": { + "height": 24, + "width": 180, + "x": 390, + "y": 72 + }, + "propConfig": { + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "path": "session.custom.dexmanager.show.VFDs" + }, + "type": "property" + } + } + }, + "props": { + "text": "VFDs" + }, + "type": "ia.input.checkbox" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tgateway.setPowerSaveMin(self.props.value)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "PowerSaveMinutes" + }, + "position": { + "height": 25, + "width": 170, + "x": 570, + "y": 28 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "struct": { + "roles": "{session.props.auth.user.roles}", + "type": "{session.props.device.type}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\treturn value.type \u003d\u003d \"designer\" or (value.roles \u003c\u003e None and len(value.roles))", + "type": "script" + } + ], + "type": "expr-struct" + } + }, + "props.value": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/PowerSaveMin" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "ia.input.numeric-entry-field" + }, + { + "meta": { + "name": "Label_PowerSave" + }, + "position": { + "height": 24, + "width": 170, + "x": 570 + }, + "props": { + "style": { + "borderBottomStyle": "solid", + "fontSize": "16px", + "fontWeight": "bold" + }, + "text": "Power Save Minutes" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_FMS", + "visible": false + }, + "position": { + "height": 24, + "width": 245, + "x": 785 + }, + "props": { + "style": { + "borderBottomStyle": "solid", + "fontSize": "16px", + "fontWeight": "bold" + }, + "text": "FMS Options" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Slider_ImbalanceSP", + "visible": false + }, + "position": { + "height": 32, + "width": 120, + "x": 905, + "y": 55 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "expression": "{../Toggle_PeakMode.props.enabled} \u0026\u0026 {../Toggle_PeakMode.props.selected}" + }, + "type": "expr" + } + }, + "props.trackColor": { + "binding": { + "config": { + "expression": "if({parent.meta.visible},\r\n\t\"\",\r\n\t\"rgba(0,0,0,0)\"\r\n)" + }, + "type": "expr" + }, + "persistent": true + }, + "props.value": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 0.5, + "mode": "direct", + "tagPath": "[default]FMS/Peak_Mode_Imbalance_SP" + }, + "type": "tag" + } + } + }, + "props": { + "labels": { + "interval": 5, + "show": true + }, + "max": 90, + "min": 75, + "step": 5, + "trackColor": "rgba(0,0,0,0)" + }, + "type": "ia.input.slider" + }, + { + "meta": { + "name": "Toggle_PeakMode", + "visible": false + }, + "position": { + "height": 32, + "width": 55, + "x": 885, + "y": 25 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "struct": { + "roles": "{session.props.auth.user.roles}", + "type": "{session.props.device.type}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\treturn value.type \u003d\u003d \"designer\" or (value.roles \u003c\u003e None and len(value.roles))", + "type": "script" + } + ], + "type": "expr-struct" + } + }, + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 0.5, + "mode": "direct", + "tagPath": "[default]FMS/Peak_Mode_Enabled" + }, + "type": "tag" + } + } + }, + "props": { + "label": { + "position": "left" + } + }, + "type": "ia.input.toggle-switch" + }, + { + "meta": { + "name": "Label_PeakMode", + "visible": false + }, + "position": { + "height": 25, + "width": 110, + "x": 785, + "y": 28 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + } + }, + "props": { + "text": "Peak Mode:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_ImbalanceSP", + "visible": false + }, + "position": { + "height": 25, + "width": 110, + "x": 785, + "y": 58 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + } + }, + "props": { + "text": "Imbalance SP:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_PeakMode_0", + "visible": false + }, + "position": { + "height": 25, + "width": 60, + "x": 935, + "y": 28 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.text": { + "binding": { + "config": { + "expression": "if({../Toggle_PeakMode.props.selected},\r\n\t\"On\",\r\n\t\"Off\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_PeakMode_1", + "visible": false + }, + "position": { + "height": 25, + "width": 110, + "x": 1040, + "y": 28 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + } + }, + "props": { + "text": "RE5 To PS3:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Toggle_PeakMode_0", + "visible": false + }, + "position": { + "height": 32, + "width": 55, + "x": 1140, + "y": 25 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "struct": { + "enabled": " {[default]MCP03_Custom/RE05_To_PS03_HMI_Enable}\r\n\u0026\u0026{[default]MCP04_Custom/RE05_To_PS03_HMI_Enable}", + "roles": "{session.props.auth.user.roles}", + "type": "{session.props.device.type}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\treturn value.enabled and (value.type \u003d\u003d \"designer\" or (value.roles \u003c\u003e None and len(value.roles)))", + "type": "script" + } + ], + "type": "expr-struct" + } + }, + "props.selected": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 0.5, + "mode": "direct", + "tagPath": "[default]FMS/RE05_To_PS03_HMI" + }, + "type": "tag" + } + } + }, + "props": { + "label": { + "position": "left" + } + }, + "type": "ia.input.toggle-switch" + }, + { + "meta": { + "name": "Label_PeakMode_2", + "visible": false + }, + "position": { + "height": 25, + "width": 60, + "x": 1190, + "y": 28 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Label_FMS.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "props.text": { + "binding": { + "config": { + "expression": "try(\r\nif({[default]FMS/RE05_To_PS03_HMI},\r\n\t\"Reverse\",\r\n\t\"Forward\"\r\n),\r\n\"Unknown\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Docked_Extra" + }, + "position": { + "height": "100%", + "width": "calc(100% - 775px)", + "x": 775 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "path": "Windows/Docked/Docked_Extra" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "OptionsContainer", + "visible": false + }, + "position": { + "height": "100%", + "width": "calc(100% - 32px)", + "x": 32 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.custom.currentTab" + }, + "transforms": [ + { + "fallback": "false", + "inputType": "scalar", + "mappings": [ + { + "input": 2, + "output": "{session.custom.heatmapSettings.enabled}\u003dfalse" + } + ], + "outputType": "expression", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "background": "#EEE" + } + }, + "type": "ia.container.coord" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background": "#AAA", + "border-top": "2px solid #000" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4e36ff0e8416ea1d19aaf2420cb3e458afbd3f91331ed14f7fe38cdc72a2cd90 b/.resources/4e36ff0e8416ea1d19aaf2420cb3e458afbd3f91331ed14f7fe38cdc72a2cd90 new file mode 100644 index 00000000..a6ba74f6 --- /dev/null +++ b/.resources/4e36ff0e8416ea1d19aaf2420cb3e458afbd3f91331ed14f7fe38cdc72a2cd90 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF0000", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/4e8cd05f5087d60df1b9a2b06300087c48a921c32a351e0b20988c3b4751bfe4 b/.resources/4e8cd05f5087d60df1b9a2b06300087c48a921c32a351e0b20988c3b4751bfe4 new file mode 100644 index 00000000..f5abd78f --- /dev/null +++ b/.resources/4e8cd05f5087d60df1b9a2b06300087c48a921c32a351e0b20988c3b4751bfe4 @@ -0,0 +1,15 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 100 + } + }, + "root": { + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/4fe9aa0e6014156977edfe9b57973bf88ccc364f959332151105929db06f7279 b/.resources/4fe9aa0e6014156977edfe9b57973bf88ccc364f959332151105929db06f7279 new file mode 100644 index 00000000..f2d3dfa0 --- /dev/null +++ b/.resources/4fe9aa0e6014156977edfe9b57973bf88ccc364f959332151105929db06f7279 @@ -0,0 +1,57 @@ +WITH range_alarm_events AS ( + SELECT e.*, + /* Get the last time this event was active within the given time range*/ + ( + /* Search for the clear event (if exists) for the outer query's active event */ + SELECT MIN(eventtime) + FROM alarm_events e2 + WHERE e2.eventid = e.eventid /* eventid is unique per alarm instance */ + AND e2.eventtime >= e.eventtime + AND e2.eventtype = 1 /* Look only for the clear event */ + ORDER BY eventtime ASC + LIMIT 1 + ) AS endtime + FROM alarm_events e + /* The range for both start/end allows for index optimizations */ + WHERE + /* Filter for Active events */ + eventtype = 0 + /* Filter priority */ + AND priority >= :priority + /* Filter by tag */ + AND source LIKE CONCAT("prov:default:/tag:", REGEXP_REPLACE(:tagPath, "\\[.*\\]|\\/Graphics", ""), "%") + ORDER BY eventtime DESC + LIMIT 50 +), range_alarm_events2 AS ( + SELECT *, + COALESCE(endtime, NOW()) AS endtime_est, /* Clamp to end of time range if clear event is after end time */ + TIMESTAMPDIFF(SECOND, eventtime, COALESCE(endtime, NOW())) AS duration + FROM range_alarm_events +) +SELECT e.id, + e.eventtime AS starttime, e.endtime, + /* Translate duration to a string */ + CAST(SEC_TO_TIME(FLOOR(e.duration)) AS CHAR) AS duration, + /* Retrieve data */ + ddevice.strvalue AS device, + displaypath AS description, + e.source, + /* Translate priority to string */ + dclass.strvalue AS class, + CASE + WHEN e.priority=4 THEN "Critical" + WHEN e.priority=3 THEN "High" + WHEN e.priority=2 THEN "Medium" + WHEN e.priority=1 THEN "Low" + WHEN e.priority=0 THEN "Diagnostic" + ELSE "N/A" + END AS priority, + /* Retrieve PLCTag */ + dtag.strvalue AS plctag +FROM range_alarm_events2 e +/* Lookup PLCTag */ +JOIN alarm_event_data dtag ON e.id = dtag.id AND dtag.propname = "PLCTag" +/* Lookup Device */ +JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" +/* Lookup Class */ +JOIN alarm_event_data dclass ON e.id = dclass.id AND dclass.propname = "Class"; \ No newline at end of file diff --git a/.resources/50205d600c4f1edc2555df0ac560cec71a5d146de6a2fc6b9aa920f8f2c304da b/.resources/50205d600c4f1edc2555df0ac560cec71a5d146de6a2fc6b9aa920f8f2c304da new file mode 100644 index 00000000..9eff872f --- /dev/null +++ b/.resources/50205d600c4f1edc2555df0ac560cec71a5d146de6a2fc6b9aa920f8f2c304da @@ -0,0 +1,3189 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 508, + "width": 1103 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "OS01_01GR" + }, + "position": { + "height": 56, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 77, + "x": 852, + "y": 405 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_01GR/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "OS01_02CH" + }, + "position": { + "height": 20, + "width": 250, + "x": 852, + "y": 309 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_AL0" + }, + "position": { + "height": 7, + "rotate": { + "anchor": "0% 0%" + }, + "width": 83, + "x": 601, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/AL0/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_AL1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0% 0%" + }, + "width": 42, + "x": 642, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/AL1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_AL2" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0% 0%" + }, + "width": 42, + "x": 642, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/AL2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D0" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 22, + "x": 361, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D0/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D1" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 22, + "x": 382, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D2" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 403, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D3" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 420, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D3/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D4" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 437, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D4/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D5" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 454, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D5/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_D6" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 471, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D6/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_DV1" + }, + "position": { + "height": 56, + "rotate": { + "anchor": "0% 0%", + "angle": "270deg" + }, + "width": 32, + "x": 755, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/DV1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "bar" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_DV2" + }, + "position": { + "height": 56, + "rotate": { + "anchor": "0% 0%", + "angle": "270deg" + }, + "width": 32, + "x": 852, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/DV2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "bar" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_F1" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 24, + "x": 488, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/F1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_F2" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 24, + "x": 511, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/F2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_F3" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 24, + "x": 534, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/F3/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_MG1" + }, + "position": { + "height": 13, + "rotate": { + "anchor": "0% 0%" + }, + "width": 42, + "x": 601, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/MG1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-left" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_MG2" + }, + "position": { + "height": 17, + "rotate": { + "anchor": "0% 0%" + }, + "width": 42, + "x": 601, + "y": 453 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/MG2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "skew-right" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_TA1" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 34, + "x": 874, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TA1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_TR1" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 683, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_TR2" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 700, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_TR3" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 18, + "x": 717, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR3/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_TR4" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 34, + "x": 777, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR4/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_TR5" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 22, + "x": 810, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR5/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_VR1" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 44, + "x": 734, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/VR1/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_VR2" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 44, + "x": 831, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/VR2/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_07_Visicon" + }, + "position": { + "height": 35, + "rotate": { + "anchor": "0% 0%" + }, + "width": 45, + "x": 557, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/Visicon/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "isClickable": false, + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE01_01GR" + }, + "position": { + "height": 56, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 76, + "x": 755, + "y": 405 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_01GR/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE01_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 420, + "x": 811, + "y": 330 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE01_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 161, + "x": 392, + "y": 330 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 810, + "x": 1022, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 170, + "x": 213, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_06/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_08" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 379, + "x": 24, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_08/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE01_04" + }, + "position": { + "height": 126, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 126, + "x": 232, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "conveyorWidth": 20, + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RE02_07" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 40, + "x": 44, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_07/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "MCP10" + }, + "position": { + "height": 20, + "width": 50, + "x": 435, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/MCP10/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "PS01_07_AL0_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 635, + "y": 418 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/AL0/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_AL1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 666, + "y": 418 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/AL1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_AL2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 666, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/AL2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D0_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 365, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D0/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 385, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 404, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D3_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 421, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D3/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D4_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 438, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D4/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D5_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 455, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D5/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_D6_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 472, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/D6/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_DV1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 738, + "y": 418 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/DV1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_DV2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 909, + "y": 418 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/DV2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_F1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 491, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/F1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_F2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 515, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/F2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_F3_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 537, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/F3/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_MG1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 603, + "y": 418 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/MG1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_MG2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 603, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/MG2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_TA1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 884, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TA1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_TR1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 684, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_TR2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 701, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_TR3_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 718, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR3/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_TR4_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 785, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR4/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_TR5_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 814, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/TR5/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_VR1_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 749, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/VR1/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_VR2_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 846, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/VR2/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE01_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 459, + "y": 293 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE01_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 309, + "y": 293 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE02_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 561, + "y": 1 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE02_06_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 139, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_06/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE02_08_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 25, + "y": 386 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_08/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_07_ESS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 684, + "y": 414 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/ESS1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_07_ESS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 684, + "y": 488 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/ESS2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_07_ESS3" + }, + "position": { + "height": 20, + "width": 20, + "x": 717, + "y": 414 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/ESS3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_07_ESS4" + }, + "position": { + "height": 20, + "width": 20, + "x": 863, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/ESS4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_07_ESS5" + }, + "position": { + "height": 20, + "width": 20, + "x": 831, + "y": 414 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP10/PS01_07/ESS5/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE01_01GR_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 812, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_01GR/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE01_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 285, + "y": 289 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE02_05_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 608, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE02_06_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 56, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_06/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE01_01GR_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 812, + "y": 352 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_01GR/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE01_01GR_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 812, + "y": 371 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_01GR/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE01_02_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 704, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE01_02_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 723, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE01_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 245, + "y": 289 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE01_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 264, + "y": 289 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_05_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 229, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_05_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 248, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_05_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 568, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_05_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 587, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_07_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 43, + "y": 399 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_07/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "OS01_01GR_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": 270 + }, + "width": 30, + "x": 909, + "y": 393 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_01GR/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE01_02_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 631, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE01_02_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 451, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE01_03_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 244, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE02_05_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 568, + "y": 60 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE02_06_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 108, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_06/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE02_06_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 77, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_06/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "OS01_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 916, + "y": 345 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "OS01_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 916, + "y": 330 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE01_01GR_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 833, + "y": 352 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_01GR/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE01_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 687, + "y": 346 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE01_02_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 687, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE01_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 245, + "y": 272 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE01_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 245, + "y": 257 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_05_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 212, + "y": 69 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_05_BCN1_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 212, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/BCN1/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_05_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 212, + "y": 54 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_05_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 551, + "y": 39 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_07_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 43, + "y": 382 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_07/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "OS01_01GR_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "-135deg" + }, + "width": 99, + "x": 912, + "y": 408 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_01GR/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "OS01_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 982, + "y": 339 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/OS01/OS01_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE01_01GR_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": 45 + }, + "width": 99, + "x": 751, + "y": 331 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_01GR/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE01_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 393, + "y": 339 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE01_02_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 674, + "y": 339 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_02/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE01_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 243, + "y": 300 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE01_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 380, + "y": 339 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE01_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 36, + "x": 144, + "y": 400 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE01/RE01_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_05_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 485, + "y": 8 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_05/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_06_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 45, + "y": 48 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_06/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_08_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 34, + "y": 420 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_08/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_08_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 34, + "y": 69 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_08/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/515cc93a636dbcce4e41de0e7ca009ee4ddd167e81be93450e0ee4e28d1b1657 b/.resources/515cc93a636dbcce4e41de0e7ca009ee4ddd167e81be93450e0ee4e28d1b1657 new file mode 100644 index 00000000..b698adfa --- /dev/null +++ b/.resources/515cc93a636dbcce4e41de0e7ca009ee4ddd167e81be93450e0ee4e28d1b1657 @@ -0,0 +1,32 @@ +WITH INDUCTS AS ( + ( + SELECT + DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") AS time, + sorter, + induct, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct, time + ) UNION ALL ( + SELECT + DATE_FORMAT(timestamp, "%Y-%m-%d %H:%i:00") AS time, + "AR" AS sorter, + lane_id AS induct, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct, time + ) +) +SELECT + time, + /* Counts: */ + SUM(total) AS total_count, + /* PPH: */ + ROUND(SUM(total)*60) AS total_pph, + /* Percents: */ + ROUND(SUM(total)/(SUM(total) OVER(PARTITION BY sorter, time)), 4) AS 'total/sorter_percent' +FROM INDUCTS +WHERE induct = :induct +GROUP BY induct, time; \ No newline at end of file diff --git a/.resources/5186fea8de8f5f2bd557f83b7f9f7a2018a5d733f767cb57e5e7b1f4bb2825ff b/.resources/5186fea8de8f5f2bd557f83b7f9f7a2018a5d733f767cb57e5e7b1f4bb2825ff new file mode 100644 index 00000000..d5899447 --- /dev/null +++ b/.resources/5186fea8de8f5f2bd557f83b7f9f7a2018a5d733f767cb57e5e7b1f4bb2825ff @@ -0,0 +1,14 @@ +{ + "base": { + "style": { + "backgroundColor": "#2D7D9F", + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#FFF" + } + } +} \ No newline at end of file diff --git a/.resources/52340c1f62d299de9e3d565821025ae372a810ae421661be31a5e53ecced5b4c b/.resources/52340c1f62d299de9e3d565821025ae372a810ae421661be31a5e53ecced5b4c new file mode 100644 index 00000000..96bed6f2 --- /dev/null +++ b/.resources/52340c1f62d299de9e3d565821025ae372a810ae421661be31a5e53ecced5b4c @@ -0,0 +1,274 @@ +{ + "custom": { + "disconnected": true, + "plc": "value", + "searchId": "value", + "state": 0, + "string": "Unknown" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "!isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Start" + }, + { + "input": 2, + "output": "Start Pressed" + }, + { + "input": 3, + "output": "Start Illuminated" + }, + { + "input": 4, + "output": "Start Pressed / Illuminated" + }, + { + "input": 5, + "output": "Stop" + }, + { + "input": 6, + "output": "Stop Pressed" + }, + { + "input": 7, + "output": "Stop Illuminated" + }, + { + "input": 8, + "output": "Stop Pressed / Illuminated" + }, + { + "input": 9, + "output": "Restart" + }, + { + "input": 10, + "output": "Restart Pressed" + }, + { + "input": 11, + "output": "Restart Illuminated" + }, + { + "input": 12, + "output": "Restart Pressed / Illuminated" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 25, + "width": 25 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "JR_Button" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.state} \u003d 0, \"#a9a9a9\", // disconnected gray (DarkGray)\r\n if(\r\n {view.custom.state} % 2 \u003d 1, \"#ffffff\", // white\r\n \"#000000\" // black\r\n )\r\n)\r\n" + }, + "type": "expr" + } + }, + "props.elements[1].fill.paint": { + "binding": { + "config": { + "expression": "if({view.custom.state} \u003d 0, \"#a9a9a9\", // disconnected gray\r\n if({view.custom.state} \u003d 1 || {view.custom.state} \u003d 2, \"#90ee90\", // light green\r\n if({view.custom.state} \u003d 3 || {view.custom.state} \u003d 4, \"#228B22\", // softer dark green\r\n if({view.custom.state} \u003d 5 || {view.custom.state} \u003d 6, \"#ffc0cb\", // pink\r\n if({view.custom.state} \u003d 7 || {view.custom.state} \u003d 8, \"#ff0000\", // red\r\n if({view.custom.state} \u003d 9 || {view.custom.state} \u003d 10, \"#808080\", // normal gray\r\n if({view.custom.state} \u003d 11 || {view.custom.state} \u003d 12, \"#ffffff\", \"\") // white\r\n )\r\n )\r\n )\r\n )\r\n )\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0,0 H 20 V 20 H 0 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "1.5" + }, + "type": "path" + }, + { + "d": "m 17,10.5 a 7,7 0 0 1 -7,7 7,7 0 0 1 -7,-7 7,7 0 0 1 7,-7 7,7 0 0 1 7,7 z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "1" + }, + "type": "path" + } + ], + "viewBox": "0 0 20 20" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-JR\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_buttons" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/55cb77098cb1791a316acb0c1a6cc51f9044c8a6090e14da86d7bc6e33b37152 b/.resources/55cb77098cb1791a316acb0c1a6cc51f9044c8a6090e14da86d7bc6e33b37152 new file mode 100644 index 00000000..750ff130 --- /dev/null +++ b/.resources/55cb77098cb1791a316acb0c1a6cc51f9044c8a6090e14da86d7bc6e33b37152 @@ -0,0 +1,36 @@ +{ + "base": { + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(0,164,255,1) 0%, rgba(0,157,245,1) 70%, rgba(0,134,208,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundImage": "linear-gradient(0deg, rgba(0,164,255,1) 0%, rgba(0,157,245,1) 70%, rgba(0,134,208,1) 100%);", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "cursor": "pointer" + } + }, + { + "pseudo": "disabled", + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(0,134,208,1) 0%, rgba(0,134,208,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#555555", + "cursor": "not-allowed" + } + } + ] +} \ No newline at end of file diff --git a/.resources/560f423574a3690f0eab47372a016ce7a371d53e1d373ba7c283272ee12825a9 b/.resources/560f423574a3690f0eab47372a016ce7a371d53e1d373ba7c283272ee12825a9 new file mode 100644 index 00000000..f79ee95f --- /dev/null +++ b/.resources/560f423574a3690f0eab47372a016ce7a371d53e1d373ba7c283272ee12825a9 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FF0000" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/5612e8ceaeb36017686fa929749142983079448cc4bea35f68b705f67e0fca07 b/.resources/5612e8ceaeb36017686fa929749142983079448cc4bea35f68b705f67e0fca07 new file mode 100644 index 00000000..edb41695 --- /dev/null +++ b/.resources/5612e8ceaeb36017686fa929749142983079448cc4bea35f68b705f67e0fca07 @@ -0,0 +1,16 @@ +SELECT s01_timestamp AS induct_timestamp, + s04_timestamp AS confirm_timestamp, + sorter, trackid, scanner, + bcr_imgid AS imgid, s01_barcode AS barcode, scanner_status, + pkg_length/10 AS pkg_length, /* In inches */ + gap_leading/10 AS gap_leading, /* In inches */ + gap_trailing/10 AS gap_trailing, /* In inches */ + carriers AS trays, + assignments, divert_status, + destination_req AS requested_dest, + destination_act AS diverted_dest, + sort_code +FROM package_history +WHERE s04_timestamp BETWEEN :startDate AND :endDate +ORDER BY s04_timestamp DESC +{limit}; \ No newline at end of file diff --git a/.resources/57fe1cd3b9819c30321b7858c95c24c835a7634ee6d2521d16906f20a974e5cc b/.resources/57fe1cd3b9819c30321b7858c95c24c835a7634ee6d2521d16906f20a974e5cc new file mode 100644 index 00000000..36519a25 --- /dev/null +++ b/.resources/57fe1cd3b9819c30321b7858c95c24c835a7634ee6d2521d16906f20a974e5cc @@ -0,0 +1,109 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code="Unknown") AS unknown, + SUM(sort_code="Unexpected") AS unexpected, + SUM(sort_code="Track Err") AS track_err, + SUM(sort_code="Gap Err") AS gap_err, + SUM(sort_code="Dest Full") AS dest_full, + SUM(sort_code="Dest Fault") AS dest_fault, + SUM(sort_code="Dest Invalid") AS dest_invalid, + SUM(sort_code="No Read") AS no_read, + SUM(sort_code="No Code") AS no_code, + SUM(sort_code="Multi Label") AS multi_label, + SUM(sort_code="Dest Disabled") AS dest_disabled, + SUM(sort_code="Rate High") AS rate_high, + SUM(sort_code="Div Fail") AS div_fail, + SUM(sort_code="Dest None") AS dest_none, + SUM(sort_code="Lost") AS lost, + SUM(sort_code="Dim Err") AS dim_err, + SUM(sort_code="Weight Err") AS weight_err, + SUM(sort_code="Underutilized") AS underutilized, + SUM(sort_code="Unsafe") AS unsafe + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter=:sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp, + hour, + /* Counts: */ + total AS total_count, + success AS success_count, + unknown AS unknown_count, + unexpected AS unexpected_count, + track_err AS track_err_count, + gap_err AS gap_err_count, + dest_full AS dest_full_count, + dest_fault AS dest_fault_count, + dest_invalid AS dest_invalid_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + dest_disabled AS dest_disabled_count, + rate_high AS rate_high_count, + div_fail AS div_fail_count, + dest_none AS dest_none_count, + lost AS lost_count, + dim_err AS dim_err_count, + weight_err AS weight_err_count, + underutilized AS underutilized_count, + unsafe AS unsafe_count, + /* PPH: */ + total AS total_pph, + success AS success_pph, + unknown AS unknown_pph, + unexpected AS unexpected_pph, + track_err AS track_err_pph, + gap_err AS gap_err_pph, + dest_full AS dest_full_pph, + dest_fault AS dest_fault_pph, + dest_invalid AS dest_invalid_pph, + no_read AS no_read_pph, + no_code AS no_code_pph, + multi_label AS multi_label_pph, + dest_disabled AS dest_disabled_pph, + rate_high AS rate_high_pph, + div_fail AS div_fail_pph, + dest_none AS dest_none_pph, + lost AS lost_pph, + dim_err AS dim_err_pph, + weight_err AS weight_err_pph, + underutilized AS underutilized_pph, + unsafe AS unsafe_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(success/total, 4) AS success_percent, + ROUND(unknown/total, 4) AS unknown_percent, + ROUND(unexpected/total, 4) AS unexpected_percent, + ROUND(track_err/total, 4) AS track_err_percent, + ROUND(gap_err/total, 4) AS gap_err_percent, + ROUND(dest_full/total, 4) AS dest_full_percent, + ROUND(dest_fault/total, 4) AS dest_fault_percent, + ROUND(dest_invalid/total, 4) AS dest_invalid_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent, + ROUND(dest_disabled/total, 4) AS dest_disabled_percent, + ROUND(rate_high/total, 4) AS rate_high_percent, + ROUND(div_fail/total, 4) AS div_fail_percent, + ROUND(dest_none/total, 4) AS dest_none_percent, + ROUND(lost/total, 4) AS lost_percent, + ROUND(dim_err/total, 4) AS dim_err_percent, + ROUND(weight_err/total, 4) AS weight_err_percent, + ROUND(underutilized/total, 4) AS underutilized_percent, + ROUND(unsafe/total, 4) AS unsafe_percent +FROM SORTERS +ORDER BY start_timestamp; \ No newline at end of file diff --git a/.resources/5875fb704c0899784be0b722c0017a8be722a720bccb621eb0e7eec997605172 b/.resources/5875fb704c0899784be0b722c0017a8be722a720bccb621eb0e7eec997605172 new file mode 100644 index 00000000..9524973c --- /dev/null +++ b/.resources/5875fb704c0899784be0b722c0017a8be722a720bccb621eb0e7eec997605172 @@ -0,0 +1,322 @@ +{ + "custom": { + "plc": "value", + "searchId": "value", + "state": 0, + "string": "Clear" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 1, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 4 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 6 + }, + { + "input": 7, + "output": 7 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Clear", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Clear" + }, + { + "input": 2, + "output": "Blocked" + }, + { + "input": 3, + "output": "Disabled" + }, + { + "input": 4, + "output": "Jammed" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 200 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Photoeye" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#000000" + }, + { + "input": 3, + "output": "#800080" + }, + { + "input": 4, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.elements[2].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#000000" + }, + { + "input": 3, + "output": "#800080" + }, + { + "input": 4, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "d": "m 28.763932,20 -20,10 V 10 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "path" + }, + { + "stroke": { + "paint": "#000000", + "width": "2" + }, + "stroke-dasharray": "4,4", + "type": "line", + "x1": "30", + "x2": "95%", + "y1": "20", + "y2": "20" + }, + { + "fill": {}, + "height": "20", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "rect", + "width": "6", + "x": "95%", + "y": "10" + } + ], + "viewBox": "0 0 300 40" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-Photoeye\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\n\talarm \u003d []\n\tmessage \u003d None\n\n\tsleep(0.5)\n\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_photoeyes" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/58af92c1d4d4d6485761cc37d4b2bf663960af70869d03356bf08a5913ce4482 b/.resources/58af92c1d4d4d6485761cc37d4b2bf663960af70869d03356bf08a5913ce4482 new file mode 100644 index 00000000..17e41011 --- /dev/null +++ b/.resources/58af92c1d4d4d6485761cc37d4b2bf663960af70869d03356bf08a5913ce4482 @@ -0,0 +1,556 @@ +{ + "custom": {}, + "params": { + "titleExtra": "1 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ScannerSummary" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "custom.timewidget": { + "binding": { + "config": { + "path": "session.custom.timewidget" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tself.forceRefresh()" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "scanner", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scanner" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Total" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "rate", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Rate (PPH)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "avg_gap_trailing", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Avg Gap Trailing (Avg)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 120 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "avg_gap_leading", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Avg Gap Leading (in)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 120 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "avg_pkg_length", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Avg Package Length (in)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + } + ], + "data": [ + { + "avg_gap_leading": 35.6, + "avg_gap_trailing": 29, + "avg_pkg_length": 12.4, + "count": 73765, + "rate": 3074, + "scanner": "S01aa", + "sorter": "S01" + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\tRED \u003d lambda x: { \"value\": x, \"style\": { \"background\": \"#FEA3AA\" } }\n\tYELLOW \u003d lambda x: { \"value\": x, \"style\": { \"background\": \"#FAF884\" } }\n\t\n\t# Run query:\n\tdata \u003d system.db.runNamedQuery(\"Status/PackageSummary\", {\n\t\t\"startDate\": self.session.custom.timewidget.startDate,\n\t\t\"endDate\": self.session.custom.timewidget.endDate,\n\t})\n\t# Convert to JSON:\n\tfilteredData \u003d utils.datasetToJSON(data)\n\t# Set title extra:\n\tcou \u003d utils.getRowCount(filteredData)\n\tast \u003d \"*\" if cou \u003e\u003d 4000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Set data\n\tself.props.data \u003d filteredData" + } + ], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Scanner Summary\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/58cf0f73055a24cbe4afd01d525e591205c9363d4671ac73c4cdbdcccffc6eae b/.resources/58cf0f73055a24cbe4afd01d525e591205c9363d4671ac73c4cdbdcccffc6eae new file mode 100644 index 00000000..683fd7fb --- /dev/null +++ b/.resources/58cf0f73055a24cbe4afd01d525e591205c9363d4671ac73c4cdbdcccffc6eae @@ -0,0 +1,214 @@ +{ + "dataTypes": { + "Int1": [ + "ia.display.cylindrical-tank", + "ia.chart.gauge", + "ia.display.label", + "ia.display.led-display", + "ia.display.progress", + "ia.chart.simple-gauge", + "ia.input.slider", + "ia.display.thermometer", + "ia.input.oneshotbutton" + ], + "Int2": [ + "ia.display.cylindrical-tank", + "ia.chart.gauge", + "ia.display.label", + "ia.display.led-display", + "ia.display.progress", + "ia.chart.simple-gauge", + "ia.input.slider", + "ia.display.thermometer", + "ia.input.oneshotbutton" + ], + "Int4": [ + "ia.display.cylindrical-tank", + "ia.chart.gauge", + "ia.display.label", + "ia.display.led-display", + "ia.display.progress", + "ia.chart.simple-gauge", + "ia.input.slider", + "ia.display.thermometer", + "ia.input.oneshotbutton" + ], + "Int8": [ + "ia.display.cylindrical-tank", + "ia.chart.gauge", + "ia.display.label", + "ia.display.led-display", + "ia.display.progress", + "ia.chart.simple-gauge", + "ia.input.slider", + "ia.display.thermometer", + "ia.input.oneshotbutton" + ], + "Float4": [ + "ia.display.cylindrical-tank", + "ia.chart.gauge", + "ia.display.label", + "ia.display.led-display", + "ia.display.progress", + "ia.chart.simple-gauge", + "ia.input.slider", + "ia.display.thermometer" + ], + "Float8": [ + "ia.display.cylindrical-tank", + "ia.chart.gauge", + "ia.display.label", + "ia.display.led-display", + "ia.display.progress", + "ia.chart.simple-gauge", + "ia.input.slider", + "ia.display.thermometer" + ], + "Boolean": [ + "ia.input.checkbox", + "ia.input.toggle-switch" + ], + "String": [ + "ia.display.label", + "ia.display.markdown" + ], + "DataSet": [ + "ia.display.table" + ] + }, + "bindings": { + "ia.input.oneshotbutton": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": true + } + ], + "ia.display.table": [ + { + "tagProperty": "value", + "propertyPath": "props.data", + "bidirectional": false + } + ], + "ia.display.markdown": [ + { + "tagProperty": "value", + "propertyPath": "props.source", + "bidirectional": false + } + ], + "ia.chart.simple-gauge": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": false + } + ], + "ia.display.progress": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": false + } + ], + "ia.input.numeric-entry-field": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": true + } + ], + "ia.input.password-field": [ + { + "tagProperty": "value", + "propertyPath": "props.text", + "bidirectional": true + } + ], + "ia.input.toggle-switch": [ + { + "tagProperty": "value", + "propertyPath": "props.selected", + "bidirectional": true + } + ], + "ia.display.label": [ + { + "tagProperty": "value", + "propertyPath": "props.text", + "bidirectional": false + } + ], + "rad.display.messenger": [ + { + "tagProperty": "jsonValues", + "propertyPath": "messageConfig", + "bidirectional": true + } + ], + "ia.input.checkbox": [ + { + "tagProperty": "value", + "propertyPath": "props.selected", + "bidirectional": true + } + ], + "ia.display.cylindrical-tank": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": false + } + ], + "ia.input.text-area": [ + { + "tagProperty": "value", + "propertyPath": "props.text", + "bidirectional": true + } + ], + "ia.display.led-display": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": false + } + ], + "ia.input.barcodescannerinput": [ + { + "tagProperty": "value", + "propertyPath": "props.data", + "bidirectional": true + } + ], + "ia.chart.gauge": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": false + } + ], + "ia.display.thermometer": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": false + } + ], + "ia.input.slider": [ + { + "tagProperty": "value", + "propertyPath": "props.value", + "bidirectional": true + } + ], + "ia.input.text-field": [ + { + "tagProperty": "value", + "propertyPath": "props.text", + "bidirectional": true + } + ] + } +} \ No newline at end of file diff --git a/.resources/59309a6d0ceac828b9e66194f0522d5b86f2c42e78b21b234af3076462250b4e b/.resources/59309a6d0ceac828b9e66194f0522d5b86f2c42e78b21b234af3076462250b4e new file mode 100644 index 00000000..86f9c1d6 --- /dev/null +++ b/.resources/59309a6d0ceac828b9e66194f0522d5b86f2c42e78b21b234af3076462250b4e @@ -0,0 +1,222 @@ +{ + "custom": { + "state": 1, + "state_string": "Device Disconnected", + "string": "Device Disconnected" + }, + "params": { + "tagProps": [ + "value" + ] + }, + "propConfig": { + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "OK" + }, + { + "input": 1, + "output": "Device Disconnected" + }, + { + "input": 2, + "output": "Faulted" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 26, + "width": 26 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "VFD" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[1].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#C2C2C2", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "url(#splitGreenGrey)" + }, + { + "input": 1, + "output": "#C2C2C2" + }, + { + "input": 2, + "output": "url(#splitRedGrey)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "elements": [ + { + "offset": "0%", + "stop-color": "#C2C2C2", + "type": "stop" + }, + { + "offset": "49.5%", + "stop-color": "#C2C2C2", + "type": "stop" + }, + { + "offset": "50.5%", + "stop-color": "#00FF00", + "type": "stop" + }, + { + "offset": "100%", + "stop-color": "#00FF00", + "type": "stop" + } + ], + "gradientUnits": "userSpaceOnUse", + "id": "splitGreenGrey", + "type": "linearGradient", + "x1": "0", + "x2": "24", + "y1": "0", + "y2": "24" + }, + { + "elements": [ + { + "offset": "0%", + "stop-color": "#C2C2C2", + "type": "stop" + }, + { + "offset": "49.5%", + "stop-color": "#C2C2C2", + "type": "stop" + }, + { + "offset": "50.5%", + "stop-color": "#FF0000", + "type": "stop" + }, + { + "offset": "100%", + "stop-color": "#FF0000", + "type": "stop" + } + ], + "gradientUnits": "userSpaceOnUse", + "id": "splitRedGrey", + "type": "linearGradient", + "x1": "0", + "x2": "24", + "y1": "0", + "y2": "24" + } + ], + "type": "defs" + }, + { + "cx": "12", + "cy": "12", + "fill": {}, + "rx": "10", + "ry": "10", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "ellipse" + }, + { + "d": "M 6,18 L 18,6", + "fill": {}, + "stroke": { + "linecap": "round", + "paint": "#000000", + "width": "2" + }, + "type": "path" + } + ], + "viewBox": "0 0 24 24" + }, + "type": "ia.shapes.svg" + } + ], + "meta": { + "name": "VFD", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_VFD" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/597068b20095b58444dfd835a85c31b8c4b8c7c638804fd9e6b6da0cc993725e b/.resources/597068b20095b58444dfd835a85c31b8c4b8c7c638804fd9e6b6da0cc993725e new file mode 100644 index 00000000..7b36e1d6 --- /dev/null +++ b/.resources/597068b20095b58444dfd835a85c31b8c4b8c7c638804fd9e6b6da0cc993725e @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF6000B3", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/5ad3e4281e8c6d233aa13123d8b0e1ebdc95b090ac45ef18720edc345fa1e226 b/.resources/5ad3e4281e8c6d233aa13123d8b0e1ebdc95b090ac45ef18720edc345fa1e226 new file mode 100644 index 00000000..ffedc635 --- /dev/null +++ b/.resources/5ad3e4281e8c6d233aa13123d8b0e1ebdc95b090ac45ef18720edc345fa1e226 @@ -0,0 +1,75 @@ +WITH ALARM_TIMELAPSES AS ( + /* Group related active & clear events into a single row */ + SELECT + id, /* Unique to each row in alarm_events, used to look up metadata in alarm_event_data */ + source, /* Unique alarm path in Ignition */ + eventtime AS starttime, + displaypath, /* Get description */ + /* Get the last time this event was active within the given time range*/ + CAST(LEAST(COALESCE(( + /* Search for the clear event (if exists) for the outer query's active event */ + SELECT MIN(eventtime) + FROM alarm_events e2 + WHERE e2.eventid = e.eventid /* eventid is unique per alarm instance */ + AND e2.eventtime >= e.eventtime + AND e2.eventtype = 1 /* Look only for the clear event */ + ORDER BY eventtime ASC + ), NOW()), :endDate) AS DATETIME) AS endtime, /* Clamp to end of time range if clear event is after end time */ + priority + FROM alarm_events e + /* The range for both start/end allows for index optimizations */ + WHERE eventtime BETWEEN :startDate AND :endDate + /* Filter priority */ + AND priority >= :priority + /* Filter out system events and active events only */ + AND eventflags & 1 != 1 AND eventtype = 0 +), HITLIST AS ( + /* Group the same type of alarms together to get hit counts and total durations */ + SELECT + MAX(id) AS id, /* Use latest id to get the latest metadata */ + MIN(starttime) AS firsttime, /* Get the earliest it's been active in the given time range */ + MAX(endtime) AS lasttime, /* Get the latest it's been active in the given time range */ + MIN(displaypath) AS displaypath, /* Get one of the displaypaths associated with source */ + source, + MAX(priority) AS priority, + COUNT(*) AS count, + SUM(TIME_TO_SEC(TIMEDIFF(endtime, starttime))) AS duration + FROM ALARM_TIMELAPSES + GROUP BY source + ORDER BY count DESC + LIMIT 2000 +) +/* Finally, merge metadata into hitlist */ +SELECT e.id, + e.firsttime, e.lasttime, + /* Translate duration to a string */ + CAST(SEC_TO_TIME(FLOOR(e.duration)) AS CHAR) AS duration, + /* Retrieve instance count and total duration */ + e.count, + ddevice.strvalue AS device, + displaypath AS description, + e.source, + /* Translate priority to string */ + dclass.strvalue AS class, + CASE + WHEN e.priority=4 THEN "Critical" + WHEN e.priority=3 THEN "High" + WHEN e.priority=2 THEN "Medium" + WHEN e.priority=1 THEN "Low" + WHEN e.priority=0 THEN "Diagnostic" + ELSE "N/A" + END AS priority, + /* Retrieve PLCTag */ + dtag.strvalue AS plctag +FROM HITLIST e +/* Lookup PLCTag */ +JOIN alarm_event_data dtag ON e.id = dtag.id AND dtag.propname = "PLCTag" +/* Lookup Device */ +JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" +/* Lookup Class */ +JOIN alarm_event_data dclass ON e.id = dclass.id AND dclass.propname = "Class" +WHERE CASE + WHEN dclass.strvalue = "Error" THEN 2 + WHEN dclass.strvalue = "Warning" THEN 1 + WHEN dclass.strvalue = "Message" THEN 0 + END >= :class; \ No newline at end of file diff --git a/.resources/5b6402b0856cc9b3e7f42df52674de423e01f14299efec0d85e5c67a1fa0e351 b/.resources/5b6402b0856cc9b3e7f42df52674de423e01f14299efec0d85e5c67a1fa0e351 new file mode 100644 index 00000000..01905f0a --- /dev/null +++ b/.resources/5b6402b0856cc9b3e7f42df52674de423e01f14299efec0d85e5c67a1fa0e351 @@ -0,0 +1,246 @@ +{ + "custom": {}, + "params": { + "deviceType": "beacon", + "meta": { + "name": "" + }, + "props": { + "config": { + "alwaysShowAll": true, + "enableHighlight": true, + "isClickable": false, + "isRightOfSorter": false, + "mirror": false, + "originSide": "left", + "paddleThickness": 10, + "showLabel": true, + "type": "belt" + }, + "status": { + "color": "#aaa", + "isExtended": true, + "isManual": false, + "isRetracted": false, + "showAlways": true, + "showLabel": "B", + "tagPath": "", + "tooltip": "" + } + }, + "tabs": [ + "Status", + "Alarm History", + "Devices", + "Controls" + ] + }, + "propConfig": { + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.isRightOfSorter": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.originSide": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.paddleThickness": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.showLabel": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.type": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.background": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isExtended": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isFaulted": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isManual": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isRetracted": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.showLabel": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.tooltip": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs": { + "paramDirection": "inout", + "persistent": true + }, + "params.tabs[0]": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs[1]": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs[2]": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs[3]": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 569, + "width": 900 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 35, + "width": "100%" + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "1px", + "color": "#FFF", + "fontSize": "20px", + "fontWeight": "bold", + "paddingLeft": 5 + }, + "text": "Oiler" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 35px)", + "width": "100%", + "y": 35 + }, + "propConfig": { + "custom.key": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "height": 35, + "width": 150 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + }, + "tabs": [ + "Controls" + ] + }, + "type": "ia.container.tab" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "height": "calc(100% - 69px)", + "width": "100%", + "y": 69 + }, + "props": { + "path": "Popups/Device/Controls/oiler" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "window" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/5c5e7b3aaefcab42416ac34f275e3ad2ed3cef7d9d797635e1a4880a7f16bc9d b/.resources/5c5e7b3aaefcab42416ac34f275e3ad2ed3cef7d9d797635e1a4880a7f16bc9d new file mode 100644 index 00000000..5717a39e --- /dev/null +++ b/.resources/5c5e7b3aaefcab42416ac34f275e3ad2ed3cef7d9d797635e1a4880a7f16bc9d @@ -0,0 +1,24 @@ +WITH LANES AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + lane_id AS induct, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id LIKE "UL%" + GROUP BY lane_id + ORDER BY lane_id +) +SELECT + start_timestamp, + end_timestamp, + induct, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/5c8fc404417622a301b77571939df400d97b581c8ab7c8e8eec87677b38efa12 b/.resources/5c8fc404417622a301b77571939df400d97b581c8ab7c8e8eec87677b38efa12 new file mode 100644 index 00000000..620ea935 --- /dev/null +++ b/.resources/5c8fc404417622a301b77571939df400d97b581c8ab7c8e8eec87677b38efa12 @@ -0,0 +1,60 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 671, + "width": 1707 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "HSS_Inbound" + }, + "position": { + "height": 651, + "width": 1687, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/HSS_Inbound", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Singulator" + }, + "position": { + "height": 40, + "width": 125, + "x": 100, + "y": 150 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/5fd2a17201ab199dcdc0ae4439f1fd837d721335d5a66314792da691add3da8b b/.resources/5fd2a17201ab199dcdc0ae4439f1fd837d721335d5a66314792da691add3da8b new file mode 100644 index 00000000..7c5aa79f --- /dev/null +++ b/.resources/5fd2a17201ab199dcdc0ae4439f1fd837d721335d5a66314792da691add3da8b @@ -0,0 +1,63 @@ +################################################################ +################################################################ +## Version: 1.0 / Author: Dillon Uzar +## +## DESC: For use in WCS Sorting Lane Lookup & Recording +## WARN: Modifying code may cause system to function incorrectly +################################################################ +################################################################ + +import time + +####################################################### +####################################################### +####################################################### +#### Constants +####################################################### + +# Logger: +LOG = system.util.logger("GL BreakCount Handler") + +# For inserting data into database: +CONFIRM_INSERT_QUERY = "INSERT IGNORE INTO gl_history (gaylord_id,count) VALUES (?,?)" + +####################################################### +####################################################### +####################################################### +#### Parsing Utils +####################################################### + +def logTime(title, trackID, seconds): + millisec = round(seconds * 1000, 1) + if millisec > 4: + LOG.info("%s[ID=%s] took longer than expected (%sms to process)" % (title, trackID, millisec)) + +####################################################### +####################################################### +####################################################### +#### PLC Event Handling +####################################################### + +def processBreak(gaylordID, count): + # This function handles confirm events, and logs the event in SQL + # Ensure ID is valid + if count > 0: + start_time = time.time() + # Log confirm event in SQL: + # Insert into Package History: + system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, [gaylordID, count]) + logTime("GL_BREAK[DB_INSERT]", gaylordID, time.time() - start_time) + +def processBreakAsync(gaylordID, count): + # This function handles confirm events, and logs the event in SQL + # Ensure ID is valid + if count > 0: + def processConfirmInner(): + start_time = time.time() + # Log confirm event in SQL: + # Insert into Package History: + system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, [gaylordID, count]) + logTime("GL_BREAK[DB_INSERT]", gaylordID, time.time() - start_time) + + system.util.invokeAsynchronous(processConfirmInner) + \ No newline at end of file diff --git a/.resources/61045eb8fb7420134e78bfe2c7f152765a6cd713a73d39afa47f4d5ef5b96499 b/.resources/61045eb8fb7420134e78bfe2c7f152765a6cd713a73d39afa47f4d5ef5b96499 new file mode 100644 index 00000000..b9337b55 --- /dev/null +++ b/.resources/61045eb8fb7420134e78bfe2c7f152765a6cd713a73d39afa47f4d5ef5b96499 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#CCCCFF", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/63321feefd488902852bebcf28d4072fbef065693f8d9802229d271bcd48c6ad b/.resources/63321feefd488902852bebcf28d4072fbef065693f8d9802229d271bcd48c6ad new file mode 100644 index 00000000..f5a06ad5 --- /dev/null +++ b/.resources/63321feefd488902852bebcf28d4072fbef065693f8d9802229d271bcd48c6ad @@ -0,0 +1,36 @@ +{ + "base": { + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(0,255,0,1) 0%, rgba(0,245,0,1) 70%, rgba(0,208,0,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundImage": "linear-gradient(0deg, rgba(0,255,0,1) 0%, rgba(0,245,0,1) 70%, rgba(0,208,0,1) 100%);", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "cursor": "pointer" + } + }, + { + "pseudo": "disabled", + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(0,208,0,1) 0%, rgba(0,208,0,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#555555", + "cursor": "not-allowed" + } + } + ] +} \ No newline at end of file diff --git a/.resources/6511bf15e1367fd94d08c69ef2017afda6b8abf75bff84826bca79e61a3acecb b/.resources/6511bf15e1367fd94d08c69ef2017afda6b8abf75bff84826bca79e61a3acecb new file mode 100644 index 00000000..c20d2a12 --- /dev/null +++ b/.resources/6511bf15e1367fd94d08c69ef2017afda6b8abf75bff84826bca79e61a3acecb @@ -0,0 +1,14895 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1973, + "width": 4223 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "RO16_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 1588, + "x": 3953, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO01_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 593, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO1-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO02_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 816, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO2-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO03_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 1039, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO3-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO04_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 1339, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO4-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO05_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 1496, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO5-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO06_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 1719, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO6-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO07_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 1942, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO7-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO08_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 2242, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO8-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO09_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 2464, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO9-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO10_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 2686, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO10-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO11_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 2908, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO11-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO12_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 3130, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO12-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO13_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 3352, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO13-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO14_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 3574, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO14-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO15_03GRNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 320, + "x": 3796, + "y": 465 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "bar" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "RO15-3GR\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL01_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 486, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL01_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 486, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL1-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL01_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 486, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL01_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 486, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL02_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 709, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL02_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 709, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL2-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL02_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 709, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL02_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 709, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL03_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 932, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL03_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 932, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL3-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL03_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 932, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL03_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 932, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL04_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 1612, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL04_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 1612, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL4-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL04_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 1612, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL04_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 1612, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL05_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 1835, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL05_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 1835, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL5-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL05_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 1835, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL05_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 1835, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL06_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 2358, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL06_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 2358, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL6-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL06_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 2358, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL06_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 2358, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL07_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 2580, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL07_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 2580, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL7-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL07_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 2580, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL07_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 2580, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL08_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 2802, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL08_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 2802, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL8-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL08_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 2802, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL08_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 2802, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL09_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3024, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL09_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3024, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL9-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL09_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3024, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL09_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3024, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL10_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3246, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL10_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3246, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL10-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL10_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3246, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL10_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3246, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL11_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3468, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL11_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3468, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL11-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL11_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3468, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL11_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3468, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL12_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3690, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL12_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3690, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL12-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL12_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3690, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL12_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3690, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL13_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3912, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL13_03CHNP" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 110, + "x": 3912, + "y": 278 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "type": "ball" + }, + "status": { + "color": "#FFF", + "showAlways": true, + "tooltip": "FL13-3CH\u003cbr\u003eStatus: Non-Powered" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL13_04CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3912, + "y": 169 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "FL13_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 85, + "x": 3912, + "y": 85 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 334, + "x": 4147, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 452, + "x": 3815, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 592, + "x": 3365, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 522, + "x": 2775, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_06/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_07" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 665, + "x": 2255, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_08" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 844, + "x": 1591, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_08/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_09" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 749, + "x": 749, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16_03CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 78, + "x": 4049, + "y": 367 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_03CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "SO02_01" + }, + "position": { + "height": 20, + "width": 3955, + "x": 192, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE03_01PT" + }, + "position": { + "height": 62, + "rotate": { + "anchor": "0 0" + }, + "width": 62, + "x": 4146, + "y": 471 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_01PT/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "conveyorWidth": 20 + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RE03_02PT" + }, + "position": { + "height": 62, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 62, + "x": 4208, + "y": 531 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_02PT/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "conveyorWidth": 20 + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RO16_02CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 40, + "x": 4048, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left", + "type": "chute" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RO16_04CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 40, + "x": 3973, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_04CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left", + "type": "chute" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "FL01_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 372, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL02_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 595, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL03_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 818, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL04_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 1498, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL05_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 1721, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL06_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2244, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL07_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2466, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL08_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2688, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL09_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2910, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL10_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3132, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL11_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3354, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL12_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3576, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "FL13_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3798, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO01_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 438, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO01_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 552, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO02_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 661, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO02_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 775, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO03_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 884, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO03_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 998, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO04_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 1184, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO04_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 1298, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO05_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 1341, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO05_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 1455, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO06_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 1564, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO06_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 1678, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO07_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 1787, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO07_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 1901, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO08_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2087, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO08_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 2201, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO09_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2309, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO09_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 2423, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO10_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2531, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO10_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 2645, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO11_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2753, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO11_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 2867, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO12_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 2975, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO12_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 3089, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO13_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3197, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO13_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 3311, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO14_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3419, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO14_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 3533, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO15_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3641, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO15_02CH" + }, + "position": { + "height": 80, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 182, + "x": 3755, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M80,0.5\nl62,0\na39,39,0,0,1,0,79\nl-62,0\nL0.5,40.5\nl0,-19\nL80,60.5\nl63,0\na20,20,0,1,0,0,-41\nL80,19.5\nZ", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "RO16_01CH" + }, + "position": { + "height": 88, + "rotate": { + "anchor": "0 0" + }, + "width": 134, + "x": 3954, + "y": 385 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_01CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "path": "M0.5,86.5l34,0l74,-42.5a50,50,0,0,0,25,-43l-19,0a30,30,0,0,1,-15,25z", + "type": "chute" + } + }, + "type": "dex.display.conveyorpath" + }, + { + "meta": { + "name": "MCP03" + }, + "position": { + "height": 20, + "width": 50, + "x": 1968, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/MCP03/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "RE03_01PT_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 4207, + "y": 506 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_01PT/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_02PT_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 4151, + "y": 593 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_02PT/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 3977, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_04_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 3459, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_04/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 2998, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_06_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 2488, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_06/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_07_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1989, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_08_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1048, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_08/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_09_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 278, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 3954, + "y": 1794 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "SO02_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 4129, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE03_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 4031, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_03_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 4031, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_07_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 2006, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_07_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 2006, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_07_EPC3" + }, + "position": { + "height": 20, + "width": 20, + "x": 2067, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/EPC3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_07_EPC4" + }, + "position": { + "height": 20, + "width": 20, + "x": 2067, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/EPC4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_09_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 86, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_09_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 86, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_09_EPC3" + }, + "position": { + "height": 20, + "width": 20, + "x": 164, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/EPC3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE03_09_EPC4" + }, + "position": { + "height": 20, + "width": 20, + "x": 164, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/EPC4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 4108, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC10" + }, + "position": { + "height": 20, + "width": 20, + "x": 1163, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC10/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC11" + }, + "position": { + "height": 20, + "width": 20, + "x": 1102, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC11/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC12" + }, + "position": { + "height": 20, + "width": 20, + "x": 1102, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC12/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 4108, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC3" + }, + "position": { + "height": 20, + "width": 20, + "x": 4030, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC4" + }, + "position": { + "height": 20, + "width": 20, + "x": 4030, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC5" + }, + "position": { + "height": 20, + "width": 20, + "x": 2066, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC5/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC6" + }, + "position": { + "height": 20, + "width": 20, + "x": 2066, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC6/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC7" + }, + "position": { + "height": 20, + "width": 20, + "x": 2005, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC7/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC8" + }, + "position": { + "height": 20, + "width": 20, + "x": 2005, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC8/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO02_01_EPC9" + }, + "position": { + "height": 20, + "width": 20, + "x": 1163, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/EPC9/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "FL01_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 465, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL02_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 688, + "y": 367 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL03_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 911, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL04_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1591, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL05_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1814, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL06_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 2337, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL07_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 2559, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL08_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 2781, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL09_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 3003, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL10_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 3225, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL11_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 3447, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL12_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 3669, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL13_02CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 3891, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_02CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 4069, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 4088, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_03_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 4069, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_03_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 4088, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_07_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 2027, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_07_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 2046, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_07_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 2027, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_07_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 2046, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_09_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 124, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_09_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 143, + "y": 552 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_09_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 124, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE03_09_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 143, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO01_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 643, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO02_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 866, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO03_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1089, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO04_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1389, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO05_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1546, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO06_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1769, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO07_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1992, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO08_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 2292, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO09_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 2514, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO10_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 2736, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO11_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 2958, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO12_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 3180, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO13_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 3402, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO14_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 3624, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO15_02CH_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 3846, + "y": 280 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_04CH_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 3964, + "y": 325 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_04CH/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 4068, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 4087, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 4068, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 4087, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS3_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 2026, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS3/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS3_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 2045, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS3/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS4_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 2026, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS4/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS4_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 2045, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS4/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS5_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1123, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS5/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS5_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1142, + "y": 450 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS5/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS6_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1123, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS6/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO02_01_SS6_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1142, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SS6/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "FL01_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 507, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL02_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 730, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL03_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 953, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL04_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1633, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL05_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1856, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL06_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2379, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL07_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2601, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL08_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2823, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL09_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3045, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL10_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3267, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL11_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3489, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL12_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3711, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL13_04CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3933, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_04CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_03_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 4000, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_03_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 3969, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_07_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 1975, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_07_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 1944, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_09_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 24, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE03_09_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 55, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO01_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 596, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO02_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 819, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO03_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1042, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO04_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1342, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO05_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1499, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO06_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1722, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO07_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1945, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO08_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2245, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO09_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2467, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO10_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2689, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO11_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 2911, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO12_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3133, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO13_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3355, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO14_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3577, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO15_02CH_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3799, + "y": 349 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_05_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3970, + "y": 433 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_05_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 3954, + "y": 433 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO02_01_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 4068, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO02_01_FIO2" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 1974, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/FIO2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO02_01_FIO3" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 1071, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/FIO3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO02_01_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 4099, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO02_01_SIO2" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 1943, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SIO2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO02_01_SIO3" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 1040, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/SIO3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "FL01_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 469, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL01_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 469, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL01_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 469, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL01_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 469, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL01_04CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 507, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_04CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL02_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 692, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL02_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 692, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL02_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 692, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL02_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 692, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL03_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 915, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL03_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 915, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL03_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 915, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL03_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 915, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL04_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1595, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL04_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1595, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL04_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1595, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL04_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1595, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL05_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1818, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL05_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1818, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL05_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1818, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL05_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1818, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL05_04CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 1856, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_04CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL06_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2341, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL06_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2341, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL06_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2341, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL06_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2341, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL07_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2563, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL07_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2563, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL07_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2563, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL07_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2563, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL08_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2785, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL08_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2785, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL08_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2785, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL08_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2785, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL09_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3007, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL09_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3007, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL09_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3007, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL09_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3007, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL09_04CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 3045, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_04CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL10_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3229, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL10_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3229, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL10_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3229, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL10_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3229, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL11_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3451, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL11_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3451, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL11_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3451, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL11_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3451, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL12_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3673, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL12_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3673, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL12_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3673, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL12_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3673, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL13_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3895, + "y": 347 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL13_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3895, + "y": 332 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL13_04CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3895, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_04CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL13_04CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3895, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_04CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL13_04CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 3933, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_04CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_01PT_BCN1_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 4146, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_01PT/BCN1/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 4052, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 4052, + "y": 541 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_03_BCN2_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 4052, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/BCN2/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 4052, + "y": 609 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_07_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 2027, + "y": 535 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_07_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 2028, + "y": 615 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_09_BCN1_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 107, + "y": 541 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/BCN1/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_09_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 107, + "y": 556 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE03_09_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 107, + "y": 594 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO01_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 633, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO01_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 633, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO01_02CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 595, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO01_02CH_BCN3_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 626, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/BCN3/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO01_02CH_BCN3_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 626, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/BCN3/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO02_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 856, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO02_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 856, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO02_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 849, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO02_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 849, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO03_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1079, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO03_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1079, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO03_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1072, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO03_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1072, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO04_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1379, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO04_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1379, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO04_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1372, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO04_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1372, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO05_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1536, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO05_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1536, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO05_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1529, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO05_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1529, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO06_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1759, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO06_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1759, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO06_02CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 1721, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO06_02CH_BCN3_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1752, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/BCN3/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO06_02CH_BCN3_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1752, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/BCN3/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO07_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1982, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO07_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1982, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO07_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1975, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO07_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1975, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO08_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2282, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO08_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2282, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO08_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2275, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO08_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2275, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO09_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2504, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO09_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2504, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO09_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2497, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO09_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2497, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO10_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2726, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO10_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2726, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO10_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2719, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO10_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2719, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO11_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2948, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO11_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2948, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO11_02CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 2910, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO11_02CH_BCN3_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 2941, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/BCN3/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO11_02CH_BCN3_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 2941, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/BCN3/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO12_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3170, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO12_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3170, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO12_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3163, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO12_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3163, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO13_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3392, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO13_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3392, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO13_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3385, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO13_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3385, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO14_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3614, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO14_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3614, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO14_02CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3607, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO14_02CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3607, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO15_02CH_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3836, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO15_02CH_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3836, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO15_02CH_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 3798, + "y": 350 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO15_02CH_BCN3_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3829, + "y": 284 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/BCN3/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO15_02CH_BCN3_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3829, + "y": 269 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/BCN3/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_04CH_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3947, + "y": 329 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_04CH/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_04CH_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 3947, + "y": 314 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_04CH/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_05_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 3961, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 4051, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 4051, + "y": 439 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 4051, + "y": 507 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 4051, + "y": 492 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN3_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 2026, + "y": 433 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN3/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN4_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 2027, + "y": 513 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN4/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN5_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 1123, + "y": 418 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN5/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN5_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1123, + "y": 433 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN5/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN6_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1123, + "y": 513 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN6/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO02_01_BCN7_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 203, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/BCN7/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "FL01_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 380, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL01_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 476, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL01_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 476, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL01/FL01_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL02_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 603, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL02_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 699, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL02_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 699, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL02/FL02_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL03_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 826, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL03_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 922, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL03_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 922, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL03/FL03_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL04_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 1506, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL04_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 1602, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL04_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 1602, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL04/FL04_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL05_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 1729, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL05_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 1825, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL05_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 1825, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL05/FL05_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL06_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2252, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL06_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 2348, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL06_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 2348, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL06/FL06_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL07_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2474, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL07_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 2570, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL07_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 2570, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL07/FL07_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL08_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2696, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL08_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 2792, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL08_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 2792, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL08/FL08_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL09_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2918, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL09_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3014, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL09_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3014, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL09/FL09_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL10_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3140, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL10_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3236, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL10_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3236, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL10/FL10_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL11_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3362, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL11_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3458, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL11_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3458, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL11/FL11_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL12_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3584, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL12_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3680, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL12_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3680, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL12/FL12_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL13_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3806, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL13_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3902, + "y": 320 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "FL13_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 3902, + "y": 155 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/FL13/FL13_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_01PT_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 4217, + "y": 533 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_01PT/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 3816, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 4132, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 3366, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_05_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 2775, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_05/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_06_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 2256, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_06/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_07_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 1633, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_07/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_08_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 749, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_08/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE03_09_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 13, + "y": 603 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/RE03/RE03_09/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO01_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 445, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO01_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 598, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO01_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 576, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO01/RO01_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO02_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 668, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO02_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 821, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO02_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 799, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO02/RO02_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO03_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 891, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO03_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1044, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO03_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 1022, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO03/RO03_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO04_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 1191, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO04_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1343, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO04_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 1322, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO04/RO04_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO05_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 1348, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO05_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1500, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO05_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 1479, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO05/RO05_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO06_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 1571, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO06_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1723, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO06_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 1702, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO06/RO06_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO07_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 1794, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO07_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1946, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO07_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 1925, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO07/RO07_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO08_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2095, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO08_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 2246, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO08_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 2225, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO08/RO08_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO09_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2317, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO09_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 2468, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO09_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 2447, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO09/RO09_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO10_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2539, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO10_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 2690, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO10_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 2669, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO10/RO10_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO11_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2761, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO11_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 2912, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO11_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 2891, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO11/RO11_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO12_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 2983, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO12_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 3134, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO12_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 3113, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO12/RO12_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO13_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3205, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO13_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 3356, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO13_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 3335, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO13/RO13_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO14_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3427, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO14_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 3578, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO14_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 3557, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO14/RO14_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO15_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3649, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO15_02CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 3800, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO15_02CH_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 3779, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO15/RO15_02CH/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_01CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 64, + "x": 3962, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_01CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_04CH_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 4015, + "y": 337 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_04CH/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_05_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 37, + "x": 3964, + "y": 1934 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_05_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 37, + "x": 3923, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP03/RO16/RO16_05/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO201Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 274, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO201" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO202Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 349, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO202" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO203Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 415, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO203" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO204Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 595, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO204" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO205Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 662, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO205" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO206Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 818, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO206" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO207Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 885, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO207" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO208Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 1185, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO208" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO209Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 1341, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO209" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO210Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 1498, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO210" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO211Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 1565, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO211" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO212Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 1721, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO212" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO213Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 1788, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO213" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO214Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2088, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO214" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO215Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2243, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO215" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO217Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2466, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO217" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO216Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2310, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO216" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO219Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2688, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO219" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO218Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2533, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO218" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO221Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2909, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO221" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO220Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2755, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO220" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO223Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3132, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO223" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO222Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 2976, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO222" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO229Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3797, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO229" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO228Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3643, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO228" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO227Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3576, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO227" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO226Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3421, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO226" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO225Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3355, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO225" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO224Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3199, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO224" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO230Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 65, + "x": 3955, + "y": 493 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO230" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL1DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 444, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 326 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO1DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 532, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 325 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL2DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 667, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 324 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO2DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 754, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 323 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL3DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 889, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 322 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL4DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1570, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 320 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO6DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1657, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 319 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL5DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1793, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 318 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO7DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1880, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 317 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO8DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2180, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 316 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL6DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2315, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 315 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO9DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2402, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 314 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL7DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2537, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 313 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO10DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2624, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 312 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL8DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2759, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 311 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO11DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2846, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 310 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL9DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 2981, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 309 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL10DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3203, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 308 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO13DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3290, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 307 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL11DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3425, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 306 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO14DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3512, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 305 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RO15DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3734, + "y": 753 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 303 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL12DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3647, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 304 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FL13DoorLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 3870, + "y": 3 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 302 + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "draggable": true, + "id": "sbxxr6Kp", + "modal": false, + "overlayDismiss": false, + "resizable": true, + "showCloseIcon": true, + "title": "Oiler", + "type": "open", + "viewPath": "Popups/Oiler", + "viewportBound": false + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 34, + "width": 80, + "x": 4043, + "y": 235 + }, + "props": { + "style": { + "classes": "Buttons/Grey", + "transform": "scale(3)" + }, + "text": "Oiler" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "SO2INLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 80, + "x": 183, + "y": 500 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO2 IN" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO2INLabel_Tooltip" + }, + "position": { + "height": 25, + "width": 80, + "x": 183, + "y": 500 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/adiPPH_Sorter_Induct/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "SO2OTELabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 90, + "x": 4083, + "y": 520 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "SO2 OTE" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO2OTELabel_Tooltip" + }, + "position": { + "height": 25, + "width": 90, + "x": 4083, + "y": 520 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/adiPPH_Sorter_OTE/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "draggable": true, + "id": "sbxxr6Kp", + "modal": false, + "overlayDismiss": false, + "resizable": false, + "showCloseIcon": true, + "title": "Wireless Pendant", + "type": "open", + "viewPath": "Popups/Device/Controls/pendant", + "viewportBound": false + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "PendantButton" + }, + "position": { + "height": 34, + "width": 80, + "x": 4043.4, + "y": 114 + }, + "propConfig": { + "props.textStyle.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/pendantEnableIND" + }, + "transforms": [ + { + "fallback": "#000", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "FF0000" + }, + { + "input": false, + "output": "#000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey", + "transform": "scale(3)" + }, + "text": "pendant" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "SO02_01_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 235, + "y": 461 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/TPE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO02_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 4020, + "y": 501 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/66f7fcdb6fc442dac30292bb0d87cfc0b7cc2acef452fd1ed16e642bed1ddff7 b/.resources/66f7fcdb6fc442dac30292bb0d87cfc0b7cc2acef452fd1ed16e642bed1ddff7 new file mode 100644 index 00000000..5458795e --- /dev/null +++ b/.resources/66f7fcdb6fc442dac30292bb0d87cfc0b7cc2acef452fd1ed16e642bed1ddff7 @@ -0,0 +1,98 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code="Unknown") AS unknown, + SUM(sort_code="Unexpected") AS unexpected, + SUM(sort_code="Track Err") AS track_err, + SUM(sort_code="Gap Err") AS gap_err, + SUM(sort_code="Dest Full") AS dest_full, + SUM(sort_code="Dest Fault") AS dest_fault, + SUM(sort_code="Dest Invalid") AS dest_invalid, + SUM(sort_code="No Read") AS no_read, + SUM(sort_code="No Code") AS no_code, + SUM(sort_code="Multi Label") AS multi_label, + SUM(sort_code="Dest Disabled") AS dest_disabled, + SUM(sort_code="Rate High") AS rate_high, + SUM(sort_code="Div Fail") AS div_fail, + SUM(sort_code="Dest None") AS dest_none, + SUM(sort_code="Lost") AS lost, + SUM(sort_code="Dim Err") AS dim_err, + SUM(sort_code="Weight Err") AS weight_err, + SUM(sort_code="Underutilized") AS underutilized, + SUM(sort_code="Unsafe") AS unsafe + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter = :sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + success AS success_count, + unknown AS unknown_count, + unexpected AS unexpected_count, + track_err AS track_err_count, + gap_err AS gap_err_count, + dest_full AS dest_full_count, + dest_fault AS dest_fault_count, + dest_invalid AS dest_invalid_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + dest_disabled AS dest_disabled_count, + rate_high AS rate_high_count, + div_fail AS div_fail_count, + dest_none AS dest_none_count, + lost AS lost_count, + dim_err AS dim_err_count, + weight_err AS weight_err_count, + underutilized AS underutilized_count, + unsafe AS unsafe_count, + /* PPH: */ + ROUND(total*60) AS total_pph, + ROUND(success*60) AS success_pph, + ROUND(unknown*60) AS unknown_pph, + ROUND(unexpected*60) AS unexpected_pph, + ROUND(track_err*60) AS track_err_pph, + ROUND(gap_err*60) AS gap_err_pph, + ROUND(dest_full*60) AS dest_full_pph, + ROUND(dest_fault*60) AS dest_fault_pph, + ROUND(dest_invalid*60) AS dest_invalid_pph, + ROUND(no_read*60) AS no_read_pph, + ROUND(no_code*60) AS no_code_pph, + ROUND(multi_label*60) AS multi_label_pph, + ROUND(dest_disabled*60) AS dest_disabled_pph, + ROUND(rate_high*60) AS rate_high_pph, + ROUND(div_fail*60) AS div_fail_pph, + ROUND(dest_none*60) AS dest_none_pph, + ROUND(lost*60) AS lost_pph, + ROUND(dim_err*60) AS dim_err_pph, + ROUND(weight_err*60) AS weight_err_pph, + ROUND(underutilized*60) AS underutilized_pph, + ROUND(unsafe*60) AS unsafe_pph, + /* Percents: */ + ROUND(success/total, 4) AS success_percent, + ROUND(unknown/total, 4) AS unknown_percent, + ROUND(unexpected/total, 4) AS unexpected_percent, + ROUND(track_err/total, 4) AS track_err_percent, + ROUND(gap_err/total, 4) AS gap_err_percent, + ROUND(dest_full/total, 4) AS dest_full_percent, + ROUND(dest_fault/total, 4) AS dest_fault_percent, + ROUND(dest_invalid/total, 4) AS dest_invalid_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent, + ROUND(dest_disabled/total, 4) AS dest_disabled_percent, + ROUND(rate_high/total, 4) AS rate_high_percent, + ROUND(div_fail/total, 4) AS div_fail_percent, + ROUND(dest_none/total, 4) AS dest_none_percent, + ROUND(lost/total, 4) AS lost_percent, + ROUND(dim_err/total, 4) AS dim_err_percent, + ROUND(weight_err/total, 4) AS weight_err_percent, + ROUND(underutilized/total, 4) AS underutilized_percent, + ROUND(unsafe/total, 4) AS unsafe_percent +FROM SORTERS; \ No newline at end of file diff --git a/.resources/6993ce855a4083afa7738be88ff4847cd2c7b3e5b67a55aaf19efbbec4299a47 b/.resources/6993ce855a4083afa7738be88ff4847cd2c7b3e5b67a55aaf19efbbec4299a47 new file mode 100644 index 00000000..a2e08ae5 --- /dev/null +++ b/.resources/6993ce855a4083afa7738be88ff4847cd2c7b3e5b67a55aaf19efbbec4299a47 @@ -0,0 +1,1810 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "S1-CH1" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "rotation": 0 + }, + "status": { + "tagPath": "[default]MCP04/CH_20116/CH_20116" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.rotation": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 509, + "width": 645 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Instructions" + }, + "position": { + "height": 288, + "width": 423, + "x": 34, + "y": 176 + }, + "props": { + "style": { + "backgroundColor": "#FF0", + "borderStyle": "solid" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Instructions_Label" + }, + "position": { + "height": 32, + "width": 240, + "x": 125.5, + "y": 144 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Divert Jog Procedure" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Instructions_Text" + }, + "position": { + "height": 315, + "width": 423, + "x": 20.5, + "y": 185.78 + }, + "props": { + "markdown": { + "escapeHtml": false + }, + "source": "1. Press and secure \"Maintenance Mode\" button on the MCP\u003cbr\u003e\u003cbr\u003e\n2. Press \"ENABLE\" button on wireless pendant\u003cbr\u003e\u003cbr\u003e\n3. Input diverter number on HMI\u003cbr\u003e\u003cbr\u003e\n4. Verify pendant is in range of receiver\u003cbr\u003e\u003cbr\u003e\n5. Hold down \"JOG\" button on wireless pendant\u003cbr\u003e\u003cbr\u003e\n6. Hold down \"DIVERT\" button on wireless pendant\u003cbr\u003e\u003cbr\u003e", + "style": { + "textAlign": "center" + } + }, + "type": "ia.display.markdown" + }, + { + "meta": { + "name": "Diverter_Selection_Label" + }, + "position": { + "height": 28, + "width": 159, + "x": 465.3, + "y": 291.75 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Diverter Selection:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "NumericEntryField" + }, + "position": { + "height": 34, + "width": 79.99999999999994, + "x": 504.3, + "y": 318.25 + }, + "propConfig": { + "props.value": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/divertID_INP" + }, + "type": "tag" + } + } + }, + "props": { + "containerStyle": { + "borderBottomLeftRadius": 5, + "borderBottomRightRadius": 5, + "borderStyle": "inset", + "borderTopLeftRadius": 5, + "borderTopRightRadius": 5 + }, + "format": "0,0", + "inputBounds": { + "invalidStyle": { + "backgroundColor": "#FF0000" + }, + "maximum": 30, + "minimum": 0 + }, + "placeholder": "0 to 30" + }, + "type": "ia.input.numeric-entry-field" + }, + { + "meta": { + "name": "StsMaintLight" + }, + "position": { + "height": 112, + "width": 107, + "x": 5, + "y": 7 + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/maintModeIND" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + }, + { + "input": true, + "output": "#008000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.elements[4].elements[0].fill.paint": { + "binding": { + "config": { + "path": "this.custom.color" + }, + "type": "property" + } + }, + "props.elements[4].elements[1].fill.paint.stops[1].style.stopColor": { + "binding": { + "config": { + "path": "this.custom.color" + }, + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "d": "M102.228,66.313l-0.091-8.881l0.226-1.352l4.954-3.604l0.338-2.027 l-3.604-44.368l-1.013-3.153l-2.479-2.252l-3.152-0.675H10.135L6.982,0.677L4.729,2.93L3.716,6.083L0,50.451l0.338,2.027 l4.842,3.604l0.45,1.352l-0.295,9.635c0.111,0.456,0.164,0.929,0.16,1.401h96.032C101.609,67.706,101.842,66.965,102.228,66.313z", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "d": "M102.153,65.247c0,26.094-21.67,47.253-48.401,47.253 c-26.731,0-48.4-21.159-48.4-47.253", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + } + ], + "name": "Group_BackplateBevel", + "type": "group" + }, + { + "elements": [ + { + "d": "M98.195,56.081l1.914-4.054l3.153-3.041L99.884,6.42l-0.787-1.689l-1.689-0.789H10.135L8.671,4.731L7.77,6.42L4.167,48.649 l3.378,3.041l2.027,4.054L98.195,56.081z", + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Assembly", + "type": "group" + }, + { + "elements": [ + { + "d": "M99.078,65.416c0-24.938-20.311-45.158-45.365-45.158c-25.054,0-45.364,20.22-45.364,45.158 c0,24.943,20.31,45.169,45.364,45.169C78.768,110.585,99.078,90.359,99.078,65.416z", + "fill": { + "paint": "#6E6E6E" + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Backplate", + "type": "group" + }, + { + "elements": [ + { + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "47.5767", + "x2": "59.8506", + "y1": "23.6792", + "y2": "23.6792" + } + }, + "height": "6.312", + "name": "rect", + "type": "rect", + "width": "12.274", + "x": "47.577", + "y": "20.523" + }, + { + "d": "M93.85,65.31c0-22.063-17.969-39.952-40.136-39.952c-22.166,0-40.135,17.889-40.135,39.952 c0,22.068,17.969,39.963,40.135,39.963C75.881,105.272,93.85,87.378,93.85,65.31z", + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "13.5791", + "x2": "93.8496", + "y1": "65.3145", + "y2": "65.3145" + } + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Nut", + "type": "group" + }, + { + "elements": [ + { + "d": "M87.835,65.132c0-18.84-15.276-34.12-34.121-34.12 c-18.844,0-34.121,15.28-34.121,34.12c0,18.841,15.277,34.121,34.121,34.121C72.559,99.253,87.835,83.973,87.835,65.132z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "cx": "44.489", + "cy": "55.25", + "fill": { + "paint": { + "cx": "43.7754", + "cy": "54.0874", + "gradientTransform": "matrix(1.3614 0 0 1.3614 -15.1075 -18.3842)", + "gradientUnits": "userSpaceOnUse", + "r": "14.0759", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#D1D1D1" + } + }, + { + "offset": "1", + "style": {} + } + ], + "type": "radial" + } + }, + "name": "ellipse", + "rx": "19.163", + "ry": "18.177", + "type": "ellipse" + } + ], + "name": "Group_Pilot_Light_Red", + "type": "group" + } + ], + "viewBox": "0 0 107.654 112.5" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "StsMaintLabel" + }, + "position": { + "height": 32, + "width": "auto", + "x": 15.5, + "y": 3 + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontSize": 8, + "fontWeight": "bold", + "textTransform": "uppercase" + }, + "text": "Maintenance Mode" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "StsPendantLight" + }, + "position": { + "height": 112, + "width": 107, + "x": 137, + "y": 7 + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/pendantEnableIND" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + }, + { + "input": true, + "output": "#008000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.elements[4].elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + }, + "props.elements[4].elements[1].fill.paint.stops[1].style.stopColor": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "d": "M102.228,66.313l-0.091-8.881l0.226-1.352l4.954-3.604l0.338-2.027 l-3.604-44.368l-1.013-3.153l-2.479-2.252l-3.152-0.675H10.135L6.982,0.677L4.729,2.93L3.716,6.083L0,50.451l0.338,2.027 l4.842,3.604l0.45,1.352l-0.295,9.635c0.111,0.456,0.164,0.929,0.16,1.401h96.032C101.609,67.706,101.842,66.965,102.228,66.313z", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "d": "M102.153,65.247c0,26.094-21.67,47.253-48.401,47.253 c-26.731,0-48.4-21.159-48.4-47.253", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + } + ], + "name": "Group_BackplateBevel", + "type": "group" + }, + { + "elements": [ + { + "d": "M98.195,56.081l1.914-4.054l3.153-3.041L99.884,6.42l-0.787-1.689l-1.689-0.789H10.135L8.671,4.731L7.77,6.42L4.167,48.649 l3.378,3.041l2.027,4.054L98.195,56.081z", + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Assembly", + "type": "group" + }, + { + "elements": [ + { + "d": "M99.078,65.416c0-24.938-20.311-45.158-45.365-45.158c-25.054,0-45.364,20.22-45.364,45.158 c0,24.943,20.31,45.169,45.364,45.169C78.768,110.585,99.078,90.359,99.078,65.416z", + "fill": { + "paint": "#6E6E6E" + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Backplate", + "type": "group" + }, + { + "elements": [ + { + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "47.5767", + "x2": "59.8506", + "y1": "23.6792", + "y2": "23.6792" + } + }, + "height": "6.312", + "name": "rect", + "type": "rect", + "width": "12.274", + "x": "47.577", + "y": "20.523" + }, + { + "d": "M93.85,65.31c0-22.063-17.969-39.952-40.136-39.952c-22.166,0-40.135,17.889-40.135,39.952 c0,22.068,17.969,39.963,40.135,39.963C75.881,105.272,93.85,87.378,93.85,65.31z", + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "13.5791", + "x2": "93.8496", + "y1": "65.3145", + "y2": "65.3145" + } + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Nut", + "type": "group" + }, + { + "elements": [ + { + "d": "M87.835,65.132c0-18.84-15.276-34.12-34.121-34.12 c-18.844,0-34.121,15.28-34.121,34.12c0,18.841,15.277,34.121,34.121,34.121C72.559,99.253,87.835,83.973,87.835,65.132z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "cx": "44.489", + "cy": "55.25", + "fill": { + "paint": { + "cx": "43.7754", + "cy": "54.0874", + "gradientTransform": "matrix(1.3614 0 0 1.3614 -15.1075 -18.3842)", + "gradientUnits": "userSpaceOnUse", + "r": "14.0759", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#D1D1D1" + } + }, + { + "offset": "1", + "style": {} + } + ], + "type": "radial" + } + }, + "name": "ellipse", + "rx": "19.163", + "ry": "18.177", + "type": "ellipse" + } + ], + "fill": "#FF0000", + "name": "Group_Pilot_Light_Red", + "type": "group" + } + ], + "viewBox": "0 0 107.654 112.5" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "StsPendantLabel" + }, + "position": { + "height": 32, + "width": "auto", + "x": 151.5, + "y": 3 + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontSize": 8, + "fontWeight": "bold", + "textTransform": "uppercase" + }, + "text": "Pendant Enabled" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "StsPendantLight_0" + }, + "position": { + "height": 112, + "width": 107, + "x": 269, + "y": 7 + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/jogSlowIND" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + }, + { + "input": true, + "output": "#008000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.elements[4].elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + }, + "props.elements[4].elements[1].fill.paint.stops[1].style.stopColor": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "d": "M102.228,66.313l-0.091-8.881l0.226-1.352l4.954-3.604l0.338-2.027 l-3.604-44.368l-1.013-3.153l-2.479-2.252l-3.152-0.675H10.135L6.982,0.677L4.729,2.93L3.716,6.083L0,50.451l0.338,2.027 l4.842,3.604l0.45,1.352l-0.295,9.635c0.111,0.456,0.164,0.929,0.16,1.401h96.032C101.609,67.706,101.842,66.965,102.228,66.313z", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "d": "M102.153,65.247c0,26.094-21.67,47.253-48.401,47.253 c-26.731,0-48.4-21.159-48.4-47.253", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + } + ], + "name": "Group_BackplateBevel", + "type": "group" + }, + { + "elements": [ + { + "d": "M98.195,56.081l1.914-4.054l3.153-3.041L99.884,6.42l-0.787-1.689l-1.689-0.789H10.135L8.671,4.731L7.77,6.42L4.167,48.649 l3.378,3.041l2.027,4.054L98.195,56.081z", + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Assembly", + "type": "group" + }, + { + "elements": [ + { + "d": "M99.078,65.416c0-24.938-20.311-45.158-45.365-45.158c-25.054,0-45.364,20.22-45.364,45.158 c0,24.943,20.31,45.169,45.364,45.169C78.768,110.585,99.078,90.359,99.078,65.416z", + "fill": { + "paint": "#6E6E6E" + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Backplate", + "type": "group" + }, + { + "elements": [ + { + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "47.5767", + "x2": "59.8506", + "y1": "23.6792", + "y2": "23.6792" + } + }, + "height": "6.312", + "name": "rect", + "type": "rect", + "width": "12.274", + "x": "47.577", + "y": "20.523" + }, + { + "d": "M93.85,65.31c0-22.063-17.969-39.952-40.136-39.952c-22.166,0-40.135,17.889-40.135,39.952 c0,22.068,17.969,39.963,40.135,39.963C75.881,105.272,93.85,87.378,93.85,65.31z", + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "13.5791", + "x2": "93.8496", + "y1": "65.3145", + "y2": "65.3145" + } + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Nut", + "type": "group" + }, + { + "elements": [ + { + "d": "M87.835,65.132c0-18.84-15.276-34.12-34.121-34.12 c-18.844,0-34.121,15.28-34.121,34.12c0,18.841,15.277,34.121,34.121,34.121C72.559,99.253,87.835,83.973,87.835,65.132z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "cx": "44.489", + "cy": "55.25", + "fill": { + "paint": { + "cx": "43.7754", + "cy": "54.0874", + "gradientTransform": "matrix(1.3614 0 0 1.3614 -15.1075 -18.3842)", + "gradientUnits": "userSpaceOnUse", + "r": "14.0759", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#D1D1D1" + } + }, + { + "offset": "1", + "style": {} + } + ], + "type": "radial" + } + }, + "name": "ellipse", + "rx": "19.163", + "ry": "18.177", + "type": "ellipse" + } + ], + "name": "Group_Pilot_Light_Red", + "type": "group" + } + ], + "viewBox": "0 0 107.654 112.5" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "StsPendantLabel_0" + }, + "position": { + "height": 32, + "width": "auto", + "x": 311.5, + "y": 3 + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontSize": 8, + "fontWeight": "bold", + "textTransform": "uppercase" + }, + "text": "jog 1" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "StsPendantLight_1" + }, + "position": { + "height": 112, + "width": 107, + "x": 401, + "y": 7 + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/jogFastIND" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + }, + { + "input": true, + "output": "#008000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.elements[4].elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + }, + "props.elements[4].elements[1].fill.paint.stops[1].style.stopColor": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "d": "M102.228,66.313l-0.091-8.881l0.226-1.352l4.954-3.604l0.338-2.027 l-3.604-44.368l-1.013-3.153l-2.479-2.252l-3.152-0.675H10.135L6.982,0.677L4.729,2.93L3.716,6.083L0,50.451l0.338,2.027 l4.842,3.604l0.45,1.352l-0.295,9.635c0.111,0.456,0.164,0.929,0.16,1.401h96.032C101.609,67.706,101.842,66.965,102.228,66.313z", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "d": "M102.153,65.247c0,26.094-21.67,47.253-48.401,47.253 c-26.731,0-48.4-21.159-48.4-47.253", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + } + ], + "name": "Group_BackplateBevel", + "type": "group" + }, + { + "elements": [ + { + "d": "M98.195,56.081l1.914-4.054l3.153-3.041L99.884,6.42l-0.787-1.689l-1.689-0.789H10.135L8.671,4.731L7.77,6.42L4.167,48.649 l3.378,3.041l2.027,4.054L98.195,56.081z", + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Assembly", + "type": "group" + }, + { + "elements": [ + { + "d": "M99.078,65.416c0-24.938-20.311-45.158-45.365-45.158c-25.054,0-45.364,20.22-45.364,45.158 c0,24.943,20.31,45.169,45.364,45.169C78.768,110.585,99.078,90.359,99.078,65.416z", + "fill": { + "paint": "#6E6E6E" + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Backplate", + "type": "group" + }, + { + "elements": [ + { + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "47.5767", + "x2": "59.8506", + "y1": "23.6792", + "y2": "23.6792" + } + }, + "height": "6.312", + "name": "rect", + "type": "rect", + "width": "12.274", + "x": "47.577", + "y": "20.523" + }, + { + "d": "M93.85,65.31c0-22.063-17.969-39.952-40.136-39.952c-22.166,0-40.135,17.889-40.135,39.952 c0,22.068,17.969,39.963,40.135,39.963C75.881,105.272,93.85,87.378,93.85,65.31z", + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "13.5791", + "x2": "93.8496", + "y1": "65.3145", + "y2": "65.3145" + } + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Nut", + "type": "group" + }, + { + "elements": [ + { + "d": "M87.835,65.132c0-18.84-15.276-34.12-34.121-34.12 c-18.844,0-34.121,15.28-34.121,34.12c0,18.841,15.277,34.121,34.121,34.121C72.559,99.253,87.835,83.973,87.835,65.132z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "cx": "44.489", + "cy": "55.25", + "fill": { + "paint": { + "cx": "43.7754", + "cy": "54.0874", + "gradientTransform": "matrix(1.3614 0 0 1.3614 -15.1075 -18.3842)", + "gradientUnits": "userSpaceOnUse", + "r": "14.0759", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#D1D1D1" + } + }, + { + "offset": 1, + "style": {} + } + ], + "type": "radial" + } + }, + "name": "ellipse", + "rx": "19.163", + "ry": "18.177", + "type": "ellipse" + } + ], + "name": "Group_Pilot_Light_Red", + "type": "group" + } + ], + "viewBox": "0 0 107.654 112.5" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "StsPendantLabel_1" + }, + "position": { + "height": 32, + "width": "auto", + "x": 443.5, + "y": 3 + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontSize": 8, + "fontWeight": "bold", + "textTransform": "uppercase" + }, + "text": "jog 2" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "StsPendantLight_2" + }, + "position": { + "height": 112, + "width": 107, + "x": 533, + "y": 7 + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/oilerIND" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + }, + { + "input": true, + "output": "#008000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.elements[4].elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + }, + "props.elements[4].elements[1].fill.paint.stops[1].style.stopColor": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "d": "M102.228,66.313l-0.091-8.881l0.226-1.352l4.954-3.604l0.338-2.027 l-3.604-44.368l-1.013-3.153l-2.479-2.252l-3.152-0.675H10.135L6.982,0.677L4.729,2.93L3.716,6.083L0,50.451l0.338,2.027 l4.842,3.604l0.45,1.352l-0.295,9.635c0.111,0.456,0.164,0.929,0.16,1.401h96.032C101.609,67.706,101.842,66.965,102.228,66.313z", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "d": "M102.153,65.247c0,26.094-21.67,47.253-48.401,47.253 c-26.731,0-48.4-21.159-48.4-47.253", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + } + ], + "name": "Group_BackplateBevel", + "type": "group" + }, + { + "elements": [ + { + "d": "M98.195,56.081l1.914-4.054l3.153-3.041L99.884,6.42l-0.787-1.689l-1.689-0.789H10.135L8.671,4.731L7.77,6.42L4.167,48.649 l3.378,3.041l2.027,4.054L98.195,56.081z", + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Assembly", + "type": "group" + }, + { + "elements": [ + { + "d": "M99.078,65.416c0-24.938-20.311-45.158-45.365-45.158c-25.054,0-45.364,20.22-45.364,45.158 c0,24.943,20.31,45.169,45.364,45.169C78.768,110.585,99.078,90.359,99.078,65.416z", + "fill": { + "paint": "#6E6E6E" + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Backplate", + "type": "group" + }, + { + "elements": [ + { + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "47.5767", + "x2": "59.8506", + "y1": "23.6792", + "y2": "23.6792" + } + }, + "height": "6.312", + "name": "rect", + "type": "rect", + "width": "12.274", + "x": "47.577", + "y": "20.523" + }, + { + "d": "M93.85,65.31c0-22.063-17.969-39.952-40.136-39.952c-22.166,0-40.135,17.889-40.135,39.952 c0,22.068,17.969,39.963,40.135,39.963C75.881,105.272,93.85,87.378,93.85,65.31z", + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "13.5791", + "x2": "93.8496", + "y1": "65.3145", + "y2": "65.3145" + } + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Nut", + "type": "group" + }, + { + "elements": [ + { + "d": "M87.835,65.132c0-18.84-15.276-34.12-34.121-34.12 c-18.844,0-34.121,15.28-34.121,34.12c0,18.841,15.277,34.121,34.121,34.121C72.559,99.253,87.835,83.973,87.835,65.132z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "cx": "44.489", + "cy": "55.25", + "fill": { + "paint": { + "cx": "43.7754", + "cy": "54.0874", + "gradientTransform": "matrix(1.3614 0 0 1.3614 -15.1075 -18.3842)", + "gradientUnits": "userSpaceOnUse", + "r": "14.0759", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#D1D1D1" + } + }, + { + "offset": "1", + "style": {} + } + ], + "type": "radial" + } + }, + "name": "ellipse", + "rx": "19.163", + "ry": "18.177", + "type": "ellipse" + } + ], + "name": "Group_Pilot_Light_Red", + "type": "group" + } + ], + "viewBox": "0 0 107.654 112.5" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "StsPendantLabel_2" + }, + "position": { + "height": 32, + "width": "auto", + "x": 574.5, + "y": 3 + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontSize": 8, + "fontWeight": "bold", + "textTransform": "uppercase" + }, + "text": "Oiler" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "StsPendantLight_3" + }, + "position": { + "height": 112, + "width": 107, + "x": 491.3, + "y": 175.75 + }, + "propConfig": { + "custom.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Pendant/divertIND" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + }, + { + "input": true, + "output": "#008000" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.elements[4].elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + }, + "props.elements[4].elements[1].fill.paint.stops[1].style.stopColor": { + "binding": { + "config": { + "expression": "if({[default]MCP21_Custom/Pendant/maintModeIND}\u003dtrue,{this.custom.color},\"#808080\")" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "elements": [ + { + "d": "M102.228,66.313l-0.091-8.881l0.226-1.352l4.954-3.604l0.338-2.027 l-3.604-44.368l-1.013-3.153l-2.479-2.252l-3.152-0.675H10.135L6.982,0.677L4.729,2.93L3.716,6.083L0,50.451l0.338,2.027 l4.842,3.604l0.45,1.352l-0.295,9.635c0.111,0.456,0.164,0.929,0.16,1.401h96.032C101.609,67.706,101.842,66.965,102.228,66.313z", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "d": "M102.153,65.247c0,26.094-21.67,47.253-48.401,47.253 c-26.731,0-48.4-21.159-48.4-47.253", + "fill": { + "paint": "#A8A8A8" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + } + ], + "name": "Group_BackplateBevel", + "type": "group" + }, + { + "elements": [ + { + "d": "M98.195,56.081l1.914-4.054l3.153-3.041L99.884,6.42l-0.787-1.689l-1.689-0.789H10.135L8.671,4.731L7.77,6.42L4.167,48.649 l3.378,3.041l2.027,4.054L98.195,56.081z", + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Assembly", + "type": "group" + }, + { + "elements": [ + { + "d": "M99.078,65.416c0-24.938-20.311-45.158-45.365-45.158c-25.054,0-45.364,20.22-45.364,45.158 c0,24.943,20.31,45.169,45.364,45.169C78.768,110.585,99.078,90.359,99.078,65.416z", + "fill": { + "paint": "#6E6E6E" + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Backplate", + "type": "group" + }, + { + "elements": [ + { + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "47.5767", + "x2": "59.8506", + "y1": "23.6792", + "y2": "23.6792" + } + }, + "height": "6.312", + "name": "rect", + "type": "rect", + "width": "12.274", + "x": "47.577", + "y": "20.523" + }, + { + "d": "M93.85,65.31c0-22.063-17.969-39.952-40.136-39.952c-22.166,0-40.135,17.889-40.135,39.952 c0,22.068,17.969,39.963,40.135,39.963C75.881,105.272,93.85,87.378,93.85,65.31z", + "fill": { + "paint": { + "gradientUnits": "userSpaceOnUse", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#808080" + } + }, + { + "offset": "0.5", + "style": { + "stopColor": "#DEDEDE" + } + }, + { + "offset": "1", + "style": { + "stopColor": "#808080" + } + } + ], + "type": "linear", + "x1": "13.5791", + "x2": "93.8496", + "y1": "65.3145", + "y2": "65.3145" + } + }, + "name": "path", + "type": "path" + } + ], + "name": "Group_Bannet_Nut", + "type": "group" + }, + { + "elements": [ + { + "d": "M87.835,65.132c0-18.84-15.276-34.12-34.121-34.12 c-18.844,0-34.121,15.28-34.121,34.12c0,18.841,15.277,34.121,34.121,34.121C72.559,99.253,87.835,83.973,87.835,65.132z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "0.25" + }, + "type": "path" + }, + { + "cx": "44.489", + "cy": "55.25", + "fill": { + "paint": { + "cx": "43.7754", + "cy": "54.0874", + "gradientTransform": "matrix(1.3614 0 0 1.3614 -15.1075 -18.3842)", + "gradientUnits": "userSpaceOnUse", + "r": "14.0759", + "stops": [ + { + "offset": "0", + "style": { + "stopColor": "#D1D1D1" + } + }, + { + "offset": "1", + "style": {} + } + ], + "type": "radial" + } + }, + "name": "ellipse", + "rx": "19.163", + "ry": "18.177", + "type": "ellipse" + } + ], + "name": "Group_Pilot_Light_Red", + "type": "group" + } + ], + "viewBox": "0 0 107.654 112.5" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "StsPendantLabel_3" + }, + "position": { + "height": 32, + "width": "auto", + "x": 530.3, + "y": 171.75 + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontSize": 8, + "fontWeight": "bold", + "textTransform": "uppercase" + }, + "text": "Divert" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Diverter_Selection_Label_0" + }, + "position": { + "height": 28, + "width": "auto", + "x": 479.3, + "y": 385 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Jog Speed (RPM)" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "LedDisplay" + }, + "position": { + "height": 32, + "width": 115.99999999999994, + "x": 486.3, + "y": 413.5 + }, + "propConfig": { + "props.value": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21/SO02/SO02_01/VFD/RPM" + }, + "type": "tag" + } + } + }, + "props": { + "numberFormat": "#,##0" + }, + "type": "ia.display.led-display" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/69a0f1c8c1174057096fab6e75610beeca0680a26be26a9033336cbedcacbfd0 b/.resources/69a0f1c8c1174057096fab6e75610beeca0680a26be26a9033336cbedcacbfd0 new file mode 100644 index 00000000..d894dfea --- /dev/null +++ b/.resources/69a0f1c8c1174057096fab6e75610beeca0680a26be26a9033336cbedcacbfd0 @@ -0,0 +1,41 @@ +WITH SCANNERS AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + sorter, + scanner, + COUNT(*) AS total, + SUM(scanner_status NOT IN ("No Read", "No Code", "Multi Label")) AS good_read, + SUM(scanner_status = "No Read") AS no_read, + SUM(scanner_status = "No Code") AS no_code, + SUM(scanner_status = "Multi Label") AS multi_label + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, scanner + ORDER BY sorter, scanner +) +SELECT + start_timestamp, + end_timestamp, + sorter AS sorter, + scanner AS scanner, + /* Counts: */ + total AS total_count, + good_read AS good_read_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + ROUND(good_read*pph_multiplier) AS good_read_pph, + ROUND(no_read*pph_multiplier) AS no_read_pph, + ROUND(no_code*pph_multiplier) AS no_code_pph, + ROUND(multi_label*pph_multiplier) AS multi_label_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(good_read/total, 4) AS good_read_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent +FROM SCANNERS; \ No newline at end of file diff --git a/.resources/6ae7e10baf7e57a00159b5f36371e7276433097292e3685a0cd25ad7901519a0 b/.resources/6ae7e10baf7e57a00159b5f36371e7276433097292e3685a0cd25ad7901519a0 new file mode 100644 index 00000000..c8fa9292 --- /dev/null +++ b/.resources/6ae7e10baf7e57a00159b5f36371e7276433097292e3685a0cd25ad7901519a0 @@ -0,0 +1,1075 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ScannerHistory" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "custom.timewidget": { + "binding": { + "config": { + "path": "session.custom.timewidget" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tself.forceRefresh()" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "induct_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Induct Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "confirm_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Confirm Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "trackid", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Parcel ID" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "scanner", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scanner" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "imgid", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Img ID" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "barcode", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scan Label" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "scanner_status", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scan Status" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "pkg_length", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Length (in)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "trays", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Trays (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "assignments", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Assignment" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "divert_status", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Divert Status" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "requested_dest", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Req Dest" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 40 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "diverted_dest", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Actual Dest" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 40 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "sort_code", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sort Code" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\tRED \u003d lambda x: { \"value\": x, \"style\": { \"background\": \"#FEA3AA\" } }\n\tYELLOW \u003d lambda x: { \"value\": x, \"style\": { \"background\": \"#FAF884\" } }\n\t\n\t# Run query:\n\tdata \u003d system.db.runNamedQuery(\"Status/PackageHistory\", {\n\t\t\"startDate\": self.session.custom.timewidget.startDate,\n\t\t\"endDate\": self.session.custom.timewidget.endDate,\n\t\t\"limit\": \"LIMIT 4000\"\n\t})\n\t# Convert to JSON:\n\tfilteredData \u003d utils.datasetToJSON(data)\n\t# Apply styles:\n\tfor row in filteredData:\n\t\t# Handle sort code:\n\t\tif row[\"sort_code\"] !\u003d \"Success\":\n\t\t\trow[\"sort_code\"] \u003d RED(row[\"sort_code\"])\n\t\t# Handle barcode:\n\t\tif row[\"scanner_status\"] !\u003d \"Good Read\":\n\t\t\trow[\"scanner_status\"] \u003d RED(row[\"scanner_status\"])\n\t\t\trow[\"barcode\"] \u003d RED(row[\"barcode\"])\n\t\t# Handle destinations:\n\t\tif len(row[\"assignments\"]) \u003e 0:\n\t\t\tDESTS \u003d row[\"assignments\"].split(\",\")\n\t\t\tif row[\"requested_dest\"] not in DESTS:\n\t\t\t\trow[\"requested_dest\"] \u003d RED(row[\"requested_dest\"])\n\t\t\telif row[\"requested_dest\"] !\u003d DESTS[0]:\n\t\t\t\trow[\"requested_dest\"] \u003d YELLOW(row[\"requested_dest\"])\n\t\t\tif row[\"diverted_dest\"] not in DESTS:\n\t\t\t\trow[\"diverted_dest\"] \u003d RED(row[\"diverted_dest\"])\n\t\t\telif row[\"diverted_dest\"] !\u003d DESTS[0]:\n\t\t\t\trow[\"diverted_dest\"] \u003d YELLOW(row[\"diverted_dest\"])\n\t\telse:\n\t\t\trow[\"assignments\"] \u003d RED(row[\"assignments\"])\n\t# Set title extra:\n\tcou \u003d utils.getRowCount(filteredData)\n\tast \u003d \"*\" if cou \u003e\u003d 4000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Set data\n\tself.props.data \u003d filteredData" + } + ], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Scanner History\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdata \u003d system.db.runNamedQuery(\"Status/PackageHistory\", {\n\t\t\"startDate\": self.session.custom.timewidget.startDate,\n\t\t\"endDate\": self.session.custom.timewidget.endDate,\n\t\t\"limit\": \" \"\n\t})\n\tutils.downloadCSV(data, \"Scanner History\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\", \"Maintenance\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export All" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/6b846e67ed47e87c0171434b29407f27c18277fa031e40686aab70185c3c4efa b/.resources/6b846e67ed47e87c0171434b29407f27c18277fa031e40686aab70185c3c4efa new file mode 100644 index 00000000..5d104cc9 --- /dev/null +++ b/.resources/6b846e67ed47e87c0171434b29407f27c18277fa031e40686aab70185c3c4efa @@ -0,0 +1,13 @@ +{ + "base": { + "style": {} + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundColor": "#C7DCED" + } + } + ] +} \ No newline at end of file diff --git a/.resources/6c3dfac11ecefcb1bdcfaa1e73341bc020a4426a4adbf382f82812887ba5417e b/.resources/6c3dfac11ecefcb1bdcfaa1e73341bc020a4426a4adbf382f82812887ba5417e new file mode 100644 index 00000000..c4c064b6 --- /dev/null +++ b/.resources/6c3dfac11ecefcb1bdcfaa1e73341bc020a4426a4adbf382f82812887ba5417e @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "backgroundColor": "#D5D5D5" + } + } +} \ No newline at end of file diff --git a/.resources/6ccfc01a8e64c6fbc013b201010a3273755d8d4e090a792e16ab662ef31b3031 b/.resources/6ccfc01a8e64c6fbc013b201010a3273755d8d4e090a792e16ab662ef31b3031 new file mode 100644 index 00000000..f0702a61 --- /dev/null +++ b/.resources/6ccfc01a8e64c6fbc013b201010a3273755d8d4e090a792e16ab662ef31b3031 @@ -0,0 +1,18 @@ +WITH UNIQUE_ALARMS AS ( +SELECT + MAX(id) AS id, + source +FROM alarm_events +GROUP BY source +) +SELECT dalarm.displaypath AS description +FROM UNIQUE_ALARMS u +/* Lookup Alarm */ +JOIN alarm_events dalarm ON u.id = dalarm.id +/* Lookup Class */ +JOIN alarm_event_data dclass ON u.id = dclass.id AND dclass.propname = "Class" +/* Lookup Device */ +JOIN alarm_event_data ddevice ON u.id = ddevice.id AND ddevice.propname = "Device" +WHERE dclass.strvalue IN ("Error", "Warning") + AND ddevice.strvalue NOT IN ("SorterA", "SorterB", "SorterC", "Ignition") +GROUP BY description; \ No newline at end of file diff --git a/.resources/6dfb903a6a996267e77063dbbc0fb6adbf26de23ff509aedeb5d2372791fe42a b/.resources/6dfb903a6a996267e77063dbbc0fb6adbf26de23ff509aedeb5d2372791fe42a new file mode 100644 index 00000000..32bbcdf5 --- /dev/null +++ b/.resources/6dfb903a6a996267e77063dbbc0fb6adbf26de23ff509aedeb5d2372791fe42a @@ -0,0 +1,1097 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "VFD" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": { + "left": "#B3B3B3", + "right": "#D3D3D3" + }, + "showAlways": true, + "tagPath": "[default]MCP03/RO02/RO02_03/VFD", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 500, + "width": 500 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [\n\t\ttagPath + \"/SetManualRun\",\n\t\ttagPath + \"/SetManualStop\",\n\t\ttagPath + \"/SetManualSlow\"\n\t]\n\tvalues \u003d [0, 1, 0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "btnManualOff" + }, + "position": { + "height": 70, + "width": 85, + "x": 348.5, + "y": 412.5 + }, + "propConfig": { + "meta.cActive": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualStop" + }, + "transforms": [ + { + "expression": "coalesce({value}, false)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}, false)\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualStop" + }, + "transforms": [ + { + "expression": "try({value}, false)", + "type": "expression" + }, + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Yellow" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "OFF", + "textStyle": { + "fontSize": "17px" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [\n\t\ttagPath + \"/SetManualStop\",\n\t\ttagPath + \"/SetManualRun\",\n\t\ttagPath + \"/SetManualSlow\"\n\t]\n\tvalues \u003d [0, 1, 1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "btnManualSlow" + }, + "position": { + "height": 70, + "width": 85, + "x": 259.5, + "y": 412.5 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}, false)\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualSlow" + }, + "transforms": [ + { + "expression": "try({value}, false)", + "type": "expression" + }, + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Yellow" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "SLOW", + "textStyle": { + "fontSize": "17px" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/SetManualEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "btnManual" + }, + "position": { + "height": 70, + "width": 263, + "x": 170.5, + "y": 332.5 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}\u003d{value}, false)\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}, false)", + "type": "expression" + }, + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Blue" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "MANUAL", + "textStyle": { + "fontSize": "18px" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_13" + }, + "position": { + "height": 25, + "width": 190, + "x": 80, + "y": 285 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Last Fault Code:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbLastCode" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 285 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Last_Code_Text" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [\n\t\ttagPath + \"/SetManualStop\",\n\t\ttagPath + \"/SetManualRun\",\n\t\ttagPath + \"/SetManualSlow\"\n\t]\n\tvalues \u003d [0, 1, 0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "btnManualOn" + }, + "position": { + "height": 70, + "width": 85, + "x": 170.5, + "y": 412.5 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}, false)\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualRun" + }, + "transforms": [ + { + "expression": " try({value}, false)\r\n\u0026\u0026 {../btnManualSlow.props.style.classes} \u003d \"Buttons/Grey\"", + "type": "expression" + }, + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Nominal", + "textStyle": { + "fontSize": "17px" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 150, + "x": 120, + "y": 250 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status Code:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatusCode" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 250 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Status_Code" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_9" + }, + "position": { + "height": 25, + "width": 150, + "x": 120, + "y": 215 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Speed (RPM):" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbFrequency" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 215 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/RPM" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#AAAAAA", + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/SetManualEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "btnAuto" + }, + "position": { + "height": 150, + "width": 95, + "x": 66.5, + "y": 332.5 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}\u003d{value}, false)\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/SetManualEnable" + }, + "transforms": [ + { + "expression": "try({value}, true)", + "type": "expression" + }, + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "AUTO", + "textStyle": { + "fontSize": "18px" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_7" + }, + "position": { + "height": 25, + "width": 150, + "x": 120, + "y": 180 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Speed (FPM):" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbSpeed" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 180 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Speed" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#AAAAAA", + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_5" + }, + "position": { + "height": 25, + "width": 235, + "x": 35, + "y": 145 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Motor Current (Amps):" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbAmps" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 145 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Amps" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#AAAAAA", + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_3" + }, + "position": { + "height": 25, + "width": 125, + "x": 145, + "y": 110 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "IP Address:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbIPAddress" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 110 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/IPAddr" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "VFD" + }, + "position": { + "height": 64, + "width": 64, + "x": 67.5, + "y": 17.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "Label_15" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/6eb217cfaef275db08b608cd931d1ef78941e5135b59ec81ab7d4fda7612eba3 b/.resources/6eb217cfaef275db08b608cd931d1ef78941e5135b59ec81ab7d4fda7612eba3 new file mode 100644 index 00000000..c1abb0e9 --- /dev/null +++ b/.resources/6eb217cfaef275db08b608cd931d1ef78941e5135b59ec81ab7d4fda7612eba3 @@ -0,0 +1,40 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + COUNT(*) AS total, + /* PPH Data */ + SUM(sort_code="Success") AS success, + SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs, + SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational, + SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine, + SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner, + /* Problem Solve Data */ + SUM(sort_code="No Read") AS no_read, + SUM(sort_code="No Code") AS no_code, + SUM(sort_code="Multi Label") AS multi_label, + /* Sorter Error Data */ + SUM(sort_code="Gap Err") AS gap_err, + SUM(sort_code="Div Fail") AS div_fail, + SUM(sort_code="Dest None") AS dest_none, + SUM(sort_code="Lost") AS lost + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter = :sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* PPH: */ + ROUND((SUM((total - machine - scanner)*60) OVER w)/(:movAvgMin+1)) AS total_pph, + /* Problem Solve Percents: */ + ROUND((SUM(no_read/total) OVER w)/(:movAvgMin+1), 4) AS no_read_percent, + ROUND((SUM(no_code/total) OVER w)/(:movAvgMin+1), 4) AS no_code_percent, + ROUND((SUM(multi_label/total) OVER w)/(:movAvgMin+1), 4) AS multi_label_percent, + /* Sorter Error Percents: */ + ROUND((SUM(gap_err/total) OVER w)/(:movAvgMin+1), 4) AS gap_err_percent, + ROUND((SUM(div_fail/total) OVER w)/(:movAvgMin+1), 4) AS div_fail_percent, + ROUND((SUM(dest_none/total) OVER w)/(:movAvgMin+1), 4) AS dest_none_percent, + ROUND((SUM(lost/total) OVER w)/(:movAvgMin+1), 4) AS lost_percent +FROM SORTERS +WINDOW w AS (ORDER BY STR_TO_DATE(time, "%Y-%m-%d %H:%i:00") RANGE BETWEEN INTERVAL :movAvgMin MINUTE PRECEDING AND CURRENT ROW); \ No newline at end of file diff --git a/.resources/6f09fcfd0835066f388bfdd2f5cab0be2b1ff9b6f1c3bd9ce20ac34f6aa91784 b/.resources/6f09fcfd0835066f388bfdd2f5cab0be2b1ff9b6f1c3bd9ce20ac34f6aa91784 new file mode 100644 index 00000000..23eca822 --- /dev/null +++ b/.resources/6f09fcfd0835066f388bfdd2f5cab0be2b1ff9b6f1c3bd9ce20ac34f6aa91784 @@ -0,0 +1,104 @@ +import os +import shutil +from com.inductiveautomation.ignition.common.model import ApplicationScope + +os_symlink = getattr(os, "symlink", None) +if callable(os_symlink): + pass +else: + def symlink_ms(source, link_name): + import ctypes + csl = ctypes.windll.kernel32.CreateSymbolicLinkW + csl.argtypes = (ctypes.c_wchar_p, ctypes.c_wchar_p, ctypes.c_uint32) + csl.restype = ctypes.c_ubyte + flags = 1 if os.path.isdir(source) else 0 + if csl(link_name, source, flags) == 0: + raise ctypes.WinError() + os.symlink = symlink_ms + +############# +### Constants +############# +WP = os.path.join(os.getcwd(), "webserver", "webapps", "main", "documents") +DP = WP#"D:\\Ignition\\Documents" +#if not os.path.exists("D:\\"): + # Not on actual production server, so store locally: + #DP = "Ignition\\Documents" +if ApplicationScope.isGateway(ApplicationScope.getGlobalScope()) and not os.path.exists(DP): + os.makedirs(DP) + #os.symlink(DP, WP) + # The above symlink doesn't work on windows due to process permissions. Need to manually set up: + # mklink /J "C:\\Program Files\\Inductive Automation\\Ignition\\webserver\\webapps\\main\\documents" D:\\Ignition\\Documents + +PDF_ICON = { + "path": "material/picture_as_pdf", + "color": "#869DB1", + "style": {} +} + + +####################################################### +####################################################### +####################################################### +#### Functions +####################################################### + +def getFileTree(path, phantomPath=""): + files = [] + for f in os.listdir(path): + filepath = os.path.join(path, f) + filephantompath = os.path.join(phantomPath, f) + # Check what type of file: + if os.path.isfile(filepath): + # Add leaf node (file) if pdf: + if f.endswith(".pdf"): + files.append({ + "label": f, + "expanded": False, + "icon": PDF_ICON, + "data": filephantompath, + "items": [] + }) + elif os.path.isdir(filepath): + # Add folder: + files.append({ + "label": f, + "expanded": False, + "data": "", + "items": getFileTree(filepath, filephantompath) + }) + # Return list: + return files + + +def getDocuments(): + # Return list: + return getFileTree(DP) + +def createFolder(folderpath): + if not os.path.exists(folderpath): + os.makedirs(os.path.join(DP, folderpath)) + +def uploadDocument(file, folder=""): + filename = os.path.join(DP, folder, file.name) + if filename[-4:].lower() <> ".pdf": + system.perspective("File extension not compatible!\r\nThe supported extensions are: pdf") + else: + filepath = os.path.join(DP, filename) + #if system.file.fileExists(filepath): + #return "Config file already exists!\r\nYou must delete the config before uploading over it." + file.copyTo(filepath) + #system.file.writeFile(filepath, contents, False) + +def deleteDocuments(filenames): + for filename in filenames: + filepath = os.path.join(DP, filename) + try: + if os.path.isfile(filepath): + os.remove(filepath) + elif os.path.isdir(filepath): + shutil.rmtree(filepath) + else: + pass#return "Config file doesn't exist!" + except: + system.perspective.print("Failed to delete "+filename) \ No newline at end of file diff --git a/.resources/6f871948781c6bee2a2a9bdf77120185f9a659920b0fbdda9819ac6b554285e4 b/.resources/6f871948781c6bee2a2a9bdf77120185f9a659920b0fbdda9819ac6b554285e4 new file mode 100644 index 00000000..83e984f7 --- /dev/null +++ b/.resources/6f871948781c6bee2a2a9bdf77120185f9a659920b0fbdda9819ac6b554285e4 @@ -0,0 +1,535 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 2529, + "width": 4892 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "HSS_Inbound" + }, + "position": { + "height": 651, + "width": 1687, + "x": 122, + "y": 1868.22 + }, + "props": { + "path": "Windows/Graphics/Templates/HSS_Inbound", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "HSS_Singulator" + }, + "position": { + "height": 1601, + "width": 949, + "x": 10, + "y": 301 + }, + "props": { + "path": "Windows/Graphics/Templates/HSS_Singulator", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "HSS_Sorter" + }, + "position": { + "height": 1973, + "width": 4223, + "x": 522, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/HSS_Sorter", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "OXD_Inbound" + }, + "position": { + "height": 800, + "width": 636, + "x": 1802, + "y": 1450 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Inbound", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "OXD_Singulator" + }, + "position": { + "height": 508, + "width": 1103, + "x": 2076, + "y": 1032 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Singulator", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "OXD_Sorter" + }, + "position": { + "height": 517, + "width": 1434, + "x": 2983, + "y": 1033 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Sorter", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "OXD_Problem_Solve" + }, + "position": { + "height": 286, + "width": 928, + "x": 2530, + "y": 1125 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Problem_Solve", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Runout" + }, + "position": { + "height": 1467, + "width": 709, + "x": 4172, + "y": 841 + }, + "props": { + "path": "Windows/Graphics/Templates/Runout", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Inbound" + }, + "position": { + "height": 40, + "width": 106, + "x": 1017, + "y": 1740 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSInboundStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Singulator" + }, + "position": { + "height": 40, + "width": 125, + "x": 497, + "y": 920 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Sorter" + }, + "position": { + "height": 40, + "width": 95, + "x": 1760, + "y": 120 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Inbound" + }, + "position": { + "height": 40, + "width": 110, + "x": 2537, + "y": 2000 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDInboundStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Singulator" + }, + "position": { + "height": 40, + "width": 128, + "x": 2797, + "y": 1640 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Sorter" + }, + "position": { + "height": 40, + "width": 97, + "x": 3774, + "y": 1266 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Problem_Solve" + }, + "position": { + "height": 40, + "width": 150, + "x": 3007, + "y": 910 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDProblemSolveStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_Runout" + }, + "position": { + "height": 40, + "width": 74, + "x": 4607, + "y": 1662 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]RunoutStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tif system.perspective.isAuthorized(True, [\u0027Authenticated/Roles/Maintenance\u0027]):\n\t\tself.meta.visible \u003d True\n\telse:\n\t\tself.meta.visible \u003d False" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartStopSystem", + "visible": false + }, + "position": { + "height": 40, + "width": 125, + "x": 1190, + "y": 982 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "label": "", + "tagPaths": [ + "[default]MCP01/MCP01", + "[default]MCP02/MCP02", + "[default]MCP03/MCP03", + "[default]MCP20/MCP20", + "[default]MCP21/MCP21" + ], + "view": "Windows/Graphics/Overview" + }, + "path": "Templates/Buttons/StartStopSystem", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tif system.perspective.isAuthorized(True, [\u0027Authenticated/Roles/Maintenance\u0027]):\n\t\tself.meta.visible \u003d True\n\telse:\n\t\tself.meta.visible \u003d False" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartStopHSS", + "visible": false + }, + "position": { + "height": 40, + "width": 125, + "x": 1190, + "y": 1172 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "label": "", + "tagPath": "[default]HSSStatus", + "tagPaths": [ + "[default]MCP02/MCP02", + "[default]MCP03/MCP03", + "[default]MCP21/MCP21" + ], + "view": "Windows/Graphics/Overview" + }, + "path": "Templates/Buttons/StartStopSystem", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tif system.perspective.isAuthorized(True, [\u0027Authenticated/Roles/Maintenance\u0027]):\n\t\t\tself.meta.visible \u003d True\n\telse:\n\t\t\tself.meta.visible \u003d False" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartStopOXD", + "visible": false + }, + "position": { + "height": 40, + "width": 125, + "x": 1190, + "y": 1362 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "label": "", + "tagPath": "[default]OXDStatus", + "tagPaths": [ + "[default]MCP01/MCP01", + "[default]MCP20/MCP20" + ], + "view": "Windows/Graphics/Overview" + }, + "path": "Templates/Buttons/StartStopSystem", + "style": { + "transform": "scale(4)" + } + }, + "type": "ia.display.view" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.tag.writeBlocking(\"[default]MCP21/Verify_Inspection\", 1)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 144, + "width": 344, + "x": 387.5, + "y": 678 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "isAuthorized(true, \u0027Authenticated/Roles/Administrator\u0027) ||\r\nisAuthorized(true, \u0027Authenticated/Roles/Maintenance\u0027)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FF0000", + "color": "#FF0000" + }, + "text": "Shoe Pin Fault Reset", + "textStyle": { + "backgroundColor": "#FF0000", + "borderColor": "#FF0000", + "color": "#000000", + "fontSize": 28, + "outlineColor": "#FF0000" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/6f8bc9136f57196c124e4a8fe1e4d1c6dbb9bbca67bb1aa721b929a0e5f4a2f2 b/.resources/6f8bc9136f57196c124e4a8fe1e4d1c6dbb9bbca67bb1aa721b929a0e5f4a2f2 new file mode 100644 index 00000000..311a0cc0 --- /dev/null +++ b/.resources/6f8bc9136f57196c124e4a8fe1e4d1c6dbb9bbca67bb1aa721b929a0e5f4a2f2 @@ -0,0 +1,38 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs, + SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational, + SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine, + SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter = :sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + success AS success_count, + awcs AS awcs_issues_count, + operational AS operational_issues_count, + machine AS machine_issues_count, + scanner AS scanner_issues_count, + /* PPH: */ + ROUND(total*60) AS total_pph, + ROUND(success*60) AS success_pph, + ROUND(awcs*60) AS awcs_issues_pph, + ROUND(operational*60) AS operational_issues_pph, + ROUND(machine*60) AS machine_issues_pph, + ROUND(scanner*60) AS scanner_issues_pph, + /* Percents: */ + ROUND(success/total, 4) AS success_percent, + ROUND(awcs/total, 4) AS awcs_issues_percent, + ROUND(operational/total, 4) AS operational_issues_percent, + ROUND(machine/total, 4) AS machine_issues_percent, + ROUND(scanner/total, 4) AS scanner_issues_percent +FROM SORTERS; \ No newline at end of file diff --git a/.resources/71a967ac9cb07505dd2dbd64f1dbb9101fc923e9ee2e137bc2b45b87f41626bd b/.resources/71a967ac9cb07505dd2dbd64f1dbb9101fc923e9ee2e137bc2b45b87f41626bd new file mode 100644 index 00000000..90afc57c --- /dev/null +++ b/.resources/71a967ac9cb07505dd2dbd64f1dbb9101fc923e9ee2e137bc2b45b87f41626bd @@ -0,0 +1,6838 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 515, + "width": 1434 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PS01_08" + }, + "position": { + "height": 20, + "width": 118, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_09" + }, + "position": { + "height": 20, + "width": 18, + "x": 117, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_09/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_10" + }, + "position": { + "height": 20, + "width": 18, + "x": 134, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_10/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_11" + }, + "position": { + "height": 20, + "width": 18, + "x": 151, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_11/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_12" + }, + "position": { + "height": 20, + "width": 18, + "x": 168, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_12/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_13" + }, + "position": { + "height": 20, + "width": 18, + "x": 185, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_13/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_14" + }, + "position": { + "height": 20, + "width": 18, + "x": 202, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_14/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_15" + }, + "position": { + "height": 20, + "width": 57, + "x": 219, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_15/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_16" + }, + "position": { + "height": 20, + "width": 57, + "x": 275, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_17" + }, + "position": { + "height": 20, + "width": 18, + "x": 331, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_17/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_18" + }, + "position": { + "height": 20, + "width": 18, + "x": 348, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_18/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_19" + }, + "position": { + "height": 20, + "width": 18, + "x": 365, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_19/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_20" + }, + "position": { + "height": 20, + "width": 18, + "x": 382, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_20/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_21" + }, + "position": { + "height": 20, + "width": 18, + "x": 399, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_21/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 320, + "x": 1232, + "y": 376 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 550, + "x": 1213, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 550, + "x": 664, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "SO01_01" + }, + "position": { + "height": 20, + "width": 997, + "x": 416, + "y": 434 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "SO01_CH01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 451, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH01/CH/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "SO01_CH68" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1214, + "y": 453 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH68/CH/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "SO01_CH69" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1232, + "y": 435 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH69/CH/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RE02_02CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 40, + "x": 1212, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "side": "left", + "type": "chute" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "SO01_CH02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 471, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH02" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 506, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH03" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 526, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH04" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 527, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH05" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 547, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH06" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH07" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 548, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH07" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH08" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 568, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH08" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH09" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 569, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH09" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH10" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 589, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH10" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH11" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 590, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH11" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH12" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 610, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH12" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH13" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 611, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH13" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH14" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 631, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH14" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH15" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 632, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH15" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH16" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 652, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH16" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH17" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 653, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH17" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH18" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 673, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH18" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH19" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 674, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH19" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH20" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 694, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH20" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH21" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 695, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH21" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH22" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 715, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH22" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH23" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 716, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH23" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH24" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 736, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH24" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH25" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 737, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH25" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH26" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 757, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH26" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH27" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 758, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH27" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH28" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 778, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH28" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH29" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 779, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH29" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH30" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 799, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH30" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH31" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 800, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH31" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH32" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 820, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH32" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH33" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 821, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH33" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH34" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 841, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH34" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH35" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 842, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH35" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH36" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 862, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH36" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH37" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 863, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH37" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH38" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 883, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH38" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH39" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 884, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH39" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH40" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 904, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH40" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH41" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 905, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH41" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH42" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 925, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH42" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH43" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 926, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH43" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH44" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 946, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH44" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH45" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 947, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH45" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH46" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 967, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH46" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH47" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 968, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH47" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH48" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 988, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH48" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH49" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 989, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH49" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH50" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1009, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH50" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH51" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1010, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH51" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH52" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1030, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH52" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH53" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1031, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH53" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH54" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1051, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH54" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH55" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1052, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH55" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH56" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1072, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH56" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH57" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1073, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH57" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH58" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1093, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH58" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH59" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1094, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH59" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH60" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1114, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH60" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH61" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1115, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH61" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH62" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1135, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH62" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH63" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1136, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH63" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH64" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1156, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH64" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH65" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1157, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH65" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH66" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1177, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH66" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH67" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 60, + "x": 1194, + "y": 435 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH67" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_CH70" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 60, + "x": 1252, + "y": 453 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "isRightOfSorter": false, + "mirror": false, + "tagPath": "[default]MCP20/SO01/SO01_CH70" + }, + "path": "Templates/Areas/FlexChute", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_SGT1" + }, + "position": { + "height": 29, + "width": 27, + "x": 315, + "y": 381 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "tagPath": "[default]MCP20/SO01/SGT1" + }, + "path": "Templates/SpecialDevices/SafetyGate", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_SGT2" + }, + "position": { + "height": 29, + "width": 27, + "x": 423, + "y": 475 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "tagPath": "[default]MCP20/SO01/SGT2" + }, + "path": "Templates/SpecialDevices/SafetyGate", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_SGT3" + }, + "position": { + "height": 29, + "width": 27, + "x": 1333, + "y": 487 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "tagPath": "[default]MCP20/SO01/SGT3" + }, + "path": "Templates/SpecialDevices/SafetyGate", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_SGT4" + }, + "position": { + "height": 29, + "width": 27, + "x": 1360, + "y": 404 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "tagPath": "[default]MCP20/SO01/SGT4" + }, + "path": "Templates/SpecialDevices/SafetyGate", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "SO01_SGT5" + }, + "position": { + "height": 29, + "width": 27, + "x": 1413, + "y": 426 + }, + "props": { + "loading": { + "order": "with-parent" + }, + "params": { + "tagPath": "[default]MCP20/SO01/SGT5" + }, + "path": "Templates/SpecialDevices/SafetyGate", + "style": { + "classes": " painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "MCP20" + }, + "position": { + "height": 20, + "width": 50, + "x": 138, + "y": 386 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/MCP20/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "PS01_08_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 63, + "y": 417 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_09_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 118, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_09/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_10_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 135, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_10/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_11_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 152, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_11/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_12_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 169, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_12/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_13_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 186, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_13/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_14_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 203, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_14/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_15_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 237, + "y": 417 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_15/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_16_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 315, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_17_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 332, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_17/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_18_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 349, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_18/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_19_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 366, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_19/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_20_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 383.24, + "y": 413.769 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_20/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_21_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 400.24, + "y": 413.769 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_21/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE02_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1215, + "y": 251.333 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE02_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 934 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RE02_04_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 204 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_04/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "SO01_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1328, + "y": 417 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "SO01_01_ENC" + }, + "position": { + "height": 16, + "rotate": { + "angle": "270deg" + }, + "width": 16, + "x": 1395, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/ENC/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.encoder" + }, + { + "meta": { + "name": "PS01_08_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 24, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_08_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 80, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RE02_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1253, + "y": 71 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "SO01_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1396, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_08_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 62, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_08_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 81, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_08_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 23, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_08_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 42, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_16_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 275, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_16_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 294, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_01_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1253, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1253, + "y": 92 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RE02_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1253, + "y": 111 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO01_01_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1284, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO01_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1322, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "SO01_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1341, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_08_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 55, + "y": 476 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_08_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 24, + "y": 476 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_11_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 145, + "y": 465 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_11/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE02_03_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 802, + "y": 1 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RE02_03_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 771, + "y": 1 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_0102_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 456, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_0102/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_0304_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 512, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_0304/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_0506_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 533, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_0506/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_0708_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 554, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_0708/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_0910_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 575, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_0910/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_1112_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 596, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_1112/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_1314_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 617, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_1314/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_1516_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 638, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_1516/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_1718_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 659, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_1718/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_1920_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 680, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_1920/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_2122_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 701, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_2122/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_2324_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 722, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_2324/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_2526_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 743, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_2526/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_2728_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 764, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_2728/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_2930_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 785, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_2930/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_3132_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 805, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_3132/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_3334_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 826, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_3334/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_3536_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 847, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_3536/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_3738_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 868, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_3738/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_3940_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 889, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_3940/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_4142_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 910, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_4142/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_4344_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 932, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_4344/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_4546_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 952, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_4546/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_4748_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 973, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_4748/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_4950_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 994, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_4950/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_5152_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1015, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_5152/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_5354_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1036, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_5354/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_5556_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1057, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_5556/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_5758_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1077, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_5758/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_5960_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1098, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_5960/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_6162_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1119, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_6162/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_6364_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1141, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_6364/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_6566_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1162, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_6566/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_6768_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1200, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_6768/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_6970_SOL" + }, + "position": { + "height": 5, + "width": 10, + "x": 1225, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_6970/SOL/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_CH01_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 435, + "y": 423 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH01/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_CH68_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1178, + "y": 495 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH68/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "SO01_CH69_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1216, + "y": 423 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH69/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_08_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 45, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_08_BCN2_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 23, + "y": 381 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/BCN2/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_08_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 23, + "y": 396 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_16_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 298, + "y": 396 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_16_BCN1_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 298, + "y": 366 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/BCN1/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_16_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 298, + "y": 381 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_16_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 281, + "y": 366 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_01_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1274, + "y": 107 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RE02_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1274, + "y": 92 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_01_BCN1_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 1379, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/BCN1/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1379, + "y": 470 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_01_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1267, + "y": 455 + }, + "props": { + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_01_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 1362, + "y": 455 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/BCN2/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_01_BCN3_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1305, + "y": 466 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/BCN3/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH01_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 472, + "y": 392 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH01/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH01_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 472, + "y": 377 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH01/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH01_BCN1_GRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 472, + "y": 407 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH01/BCN1/GRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH01_BCN2_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 489, + "y": 407 + }, + "props": { + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH68_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1215, + "y": 482 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH68/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH68_BCN1_GRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 1215, + "y": 497 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH68/BCN1/GRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH69_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1253, + "y": 396 + }, + "props": { + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SO01_CH69_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 1253, + "y": 381 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_CH69/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "SCN01_01" + }, + "position": { + "height": 12, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 24, + "x": 206, + "y": 479 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SCN01/SCN01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.scanner" + }, + { + "meta": { + "name": "PS01_08_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 106, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_08/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_09_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 121, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_09/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_10_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 138, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_10/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_11_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 155, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_11/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_12_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 172, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_12/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_13_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 189, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_13/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_15_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 221, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_15/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_16_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 318, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_16/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_17_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 335, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_17/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_18_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 352, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_18/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_19_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 369, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_19/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_20_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 386, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_20/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_21_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 403, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_21/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1262, + "y": 68 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_01_PE2" + }, + "position": { + "height": 10, + "width": 34, + "x": 1222, + "y": 364 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_01/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 675, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1194, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RE02_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 126, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RE02/RE02_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE01" + }, + "position": { + "height": 5, + "width": 122, + "x": 436, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE01/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE02" + }, + "position": { + "height": 5, + "width": 122, + "x": 436, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE02/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE03" + }, + "position": { + "height": 5, + "width": 83, + "x": 559, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE03/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE04" + }, + "position": { + "height": 5, + "width": 83, + "x": 559, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE04/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE05" + }, + "position": { + "height": 5, + "width": 83, + "x": 643, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE05/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE06" + }, + "position": { + "height": 5, + "width": 83, + "x": 643, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE06/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE07" + }, + "position": { + "height": 5, + "width": 82, + "x": 727, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE07/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE08" + }, + "position": { + "height": 5, + "width": 82, + "x": 727, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE08/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE09" + }, + "position": { + "height": 5, + "width": 83, + "x": 810, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE09/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE10" + }, + "position": { + "height": 5, + "width": 83, + "x": 810, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE10/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE11" + }, + "position": { + "height": 5, + "width": 83, + "x": 894, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE11/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE12" + }, + "position": { + "height": 5, + "width": 83, + "x": 894, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE12/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE13" + }, + "position": { + "height": 5, + "width": 83, + "x": 978, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE13/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE14" + }, + "position": { + "height": 5, + "width": 83, + "x": 978, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE14/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE15" + }, + "position": { + "height": 5, + "width": 84, + "x": 1062, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE15/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE16" + }, + "position": { + "height": 5, + "width": 84, + "x": 1062, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE16/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE17" + }, + "position": { + "height": 5, + "width": 124, + "x": 1147, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE17/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_PE18" + }, + "position": { + "height": 5, + "width": 124, + "x": 1147, + "y": 447 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PE18/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "through-beam" + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 418, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 1218, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE3" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 1256, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE4" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "225deg" + }, + "width": 48, + "x": 1321, + "y": 465 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE5" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "225deg" + }, + "width": 48, + "x": 1331, + "y": 465 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE5/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE6" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "225deg" + }, + "width": 48, + "x": 1341, + "y": 465 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE6/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TPE7" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "225deg" + }, + "width": 48, + "x": 1351, + "y": 465 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TPE7/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TREY_PE1" + }, + "position": { + "height": 5, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 10, + "x": 1352, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TREY_PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "SO01_01_TREY_PE2" + }, + "position": { + "height": 5, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 10, + "x": 1358, + "y": 436 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/TREY_PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Overflow_at_max_lbl" + }, + "position": { + "height": 40, + "width": 60, + "x": 1340, + "y": 356 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "coalesce({[default]MCP20_Custom/SO01_01_HMI_OverflowNotAvailable}, false)" + }, + "type": "expr" + } + }, + "props.style.background-color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/ToggleTag" + }, + "transforms": [ + { + "fallback": "#FF0", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#00F" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.style.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/ToggleTag" + }, + "transforms": [ + { + "fallback": "#000", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#FFF" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "1px", + "fontSize": "10px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "OVERFLOW NOT AVAILABLE" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "SO01_01_LS1" + }, + "position": { + "height": 16, + "width": 16, + "x": 1253, + "y": 413 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/LS1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "SO01_01_DIV" + }, + "position": { + "height": 20, + "width": 30, + "x": 1231, + "y": 434 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "originSide": "right" + }, + "status": { + "color": "#FFF", + "isExtended": true, + "isRetracted": false, + "tooltip": "SO1-1.DIV\u003cbr\u003eStatus: Non-powered" + } + }, + "type": "dex.display.divertpaddle" + }, + { + "meta": { + "name": "SO01_01_LS2" + }, + "position": { + "height": 16, + "width": 16, + "x": 1215, + "y": 465 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/LS2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "SO01_01_PS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 429, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/SO01/SO01_01/PS1/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": "PS" + } + }, + "type": "dex.display.limitswitch" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/71debdaff3c573977c6dd50ab3e36aef46fff856ea293aeb0130e901b2db6d53 b/.resources/71debdaff3c573977c6dd50ab3e36aef46fff856ea293aeb0130e901b2db6d53 new file mode 100644 index 00000000..ab6958b4 --- /dev/null +++ b/.resources/71debdaff3c573977c6dd50ab3e36aef46fff856ea293aeb0130e901b2db6d53 @@ -0,0 +1,28 @@ +WITH LANES AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND destination_act = :lane + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp AS time, + hour, + /* Counts: */ + total AS total_count, + /* PPH: */ + total AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/7217fe8a224d6e380c577cfc47fb874e0e9973f8a0a74bf91b9d5b089e10e98a b/.resources/7217fe8a224d6e380c577cfc47fb874e0e9973f8a0a74bf91b9d5b089e10e98a new file mode 100644 index 00000000..9b3a4534 --- /dev/null +++ b/.resources/7217fe8a224d6e380c577cfc47fb874e0e9973f8a0a74bf91b9d5b089e10e98a @@ -0,0 +1,509 @@ +{ + "custom": {}, + "params": { + "deviceType": "", + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 280, + "width": 877 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tscreen \u003d alarms.resolveScreenBySource(event.value.source)\n\tif screen \u003c\u003e \"\":\n\t\twindow \u003d \"Windows/GraphicsWrapper\"\n\t\tparams \u003d {\"view\": screen}\n\t\tsystem.perspective.navigate(\"/\")\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)\n\t\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.columns[3].visible": { + "binding": { + "config": { + "expression": " {view.params.deviceType}\u003d\"conveyor\"\r\n||{view.params.deviceType}\u003d\"conveyorycurve\"\r\n||{view.params.deviceType}\u003d\"gaylord\"\r\n||{view.params.deviceType}\u003d\"chutedestination\"\r\n||{view.params.deviceType}\u003d\"spiralchute\"\r\n||{view.params.deviceType}\u003d\"divchute\"\r\n||{view.params.deviceType}\u003d\"rrchute\"\r\n||{view.params.deviceType}\u003d\"mcp\"" + }, + "type": "expr" + } + }, + "props.data": { + "binding": { + "config": { + "parameters": { + "priority": "0", + "tagPath": "if(\t {view.params.deviceType}\u003d\"conveyor\"\r \t||{view.params.deviceType}\u003d\"conveyorycurve\"\r \t||{view.params.deviceType}\u003d\"gaylord\"\r \t||{view.params.deviceType}\u003d\"mcp\",\r \t// Give parent folder:\r\tsubstring(\r\t\treplace({view.params.props.status.tagPath}, \"/Graphics\", \"\"),\r\t\t0,\r\t\tlastIndexOf(\r\t\t\treplace({view.params.props.status.tagPath}, \"/Graphics\", \"\"),\r\t\t\t\"/\"\r\t\t)\r\t),\r\t{view.params.props.status.tagPath}\r )\r " + }, + "queryPath": "Alarms/DeviceHistory" + }, + "transforms": [ + { + "code": "\toutput_json \u003d []\n\t# Transform dataset into json:\n\tfor row in range(value.getRowCount()):\n\t\trow_object \u003d {\"value\": {}}\n\t\t# Populate row values:\n\t\tfor col in range(value.getColumnCount()):\n\t\t\trow_object[\"value\"][value.getColumnName(col)] \u003d value.getValueAt(row, col)\n\t\t\t# Check if endtime isn\u0027t reached:\n\t\t\tif value.getColumnName(col) \u003d\u003d \u0027endtime\u0027 and value.getValueAt(row, col) in [None, \"\"]:\n\t\t\t\trow_object[\u0027style\u0027] \u003d {\"background\": \"#F4B084\"}\n\t\t# Append to json output:\n\t\toutput_json.append(row_object)\n\t# Return as json:\n\treturn output_json", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "starttime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "endtime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "duration", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Device" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "description", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Description" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "minWidth": "250px" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 250 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "source", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": "" + } + ], + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tname \u003d utils.extractName(self.view.params.props.status)\n\tutils.downloadCSV(self, \"[\"+name+\"]Alarm History\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/72dce1db3100659b2d0ed960e89175d0bf4ed1ea8de999fe4538c8e2dc414f0a b/.resources/72dce1db3100659b2d0ed960e89175d0bf4ed1ea8de999fe4538c8e2dc414f0a new file mode 100644 index 00000000..0e2bded7 --- /dev/null +++ b/.resources/72dce1db3100659b2d0ed960e89175d0bf4ed1ea8de999fe4538c8e2dc414f0a @@ -0,0 +1,28 @@ +WITH LANES AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND destination_act = :lane + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp, + hour, + /* Counts: */ + total AS total_count, + /* PPH: */ + total AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/73f4f0fa3eafc761d1673eba3174e978ab55761a0912ba2c982162372227b1b4 b/.resources/73f4f0fa3eafc761d1673eba3174e978ab55761a0912ba2c982162372227b1b4 new file mode 100644 index 00000000..3fc7daed --- /dev/null +++ b/.resources/73f4f0fa3eafc761d1673eba3174e978ab55761a0912ba2c982162372227b1b4 @@ -0,0 +1,445 @@ +{ + "custom": {}, + "params": { + "deviceType": "", + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "[default]MCP01/UL01/UL01_01/Conv", + "tooltip": "" + } + } + }, + "propConfig": { + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 280 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "expression": "if(toBoolean(now(5000), false),\r\n\t{view.params.props.status.tagPath},\r\n\t{view.params.props.status.tagPath}\r\n)" + }, + "overlayOptOut": true, + "transforms": [ + { + "code": "\tvalue \u003d tags.getOPCTags(value)\n\theaders \u003d [\"tagName\", \"tagType\", \"tagPath\", \"tagDocumentation\", \"tagValue\"]\n\tresult \u003d reports.readJsonTable(headers, value)\n\treturn result[\"data\"]", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "tagName", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Name" + }, + "justify": "left", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "tagType", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Type" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "", + "minWidth": "250px" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 60 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "tagPath", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "OPC Path" + }, + "justify": "left", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "tagDocumentation", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Documentation" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "tagValue", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Value" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 120 + } + ], + "data": [ + { + "tagDocumentation": "", + "tagName": "Flt_CB", + "tagPath": "[MCP01]UL01_01.Fault.Flt_CB", + "tagType": "opc", + "tagValue": { + "style": { + "background": "#F88" + }, + "value": "ERR: NOT FOUND" + } + }, + { + "tagDocumentation": "", + "tagName": "Flt_CB", + "tagPath": "[MCP01]UL01_01.Fault.Flt_CB", + "tagType": "opc", + "tagValue": { + "style": { + "background": "#F88" + }, + "value": "ERR: NOT FOUND" + } + } + ], + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tname \u003d utils.extractName(self.view.params.props.status)\n\tutils.downloadCSV(self, \"[\"+name+\"]Tags\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/73f7954d7da2b23bb30a8a1651569f1779270435946e6e0e17c9b43e2998e62f b/.resources/73f7954d7da2b23bb30a8a1651569f1779270435946e6e0e17c9b43e2998e62f new file mode 100644 index 00000000..0f027f99 --- /dev/null +++ b/.resources/73f7954d7da2b23bb30a8a1651569f1779270435946e6e0e17c9b43e2998e62f @@ -0,0 +1,526 @@ +{ + "custom": {}, + "params": { + "fontSize": "16px", + "label": null, + "showIcons": true, + "tagPath": "", + "view": "" + }, + "propConfig": { + "params.fontSize": { + "paramDirection": "input", + "persistent": true + }, + "params.label": { + "paramDirection": "input", + "persistent": true + }, + "params.showIcons": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + }, + "params.view": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 60, + "width": 130 + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "if(isGood({value}),\n\tjsonGet({value}, \u0027tooltip\u0027),\n\t\"Tooltip not configured\"\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "props": { + "style": { + "classes": "Buttons/Grey", + "paddingBottom": "10%" + }, + "text": "", + "textStyle": { + "fontsize": "12px" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "width": "100%" + }, + "propConfig": { + "position.height": { + "binding": { + "config": { + "path": "view.params.showIcons" + }, + "transforms": [ + { + "fallback": "50%", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "100%" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.alignVertical": { + "binding": { + "config": { + "path": "view.params.showIcons" + }, + "transforms": [ + { + "fallback": "bottom", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "center" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.style.fontSize": { + "binding": { + "config": { + "path": "view.params.fontSize" + }, + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({view.params.label},\nif(isGood({value}),\n\t{value},\n\t\"Unknown\"\n))", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "fontWeight": "bold", + "pointer-events": "none", + "textAlign": "center", + "textTransform": "uppercase", + "user-select": "none" + } + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "meta": { + "name": "Alarm_Icon" + }, + "position": { + "height": 0.6667, + "width": 0.1538, + "x": 0.0385, + "y": 0.1667 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/General_Alarm" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#000000" + }, + { + "input": false, + "output": "#DDDDDD" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "color": "#FFF", + "path": "material/notifications_active" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Emergency_Icon" + }, + "position": { + "height": 0.6667, + "width": 0.1538, + "x": 0.2308, + "y": 0.1667 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Estop_Active" + }, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#FF0000" + }, + { + "input": false, + "output": "#DDDDDD" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "color": "#FFF", + "path": "material/all_out" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Jam_Icon" + }, + "position": { + "height": 0.6667, + "width": 0.1538, + "x": 0.4231, + "y": 0.1667 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Jam_Active" + }, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#FF8C00" + }, + { + "input": false, + "output": "#DDDDDD" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "color": "#FFF", + "path": "material/skip_next" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Full_Icon" + }, + "position": { + "height": 0.6667, + "width": 0.1538, + "x": 0.6154, + "y": 0.1667 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Full_Active" + }, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#0000FF" + }, + { + "input": false, + "output": "#DDDDDD" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "color": "#FFF", + "path": "material/skip_next" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Manual_Icon" + }, + "position": { + "height": 0.6667, + "width": 0.1538, + "x": 0.8077, + "y": 0.1667 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Manual_Active" + }, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#AC5F00" + }, + { + "input": false, + "output": "#DDDDDD" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "color": "#FFF", + "path": "material/build" + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "Icons" + }, + "position": { + "height": "50%", + "width": "100%", + "y": "50%" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "view.params.showIcons" + }, + "type": "property" + } + } + }, + "props": { + "aspectRatio": "65:15", + "mode": "percent", + "style": { + "overflow": "hidden", + "pointer-events": "none" + } + }, + "type": "ia.container.coord" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "cursor": "pointer" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openWindow", + "params": [], + "script": "\tview \u003d self.view.params.view\n\tif view in [\"\", None]:\n\t\tview \u003d \"Windows/Graphics/\"+self.getChild(\"Label\").props.text.replace(\" \", \"_\")\n\t# Open window:\n\twindow \u003d \"Windows/GraphicsWrapper\"\n\tparams \u003d {\"view\": view}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/7453f79a163e8b92f338238be241f378b60d1d49c70197979bdbc8973326a90c b/.resources/7453f79a163e8b92f338238be241f378b60d1d49c70197979bdbc8973326a90c new file mode 100644 index 0000000000000000000000000000000000000000..b7c4ddf88d88438c3ddecc9840e6b0482981e1e6 GIT binary patch literal 1183 zcmV;Q1YrA#P)Y}j6o&m15U?VU#IYOI-=v#n3v>Yzf+C8FKu9!Y$1jKyDGOF00gFoA_6L*|Nuwf? z=0hNnGz(%QXuc2$*eSMW#&&|*hPE&F+}Kt;V|ykUO6%}09{J2U_nqr`7jt~)!vWK@ zAQ*;;-JJ@4TG`Y{EV)`;u&fd)<#I#rAW|!-G4{M4ZK+hkAGtgxXP0$sueZ|*N1eBw zw&vCR;w_|q`Hfz+(b6ktt(BHuIcu%7^vYRlr9FyQ0lTg`%ksT4MX;lFM!v zkS`dHx*x5Z(e1Q;=542SGrFDD&%AD0dgZLQ($Xtuy_J?;IqR*o$Hl9F3=oP%13Q&6 zGO8)06_rXw4=x&(##9HnnN0{t;!u=ZDC)#kilAAORt)1>6Ldaz4ET5 zS6;ODOjWCDmy~v+s=cRjd+PiyJSY`WQrem6n>vdzhmm=8m_LE@qG!H zDLlk%ai2K@xSsnPmltm9xRw`W+;hwH+P*Z?vmEw0`F8L@mAYuBBJrwe+f` zcDe{mD6W@*OKB5V)^~M0E_q|0YbNm3_I-S|_@|B~cc3xIO5s;EX$8-J{3*h(o=52H zMTFk`P}BE@d|p8RTSL{j5y_oUweZ;sjyko@I{EEJr%T5d zJyO5821%4Iq|C5<&>+AQFn6WC}wkBbe+B;_1|j2&!$#c_C1$ zKC&ctqUC0VT$hriiF6%3Ni0SPA*6#yD0<>?4E6V8s=FIO6{o6sF9fpkxDp!!A%q+o z4mO5wRb!A?a`thp2rOhRSh8xcO8POUc>`<=gb>of_-+h&c?qLvVk?`6ncK!Uxji-p zLI~+#d^ZMpu`MgFaL=bPbz=#a7jNrFp5lGoYz%}D(t-GH42Jwy1}`NMLddbfcVnpi zkrHn{6GF)GfQ^9=LP!H_41|!!M?#VGf#~h~B$`Abp|R)WGpK2WbFu;vX9u!^p^pj+4nG xLZJ|bhli0)r!hJ@ihgy{mt(Py6}{ia@DG`{boV8D;r0Lk002ovPDHLkV1n*fJb3^B literal 0 HcmV?d00001 diff --git a/.resources/7535d2e816561e2a5a15dc8eea7e282beda324eacc031a1566b2c8f4683b76d0 b/.resources/7535d2e816561e2a5a15dc8eea7e282beda324eacc031a1566b2c8f4683b76d0 new file mode 100644 index 00000000..7d6c312e --- /dev/null +++ b/.resources/7535d2e816561e2a5a15dc8eea7e282beda324eacc031a1566b2c8f4683b76d0 @@ -0,0 +1,14 @@ +SELECT s01_timestamp AS induct_timestamp, + s04_timestamp AS confirm_timestamp, + sorter, trackid, scanner, + bcr_imgid AS imgid, s01_barcode AS barcode, scanner_status, + pkg_length/10 AS pkg_length, /* In inches */ + carriers AS trays, + assignments, divert_status, + destination_req AS requested_dest, + destination_act AS diverted_dest, + sort_code +FROM package_history +WHERE s04_timestamp BETWEEN :startDate AND :endDate +ORDER BY s04_timestamp DESC +LIMIT 4000; \ No newline at end of file diff --git a/.resources/784661f0d2ba96a754becb435424fa3d38d747181b7c141aed5288e447f7e316 b/.resources/784661f0d2ba96a754becb435424fa3d38d747181b7c141aed5288e447f7e316 new file mode 100644 index 00000000..cfcac7b2 --- /dev/null +++ b/.resources/784661f0d2ba96a754becb435424fa3d38d747181b7c141aed5288e447f7e316 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FF0000B3" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/7a71b1f3831b8d00a450fbe69923dfda1da4af1ec15f26871bc8d842f3f6a4a6 b/.resources/7a71b1f3831b8d00a450fbe69923dfda1da4af1ec15f26871bc8d842f3f6a4a6 new file mode 100644 index 00000000..e89425f4 --- /dev/null +++ b/.resources/7a71b1f3831b8d00a450fbe69923dfda1da4af1ec15f26871bc8d842f3f6a4a6 @@ -0,0 +1,287 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "ENC1" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Encoder" + }, + "position": { + "height": 48, + "width": 48, + "x": 75.5, + "y": 11 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.encoder" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/7c2470fb6d223918b6f8d8edf50e737e37bbb9c847c851a6b93d85d34c231899 b/.resources/7c2470fb6d223918b6f8d8edf50e737e37bbb9c847c851a6b93d85d34c231899 new file mode 100644 index 00000000..b2069649 --- /dev/null +++ b/.resources/7c2470fb6d223918b6f8d8edf50e737e37bbb9c847c851a6b93d85d34c231899 @@ -0,0 +1,36 @@ +{ + "base": { + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(255,255,0,1) 0%, rgba(245,245,0,1) 70%, rgba(208,208,0,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "textTransform": "uppercase" + } + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundImage": "linear-gradient(0deg, rgba(255,255,0,1) 0%, rgba(245,245,0,1) 70%, rgba(208,208,0,1) 100%);", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#000", + "cursor": "pointer" + } + }, + { + "pseudo": "disabled", + "style": { + "backgroundImage": "linear-gradient(180deg, rgba(208,208,0,1) 0%, rgba(208,208,0,1) 100%);", + "borderColor": "#555", + "borderStyle": "solid", + "borderWidth": "2px", + "color": "#555555", + "cursor": "not-allowed" + } + } + ] +} \ No newline at end of file diff --git a/.resources/7d584ddfa3c0ef6496248230b334a487997c3b6635ed095b37d053604e7a9000 b/.resources/7d584ddfa3c0ef6496248230b334a487997c3b6635ed095b37d053604e7a9000 new file mode 100644 index 00000000..a404b419 --- /dev/null +++ b/.resources/7d584ddfa3c0ef6496248230b334a487997c3b6635ed095b37d053604e7a9000 @@ -0,0 +1,322 @@ +{ + "custom": { + "plc": "value", + "searchId": "value", + "state": 0, + "string": "Clear" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 1, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 4 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 6 + }, + { + "input": 7, + "output": 7 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Clear", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Clear" + }, + { + "input": 2, + "output": "Blocked" + }, + { + "input": 3, + "output": "Disabled" + }, + { + "input": 4, + "output": "Jammed" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 110 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Photoeye" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#000000" + }, + { + "input": 3, + "output": "#800080" + }, + { + "input": 4, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.elements[2].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#000000" + }, + { + "input": 3, + "output": "#800080" + }, + { + "input": 4, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "d": "m 28.763932,20 -20,10 V 10 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "path" + }, + { + "stroke": { + "paint": "#000000", + "width": "2" + }, + "stroke-dasharray": "4,4", + "type": "line", + "x1": "30", + "x2": "90%", + "y1": "20", + "y2": "20" + }, + { + "fill": {}, + "height": "20", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "rect", + "width": "6", + "x": "90%", + "y": "10" + } + ], + "viewBox": "0 0 110 40" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-Photoeye\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\n\talarm \u003d []\n\tmessage \u003d None\n\n\tsleep(0.5)\n\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_photoeyes" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/7db5e65317e04cb83190b7f6b1ec0120b91d69fd010d796a97421ca11118abea b/.resources/7db5e65317e04cb83190b7f6b1ec0120b91d69fd010d796a97421ca11118abea new file mode 100644 index 00000000..a041d9f9 --- /dev/null +++ b/.resources/7db5e65317e04cb83190b7f6b1ec0120b91d69fd010d796a97421ca11118abea @@ -0,0 +1,290 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "EPC1" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": { + "base": "#FFF", + "button": "#0F0" + }, + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "EPC" + }, + "position": { + "height": 48, + "width": 48, + "x": 76, + "y": 11 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/7f010c0d4439a7d002cf798216e15157c5c90216b052ad5a3b584caa91ed86d2 b/.resources/7f010c0d4439a7d002cf798216e15157c5c90216b052ad5a3b584caa91ed86d2 new file mode 100644 index 00000000..e29e0ac2 --- /dev/null +++ b/.resources/7f010c0d4439a7d002cf798216e15157c5c90216b052ad5a3b584caa91ed86d2 @@ -0,0 +1,4 @@ +{ + "type": "AllOf", + "securityLevels": [] +} \ No newline at end of file diff --git a/.resources/7f38f3eab888f8d3ea06ed18f9ddd07e7d6f67820a52840a06622df1c8b454a7 b/.resources/7f38f3eab888f8d3ea06ed18f9ddd07e7d6f67820a52840a06622df1c8b454a7 new file mode 100644 index 00000000..4bfcd6d7 --- /dev/null +++ b/.resources/7f38f3eab888f8d3ea06ed18f9ddd07e7d6f67820a52840a06622df1c8b454a7 @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#00CC00" + } + } +} \ No newline at end of file diff --git a/.resources/819fc9f77d8943f886e855c457bd949420be7223bdc5ce9b66bae8a56363ee21 b/.resources/819fc9f77d8943f886e855c457bd949420be7223bdc5ce9b66bae8a56363ee21 new file mode 100644 index 00000000..07b3aeae --- /dev/null +++ b/.resources/819fc9f77d8943f886e855c457bd949420be7223bdc5ce9b66bae8a56363ee21 @@ -0,0 +1,382 @@ +{ + "custom": {}, + "params": { + "deviceType": "", + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 280 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tparams \u003d {\n\t\t\"deviceType\": event.value[\"deviceType\"],\n\t\t\"props\": {\n\t\t\t\"status\": {\n\t\t\t\t\"tagPath\": event.value[\"tagPath\"]\n\t\t\t}\n\t\t},\n\t\t\"meta\": {\n\t\t\t\"name\": event.value[\"device\"]\n\t\t},\n\t\t\"tabs\": [\"Status\"]\n\t}\n\t# Close the current popup:\n\t# NOTE: We close before opening the new popup because the pageId changes when opening a new popup\n\tif not self.session.custom.isMobile:\n\t\t#system.perspective.closePopup(\"\")\n\t\tpass\n\t# Open new popup:\n\tpopups.openDevice(params, event.value[\"device\"], self.session.custom.isMobile)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "custom.devices": { + "binding": { + "config": { + "path": "view.params.props.status.tagPath" + }, + "transforms": [ + { + "code": "\tif self.view.params.deviceType \u003d\u003d \"mcp\":\n\t\treturn tags.getSiblingDevices(value, [\"conveyor\", \"conveyorcurve\", \"gaylord\"])\n\telif self.view.params.deviceType \u003d\u003d \"chutedestination\":\n\t\treturn tags.getSiblingDevices(value + \"/Chute\", filterTagPath\u003dFalse)\n\telif self.view.params.deviceType \u003d\u003d \"spiralchute\":\n\t\treturn tags.getSiblingDevices(value + \"/CH\", filterTagPath\u003dFalse)\n\telif self.view.params.deviceType \u003d\u003d \"divchute\":\n\t\treturn tags.getSiblingDevices(value + \"/Conv\", filterTagPath\u003dFalse)\n\telse:\n\t\treturn tags.getSiblingDevices(value)", + "type": "script" + } + ], + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "expression": "if(toBoolean(now(5000), false),\r\n\t{this.custom.devices},\r\n\t{this.custom.devices}\r\n)" + }, + "overlayOptOut": true, + "transforms": [ + { + "code": "\theaders \u003d [\"device\", \"status\", \"tagPath\", \"deviceType\"]\n\tresult \u003d reports.readJsonTable(headers, value)\n\treturn result[\"data\"]", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Device" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 225 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "status", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Status" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "minWidth": "250px" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 200 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "tagPath", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Tag" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "deviceType", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Type" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 150 + } + ], + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tname \u003d utils.extractName(self.view.params.props.status)\n\tutils.downloadCSV(self, \"[\"+name+\"]Devices\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/81f0baaff79c53ef241c49df404292d68a3bfd1b4bee66d3324d1236602be8a5 b/.resources/81f0baaff79c53ef241c49df404292d68a3bfd1b4bee66d3324d1236602be8a5 new file mode 100644 index 00000000..48d3e05a --- /dev/null +++ b/.resources/81f0baaff79c53ef241c49df404292d68a3bfd1b4bee66d3324d1236602be8a5 @@ -0,0 +1,7 @@ +SELECT DISTINCT induct +FROM package_history +UNION +SELECT DISTINCT lane_id AS induct +FROM pe_history +WHERE lane_id LIKE "UL%" +ORDER BY induct ASC; \ No newline at end of file diff --git a/.resources/826eff61070943343853a7c315822bef2a1f03f94e0f23e9eea6f60008db95aa b/.resources/826eff61070943343853a7c315822bef2a1f03f94e0f23e9eea6f60008db95aa new file mode 100644 index 00000000..b9954af2 --- /dev/null +++ b/.resources/826eff61070943343853a7c315822bef2a1f03f94e0f23e9eea6f60008db95aa @@ -0,0 +1,415 @@ +{ + "custom": {}, + "params": { + "alwaysShowAll": false, + "chuteNum": "", + "isClickable": true, + "mirror": false, + "tagPath": "MCP05/PS01/PS01_28CH" + }, + "propConfig": { + "params.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.chuteNum": { + "paramDirection": "input", + "persistent": true + }, + "params.isClickable": { + "paramDirection": "input", + "persistent": true + }, + "params.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 92, + "width": 94 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openPopup()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 48, + "rotate": { + "anchor": "0 0", + "angle": 90 + }, + "width": 89, + "x": 69, + "y": 1 + }, + "propConfig": { + "props.config.isClickable": { + "binding": { + "config": { + "expression": "!{view.params.isClickable}" + }, + "type": "expr" + } + }, + "props.config.showLabel": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Conv/Parameters.LabelFull" + }, + "overlayOptOut": true, + "type": "tag" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Conv/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(1, -1) translateY(-100%)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "y": 3 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/BLU/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "y": 18 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "BCN1_GRN" + }, + "position": { + "height": 16, + "width": 16, + "y": 33 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/GRN/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "parent.props.style.transform" + }, + "type": "property" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Half_PE" + }, + "position": { + "height": 10, + "rotate": { + "angle": 180 + }, + "width": 62, + "x": 17, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Half_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Jam_PE" + }, + "position": { + "height": 10, + "rotate": { + "angle": 180 + }, + "width": 62, + "x": 17, + "y": 6 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Jam_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "Full_PE" + }, + "position": { + "height": 10, + "rotate": { + "angle": 180 + }, + "width": 62, + "x": 17, + "y": 36 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Full_PE/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "if({view.params.alwaysShowAll},\r\n\tjsonSet({value}, \"showAlways\", {view.params.alwaysShowAll}),\r\n\t{value}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openPopup", + "params": [], + "script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"DivChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"divchute\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t#\"rotate\": self.view.params.rotate,\n\t\t\t\t\t\"mirror\": self.view.params.mirror\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/84aedd34f0b4297bff5187ba27bc8661d271deced8bd8fabacb076fd9f842512 b/.resources/84aedd34f0b4297bff5187ba27bc8661d271deced8bd8fabacb076fd9f842512 new file mode 100644 index 00000000..7794282b --- /dev/null +++ b/.resources/84aedd34f0b4297bff5187ba27bc8661d271deced8bd8fabacb076fd9f842512 @@ -0,0 +1,685 @@ +{ + "custom": { + "title": "" + }, + "params": {}, + "permissions": { + "securityLevels": [], + "type": "AllOf" + }, + "propConfig": { + "custom.title": { + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 400, + "width": 1600 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "eventtime", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "Table" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "calc(100% - 250px)", + "x": 250, + "y": 40 + }, + "props": { + "style": { + "border-left": "2px solid #000", + "min-width": "450px" + } + }, + "type": "ia.container.coord" + }, + { + "meta": { + "name": "LabelHeader" + }, + "position": { + "height": 40, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": " \"Custom Reports\"\r\n+if(len({view.custom.title})\u003e0, \" - \" + {view.custom.title}, \"\")" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t# Grab Data:\n\ttable \u003d self.parent.getChild(\"Table\").getChild(\"Table\")\n\tdata \u003d utils.downloadCSV(table, self.view.custom.title)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Export" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\treportTree \u003d self.getSibling(\"ReportTree\")\n\treportTree.meta.visible \u003d not reportTree.meta.visible" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Mode" + }, + "position": { + "height": 32, + "width": 85, + "x": 4, + "y": 4 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "if({../ReportTree.meta.visible},\r\n\t\"Files\",\r\n\t\"Reports\"\r\n)" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "enabled": false, + "style": { + "classes": "Buttons/Grey" + }, + "text": "Files" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "draggable": false, + "id": "PABE2XXI", + "modal": true, + "overlayDismiss": true, + "resizable": false, + "showCloseIcon": true, + "title": "Upload Custom Report", + "type": "open", + "viewPath": "Popups/CustomReports/ConfigUpload" + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "Button_UploadConfig", + "visible": false + }, + "position": { + "height": 32, + "width": 85, + "x": 93, + "y": 4 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{../ReportTree.meta.visible}\r\n\u0026\u0026 ({session.props.device.type} \u003d \"designer\" || isAuthorized(\r\n\tfalse,\r\n\t\u0027Authenticated/Roles/Administrator\u0027,\r\n\t\u0027Authenticated/Roles/Developer\u0027\r\n))" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Upload" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\t# Get filenames:\n\ttree \u003d self.getSibling(\u0027ReportTree\u0027)\n\tfilenames \u003d [sel.value for sel in tree.props.selectionData]\n\t\n\terr \u003d reports.downloadConfigs(filenames)\n\n\t# Check if err:\n\tif err is not None:\n\t\tsystem.gui.messageBox(err, \"Error\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_DownloadConfig", + "visible": false + }, + "position": { + "height": 32, + "width": 95, + "x": 182, + "y": 4 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{../ReportTree.meta.visible}\r\n\u0026\u0026 ({session.props.device.type} \u003d \"designer\" || isAuthorized(\r\n\tfalse,\r\n\t\u0027Authenticated/Roles/Administrator\u0027,\r\n\t\u0027Authenticated/Roles/Developer\u0027\r\n))" + }, + "type": "expr" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "path": "../ReportTree.props.selection" + }, + "transforms": [ + { + "code": "\treturn len(value)\u003e0", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Download" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "draggable": false, + "id": "5QyUoYBU", + "modal": true, + "overlayDismiss": true, + "resizable": false, + "showCloseIcon": true, + "title": "Delete Confirmation", + "type": "open", + "viewParams": { + "filenames": "{/root/ReportTree.props.selectionData}" + }, + "viewPath": "Popups/CustomReports/DeleteConfirmation" + }, + "scope": "C", + "type": "popup" + } + } + }, + "meta": { + "name": "Button_DeleteConfig", + "visible": false + }, + "position": { + "height": 32, + "width": 85, + "x": 281, + "y": 4 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{../ReportTree.meta.visible}\r\n\u0026\u0026 ({session.props.device.type} \u003d \"designer\" || isAuthorized(\r\n\tfalse,\r\n\t\u0027Authenticated/Roles/Administrator\u0027,\r\n\t\u0027Authenticated/Roles/Developer\u0027\r\n))" + }, + "type": "expr" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "path": "../ReportTree.props.selection" + }, + "transforms": [ + { + "code": "\treturn len(value)\u003e0", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Delete" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "FileTree", + "visible": false + }, + "position": { + "height": "calc(100% - 97px)", + "width": 250, + "y": 65 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "!{../ReportTree.meta.visible}" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "appearance": { + "defaultNodeIcons": { + "collapsed": { + "color": "#5F707E", + "path": "material/folder" + }, + "empty": { + "color": "#869DB1", + "path": "material/stop" + }, + "expanded": { + "color": "#5F707E", + "path": "material/folder_open" + } + }, + "expandIcons": { + "collapsed": { + "color": "#869DB1", + "path": "material/arrow_right" + }, + "empty": { + "color": "#869DB1" + }, + "expanded": { + "color": "#869DB1", + "path": "material/arrow_drop_down" + } + }, + "selectedStyle": { + "backgroundColor": "#BBE0F6", + "color": "#000", + "cursor": "pointer" + }, + "unselectedStyle": { + "classes": "Tree/hoverUnselected", + "cursor": "pointer" + } + } + }, + "type": "ia.display.tree" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.print(self.getSibling(\"FileTree\").props.selection)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_DownloadFiles", + "visible": false + }, + "position": { + "height": 32, + "y": "calc(100% - 32px)" + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../FileTree.meta.visible" + }, + "type": "property" + }, + "persistent": true + }, + "position.width": { + "binding": { + "config": { + "path": "../FileTree.position.width" + }, + "type": "property" + } + }, + "props.enabled": { + "binding": { + "config": { + "path": "../FileTree.props.selection" + }, + "transforms": [ + { + "code": "\treturn len(value)\u003e0", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Download Selected" + }, + "type": "ia.input.button" + }, + { + "events": { + "dom": { + "onDoubleClick": { + "config": { + "script": "\tdata \u003d self.props.selectionData\n\tif len(data) \u003d\u003d 1:\n\t\tconfig \u003d data[0].value\n\t\tresults \u003d reports.readTable(config)\n\t\t# Return data table:\n\t\tif \u0027err\u0027 in results:\n\t\t\tsystem.gui.messageBox(results[\u0027err\u0027], \"Error\")\n\t\telse:\n\t\t\ttable \u003d self.getSibling(\"Table\").getChild(\"Table\")\n\t\t\ttable.props.data \u003d results[\u0027data\u0027]\n\t\t\ttable.props.columns \u003d results[\u0027columns\u0027]\n\t\t\tself.view.custom.title \u003d \".\".join(config.split(\".\")[:-1])" + }, + "scope": "G", + "type": "script" + } + }, + "system": { + "onStartup": { + "config": { + "script": "\tself.refreshList()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ReportTree" + }, + "position": { + "height": "calc(100% - 65px)", + "width": 250, + "y": 65 + }, + "props": { + "appearance": { + "defaultNodeIcons": { + "collapsed": { + "color": "#5F707E", + "path": "material/folder" + }, + "empty": { + "color": "#869DB1", + "path": "material/stop" + }, + "expanded": { + "color": "#5F707E", + "path": "material/folder_open" + } + }, + "expandIcons": { + "collapsed": { + "color": "#869DB1", + "path": "material/arrow_right" + }, + "empty": { + "color": "#869DB1" + }, + "expanded": { + "color": "#869DB1", + "path": "material/arrow_drop_down" + } + }, + "selectedStyle": { + "backgroundColor": "#BBE0F6", + "color": "#000", + "cursor": "pointer", + "user-select": "none" + }, + "unselectedStyle": { + "classes": "Tree/hoverUnselected", + "cursor": "pointer", + "user-select": "none" + } + } + }, + "scripts": { + "customMethods": [ + { + "name": "refreshList", + "params": [], + "script": "\ticons \u003d {\n\t\t\"csv\": {\n\t\t\t\"path\": \"material/table_chart\",\n\t\t\t\"color\": \"#869DB1\"\n\t\t},\n\t\t\"sql\": {\n\t\t\t\"path\": \"material/storage\",\n\t\t\t\"color\": \"#869DB1\"\n\t\t}\n\t}\n\t\n\tconfigs \u003d []\n\troles \u003d self.session.props.auth.user.roles\n\tfor config in reports.getConfigs(roles\u003droles):\n\t\tparts \u003d config.split(\".\")\n\t\tconfigs.append({\n\t\t\t\"label\": \".\".join(parts[:-1]),\n\t\t\t\"expanded\": False,\n\t\t\t\"icon\": icons.get(parts[-1], \"\"),\n\t\t\t\"data\": config,\n\t\t\t\"items\": []\n\t\t})\n\t\n\tself.props.items \u003d configs" + } + ], + "messageHandlers": [ + { + "messageType": "custom-reports-refreshlist", + "pageScope": true, + "script": "\tself.refreshList()", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.tree" + }, + { + "meta": { + "name": "LabelTree" + }, + "position": { + "height": 25, + "width": 250, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "if({../ReportTree.meta.visible},\r\n\t\"On-Demand Reports\",\r\n\t\"Pre-Run Reports\"\r\n)" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "style": { + "backgroundColor": "#808080", + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": 2, + "color": "#FFF", + "fontSize": "16px", + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "On-Demand Reports" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "min-width": "1000px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/84f5c37c55bd967cf6a7d7276347bfc07afd5718098a6064d63fd03b56351499 b/.resources/84f5c37c55bd967cf6a7d7276347bfc07afd5718098a6064d63fd03b56351499 new file mode 100644 index 00000000..ccd23f2e --- /dev/null +++ b/.resources/84f5c37c55bd967cf6a7d7276347bfc07afd5718098a6064d63fd03b56351499 @@ -0,0 +1,28 @@ +WITH INDUCTS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + sorter, + induct, + COUNT(*) AS total, + SUM(carriers=1) AS single_carrier, + SUM(carriers=2) AS double_carrier + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct, DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + single_carrier AS single_carrier_count, + double_carrier AS double_carrier_count, + /* PPH: */ + ROUND(total*60) AS total_pph, + ROUND(single_carrier*60) AS single_carrier_pph, + ROUND(double_carrier*60) AS double_carrier_pph, + /* Percents: */ + ROUND(total/(SUM(total) OVER(PARTITION BY induct, time)), 4) AS 'total/sorter_percent', + ROUND(single_carrier/total, 4) AS single_carrier_percent, + ROUND(double_carrier/total, 4) AS double_carrier_percent +FROM INDUCTS +WHERE induct = :induct; \ No newline at end of file diff --git a/.resources/8818577f7792c51ddd6c876ea96ec60490820c0c6d0db77128d6d98bc3ce240c b/.resources/8818577f7792c51ddd6c876ea96ec60490820c0c6d0db77128d6d98bc3ce240c new file mode 100644 index 00000000..2aeb2280 --- /dev/null +++ b/.resources/8818577f7792c51ddd6c876ea96ec60490820c0c6d0db77128d6d98bc3ce240c @@ -0,0 +1,3 @@ +SELECT DISTINCT scanner +FROM package_history +ORDER BY scanner ASC; \ No newline at end of file diff --git a/.resources/892d5bd99d78c4c7f40ad2ab1fb5e70917195b101f135a777083469becff1372 b/.resources/892d5bd99d78c4c7f40ad2ab1fb5e70917195b101f135a777083469becff1372 new file mode 100644 index 00000000..6381a937 --- /dev/null +++ b/.resources/892d5bd99d78c4c7f40ad2ab1fb5e70917195b101f135a777083469becff1372 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FF8000B3" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/896ce58342ffe4acb15f1357071f315ca507f7f7594b2f105bd49dd413fbc7e1 b/.resources/896ce58342ffe4acb15f1357071f315ca507f7f7594b2f105bd49dd413fbc7e1 new file mode 100644 index 00000000..58a0278f --- /dev/null +++ b/.resources/896ce58342ffe4acb15f1357071f315ca507f7f7594b2f105bd49dd413fbc7e1 @@ -0,0 +1,3 @@ +SELECT DISTINCT induct +FROM package_history +ORDER BY induct ASC; \ No newline at end of file diff --git a/.resources/89c7c14bb7a26c455c47487ed30c357a43744e508c00c68c27372c1d1cf460d8 b/.resources/89c7c14bb7a26c455c47487ed30c357a43744e508c00c68c27372c1d1cf460d8 new file mode 100644 index 00000000..033fa6ed --- /dev/null +++ b/.resources/89c7c14bb7a26c455c47487ed30c357a43744e508c00c68c27372c1d1cf460d8 @@ -0,0 +1,531 @@ +{ + "pages": { + "/": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "hide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "title": "", + "viewPath": "Windows/GraphicsWrapper" + }, + "/alarms/active": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "title": "", + "viewPath": "Windows/AlarmWrapper" + }, + "/alarms/history": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "viewPath": "Windows/AlarmWrapper" + }, + "/alarms/hitlist": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "title": "", + "viewPath": "Windows/AlarmWrapper" + }, + "/autStand": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "show", + "iconUrl": "", + "id": "autStand", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 165, + "viewParams": {}, + "viewPath": "autStand/Docked_Views/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "auto", + "handle": "hide", + "iconUrl": "", + "id": "header-autStand", + "modal": false, + "resizable": false, + "show": "visible", + "size": 50, + "viewParams": {}, + "viewPath": "autStand/Docked_Views/Header" + } + ] + }, + "title": "", + "viewPath": "autStand/Overview/BNA8" + }, + "/cameras": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "title": "", + "viewPath": "Windows/JamCameras" + }, + "/commission": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "title": "", + "viewPath": "Windows/Commissioning" + }, + "/config": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "viewPath": "Windows/ConfigWrapper" + }, + "/custom-reports": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "viewPath": "Windows/CustomReports" + }, + "/help": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "viewPath": "Windows/Help" + }, + "/mcm01": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "show", + "iconUrl": "", + "id": "autStand", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 165, + "viewParams": {}, + "viewPath": "autStand/Docked_Views/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "hide", + "iconUrl": "", + "id": "header-autStand", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "autStand/Docked_Views/Header" + } + ] + }, + "viewPath": "autStand/Detailed_Views/MCM01-FLUID INBOUND" + }, + "/mcm02": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "show", + "iconUrl": "", + "id": "", + "modal": false, + "resizable": false, + "show": "visible", + "size": 165, + "viewParams": {}, + "viewPath": "autStand/Docked_Views/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "hide", + "iconUrl": "", + "id": "header-autStand", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "autStand/Docked_Views/Header" + } + ] + }, + "title": "", + "viewPath": "autStand/Detailed_Views/MCM02-NC SORTER" + }, + "/statistics": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "viewPath": "Windows/Statistics" + }, + "/status": { + "docks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + }, + "title": "", + "viewPath": "Windows/StatusWrapper" + } + }, + "sharedDocks": {} +} \ No newline at end of file diff --git a/.resources/8af3a0556ef5e21e769f8db0b48ed503fabf3fb3597841ac8397a64d6a61fe27 b/.resources/8af3a0556ef5e21e769f8db0b48ed503fabf3fb3597841ac8397a64d6a61fe27 new file mode 100644 index 00000000..b48a4d63 --- /dev/null +++ b/.resources/8af3a0556ef5e21e769f8db0b48ed503fabf3fb3597841ac8397a64d6a61fe27 @@ -0,0 +1,621 @@ +{ + "custom": {}, + "params": { + "classDropdownValue": [ + "Error" + ], + "titleExtra": "9 rows" + }, + "propConfig": { + "params.classDropdownValue": { + "paramDirection": "input", + "persistent": true + }, + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tscreen \u003d alarms.resolveScreenBySource(event.value.source)\n\tif screen \u003c\u003e \"\":\n\t\twindow \u003d \"Windows/GraphicsWrapper\"\n\t\tparams \u003d {\"view\": screen}\n\t\tsystem.perspective.navigate(\"/\")\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/ActiveAlarms" + }, + "transforms": [ + { + "expression": "// This expression is only to subscribe to the dropdown value, which is needed to rerun on change.\r\nif({view.params.classDropdownValue}!\u003dNone,\r\n\t{value},\r\n\t{value}\r\n)", + "type": "expression" + }, + { + "code": "\trows \u003d []\n\tfor r in range(value.getRowCount()):\n\t\tif value.getValueAt(r, \"Class\") not in self.view.params.classDropdownValue:\n\t\t\trows.append(r)\n\tfilteredValue \u003d system.dataset.deleteRows(value, rows)\n\tcou \u003d utils.getRowCount(filteredValue)\n\tself.view.params.titleExtra \u003d \"{:n} rows\".format(cou)\n\t# Return data\n\treturn filteredValue", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#FF0000", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "id", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Number (ID)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "eventtime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Event Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "duration", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "class", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Class" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Location" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "description", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Description" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "plctag", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Tag" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "source", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": "" + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Active Alarms\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/8afe0f9320b1a4adbd6c1440a3eff867ab21cbc8bd240c56dbe5582dbe757665 b/.resources/8afe0f9320b1a4adbd6c1440a3eff867ab21cbc8bd240c56dbe5582dbe757665 new file mode 100644 index 00000000..ce9ca16b --- /dev/null +++ b/.resources/8afe0f9320b1a4adbd6c1440a3eff867ab21cbc8bd240c56dbe5582dbe757665 @@ -0,0 +1,25 @@ +WITH LANES AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + sorter, + destination_act AS lane, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, s04_act_dest + ORDER BY sorter, s04_act_dest +) +SELECT + start_timestamp, + end_timestamp, + sorter, + lane, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/8be3eb3237c4d98fda64b6e1f9d03137778f3eef8195498bff95525a7a3579ec b/.resources/8be3eb3237c4d98fda64b6e1f9d03137778f3eef8195498bff95525a7a3579ec new file mode 100644 index 00000000..c56181e5 --- /dev/null +++ b/.resources/8be3eb3237c4d98fda64b6e1f9d03137778f3eef8195498bff95525a7a3579ec @@ -0,0 +1,83 @@ +WITH ALARM_TIMELAPSES AS ( + /* Group related active & clear events into a single row */ + SELECT + e.id, /* Unique to each row in alarm_events, used to look up metadata in alarm_event_data */ + source, /* Unique alarm path in Ignition */ + eventtime AS starttime, + displaypath, /* Get description */ + /* Get the last time this event was active within the given time range*/ + CAST(LEAST(COALESCE(( + /* Search for the clear event (if exists) for the outer query's active event */ + SELECT MIN(eventtime) + FROM alarm_events e2 + WHERE e2.eventid = e.eventid /* eventid is unique per alarm instance */ + AND e2.eventtime >= e.eventtime + AND e2.eventtype = 1 /* Look only for the clear event */ + ORDER BY eventtime ASC + ), NOW()), :endDate) AS DATETIME) AS endtime, /* Clamp to end of time range if clear event is after end time */ + priority + FROM alarm_events e + /* The range for both start/end allows for index optimizations */ + WHERE e.eventtime BETWEEN :startDate AND :endDate + /* Filter for disabled messages, full messages, and jam messages */ + AND e.displaypath IN ("Available", "Full", "Full Warn", "25% Full Warn", "50% Full Warn", "75% Full Warn", "HMI Chute Disabled", "Jammed", "EStop or Faulted") + /* Filter out system events and active events only */ + AND e.eventflags & 1 != 1 AND e.eventtype = 0 +), HITLIST AS ( + /* Group the same type of alarms together to get hit counts and total durations */ + SELECT + MAX(id) AS id, /* Use latest id to get the latest metadata */ + MIN(starttime) AS firsttime, /* Get the earliest it's been active in the given time range */ + MAX(endtime) AS lasttime, /* Get the latest it's been active in the given time range */ + MIN(displaypath) AS displaypath, /* Get one of the displaypaths associated with source */ + MAX(priority) AS priority, + COUNT(*) AS count, + SUM(TIME_TO_SEC(TIMEDIFF(endtime, starttime))) AS duration + FROM ALARM_TIMELAPSES + GROUP BY source + ORDER BY count DESC + LIMIT 2000 +), HITLIST_DATA AS ( +/* Finally, merge metadata into hitlist */ + SELECT e.id, + e.firsttime, e.lasttime, + SUBSTRING_INDEX(SUBSTRING_INDEX(dtag.strvalue, ']', 1), '[', -1) AS sorter, + SUBSTRING_INDEX(ddevice.strvalue, '.', 1) AS lane, + displaypath AS description, + /* Retrieve instance count and total duration */ + e.count, + e.duration + FROM HITLIST e + /* Lookup PLCTag */ + JOIN alarm_event_data dtag ON e.id = dtag.id AND dtag.propname = "PLCTag" + /* Lookup Device */ + JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" +) +SELECT + DATE_FORMAT(MIN(firsttime), '%Y-%m-%d %T') AS start_timestamp, + DATE_FORMAT(MAX(lasttime), '%Y-%m-%d %T') AS end_timestamp, + lane, + /* Counts */ + SUM(IF(description="Available", count, 0)) AS available_count, + SUM(IF(description="Full", count, 0)) AS full_count, + SUM(IF(description IN ("Full Warn", "50% Full Warn"), count, 0)) AS full_warn_count, + SUM(IF(description="25% Full Warn", count, 0)) AS full_warn_25_count, + SUM(IF(description IN ("Full Warn", "50% Full Warn"), count, 0)) AS full_warn_50_count, + SUM(IF(description="75% Full Warn", count, 0)) AS full_warn_75_count, + SUM(IF(description="HMI Chute Disabled", count, 0)) AS disabled_count, + SUM(IF(description="Jammed", count, 0)) AS jam_count, + SUM(IF(description="EStop or Faulted", count, 0)) AS faulted_count, + /* Durations, translated to strings */ + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="Available", duration, 0)))) AS CHAR) AS available_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="Full", duration, 0)))) AS CHAR) AS full_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description IN ("Full Warn", "50% Full Warn"), duration, 0)))) AS CHAR) AS full_warn_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="25% Full Warn", duration, 0)))) AS CHAR) AS full_warn_25_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description IN ("Full Warn", "50% Full Warn"), duration, 0)))) AS CHAR) AS full_warn_50_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="75% Full Warn", duration, 0)))) AS CHAR) AS full_warn_75_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="HMI Chute Disabled", duration, 0)))) AS CHAR) AS disabled_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="Jammed", duration, 0)))) AS CHAR) AS jam_duration, + CAST(SEC_TO_TIME(FLOOR(SUM(IF(description="EStop or Faulted", duration, 0)))) AS CHAR) AS faulted_duration +FROM HITLIST_DATA +WHERE {where} +GROUP BY lane +ORDER BY lane; \ No newline at end of file diff --git a/.resources/8d545612f2b70d26dccfb947e6939262bac1052d3a7de4a79fe5d7d280339641 b/.resources/8d545612f2b70d26dccfb947e6939262bac1052d3a7de4a79fe5d7d280339641 new file mode 100644 index 00000000..92691b5a --- /dev/null +++ b/.resources/8d545612f2b70d26dccfb947e6939262bac1052d3a7de4a79fe5d7d280339641 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#007DFA", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/8d802b0b50228ed2565b1bdb92696ac720824686a02a09d851d26bb4f6eb8f29 b/.resources/8d802b0b50228ed2565b1bdb92696ac720824686a02a09d851d26bb4f6eb8f29 new file mode 100644 index 00000000..ce749f96 --- /dev/null +++ b/.resources/8d802b0b50228ed2565b1bdb92696ac720824686a02a09d851d26bb4f6eb8f29 @@ -0,0 +1,290 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "STN_ENABLE" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": { + "base": "#FFF", + "button": "#0F0" + }, + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PushButton" + }, + "position": { + "height": 48, + "width": 48, + "x": 75.5, + "y": 11 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/8df077407e5333e1bd70e10b0e561d01b43246d513cfaa5843443a9c22742da7 b/.resources/8df077407e5333e1bd70e10b0e561d01b43246d513cfaa5843443a9c22742da7 new file mode 100644 index 00000000..8dc85a04 --- /dev/null +++ b/.resources/8df077407e5333e1bd70e10b0e561d01b43246d513cfaa5843443a9c22742da7 @@ -0,0 +1,8 @@ +SELECT DISTINCT destination_act AS lane +FROM package_history +WHERE destination_act IS NOT NULL +UNION +SELECT DISTINCT lane_id AS lane +FROM pe_history +WHERE lane_id LIKE "CH%" OR lane_id LIKE "RS%1CH" +ORDER BY lane ASC; \ No newline at end of file diff --git a/.resources/8e3469fd4c640edd3064012a7b2b8c3281b08821c5391751a8a9b0fc9e012a32 b/.resources/8e3469fd4c640edd3064012a7b2b8c3281b08821c5391751a8a9b0fc9e012a32 new file mode 100644 index 00000000..1192514d --- /dev/null +++ b/.resources/8e3469fd4c640edd3064012a7b2b8c3281b08821c5391751a8a9b0fc9e012a32 @@ -0,0 +1,24 @@ +WITH LANES AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + lane_id AS induct, + SUM(count) AS total + FROM pe_history FORCE INDEX (timestamp) + WHERE timestamp BETWEEN :startDate AND :endDate + AND (lane_id LIKE "UL%" OR lane_id LIKE "PRS%" OR lane_id LIKE "RE%") + GROUP BY lane_id + ORDER BY lane_id +) +SELECT + start_timestamp, + end_timestamp, + induct, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM LANES; \ No newline at end of file diff --git a/.resources/8e34859d5b5ac4d11e2e056d78d79dc11ecc603c9264784419c275669036ae95 b/.resources/8e34859d5b5ac4d11e2e056d78d79dc11ecc603c9264784419c275669036ae95 new file mode 100644 index 00000000..a0e5019e --- /dev/null +++ b/.resources/8e34859d5b5ac4d11e2e056d78d79dc11ecc603c9264784419c275669036ae95 @@ -0,0 +1,702 @@ +{ + "custom": { + "class": 2 + }, + "params": { + "classDropdownValue": [ + "Error" + ], + "titleExtra": "0 rows" + }, + "propConfig": { + "custom.class": { + "binding": { + "config": { + "path": "view.params.classDropdownValue" + }, + "transforms": [ + { + "code": "\tvalue \u003d list(value)\n\tif \"Message\" in value:\n\t\treturn 0\n\telif \"Warning\" in value:\n\t\treturn 1\n\telif \"Error\" in value:\n\t\treturn 2\n\telse:\n\t\treturn 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.classDropdownValue": { + "paramDirection": "input", + "persistent": true + }, + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 650, + "width": 1600 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tscreen \u003d alarms.resolveScreenBySource(event.value.source)\n\tif screen \u003c\u003e \"\":\n\t\twindow \u003d \"Windows/GraphicsWrapper\"\n\t\tparams \u003d {\"view\": screen}\n\t\tsystem.perspective.navigate(\"/\")\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "class": "{view.custom.class}", + "endDate": "{session.custom.timewidget.endDate}", + "priority": "0", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Alarms/HitList" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "firsttime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "First Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "lasttime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Last Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 175 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "count", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Count" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "duration", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "class", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Class" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 125 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "device", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Location" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "description", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Description" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "plctag", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Tag" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "source", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": "" + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Alarm Hit List\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/8e9985a867c191f599d77616c2a75c416f5464592df6ec57e70f6cc107fd308f b/.resources/8e9985a867c191f599d77616c2a75c416f5464592df6ec57e70f6cc107fd308f new file mode 100644 index 00000000..a1d0bed5 --- /dev/null +++ b/.resources/8e9985a867c191f599d77616c2a75c416f5464592df6ec57e70f6cc107fd308f @@ -0,0 +1,4 @@ +SELECT DISTINCT lane_id +FROM pe_history +WHERE lane_id LIKE "RS%4CH" +ORDER BY lane_id; \ No newline at end of file diff --git a/.resources/8f988db83bca2ea2ca9baff5593986509c90e51e8b26c12db018229bdf3f653e b/.resources/8f988db83bca2ea2ca9baff5593986509c90e51e8b26c12db018229bdf3f653e new file mode 100644 index 00000000..0e2d4d71 --- /dev/null +++ b/.resources/8f988db83bca2ea2ca9baff5593986509c90e51e8b26c12db018229bdf3f653e @@ -0,0 +1,3306 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "width": 636 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "GL01_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 20, + "x": 247, + "y": 410 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "GL01_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 170, + "x": 228, + "y": 410 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "GL02_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 20, + "x": 247, + "y": 334 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "GL02_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 170, + "x": 228, + "y": 334 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "GL03_02CH" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 20, + "x": 247, + "y": 258 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "showLabel": false, + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "GL03_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 170, + "x": 228, + "y": 258 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 271, + "x": 39, + "y": 456 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 130, + "x": 39, + "y": 186 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0" + }, + "width": 180, + "x": 78, + "y": 17 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0" + }, + "width": 293, + "x": 257, + "y": 17 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0" + }, + "width": 87, + "x": 549, + "y": 17 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_06/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS01_03CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 40, + "x": 39, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_03CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "GL01_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 20, + "x": 266, + "y": 390 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "tipper" + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "GL02_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 20, + "x": 266, + "y": 314 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "tipper" + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "GL03_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 20, + "x": 266, + "y": 238 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "tipper" + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "MCP01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 50, + "x": 3, + "y": 218 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/MCP01/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "GL01_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 79, + "y": 411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "GL02_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 79, + "y": 335 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "GL03_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 79, + "y": 259 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 22, + "y": 281 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 60, + "y": 118 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_04_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 174, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_04/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_05_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 484, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS01_06_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 573, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_06/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "GL01_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 206, + "y": 411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "GL01_03_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 206, + "y": 369 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "GL02_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 206, + "y": 293 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "GL03_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 206, + "y": 217 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 18, + "y": 358 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_01_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 18, + "y": 419 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS01_05_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 406, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "GL01_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 166, + "y": 411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL01_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 185, + "y": 411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL01_03_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 166, + "y": 369 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL01_03_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 185, + "y": 369 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL02_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 166, + "y": 293 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL02_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 185, + "y": 293 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL03_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 166, + "y": 217 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL03_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 185, + "y": 217 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 18, + "y": 379 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 18, + "y": 398 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_02_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 18, + "y": 87 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_02/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_05_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 444, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS01_05_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 463, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "GL01_03_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 107, + "y": 374 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "GL01_03_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 107, + "y": 411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "GL02_03_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 107, + "y": 298 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "GL03_03_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 107, + "y": 222 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_01_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 60, + "y": 443 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_01_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 60, + "y": 387 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_02_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 23, + "y": 149 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_02/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_05_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 436, + "y": 1 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS01_05_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 405, + "y": 1 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "GL01_03_BCN1_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/BCN1/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL01_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 426 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL01_03_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 373 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL01_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 358 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL02_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 297 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL02_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 282 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL03_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 221 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL03_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 149, + "y": 206 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_01_BCN1_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 60, + "y": 198 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/BCN1/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_01_BCN2_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 60, + "y": 215 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/BCN2/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_01_BCN3_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1, + "y": 394 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/BCN3/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_01_BCN3_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1, + "y": 379 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/BCN3/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 22, + "y": 70 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_05_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 427, + "y": 53 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_05_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 427, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS01_06_BCN1_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 618, + "y": 38 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_06/BCN1/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "GL01_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 96, + "y": 420 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GL01_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 138, + "y": 420 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL01/GL01_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GL02_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 96, + "y": 344 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GL02_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 138, + "y": 344 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL02/GL02_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GL03_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 96, + "y": 268 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "GL03_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 138, + "y": 268 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/GL03/GL03_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 69, + "y": 197 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_01_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 69, + "y": 282 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_01_PE3" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 69, + "y": 356 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/PE3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_01_PE4" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 69, + "y": 454 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_01/PE4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 29, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP01/PS01/PS01_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 256, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_04_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 90, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_04/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_05_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 548, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_05_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 319, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_05/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS01_06_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 617, + "y": 7 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PS01/PS01_06/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UNL13_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 505, + "y": 799 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UNL13_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 484, + "y": 751 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/EPCa/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UNL13_01_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 751 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/EPCb/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UNL13_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 484, + "y": 730 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/SSa/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 484, + "y": 711 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/SSa/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_01_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 711 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/SSb/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_01_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 730 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/SSb/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 467, + "y": 733 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/BCNa/Red/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_01_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 547, + "y": 734 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/BCNb/Red/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 526, + "y": 643 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UNL13_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 535, + "y": 710 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/PEa/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UNL13_01_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 535, + "y": 501 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/PEb/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UNL13_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 88, + "x": 505, + "y": 490 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UNL13_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 526, + "y": 405 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UNL13_02_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 462 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/EPB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UNL13_02_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 441 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/SS/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_02_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 422 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/SS/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_02_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 547, + "y": 430 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/BCN/Red/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 547, + "y": 445 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_02/BCN/Amber/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 367, + "x": 505, + "y": 403 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UNL13_03_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 106 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP05/UNL13/UNL13_03/SSc/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 547, + "y": 96 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/BCNc/Red/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_03_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 87 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP05/UNL13/UNL13_03/SSc/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 535, + "y": 401 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/PEa/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UNL13_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 526, + "y": 49 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UNL13_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 535, + "y": 48 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/PEb/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UNL13_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 488, + "y": 353 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/BCNa/Amber/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_03_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 547, + "y": 110 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/BCNc/Amber/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 467, + "y": 110 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/BCNb/Red/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UNL13_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 484, + "y": 106 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP05/UNL13/UNL13_03/SSb/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 484, + "y": 87 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP05/UNL13/UNL13_03/SSb/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UNL13_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 484, + "y": 66 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/EPCa/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UNL13_03_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 526, + "y": 66 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/EPCb/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "MCP05" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0 ", + "angle": "270deg" + }, + "width": 50, + "x": 526, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/MCP05/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "UNL13_01_SEIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 489, + "y": 533 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/SEIO/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "isClickable": "SEIO" + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UNL13_01_EIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 473, + "y": 533 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_01/EIO/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UNL13_03_EIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 489, + "y": 352 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/EIOa/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UNL13_03_EIO2" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 473, + "y": 212 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/EIOb/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UNL13_03_SEIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 489, + "y": 212 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP05/UNL13/UNL13_03/SEIO/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "isClickable": "SEIO" + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UNL13_02_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 547, + "y": 462 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP05/UNL13/UNL13_02/EGS/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/9066a25f4a84aa578bc81632185caa95c8e2acf670e1e0b26c0f47d0250c182f b/.resources/9066a25f4a84aa578bc81632185caa95c8e2acf670e1e0b26c0f47d0250c182f new file mode 100644 index 00000000..28f843d8 --- /dev/null +++ b/.resources/9066a25f4a84aa578bc81632185caa95c8e2acf670e1e0b26c0f47d0250c182f @@ -0,0 +1,38 @@ +WITH INDUCTS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + sorter, + induct, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct, DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +), SORTERS AS ( + SELECT + start_timestamp, + sorter, + SUM(total) AS total + FROM INDUCTS + GROUP BY sorter, start_timestamp +) +SELECT + I.start_timestamp, + hour, + /* Counts: */ + I.total AS total_count, + /* PPH: */ + I.total AS total_pph, + /* Percents: */ + ROUND(I.total/S.total, 4) AS 'total/sorter_percent' +FROM INDUCTS I, SORTERS S +WHERE induct=:induct AND I.sorter=S.sorter AND I.start_timestamp=S.start_timestamp +ORDER BY start_timestamp ASC; \ No newline at end of file diff --git a/.resources/90f85261c8ded8ba8dd6c9827ca0438740f38536663cd8e9a84403688673b308 b/.resources/90f85261c8ded8ba8dd6c9827ca0438740f38536663cd8e9a84403688673b308 new file mode 100644 index 00000000..3e50351d --- /dev/null +++ b/.resources/90f85261c8ded8ba8dd6c9827ca0438740f38536663cd8e9a84403688673b308 @@ -0,0 +1,68 @@ +def getStatusColor(): + # Check PLC statuses: + devices = system.device.listDevices() + for device in range(devices.getRowCount()): + if devices.getValueAt(device, "Enabled") and devices.getValueAt(device, "State") <> "Connected": + return "#F00" + # Check Database statuses: + databases = system.db.getConnections() + for database in range(databases.getRowCount()): + if databases.getValueAt(database, "Status") <> "Valid": + return "#00F" + # Everything is okay: + return "#0F0" + + +def getStatusTooltip(): + tooltip = ["Connection Status", ""] + # Check PLC statuses: + devices = system.device.listDevices() + devices = system.dataset.sort(devices, "Name") + for device in range(devices.getRowCount()): + name = devices.getValueAt(device, "Name") + status = devices.getValueAt(device, "State") + tooltip.append(name+": "+status) + # Check Database statuses: + databases = system.db.getConnections() + databases = system.dataset.sort(databases, "Name") + for database in range(databases.getRowCount()): + name = databases.getValueAt(database, "Name") + status = databases.getValueAt(database, "Status") + if status == "Valid": + status = "Connected" + tooltip.append(name+": "+status) + # Return tooltip: + return "
".join(tooltip) + +def getFireAlarm(): + # Check PLC: + paths = [] + devices = system.device.listDevices() + for device in range(devices.getRowCount()): + if devices.getValueAt(device, "Enabled") and devices.getValueAt(device, "State") == "Connected": + path = devices.getValueAt(device, "Name") + paths.append(path + "/" + path + "/Alarms/FireAlarm") + # Read values: + return max(v.value for v in system.tag.readBlocking(paths) if v.quality.isGood()) + +def getPowerSaveMin(): + # Check PLC: + paths = [] + devices = system.device.listDevices() + for device in range(devices.getRowCount()): + if devices.getValueAt(device, "Enabled") and devices.getValueAt(device, "State") == "Connected": + path = devices.getValueAt(device, "Name") + paths.append(path + "/" + path + "/PowerSaveMin") + # Read values: + return min(v.value for v in system.tag.readBlocking(paths) if v.quality.isGood()) + +def setPowerSaveMin(value): + # Check PLC: + paths = [] + devices = system.device.listDevices() + for device in range(devices.getRowCount()): + if devices.getValueAt(device, "Enabled") and devices.getValueAt(device, "State") == "Connected": + path = devices.getValueAt(device, "Name") + paths.append(path + "/" + path + "/PowerSaveMin") + # Write values: + system.tag.writeBlocking(paths, [value]*len(paths)) \ No newline at end of file diff --git a/.resources/93fbbd2d3b66102297e3d2c77a1bf8581befa322bbe4fbc2f0e10e8be31a422e b/.resources/93fbbd2d3b66102297e3d2c77a1bf8581befa322bbe4fbc2f0e10e8be31a422e new file mode 100644 index 00000000..48d6ed05 --- /dev/null +++ b/.resources/93fbbd2d3b66102297e3d2c77a1bf8581befa322bbe4fbc2f0e10e8be31a422e @@ -0,0 +1,98 @@ +WITH DISABLE_EVENTS AS ( + /* Group related active & clear events into a single row */ + SELECT + id, + NOT eventtype AS eventtype, + IF(eventtype = 1, COALESCE(LEAD(eventid, 1) OVER w, source), eventid) AS eventid, + source, /* Unique alarm path in Ignition */ + eventtime, + displaypath /* Get description */ + FROM alarm_events + /* The range for both start/end allows for index optimizations */ + WHERE eventtime BETWEEN (:startDate - INTERVAL 4 DAY) AND (:endDate + INTERVAL 4 DAY) + /* Filter for disabled messages, full messages, and jam messages */ + AND displaypath = "HMI Chute Disabled" + AND (source LIKE "%MCP05/%" or source LIKE "%MCP06/%") + /* Filter out system events and filter for active/clear events only */ + AND eventflags & 1 != 1 AND eventtype IN (0, 1) + WINDOW w AS (PARTITION BY source ORDER BY eventtime ASC) +), ENABLES AS ( + /* Group related active & clear events into a single row */ + SELECT + eventid, + SUBSTRING_INDEX(ANY_VALUE(ddevice.strvalue), '.', 1) AS lane, + GREATEST(COALESCE(MIN(IF(eventtype=0, eventtime, NULL)), (:startDate - INTERVAL 4 DAY)), :startDate) AS starttime, + LEAST(COALESCE(MAX(IF(eventtype=1, eventtime, NULL)), LEAST(NOW(), (:endDate + INTERVAL 4 DAY))), :endDate) AS endtime, + ANY_VALUE(displaypath) AS displaypath /* Get description */ + FROM DISABLE_EVENTS e + JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" + GROUP BY eventid + HAVING endtime >= :startDate AND starttime <= :endDate + ORDER BY starttime ASC +), STATES AS ( + /* Group related active & clear events into a single row */ + SELECT + eventid, + SUBSTRING_INDEX(ANY_VALUE(ddevice.strvalue), '.', 1) AS lane, + GREATEST(COALESCE(MIN(IF(eventtype=0, eventtime, NULL)), (:startDate - INTERVAL 4 DAY)), :startDate) AS starttime, + LEAST(COALESCE(MAX(IF(eventtype=1, eventtime, NULL)), LEAST(NOW(), (:endDate + INTERVAL 4 DAY))), :endDate) AS endtime, + ANY_VALUE(displaypath) AS displaypath /* Get description */ + FROM alarm_events e + JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" + /* The range for both start/end allows for index optimizations */ + WHERE eventtime BETWEEN (:startDate - INTERVAL 4 DAY) AND (:endDate + INTERVAL 4 DAY) + /* Filter for disabled messages, full messages, and jam messages */ + AND displaypath IN ("Full", "Full Warn", "25% Full Warn", "50% Full Warn", "75% Full Warn", "Jammed", "EStop or Faulted", "Extend PX Faulted", "Retract PX Faulted") + AND (source LIKE "%MCP05/%" or source LIKE "%MCP06/%") + /* Filter out system events and clear events only */ + AND eventflags & 1 != 1 AND eventtype IN (0, 1) + GROUP BY eventid + HAVING endtime >= :startDate AND starttime <= :endDate +), COMBINED AS ( + SELECT + /* Meta */ + MIN(LEAST(e.starttime, COALESCE(s.starttime, e.starttime))) AS firsttime, /* Get the earliest it's been active in the given time range */ + MAX(GREATEST(e.endtime, COALESCE(s.endtime, e.endtime))) AS lasttime, /* Get the latest it's been active in the given time range */ + MAX(e.lane) AS lane, /* Use latest id to get the latest metadata */ + /* Durations */ + TIME_TO_SEC(TIMEDIFF(e.endtime, e.starttime)) AS enabled_duration, + SUM(IF(s.displaypath="25% Full Warn", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full25_duration, + SUM(IF(s.displaypath IN ("Full Warn", "50% Full Warn"), TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full50_duration, + SUM(IF(s.displaypath="75% Full Warn", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full75_duration, + SUM(IF(s.displaypath="Full", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full100_duration, + SUM(IF(s.displaypath="Jammed", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS jammed_duration, + SUM(IF(s.displaypath IN ("EStop or Faulted", "Extend PX Faulted", "Retract PX Faulted"), TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS faulted_duration#, + /* Max Durations */ + #TIME_TO_SEC(TIMEDIFF(e.endtime, e.starttime)) AS enabled_duration_max, + #MAX(IF(s.displaypath="25% Full Warn", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full25_duration_max, + #MAX(IF(s.displaypath IN ("Full Warn", "50% Full Warn"), TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full50_duration_max, + #MAX(IF(s.displaypath="75% Full Warn", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full75_duration_max, + #MAX(IF(s.displaypath="Full", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS full100_duration_max, + #MAX(IF(s.displaypath="Jammed", TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS jammed_duration_max, + #MAX(IF(s.displaypath IN ("EStop or Faulted", "Extend PX Faulted", "Retract PX Faulted"), TIME_TO_SEC(TIMEDIFF(LEAST(e.endtime, s.endtime), GREATEST(e.starttime, s.starttime))), 0)) AS faulted_duration_max + FROM ENABLES e + LEFT JOIN STATES s ON e.lane = s.lane AND e.starttime <= s.endtime AND e.endtime >= s.starttime + GROUP BY e.eventid +) +SELECT + DATE_FORMAT(MIN(firsttime), '%Y-%m-%d %T') AS firsttime, + DATE_FORMAT(MAX(lasttime), '%Y-%m-%d %T') AS lasttime, + lane, + CAST(SEC_TO_TIME(SUM(enabled_duration)) AS CHAR) AS enabled_duration, + CAST(SEC_TO_TIME(SUM(enabled_duration - full100_duration - jammed_duration - faulted_duration)) AS CHAR) AS available_duration, + CAST(SEC_TO_TIME(SUM(enabled_duration - full25_duration - full50_duration - full75_duration - full100_duration - jammed_duration - faulted_duration)) AS CHAR) AS empty_duration, + CAST(SEC_TO_TIME(SUM(full25_duration)) AS CHAR) AS full25_duration, + CAST(SEC_TO_TIME(SUM(full50_duration)) AS CHAR) AS full50_duration, + CAST(SEC_TO_TIME(SUM(full75_duration)) AS CHAR) AS full75_duration, + CAST(SEC_TO_TIME(SUM(full100_duration)) AS CHAR) AS full100_duration, + CAST(SEC_TO_TIME(SUM(jammed_duration)) AS CHAR) AS jammed_duration, + CAST(SEC_TO_TIME(SUM(faulted_duration)) AS CHAR) AS faulted_duration, + /* Inbound OEE (Loop's Efficiency) wants to have 25%/50%/75%/100% full all the time ==> 100% */ + /* (Full25 + Full50 + Full75 + Full100) / (Enabled - Jammed - Faulted) */ + SUM(full25_duration + full50_duration + full75_duration + full100_duration) / SUM(enabled_duration - jammed_duration - faulted_duration) AS inbound_oee, + /* Induct OEE (Operator's Efficiency) wants to have Empty or 25%/50%/75% full all the time ==> 100%, and is penalized for the time with active jams */ + /* (Empty + Full25 + Full50 + Full75) / (Enabled - Faulted) */ + SUM((enabled_duration - full100_duration - jammed_duration - faulted_duration)) / SUM(enabled_duration - faulted_duration) AS induct_oee +FROM COMBINED c +GROUP BY lane +ORDER BY lane; \ No newline at end of file diff --git a/.resources/94099e62b52428a373d483f4bd0cccf528e64f8d09a15442fd663efdfee0c333 b/.resources/94099e62b52428a373d483f4bd0cccf528e64f8d09a15442fd663efdfee0c333 new file mode 100644 index 00000000..a4b810c5 --- /dev/null +++ b/.resources/94099e62b52428a373d483f4bd0cccf528e64f8d09a15442fd663efdfee0c333 @@ -0,0 +1,61 @@ +import copy + +DEFAULT_BUTTON = { + "position": "absolute", + "top": "19px", + "left": "15px", + "bottom": "auto", + "right": "auto", + "zIndex": "auto", + "width": "auto", + "height": "auto", + "viewPath": "Templates/Buttons/NavButtonBanner", + "viewParams": { + #"label": "System", + "showIcons": True, + #"tagPath": "[default]SystemStatus", + #"view": "Windows/Graphics/Overview" + }, + "style": { + "classes": "" + } +} + +def genButtonsFromDataset(areas): + buttons = [] + + for i in range(areas.getRowCount()): + # Get values from row: + label = areas.getValueAt(i, "Label") + tagPath = areas.getValueAt(i, "TagPath") + view = areas.getValueAt(i, "View") + # Clone and customize button: + button = copy.deepcopy(DEFAULT_BUTTON) + button["left"] = str(15+140*i)+"px" + if label <> "": + button["viewParams"]["label"] = label + if tagPath <> "": + button["viewParams"]["tagPath"] = tagPath + else: + button["viewParams"]["showIcons"] = False + if view <> "": + button["viewParams"]["view"] = view + # Add button to list: + buttons.append(button) + + return buttons + +def genButtonsFromViews(areas=None): + if areas == None: + projectName = system.project.getProjectName() + path = os.path.join(os.getcwd(), "data", "projects", projectName, "com.inductiveautomation.perspective", "views", "Windows", "Graphics") + areas = [name for name in os.listdir(".") if os.path.isdir(name) and name.lower() not in ["overview", "templates"]] + + buttons = [] + + for i, area in enumerate(areas): + button = copy.deepcopy(DEFAULT_BUTTON) + button["left"] = str(15+145*i)+"px" + button["viewParams"]["tagPath"] = area + + return buttons \ No newline at end of file diff --git a/.resources/941ecaaabce15435aeb6d90b1360b0851f35a02144277c4515b6a8e4aa586011 b/.resources/941ecaaabce15435aeb6d90b1360b0851f35a02144277c4515b6a8e4aa586011 new file mode 100644 index 00000000..571f7e67 --- /dev/null +++ b/.resources/941ecaaabce15435aeb6d90b1360b0851f35a02144277c4515b6a8e4aa586011 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#F00077", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/96b898945159ce7fbf3ed6dd3cb55421597c58866e0202a76703a2c97df2ef70 b/.resources/96b898945159ce7fbf3ed6dd3cb55421597c58866e0202a76703a2c97df2ef70 new file mode 100644 index 00000000..fcb4cbc7 --- /dev/null +++ b/.resources/96b898945159ce7fbf3ed6dd3cb55421597c58866e0202a76703a2c97df2ef70 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FCC400", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/973105551a2cc0a1a26e65ef0e2014c871a741065272c055d18f6eb4c0dc8232 b/.resources/973105551a2cc0a1a26e65ef0e2014c871a741065272c055d18f6eb4c0dc8232 new file mode 100644 index 00000000..298a52e8 --- /dev/null +++ b/.resources/973105551a2cc0a1a26e65ef0e2014c871a741065272c055d18f6eb4c0dc8232 @@ -0,0 +1,18 @@ +WITH LANES AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:%i:00") AS time, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND destination_act = :lane + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") + ORDER BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:%i:00") +) +SELECT + time, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*60) AS total_pph + /* Percents: */ +FROM LANES; \ No newline at end of file diff --git a/.resources/97d6f37525c72f9c5ed23dcc2f8605c93adc6dd2738fb70e017217d9efe818fe b/.resources/97d6f37525c72f9c5ed23dcc2f8605c93adc6dd2738fb70e017217d9efe818fe new file mode 100644 index 00000000..c934873d --- /dev/null +++ b/.resources/97d6f37525c72f9c5ed23dcc2f8605c93adc6dd2738fb70e017217d9efe818fe @@ -0,0 +1,323 @@ +{ + "custom": { + "forceModeRefresh": false, + "setDatesScript": null + }, + "params": { + "endDate": "2021-02-11 00:00:00", + "refreshDelay": 30, + "startDate": "2021-02-10 00:00:00" + }, + "propConfig": { + "custom.forceModeRefresh": { + "persistent": true + }, + "custom.setDatesScript": { + "binding": { + "config": { + "expression": "toBoolean(now({view.params.refreshDelay}*1000))\r\n\u0026\u0026{view.custom.forceModeRefresh}" + }, + "transforms": [ + { + "code": "\tnow \u003d system.date.now()\n\tcurrentDay \u003d system.date.getDate(system.date.getYear(now), system.date.getMonth(now), system.date.getDayOfMonth(now))\n\tpreviousDay \u003d system.date.addDays(currentDay, -1)\n\tnextDay \u003d system.date.addDays(currentDay, 1)\n\tstartDate \u003d self.getChild(\"root\").getChild(\"StartDateTime\")\n\tendDate \u003d self.getChild(\"root\").getChild(\"EndDateTime\")\n\tvalue \u003d self.getChild(\"root\").getChild(\"Mode\").props.value\n\t\n\t# Retrieve shifts table:\n\tshifts \u003d utils.datasetToJSON(system.tag.readBlocking([\"[default]Gateway/Shifts\"])[0].value)\n\t# Filter for shifts that are enabled and for today:\n\tcurrentDayOfWeek \u003d system.date.getDayOfWeek(now)\n\tcurrentDayOfWeek \u003d \"is\" + [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"][currentDayOfWeek-1]\n\tshifts \u003d [shift for shift in shifts if shift[\"Enabled\"] and shift[currentDayOfWeek]]\n\t# Build SORTS list:\n\tSORTS \u003d [{ \"name\": shift[\"Name\"], \"start\": [shift[\"StartHour\"],shift[\"StartMinute\"]], \"actualEnd\": [shift[\"EndHour\"],shift[\"EndMinute\"]] } for shift in shifts]\n\tSORTS.sort(key\u003dlambda x: x[\"start\"])\n\t# Add end time based on next sort:\n\tfor i in range(len(SORTS) - 1):\n\t\tSORTS[i][\"end\"] \u003d SORTS[i+1][\"start\"]\n\tSORTS[-1][\"end\"] \u003d SORTS[0][\"start\"]\n\t\n\tstart \u003d startDate.props.value\n\tend \u003d endDate.props.value\n\t\n\tif value \u003d\u003d \"past30min\":\n\t\tstart \u003d system.date.addMinutes(now, -30)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"pastHour\":\n\t\tstart \u003d system.date.addHours(now, -1)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"past2Hours\":\n\t\tstart \u003d system.date.addHours(now, -2)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"past4Hours\":\n\t\tstart \u003d system.date.addHours(now, -4)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"past8Hours\":\n\t\tstart \u003d system.date.addHours(now, -8)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"currentDay\":\n\t\tstart \u003d currentDay\n\t\tend \u003d system.date.addDays(currentDay, 1)\n\t\n\telif value \u003d\u003d \"previousDay\":\n\t\tstart \u003d previousDay\n\t\tend \u003d currentDay\n\t\t\n\telse:\n\t\t# Resolve sort:\n\t\tif value \u003d\u003d \"currentShift\":\n\t\t\tsort \u003d SORTS[-1] # Default to last sort (assumes last sort includes midnight)\n\t\t\tfor i, s in enumerate(SORTS[::-1]):\n\t\t\t\tif system.date.isAfter(now, system.date.setTime(currentDay, s[\"start\"][0], s[\"start\"][1], 0)):\n\t\t\t\t\tsort \u003d s\n\t\t\t\t\tbreak\n\t\t\t# Apply:\n\t\t\tstart \u003d system.date.setTime(currentDay, sort[\"start\"][0], sort[\"start\"][1], 0)\n\t\t\tend \u003d system.date.setTime(currentDay, sort[\"actualEnd\"][0], sort[\"actualEnd\"][1], 0)\n\t\telif value \u003d\u003d \"previousShift\":\n\t\t\tsort \u003d SORTS[-2] # Default to second to last sort (assumes last sort includes midnight)\n\t\t\tSORTS_REV \u003d SORTS[:]\n\t\t\tSORTS_REV.sort(key\u003dlambda x: x[\"end\"])\n\t\t\tfor i, s in enumerate(SORTS_REV[::-1]):\n\t\t\t\tif system.date.isAfter(now, system.date.setTime(currentDay, s[\"end\"][0], s[\"end\"][1], 0)):\n\t\t\t\t\tsort \u003d s\n\t\t\t\t\tbreak\n\t\t\t# Apply:\n\t\t\tstart \u003d system.date.setTime(currentDay, sort[\"start\"][0], sort[\"start\"][1], 0)\n\t\t\tend \u003d system.date.setTime(currentDay, sort[\"actualEnd\"][0], sort[\"actualEnd\"][1], 0)\n\t\telse:\n\t\t\tfor s in SORTS:\n\t\t\t\tif s[\"name\"] \u003d\u003d value:\n\t\t\t\t\t# Apply:\n\t\t\t\t\tstart \u003d system.date.setTime(currentDay, s[\"start\"][0], s[\"start\"][1], 0)\n\t\t\t\t\tend \u003d system.date.setTime(currentDay, s[\"actualEnd\"][0], s[\"actualEnd\"][1], 0)\n\t\t\t\t\tbreak\n\n\t\t# Increase end if before start:\n\t\tif system.date.isAfter(start, end):\n\t\t\tend \u003d system.date.addDays(end, 1)\n\t\t# If current time is before startDate, then subtract one day to show last occurrence of that sort:\n\t\tif system.date.isBefore(now, start):\n\t\t\tstart \u003d system.date.addDays(start, -1)\n\t\t\tend \u003d system.date.addDays(end, -1)\n\t\t\t\n\t# Apply:\n\tif startDate.props.value !\u003d start or endDate.props.value !\u003d end or (system.date.isAfter(now, start) and system.date.isBefore(now, system.date.addMinutes(end, 1))):\n\t\tstartDate.props.value \u003d start\n\t\tendDate.props.value \u003d end\n\t\tself.session.custom.timewidget \u003d {\n\t\t\t\"startDate\": start,\n\t\t\t\"endDate\": end,\n\t\t\t\"mode\": value,\n\t\t\t\"update\": now\n\t\t}\n\t\n\treturn value", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "params.endDate": { + "binding": { + "config": { + "path": "/root/EndDateTime.props.formattedValues.datetime" + }, + "type": "property" + }, + "paramDirection": "output", + "persistent": true + }, + "params.refreshDelay": { + "paramDirection": "input", + "persistent": true + }, + "params.startDate": { + "binding": { + "config": { + "path": "/root/StartDateTime.props.formattedValues.datetime" + }, + "type": "property" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 550 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "StartLabel" + }, + "position": { + "height": 20, + "width": 40, + "x": 180, + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Start:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttimewidget \u003d self.session.custom.timewidget\n\thours \u003d system.date.hoursBetween(self.props.value, timewidget.endDate)\n\tsystem.perspective.print(hours)\n\tnewVal \u003d {\n\t\t\"startDate\": self.props.value,\n\t\t\"endDate\": timewidget.endDate,\n\t\t\"mode\": timewidget.mode\n\t}\n\tif hours \u003e 7*24:\n\t\t# Cap endDate to within 7 days of startDate:\n\t\tnewVal[\"endDate\"] \u003d system.date.addDays(self.props.value, 7)\n\t# Apply changes:\n\tself.session.custom.timewidget \u003d newVal" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartDateTime" + }, + "position": { + "height": 20, + "width": 135, + "x": 225, + "y": 10 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "expression": "{value} \u003d \"custom\"", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.value": { + "binding": { + "config": { + "path": "session.custom.timewidget.startDate" + }, + "type": "property" + } + } + }, + "props": { + "format": "YYYY-MM-DD HH:mm:ss", + "formattedValue": "2022-03-04 04:00:00", + "formattedValues": { + "date": "2021-02-10", + "datetime": "2021-02-10 00:00:00", + "time": "00:00:00" + }, + "inputProps": { + "style": { + "fontSize": "12px" + } + } + }, + "type": "ia.input.date-time-input" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttimewidget \u003d self.session.custom.timewidget\n\thours \u003d system.date.hoursBetween(timewidget.startDate, self.props.value)\n\tnewVal \u003d {\n\t\t\"startDate\": timewidget.startDate,\n\t\t\"endDate\": self.props.value,\n\t\t\"mode\": timewidget.mode\n\t}\n\tif hours \u003e 7*24:\n\t\t# Cap startDate to within 7 days of endDate:\n\t\tnewVal[\"startDate\"] \u003d system.date.addDays(self.props.value, -7)\n\t# Apply changes:\n\tself.session.custom.timewidget \u003d newVal" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "EndDateTime" + }, + "position": { + "height": 20, + "width": 135, + "x": 410, + "y": 10 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "expression": "{value} \u003d \"custom\"", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.value": { + "binding": { + "config": { + "path": "session.custom.timewidget.endDate" + }, + "type": "property" + } + } + }, + "props": { + "format": "YYYY-MM-DD HH:mm:ss", + "formattedValue": "2022-03-05 04:00:00", + "formattedValues": { + "date": "2021-02-11", + "datetime": "2021-02-11 00:00:00", + "time": "00:00:00" + }, + "inputProps": { + "style": { + "fontSize": "12px" + } + } + }, + "type": "ia.input.date-time-input" + }, + { + "meta": { + "name": "EndLabel" + }, + "position": { + "height": 20, + "width": 40, + "x": 365, + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "End:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "ModeLabel" + }, + "position": { + "height": 20, + "width": 45, + "x": 5, + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Period:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.session.custom.timewidget.mode \u003d self.props.value\n\tself.view.custom.forceModeRefresh \u003d not self.view.custom.forceModeRefresh" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Mode" + }, + "position": { + "height": 20, + "width": 120, + "x": 55, + "y": 10 + }, + "propConfig": { + "props.options": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Shifts" + }, + "transforms": [ + { + "code": "\t# Add default relative options:\n\toptions \u003d [\n\t { \"value\": \"past30min\", \"label\": \"Past 30min\" },\n\t { \"value\": \"pastHour\", \"label\": \"Past Hour\" },\n\t { \"value\": \"past2Hours\", \"label\": \"Past 2 Hours\" },\n\t { \"value\": \"past4Hours\", \"label\": \"Past 4 Hours\" },\n\t { \"value\": \"past8Hours\", \"label\": \"Past 8 Hours\" },\n\t { \"value\": \"currentDay\", \"label\": \"Current Day\" },\n\t { \"value\": \"previousDay\", \"label\": \"Previous Day\" },\n\t { \"value\": \"currentShift\", \"label\": \"Current Shift\" },\n\t { \"value\": \"previousShift\", \"label\": \"Previous Shift\" }\n\t]\n\t# Add shifts:\n\tshifts \u003d utils.datasetToJSON(value)\n\t# Filter for shifts that are enabled and for today:\n\tcurrentDayOfWeek \u003d system.date.getDayOfWeek(system.date.now())\n\tcurrentDayOfWeek \u003d \"is\" + [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"][currentDayOfWeek-1]\n\tshifts \u003d [shift for shift in shifts if shift[\"Enabled\"] and shift[currentDayOfWeek]]\n\t# Add shifts to options:\n\tfor shift in shifts:\n\t\tif shift[\"Enabled\"]:\n\t\t\toptions.append({ \"value\": shift[\"Name\"], \"label\": \"Shift: \" + shift[\"Name\"] })\n\t# Add custom:\n\toptions.append({ \"value\": \"custom\", \"label\": \"Custom\" })\n\t# Return options:\n\treturn options", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.value": { + "binding": { + "config": { + "struct": { + "mode": "{session.custom.timewidget.mode}", + "options": "{this.props.options}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tif value.options !\u003d None:\n\t\tfor option in value.options:\n\t\t\tif option.value \u003d\u003d value.mode:\n\t\t\t\treturn value.mode\n\t# Value isn\u0027t in options, default to currentDay:\n\treturn \"currentDay\"", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "dropdownOptionStyle": { + "fontSize": "11px" + }, + "style": { + "fontSize": "10px" + } + }, + "type": "ia.input.dropdown" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/9d6a2ea9b8dc45d3a47dc74a84b189c914940f60615ab4d397f8f7e5f5ae4186 b/.resources/9d6a2ea9b8dc45d3a47dc74a84b189c914940f60615ab4d397f8f7e5f5ae4186 new file mode 100644 index 00000000..81d3de91 --- /dev/null +++ b/.resources/9d6a2ea9b8dc45d3a47dc74a84b189c914940f60615ab4d397f8f7e5f5ae4186 @@ -0,0 +1,334 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "S1-CH1" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "rotation": 0 + }, + "status": { + "tagPath": "[default]MCP04/CH_20116/CH_20116" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.rotation": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 349, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ChuteLabel" + }, + "position": { + "height": 30, + "width": 100, + "x": 198, + "y": 298.8 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.props.status.tagPath" + }, + "transforms": [ + { + "code": "\treturn utils.prettyName(value.split(\"/\")[-1])", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/CH/SetEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Enable" + }, + "position": { + "height": 40, + "width": 120, + "x": 120, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Enable" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/CH/SetEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Disable" + }, + "position": { + "height": 40, + "width": 120, + "x": 260, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Red" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Disable" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "SpiralChute" + }, + "position": { + "height": 60, + "width": 85, + "x": 205, + "y": 165 + }, + "propConfig": { + "props.params": { + "binding": { + "config": { + "struct": { + "alwaysShowAll": true, + "isClickable": false, + "rotation": "{view.params.props.config.rotation}", + "tagPath": "{view.params.props.status.tagPath}" + }, + "waitOnAll": true + }, + "type": "expr-struct" + } + }, + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.props.config.rotation" + }, + "transforms": [ + { + "expression": "\"scale(2) rotate(\" + {value} + \"deg)\"", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "path": "Templates/Areas/SpiralChute", + "style": { + "transform": "scale(2) rotate(0deg)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "ChuteLabel_0" + }, + "position": { + "height": 35, + "width": 260, + "x": 120, + "y": 63 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/StatusText" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/9ee66303347dbd78d4cc226eaaecc343b8c77448bfd07f3e7329f70fa740824e b/.resources/9ee66303347dbd78d4cc226eaaecc343b8c77448bfd07f3e7329f70fa740824e new file mode 100644 index 00000000..dd82e720 --- /dev/null +++ b/.resources/9ee66303347dbd78d4cc226eaaecc343b8c77448bfd07f3e7329f70fa740824e @@ -0,0 +1,1037 @@ +{ + "custom": {}, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tactivityLog.productMetrics.callLogger(self, \u0027page\u0027)" + }, + "scope": "G", + "type": "script" + }, + "onStartup": { + "config": { + "script": "\tself.custom.activityLogger.start_time \u003d system.date.now()" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "params": {}, + "size": "medium" + }, + "propConfig": { + "params.params": { + "paramDirection": "input", + "persistent": true + }, + "params.size": { + "paramDirection": "input" + } + }, + "props": { + "defaultSize": { + "height": 58 + } + }, + "root": { + "children": [ + { + "children": [ + { + "events": { + "dom": { + "onDoubleClick": { + "config": { + "page": "/Monitron" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Icon" + }, + "position": { + "basis": "30px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/vibration", + "style": { + "classes": "" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "41px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[IEC_SCADA_TAG_PROVIDER]Monitron/monitron_data" + }, + "transforms": [ + { + "code": "\treturn value.getRowCount()", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "color": "#FFFFFF", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "80px", + "display": false + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "dom": { + "onDoubleClick": { + "config": { + "page": "/Oil" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Icon" + }, + "position": { + "basis": "30px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/opacity", + "style": { + "classes": "" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "41px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[IEC_SCADA_TAG_PROVIDER]Oil/oil_condition_monitoring" + }, + "transforms": [ + { + "code": "\treturn value.getRowCount()", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "color": "#FFFFFF", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer_1" + }, + "position": { + "basis": "80px", + "display": false + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Image" + }, + "position": { + "basis": "120px" + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.params.size} \u003d \"large\"" + }, + "type": "expr" + } + } + }, + "props": { + "fit": { + "height": 30, + "mode": "fill" + }, + "source": "/system/images/Builtin/amazon_rme_logo.png" + }, + "type": "ia.display.image" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer Start" + }, + "position": { + "basis": "16px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "id": "Docked-West", + "type": "toggle" + }, + "scope": "C", + "type": "dock" + } + } + }, + "meta": { + "name": "Menu Dock" + }, + "position": { + "basis": "24px", + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.params.size} !\u003d \"large\"" + }, + "type": "expr" + } + } + }, + "props": { + "color": "#FFFFFF", + "path": "material/menu", + "style": { + "classes": "Header/Icon", + "marginRight": "10px" + } + }, + "type": "ia.display.icon" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "page": "/" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Back", + "tooltip": { + "enabled": true, + "text": "Go back to DEX" + } + }, + "position": { + "basis": "24px", + "shrink": 0 + }, + "props": { + "color": "#FFFFFF", + "path": "material/arrow_back", + "style": { + "classes": "Header/Icon", + "cursor": "pointer", + "marginRight": "10px" + } + }, + "type": "ia.display.icon" + }, + { + "children": [ + { + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "550px", + "grow": 1 + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "300px", + "shrink": 0 + }, + "propConfig": { + "custom.area": { + "binding": { + "config": { + "expression": "if(isNull({this.custom.lookup_path}), \"\",\r\ntry(jsonGet({this.custom.plc_dict},\"Area\"),\"\"))" + }, + "type": "expr" + } + }, + "custom.lookup_path": { + "binding": { + "config": { + "expression": "try(if({this.custom.path}[1,0]\u003d\"DetailedView\", {this.custom.path}[2,0],\r\n\"\"), \"\")\r\n" + }, + "type": "expr" + } + }, + "custom.path": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "expression": "split({value},\"/\")", + "type": "expression" + } + ], + "type": "property" + } + }, + "custom.path_to_display": { + "binding": { + "config": { + "expression": "if(len({this.custom.lookup_path})\u003c1, \"\",\r\nif(len({this.custom.area}) \u003c1, {this.custom.lookup_path},\r\nif(len({this.custom.sub_area}) \u003e 0, concat({this.custom.lookup_path} + \" / \" + {this.custom.area} + \" / \" + {this.custom.sub_area}),\r\nconcat({this.custom.lookup_path} + \" / \" + {this.custom.area}))))" + }, + "type": "expr" + } + }, + "custom.plc_dict": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" + }, + "transforms": [ + { + "expression": "jsonGet({value},{this.custom.lookup_path})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.sub_area": { + "binding": { + "config": { + "expression": "if(isNull({this.custom.lookup_path}), \"\",\r\ntry(jsonGet({this.custom.plc_dict},\"SubArea\"), \"\"))" + }, + "type": "expr" + } + }, + "position.display": { + "binding": { + "config": { + "expression": "{view.params.size} \u003d \"large\"" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "path": "this.custom.path_to_display" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "150px", + "grow": 1 + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Area" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "type": "ia.container.flex" + }, + { + "meta": { + "name": "Icon_1", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "30px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "{[System]Gateway/Database/MariaDB/Available}" + }, + "transforms": [ + { + "fallback": "Database Connection Status: LOST", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Database Connection Status: GOOD" + }, + { + "input": false, + "output": "Database Connection Status: LOST" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + } + }, + "props.color": { + "binding": { + "config": { + "expression": "{[System]Gateway/Database/MariaDB/Available}" + }, + "transforms": [ + { + "fallback": "#FF0000", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#47FF47" + }, + { + "input": false, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "expr" + }, + "onChange": { + "enabled": null, + "script": " db_tag_path \u003d \"[System]Gateway/Database/MariaDB/Available\"\n\t\n if not (system.tag.readBlocking([db_tag_path])[0].value):\n \tsystem.perspective.openPopup(\"errorPopup\",\u0027PopUp-Views/DatabaseError\u0027, title\u003d\"Database Error\")\n\t" + }, + "persistent": true + } + }, + "props": { + "color": "#47FF47", + "path": "material/table_chart" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End_3" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "custom": { + "buttonid": "HeaderLegendIcon" + }, + "events": { + "dom": { + "onClick": [ + { + "config": { + "draggable": false, + "id": "TZyBcXB7", + "modal": true, + "overlayDismiss": true, + "resizable": false, + "showCloseIcon": false, + "type": "open", + "viewPath": "PopUp-Views/Legend_Popup/Legend-popup-view", + "viewportBound": true + }, + "scope": "C", + "type": "popup" + }, + { + "config": { + "script": "\tbuttonid \u003d self.custom.buttonid\n\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" + }, + "scope": "G", + "type": "script" + } + ] + } + }, + "meta": { + "name": "Icon", + "tooltip": { + "delay": 250, + "enabled": true, + "sustain": 1000, + "text": "Legend" + } + }, + "position": { + "basis": "35px" + }, + "props": { + "color": "#FFFFFF", + "path": "material/legend_toggle", + "style": { + "classes": "", + "marginRight": 20 + } + }, + "type": "ia.display.icon" + }, + { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.navigate(page \u003d \"/Real-Time\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon" + }, + "position": { + "basis": "30px" + }, + "propConfig": { + "props.color": { + "binding": { + "config": { + "path": "../Label.props.text" + }, + "transforms": [ + { + "code": "\t\n\treturn \"red\" if value \u003e 0 else \"#fff\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/notifications_active", + "style": { + "classes": "" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "41px" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetActiveAlarmsByLocationAndPriority", + "returnFormat": "json" + }, + "transforms": [ + { + "code": "\ttotal \u003d sum(row[\"Count\"] for row in value if \"Count\" in row and row[\"Count\"] is not None)\n\treturn total", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "style": { + "color": "#FFFFFF", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "80px" + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "{./Label.props.text} + \" active alarms in the system\"" + }, + "type": "expr" + } + } + }, + "props": { + "justify": "flex-end", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.flex" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End_2" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "custom": { + "covert": true + }, + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tdevice_list \u003d tags.tag_utilities.get_devices(self.session.custom.fc)\n\ttags.tag_utilities.reset_disconnect_tags(self.session.custom.fc, device_list)\n\tAWS.wbsckt_abort.close_websckt()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Icon_2", + "tooltip": { + "enabled": true + } + }, + "position": { + "basis": "30px" + }, + "propConfig": { + "custom.heartbeat_received": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/wbsckt_heartbeat_interval" + }, + "transforms": [ + { + "expression": "if(secondsBetween(todate({value}),todate(now())) \u003e 70, False, True)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "custom.wbsckt_running": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/wbsckt_running" + }, + "transforms": [ + { + "expression": "if({value} \u003d True \u0026\u0026 ({this.custom.heartbeat_received} \u003d True) , True, False)", + "type": "expression" + } + ], + "type": "tag" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "path": "this.custom.wbsckt_running" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "websocket running" + }, + { + "input": false, + "output": "websocket disconnected" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.color": { + "binding": { + "config": { + "path": "this.custom.wbsckt_running" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF4747" + }, + { + "input": true, + "output": "#FFFFFF" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "path": "material/location_city", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "shrink": 0 + }, + "propConfig": { + "position.basis": { + "binding": { + "config": { + "expression": "len({this.props.text}) * 11 + \"px\"" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "Configuration/FC" + }, + "type": "tag" + } + } + }, + "props": { + "icon": "material/building", + "style": { + "borderWidth": "0.25px", + "color": "#FFFFFF", + "textAlign": "", + "textIndent": 10 + }, + "textStyle": { + "lineBreak": "auto" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tif self.session.props.auth.authenticated:\n\t\tsystem.perspective.logout()\n\telse:\n\t\tsystem.perspective.login()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "User" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "path": "material/person", + "style": { + "classes": "Header/Icon", + "color": "#FFFFFF" + } + }, + "type": "ia.display.icon" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tif self.session.props.auth.authenticated:\n\t\tsystem.perspective.logout()\n\telse:\n\t\tsystem.perspective.login()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "hasDelegate": true, + "name": "Sign In" + }, + "position": { + "basis": "50px", + "shrink": 0 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.params.size} !\u003d \"small\"" + }, + "type": "expr" + } + }, + "props.text": { + "binding": { + "config": { + "path": "session.props.auth.user.userName" + }, + "transforms": [ + { + "code": "\tif len(value) \u003d\u003d 0 or value \u003d\u003d \"null\":\n\t return \"Sign In\"\n\telse:\n\t return value.split(\"@\")[0]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Header/Icon", + "color": "#FFFFFF", + "cursor": "pointer", + "marginLeft": "4px" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End_0" + }, + "position": { + "basis": "20px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.closeSession()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Exit", + "tooltip": { + "enabled": true, + "location": "bottom-left", + "style": { + "fontFamily": "Arial", + "fontSize": 12 + }, + "tail": false, + "text": "Exit Application" + } + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "props": { + "path": "material/exit_to_app", + "style": { + "classes": "Header/Icon", + "color": "#FFFFFF", + "cursor": "pointer" + } + }, + "type": "ia.display.icon" + }, + { + "meta": { + "hasDelegate": true, + "name": "Spacer End_1" + }, + "position": { + "basis": "16px", + "shrink": 0 + }, + "props": { + "text": " " + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "justify": "flex-end", + "style": { + "background": "rgb(43,43,43)" + } + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/.resources/9fb35103d4f3e2a545d47d8eff91688dcff3e3be5fd50a11a1a1254e0407542b b/.resources/9fb35103d4f3e2a545d47d8eff91688dcff3e3be5fd50a11a1a1254e0407542b new file mode 100644 index 00000000..530579f4 --- /dev/null +++ b/.resources/9fb35103d4f3e2a545d47d8eff91688dcff3e3be5fd50a11a1a1254e0407542b @@ -0,0 +1,1323 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 286, + "width": 928 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "PRS01_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 210, + "x": 904, + "y": 286 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS01_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 140, + "x": 885, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS01_04" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 280, + "x": 746, + "y": 57 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_04/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "bar" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS02_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 360, + "x": 746, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS02_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 330, + "x": 387, + "y": 117 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS02_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 123, + "x": 58, + "y": 97 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PRS01_02CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 40, + "x": 884, + "y": 77 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_02CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "PRS01_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 887, + "y": 216.333 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS01_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 843, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS02_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 703, + "y": 118 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS02_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 223, + "y": 118 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS02_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 59, + "y": 172 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PRS01_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 883, + "y": 123 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS01_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 765, + "y": 16 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS01_03_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 765, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS02_02_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 154, + "y": 76 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS02_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 59, + "y": 123 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PRS01_01_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 883, + "y": 253 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 883, + "y": 83 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 883, + "y": 102 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 803, + "y": 16 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 822, + "y": 16 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_03_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 803, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_03_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 822, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS02_02_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 114, + "y": 76 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS02_02_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 133, + "y": 76 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS02_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 17, + "y": 97 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS02_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 17, + "y": 116 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PRS01_01_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 888, + "y": 195 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS01_03_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 803, + "y": 79 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS01_03_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 803 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS02_02_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 97, + "y": 118 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS02_02_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0" + }, + "width": 30, + "x": 128, + "y": 118 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PRS01_01_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 866, + "y": 98 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS01_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 866, + "y": 83 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS01_03_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 786, + "y": 20 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS01_03_BCN2_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 786, + "y": 58 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/BCN2/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS01_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 786, + "y": 73 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS02_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 97, + "y": 80 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS02_02_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 97, + "y": 65 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS02_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 21, + "y": 182 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS02_03_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "y": 112 + }, + "props": { + "status": { + "showAlways": true + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS02_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "y": 97 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_03/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PRS01_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 894, + "y": 144 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS01_01_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 894, + "y": 274 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_01/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS01_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 757, + "y": 27 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS01_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 860, + "y": 67 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS01_03_PE3" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 874, + "y": 67 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_03/PE3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS01_04_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 744, + "y": 27 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS01/PRS01_04/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS02_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 388, + "y": 127 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PRS02_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 34, + "x": 80, + "y": 127 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/PRS02/PRS02_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/a01e996ef008915f4edd4d964665d955a58204342a0a097867399b5b5051f46f b/.resources/a01e996ef008915f4edd4d964665d955a58204342a0a097867399b5b5051f46f new file mode 100644 index 00000000..1d562681 --- /dev/null +++ b/.resources/a01e996ef008915f4edd4d964665d955a58204342a0a097867399b5b5051f46f @@ -0,0 +1,244 @@ +{ + "custom": {}, + "params": { + "view": "Windows/Graphics/Overview" + }, + "propConfig": { + "params.view": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 750, + "width": 1450 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Graphics" + }, + "propConfig": { + "props.path": { + "binding": { + "config": { + "path": "view.params.view" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tself.session.custom.currentGraphic \u003d currentValue\n\tself.getSibling(\"DexZoombox\").props.zoombox.current \u003d 1" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + }, + "useDefaultViewHeight": true, + "useDefaultViewWidth": true + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "DexZoombox" + }, + "position": { + "height": 10, + "width": 10 + }, + "propConfig": { + "props.zoombox.max": { + "binding": { + "config": { + "expression": "coalesce({../Graphics.props.params.maxZoom}, 4)" + }, + "type": "expr" + } + } + }, + "props": { + "view": { + "height": "750px", + "width": "1450px" + }, + "zoombox": {} + }, + "type": "dex.controller.zoombox" + } + ], + "meta": { + "name": "Window" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "type": "ia.container.coord" + }, + { + "children": [ + { + "meta": { + "name": "mhs" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 110px)", + "y": 10 + }, + "props": { + "fit": { + "mode": "contain" + }, + "source": "data:image/png;base64,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\u003d", + "style": { + "pointer-events": "none", + "user-select": "none" + } + }, + "type": "ia.display.image" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 20, + "width": 285, + "x": 60, + "y": 10 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": ".../Window/Graphics.props.path" + }, + "transforms": [ + { + "code": "\tpathParts \u003d value.split(\"/\")\n\tif len(pathParts) \u003e 0:\n\t\treturn pathParts[-1].replace(\"_\", \" \")\n\telse:\n\t\treturn \"Unknown\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "fontFamily": "Helvetica", + "fontSize": "24px", + "fontWeight": "bold", + "pointer-events": "none", + "user-select": "none" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tzoomBox \u003d self.parent.parent.getChild(\"Window\").getChild(\"DexZoombox\")\n\t# Set new angle:\n\tnewAngle \u003d (zoomBox.props.zoombox.rotate + 90) % 360\n\tsystem.perspective.print(\"\u003d\u003d\u003d\")\n\tsystem.perspective.print(zoomBox.props.zoombox.rotate)\n\tsystem.perspective.print(newAngle)\n\tsystem.perspective.print(\"\u003d\u003d\u003d\")\n\tzoomBox.props.zoombox.rotate \u003d newAngle" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Rotate" + }, + "position": { + "height": 25, + "width": 25, + "x": 32, + "y": 8 + }, + "props": { + "style": { + "classes": "Buttons/Grey", + "pointer-events": "all" + }, + "text": "↻", + "textStyle": { + "font-size": 20, + "position": "relative", + "top": "-1px" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Icon" + }, + "position": { + "height": 25, + "width": 25, + "x": 5, + "y": 8 + }, + "props": { + "path": "material/help_outline" + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "HUD" + }, + "position": { + "height": 40, + "width": "100%" + }, + "props": { + "style": { + "overflow": "visible", + "pointer-events": "none" + } + }, + "type": "ia.container.coord" + }, + { + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": 25, + "width": 25, + "x": 5, + "y": 8 + }, + "props": { + "status": { + "tooltip": "\u003cu\u003eZoom:\u003c/u\u003e\u003cbr\u003eCtrl+MouseWheel\u003cbr\u003eCtrl++/Ctrl+-\u003cbr\u003e2-finger Pinch\u003cbr\u003e\u003cbr\u003e\u003cu\u003ePan:\u003c/u\u003e\u003cbr\u003eMiddleMouse\u003cbr\u003e2-finger Pan" + } + }, + "type": "dex.display.tooltipoverlay" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "window" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/a05e5ee1ec359b038e5d86c6df02dfb979c46c35b3d85f81e679f67c326331bd b/.resources/a05e5ee1ec359b038e5d86c6df02dfb979c46c35b3d85f81e679f67c326331bd new file mode 100644 index 00000000..5e451534 --- /dev/null +++ b/.resources/a05e5ee1ec359b038e5d86c6df02dfb979c46c35b3d85f81e679f67c326331bd @@ -0,0 +1,2923 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows" + }, + "props": { + "defaultSize": { + "height": 600, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Commissioning" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttable \u003d self.getSibling(\"ScannerHistory\")\n\tlines \u003d self.getSibling(\"LineChart\")\n\t# Force CSV download:\n\tutils.downloadCSV(table, \"Commissioning Scanner History\")\n\tutils.downloadCSV(lines.props.series[0].data, \"Commissioning Chart Data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TimeWidget" + }, + "position": { + "height": 40, + "width": 600 + }, + "propConfig": { + "meta.visible": { + "persistent": true + } + }, + "props": { + "params": { + "endDate": "2021-02-11 00:00:00", + "startDate": "2021-02-10 00:00:00" + }, + "path": "Templates/Widget/TimeWidget" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "ScannerHistory" + }, + "position": { + "height": "calc((100% - 40px) / 2)", + "width": "100%", + "y": "calc((100% - 40px) / 2 + 40px)" + }, + "propConfig": { + "custom.timewidget": { + "binding": { + "config": { + "path": "session.custom.timewidget" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tself.forceRefresh()" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "induct_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Induct Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "confirm_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Confirm Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "trackid", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Parcel ID" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "scanner", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scanner" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "imgid", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Img ID" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 90 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "barcode", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scan Label" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "scanner_status", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Scan Status" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "pkg_length", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Length (in)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "trays", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Trays (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "assignments", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Assignment" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "divert_status", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Divert Status" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "requested_dest", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Req Dest" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 40 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "diverted_dest", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Actual Dest" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 40 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "sort_code", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sort Code" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 50 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\tRED \u003d lambda x: { \"value\": x, \"style\": { \"background\": \"#FEA3AA\" } }\n\tYELLOW \u003d lambda x: { \"value\": x, \"style\": { \"background\": \"#FAF884\" } }\n\t\n\t# Run query:\n\tdata \u003d system.db.runNamedQuery(\"Status/PackageHistory\", {\n\t\t\"startDate\": self.session.custom.timewidget.startDate,\n\t\t\"endDate\": self.session.custom.timewidget.endDate,\n\t})\n\t# Convert to JSON:\n\tfilteredData \u003d utils.datasetToJSON(data)\n\t# Apply styles:\n\tfor row in filteredData:\n\t\t# Handle sort code:\n\t\tif row[\"sort_code\"] !\u003d \"Success\":\n\t\t\trow[\"sort_code\"] \u003d RED(row[\"sort_code\"])\n\t\t# Handle barcode:\n\t\tif row[\"scanner_status\"] !\u003d \"Good Read\":\n\t\t\trow[\"scanner_status\"] \u003d RED(row[\"scanner_status\"])\n\t\t\trow[\"barcode\"] \u003d RED(row[\"barcode\"])\n\t\t# Handle destinations:\n\t\tif len(row[\"assignments\"]) \u003e 0:\n\t\t\tDESTS \u003d row[\"assignments\"].split(\",\")\n\t\t\tif row[\"requested_dest\"] not in DESTS:\n\t\t\t\trow[\"requested_dest\"] \u003d RED(row[\"requested_dest\"])\n\t\t\telif row[\"requested_dest\"] !\u003d DESTS[0]:\n\t\t\t\trow[\"requested_dest\"] \u003d YELLOW(row[\"requested_dest\"])\n\t\t\tif row[\"diverted_dest\"] not in DESTS:\n\t\t\t\trow[\"diverted_dest\"] \u003d RED(row[\"diverted_dest\"])\n\t\t\telif row[\"diverted_dest\"] !\u003d DESTS[0]:\n\t\t\t\trow[\"diverted_dest\"] \u003d YELLOW(row[\"diverted_dest\"])\n\t\telse:\n\t\t\trow[\"assignments\"] \u003d RED(row[\"assignments\"])\n\t# Set title extra:\n\tcou \u003d utils.getRowCount(filteredData)\n\tast \u003d \"*\" if cou \u003e\u003d 4000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Set data\n\tself.props.data \u003d filteredData" + } + ], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Scanner History\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + }, + { + "custom": { + "plot1": [ + { + "axes": [ + { + "alignment": "left", + "label": { + "font": { + "color": "", + "size": 12 + }, + "offset": 0, + "style": { + "classes": "" + }, + "text": "Rate (PPH)", + "visible": true + }, + "max": "", + "min": 0, + "name": "Rate", + "style": { + "classes": "" + }, + "tick": { + "color": "", + "label": { + "font": { + "color": "", + "size": 10 + }, + "style": { + "classes": "" + } + }, + "style": { + "classes": "" + } + }, + "width": 60 + }, + { + "alignment": "right", + "label": { + "font": { + "color": "", + "size": 12 + }, + "offset": 0, + "style": { + "classes": "" + }, + "text": "Percent (%)", + "visible": true + }, + "max": 1, + "min": 0, + "name": "Percent", + "style": { + "classes": "" + }, + "tick": { + "color": "", + "label": { + "font": { + "color": "", + "size": 10 + }, + "style": { + "classes": "" + } + }, + "style": { + "classes": "" + } + }, + "width": 60 + } + ], + "markers": [ + { + "axis": "Rate", + "line": { + "color": "", + "dashArray": 0, + "label": { + "font": { + "color": "", + "size": 10 + }, + "position": "right", + "style": { + "classes": "" + }, + "text": "" + }, + "opacity": 0.5, + "style": { + "classes": "" + }, + "width": 1 + }, + "type": "line", + "visible": true + } + ], + "trends": [ + { + "axis": "Rate", + "baselines": [], + "breakLine": true, + "columns": [ + { + "color": "", + "key": "time", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "#000000", + "key": "total_pph", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Data", + "stack": true, + "type": "line", + "visible": true + }, + { + "axis": "Percent", + "baselines": [], + "breakLine": true, + "columns": [ + { + "color": "", + "key": "time", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "no_read_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "no_code_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "multi_label_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Data", + "stack": true, + "type": "line", + "visible": true + }, + { + "axis": "Percent", + "baselines": [], + "breakLine": true, + "columns": [ + { + "color": "", + "key": "time", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "gap_err_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "div_fail_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "dest_none_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "lost_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Data", + "stack": true, + "type": "line", + "visible": true + } + ] + } + ], + "plot3": [ + { + "axes": [ + { + "alignment": "left", + "label": { + "font": { + "color": "", + "size": 12 + }, + "offset": 0, + "style": { + "classes": "" + }, + "text": "Rate (PPH)", + "visible": true + }, + "max": "", + "min": 0, + "name": "Rate", + "style": { + "classes": "" + }, + "tick": { + "color": "", + "label": { + "font": { + "color": "", + "size": 10 + }, + "style": { + "classes": "" + } + }, + "style": { + "classes": "" + } + }, + "width": 60 + } + ], + "markers": [ + { + "axis": "Rate", + "line": { + "color": "", + "dashArray": 0, + "label": { + "font": { + "color": "", + "size": 10 + }, + "position": "right", + "style": { + "classes": "" + }, + "text": "" + }, + "opacity": 0.5, + "style": { + "classes": "" + }, + "width": 1 + }, + "type": "line", + "visible": true + } + ], + "trends": [ + { + "axis": "Rate", + "baselines": [], + "breakLine": true, + "columns": [ + { + "color": "", + "key": "time", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "#000000", + "key": "total_pph", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Data", + "stack": true, + "type": "line", + "visible": true + } + ] + }, + { + "axes": [ + { + "alignment": "left", + "label": { + "font": { + "color": "", + "size": 12 + }, + "offset": 0, + "style": { + "classes": "" + }, + "text": "Percent (%)", + "visible": true + }, + "max": 1, + "min": 0, + "name": "Percent", + "style": { + "classes": "" + }, + "tick": { + "color": "", + "label": { + "font": { + "color": "", + "size": 10 + }, + "style": { + "classes": "" + } + }, + "style": { + "classes": "" + } + }, + "width": 60 + } + ], + "markers": [], + "trends": [ + { + "axis": "Percent", + "baselines": [], + "breakLine": true, + "columns": [ + { + "color": "", + "key": "time", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "no_read_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "no_code_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "multi_label_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Data", + "stack": true, + "type": "line", + "visible": true + } + ] + }, + { + "axes": [ + { + "alignment": "left", + "label": { + "font": { + "color": "", + "size": 12 + }, + "offset": 0, + "style": { + "classes": "" + }, + "text": "Percent (%)", + "visible": true + }, + "max": 1, + "min": 0, + "name": "Percent", + "style": { + "classes": "" + }, + "tick": { + "color": "", + "label": { + "font": { + "color": "", + "size": 10 + }, + "style": { + "classes": "" + } + }, + "style": { + "classes": "" + } + }, + "width": 60 + } + ], + "markers": [], + "trends": [ + { + "axis": "Percent", + "baselines": [], + "breakLine": true, + "columns": [ + { + "color": "", + "key": "time", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "gap_err_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "div_fail_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "dest_none_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + }, + { + "color": "", + "key": "lost_percent", + "styles": { + "highlighted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "muted": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "normal": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + }, + "selected": { + "fill": { + "color": "", + "opacity": null + }, + "stroke": { + "color": "", + "dashArray": null, + "opacity": null, + "width": null + } + } + } + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Data", + "stack": true, + "type": "line", + "visible": true + } + ] + } + ] + }, + "meta": { + "name": "LineChart" + }, + "position": { + "height": "calc((100% - 40px)/2)", + "width": "100%", + "y": "40px" + }, + "propConfig": { + "custom.plot1[0].markers[0].value": { + "binding": { + "config": { + "path": "../TargetRate.props.value" + }, + "type": "property" + } + }, + "custom.plot3[0].markers[0].value": { + "binding": { + "config": { + "path": "../TargetRate.props.value" + }, + "type": "property" + } + }, + "props.plots": { + "binding": { + "config": { + "expression": "if({../CheckboxSplitChart.props.selected},\r\n {this.custom.plot3},\r\n {this.custom.plot1}\r\n)" + }, + "type": "expr" + } + }, + "props.series[0].data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "movAvgMin": "if({../CheckboxMovAvg.props.selected},\r 4,\r 0\r )", + "sorter": "\"S01\"", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Commission/StatsChart" + }, + "type": "query" + } + } + }, + "props": { + "defaultStyles": { + "colorScheme": "Spectral", + "normal": { + "stroke": { + "width": 2 + } + } + }, + "legend": { + "position": "right", + "visible": true + }, + "series": [ + { + "name": "Data" + } + ], + "style": { + "backgroundColor": "#FFF", + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "2px" + }, + "timeRange": { + "dateFormat": "YYYY-MM-DD", + "timeFormat": "HH:mm:ss" + }, + "xTrace": { + "infoBox": { + "dateFormat": "YYYY-MM-DD", + "timeFormat": "HH:mm", + "width": 200 + } + } + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\tif self.meta.visible:\n\t\t# Generate tabData\n\t\tcurrentTabIndex \u003d self.getSibling(\"TabContainer\").props.currentTabIndex\n\t\ttabData \u003d self.view.custom.tabData[currentTabIndex]\n\t\tstartDate \u003d self.session.custom.timewidget.startDate\n\t\tendDate \u003d self.session.custom.timewidget.endDate\n\t\tselected \u003d self.getSibling(\"Table\").props.selection.data\n\t\tidField \u003d tabData[\"idField\"]\n\t\tid \u003d selected[0][idField]\n\t\t\n\t\t# Apply:\n\t\t#system.perspective.print(\"Chart Check: \" + tabData.title + \"|\" + id)\n\t\tif not tabData.isBar:\n\t\t\t#system.perspective.print(\"Chart Refresh: \" + tabData.title + \"|\" + id)\n\t\t\tparams \u003d {\n\t\t\t\t\"startDate\": startDate,\n\t\t\t\t\"endDate\": endDate,\n\t\t\t\tidField: id\n\t\t\t}\n\t\t\tdata \u003d system.db.runNamedQuery(tabData.chartNamedQuery, params)\n\t\t\t# Add breaks:\n\t\t\tbreaks \u003d []\n\t\t\tfor row in range(data.getRowCount()-1):\n\t\t\t\tcurTime \u003d system.date.parse(data.getValueAt(row, \"time\"), \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\t\t\tnextTime \u003d system.date.parse(data.getValueAt(row+1, \"time\"), \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\t\t\tminBetween \u003d system.date.minutesBetween(curTime, nextTime)\n\t\t\t\tif minBetween \u003e 1:\n\t\t\t\t\tb \u003d []\n\t\t\t\t\tfor col in data.getColumnNames():\n\t\t\t\t\t\tif col \u003c\u003e \"time\":\n\t\t\t\t\t\t\tb.append(0)\n\t\t\t\t\t\telse:\n\t\t\t\t\t\t\tnewTime \u003d system.date.addMinutes(curTime, 1)\n\t\t\t\t\t\t\tb.append(system.date.format(newTime, \u0027yyyy-MM-dd HH:mm:ss\u0027))\n\t\t\t\t\tbreaks.append(b)\n\t\t\t\tif minBetween \u003e 2:\n\t\t\t\t\tb \u003d []\n\t\t\t\t\tfor col in data.getColumnNames():\n\t\t\t\t\t\tif col \u003c\u003e \"time\":\n\t\t\t\t\t\t\tb.append(0)\n\t\t\t\t\t\telse:\n\t\t\t\t\t\t\tnewTime \u003d system.date.addMinutes(nextTime, -1)\n\t\t\t\t\t\t\tb.append(system.date.format(newTime, \u0027yyyy-MM-dd HH:mm:ss\u0027))\n\t\t\t\t\tbreaks.append(b)\n\t\t\tdata \u003d system.dataset.addRows(data, breaks)\n\t\t\tdata \u003d system.dataset.sort(data, \"time\", True)\n\t\t\t# Update columns:\n\t\t\tfilterColumns \u003d [col for col in self.getSibling(\"Mode\").props.value]\n\t\t\tcolumns \u003d [{\"key\": name} for name in data.getColumnNames() if name.split(\"_\")[-1] not in filterColumns]\n\t\t\tself.props.plots[0].trends[0].columns \u003d columns\n\t\t\t# Return data\n\t\t\tself.props.series[0].data \u003d data" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.chart.timeseries" + }, + { + "meta": { + "name": "CheckboxMovAvg" + }, + "position": { + "height": 40, + "width": 130, + "x": "calc(100% - 260px)" + }, + "props": { + "selected": true, + "style": { + "color": "#FFF" + }, + "text": "Moving Avg", + "textPosition": "left" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "CheckboxSplitChart" + }, + "position": { + "height": 40, + "width": 130, + "x": "calc(100% - 400px)" + }, + "props": { + "style": { + "color": "#FFF" + }, + "text": "Split Chart", + "textPosition": "left" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "TargetRate" + }, + "position": { + "height": 32, + "width": 70, + "x": "calc(100% - 75px)", + "y": "calc((100% - 40px) / 2 + 50px)" + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if(toInt({parent.custom.rateIndicator}[\"total_pph\"], 0) \u003e\u003d {this.props.value},\r\n\t\"#A9D08E\",\r\n\t\"#F4B084\"\r\n)" + }, + "type": "expr" + } + }, + "props.value": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 0.5, + "mode": "direct", + "tagPath": "[default]MCP20_Custom/SO01_Target_Rate" + }, + "type": "tag" + } + } + }, + "type": "ia.input.numeric-entry-field" + }, + { + "meta": { + "name": "Label_RateTarget" + }, + "position": { + "height": 32, + "width": 100, + "x": "calc(100% - 180px)", + "y": "calc((100% - 40px) / 2 + 50px)" + }, + "props": { + "style": { + "textAlign": "right" + }, + "text": "Rate Target:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "TargetSorter" + }, + "position": { + "height": 32, + "width": 45, + "x": "calc(100% - 225px)", + "y": "calc((100% - 40px) / 2 + 50px)" + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if(toInt({parent.custom.rateIndicator}[\"sorter\"], 0) \u003e\u003d {this.props.value},\r\n\t\"#A9D08E\",\r\n\t\"#F4B084\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "enabled": false, + "format": "0.##%", + "value": 0.01 + }, + "type": "ia.input.numeric-entry-field" + }, + { + "meta": { + "name": "Label_TargetSorter" + }, + "position": { + "height": 32, + "width": 110, + "x": "calc(100% - 340px)", + "y": "calc((100% - 40px) / 2 + 50px)" + }, + "props": { + "style": { + "textAlign": "right" + }, + "text": "Sorter Target:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "TargetScanner" + }, + "position": { + "height": 32, + "width": 45, + "x": "calc(100% - 385px)", + "y": "calc((100% - 40px) / 2 + 50px)" + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if(toInt({parent.custom.rateIndicator}[\"scanner\"], 0) \u003e\u003d {this.props.value},\r\n\t\"#A9D08E\",\r\n\t\"#F4B084\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "enabled": false, + "format": "0.##%", + "value": 0.02 + }, + "type": "ia.input.numeric-entry-field" + }, + { + "meta": { + "name": "Label_TargetScanner" + }, + "position": { + "height": 32, + "width": 170, + "x": "calc(100% - 560px)", + "y": "calc((100% - 40px) / 2 + 50px)" + }, + "props": { + "style": { + "textAlign": "right" + }, + "text": "Problem Solve Target:" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "custom.rateIndicator": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "movAvgMin": "4", + "sorter": "\"S01\"", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Commission/StatsConditions" + }, + "type": "query" + } + } + }, + "props": { + "style": { + "min-width": "1000px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/a2f1631184ec6945bd4b214bd779f529f5a6088344754ba8064759b2648c096b b/.resources/a2f1631184ec6945bd4b214bd779f529f5a6088344754ba8064759b2648c096b new file mode 100644 index 00000000..8586d48d --- /dev/null +++ b/.resources/a2f1631184ec6945bd4b214bd779f529f5a6088344754ba8064759b2648c096b @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FFFF00B3" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/a2f3525ec1ef97219c689f285c807b9d853c80e42fd08c4793bb9ca218900088 b/.resources/a2f3525ec1ef97219c689f285c807b9d853c80e42fd08c4793bb9ca218900088 new file mode 100644 index 00000000..34081a4e --- /dev/null +++ b/.resources/a2f3525ec1ef97219c689f285c807b9d853c80e42fd08c4793bb9ca218900088 @@ -0,0 +1,73 @@ +WITH LANES_SUCCESS AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + sorter, + destination_act AS lane, + COUNT(*) AS total + FROM package_history a + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, s04_act_dest +), LANES_FAIL_REQ AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + sorter, + CONCAT(sorter, LPAD(s02_req_dest, 2, '0')) AS lane, + SUM(req_dest_reason=5) AS dest_full, + SUM(req_dest_reason=6) AS dest_fault, + SUM(req_dest_reason=12) AS dest_disabled + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND s04_act_dest != s02_req_dest + GROUP BY sorter, s02_req_dest +), LANES_FAIL_ALT AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + sorter, + CONCAT(sorter, LPAD(s02_alt_dest, 2, '0')) AS lane, + SUM(alt_dest_reason=5) AS dest_full, + SUM(alt_dest_reason=6) AS dest_fault, + SUM(alt_dest_reason=12) AS dest_disabled + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND s04_act_dest != s02_alt_dest + GROUP BY sorter, s02_alt_dest +), LANES AS ( + SELECT + LEAST(s.start_timestamp, IFNULL(r.start_timestamp, s.start_timestamp), IFNULL(r.start_timestamp, a.start_timestamp)) AS start_timestamp, + GREATEST(s.end_timestamp, IFNULL(r.end_timestamp, s.end_timestamp), IFNULL(r.end_timestamp, a.end_timestamp)) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + s.sorter, + s.lane, + s.total, + IFNULL(r.dest_full, 0)+IFNULL(a.dest_full, 0) AS dest_full, + IFNULL(r.dest_fault, 0)+IFNULL(a.dest_fault, 0) AS dest_fault, + IFNULL(r.dest_disabled, 0)+IFNULL(a.dest_disabled, 0) AS dest_disabled + FROM LANES_SUCCESS s + LEFT JOIN LANES_FAIL_REQ r ON s.sorter=r.sorter AND s.lane=r.lane + LEFT JOIN LANES_FAIL_ALT a ON s.sorter=a.sorter AND s.lane=a.lane +) +SELECT + start_timestamp, + end_timestamp, + sorter, + lane, + /* Counts: */ + total AS total_count, + dest_full AS dest_full_count, + dest_fault AS dest_fault_count, + dest_disabled AS dest_disabled_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + ROUND(dest_full*pph_multiplier) AS dest_full_pph, + ROUND(dest_fault*pph_multiplier) AS dest_fault_pph, + ROUND(dest_disabled*pph_multiplier) AS dest_disabled_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(dest_full/total, 4) AS dest_full_percent, + ROUND(dest_fault/total, 4) AS dest_fault_percent, + ROUND(dest_disabled/total, 4) AS dest_disabled_percent +FROM LANES +ORDER BY sorter, lane; \ No newline at end of file diff --git a/.resources/a428a5a22585f00356ab98547990782bb217aae572a5630c40a2507721b85b11 b/.resources/a428a5a22585f00356ab98547990782bb217aae572a5630c40a2507721b85b11 new file mode 100644 index 00000000..06fca026 --- /dev/null +++ b/.resources/a428a5a22585f00356ab98547990782bb217aae572a5630c40a2507721b85b11 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFFF00", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/a48e961115578e539b88fe2bb7529b50242b68ba99553ffa4033a412cbfe8817 b/.resources/a48e961115578e539b88fe2bb7529b50242b68ba99553ffa4033a412cbfe8817 new file mode 100644 index 00000000..ee02c788 --- /dev/null +++ b/.resources/a48e961115578e539b88fe2bb7529b50242b68ba99553ffa4033a412cbfe8817 @@ -0,0 +1,275 @@ +{ + "custom": { + "plc": "value", + "searchId": "value", + "state": 0, + "string": "Idle" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 1, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 4 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 6 + }, + { + "input": 7, + "output": 7 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "Idle" + }, + { + "input": 1, + "output": "Actuated" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 30, + "width": 30 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "EPC" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_epc" + }, + "type": "property" + } + }, + "props.elements[2].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "fill": { + "paint": "#FFFF00" + }, + "height": "20", + "name": "rect", + "type": "rect", + "width": "20", + "x": "0", + "y": "0" + }, + { + "d": "M 0,0 H 20 V 20 H 0 Z", + "fill": { + "paint": "transparent" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "1.5" + }, + "type": "path" + }, + { + "d": "m 17,10.5 a 7,7 0 0 1 -7,7 7,7 0 0 1 -7,-7 7,7 0 0 1 7,-7 7,7 0 0 1 7,7 z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "1" + }, + "type": "path" + } + ], + "viewBox": "0 0 20 20" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-EPC\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_epc" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/a53ed87e14e0e6c8d483fb685926091fcf848ec2236629b37a9d18b0d921e357 b/.resources/a53ed87e14e0e6c8d483fb685926091fcf848ec2236629b37a9d18b0d921e357 new file mode 100644 index 00000000..fa365a11 --- /dev/null +++ b/.resources/a53ed87e14e0e6c8d483fb685926091fcf848ec2236629b37a9d18b0d921e357 @@ -0,0 +1,64 @@ +WITH ALARM_TIMELAPSES AS ( + /* Group related active & clear events into a single row */ + SELECT + id, /* Unique to each row in alarm_events, used to look up metadata in alarm_event_data */ + source, /* Unique alarm path in Ignition */ + eventtime AS starttime, + displaypath, /* Get description */ + /* Get the last time this event was active within the given time range*/ + CAST(LEAST(COALESCE(( + /* Search for the clear event (if exists) for the outer query's active event */ + SELECT MIN(eventtime) + FROM alarm_events e2 + WHERE e2.eventid = e.eventid /* eventid is unique per alarm instance */ + AND e2.eventtime >= e.eventtime + AND e2.eventtype = 1 /* Look only for the clear event */ + ORDER BY eventtime ASC + ), NOW()), :endDate) AS DATETIME) AS endtime, /* Clamp to end of time range if clear event is after end time */ + priority + FROM alarm_events e + /* The range for both start/end allows for index optimizations */ + WHERE eventtime BETWEEN :startDate AND :endDate + /* Filter shifts */ + {shifts} + /* Filter alarm types */ + AND displaypath IN ({alarms}) + /* Filter out active events */ + AND eventtype = 0 +), HITLIST AS ( + /* Group the same type of alarms together to get hit counts and total durations */ + SELECT + MAX(id) AS id, /* Use latest id to get the latest metadata */ + MIN(starttime) AS firsttime, /* Get the earliest it's been active in the given time range */ + MAX(endtime) AS lasttime, /* Get the latest it's been active in the given time range */ + MIN(displaypath) AS displaypath, /* Get one of the displaypaths associated with source */ + MAX(priority) AS priority, + COUNT(*) AS count, + SUM(TIME_TO_SEC(TIMEDIFF(endtime, starttime))) AS duration + FROM ALARM_TIMELAPSES + GROUP BY source + ORDER BY count DESC + LIMIT 2000 +) +/* Finally, merge metadata into hitlist */ +SELECT + /*e.firsttime, e.lasttime,*/ + /* Translate duration to a string */ + CAST(SEC_TO_TIME(FLOOR(e.duration)) AS CHAR) AS duration, + /* Retrieve instance count and total duration */ + e.count, + dtag.strvalue AS plctag, + ddevice.strvalue AS device, + displaypath AS description +FROM HITLIST e +/* Lookup Device */ +JOIN alarm_event_data dtag ON e.id = dtag.id AND dtag.propname = "PLCTag" +/* Lookup Device */ +JOIN alarm_event_data ddevice ON e.id = ddevice.id AND ddevice.propname = "Device" +/* Lookup Class */ +JOIN alarm_event_data dclass ON e.id = dclass.id AND dclass.propname = "Class" +/* Lookup DeviceType */ +JOIN alarm_event_data dtype ON e.id = dtype.id AND dtype.propname = "DeviceType" +WHERE dclass.strvalue IN ("Error", "Warning") + AND ddevice.strvalue NOT IN ("Ignition") + AND SUBSTRING_INDEX(dtype.strvalue, "_", 1) IN ({devices}); \ No newline at end of file diff --git a/.resources/a6a6ba3ca5588fcf79d1266b359c653c3d482eb0272fb2869c66fa0227f2bdce b/.resources/a6a6ba3ca5588fcf79d1266b359c653c3d482eb0272fb2869c66fa0227f2bdce new file mode 100644 index 00000000..6621a917 --- /dev/null +++ b/.resources/a6a6ba3ca5588fcf79d1266b359c653c3d482eb0272fb2869c66fa0227f2bdce @@ -0,0 +1,696 @@ +################################################################ +################################################################ +## DESC: For generating stats tables from csv tagpath tables +################################################################ +################################################################ +#from __future__ import with_statement +import codecs +import copy +import csv +import os +import re +import StringIO +import uuid +import zipfile +from contextlib import closing +from os import listdir, makedirs +from os.path import isfile, join +from org.python.core import PyNone +from sys import platform +from zipfile import ZipFile, ZipInfo, ZIP_DEFLATED, ZIP_STORED +from com.inductiveautomation.ignition.common.model import ApplicationScope + +############# +### Constants +############# +CP = "D:\\Ignition\\Reports\\Config" +DP = "D:\\Ignition\\Reports\\Data" +TP = "D:\\Ignition\\Reports\\Temp" +if not os.path.exists("D:\\"): + # Not on actual production server, so store locally: + CP = "Ignition\\Reports\\Config" + DP = "Ignition\\Reports\\Data" + TP = "Ignition\\Reports\\Temp" +if ApplicationScope.isGateway(ApplicationScope.getGlobalScope()): + if not os.path.exists(CP): + makedirs(CP) + if not os.path.exists(DP): + makedirs(DP) + if not os.path.exists(TP): + makedirs(TP) + +defaultColumn = { + "field": "", + "visible": True, + "editable": False, + "render": "auto", + "justify": "center", + "align": "center", + "resizable": True, + "sortable": True, + "boolean": "checkbox", + "number": "value", + "numberFormat": "none",#"0,0.##", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "header": { + "justify": "center", + "align": "center", + "style": { + "classes": "table/column-header"#, + #"backgroundColor": "#60B0D2", + #"borderBottomColor": "#D5D5D5", + #"borderBottomStyle": "solid", + #"borderBottomWidth": "1px", + #"borderRightColor": "#D5D5D5", + #"borderRightStyle": "solid", + #"borderRightWidth": "1px" + } + } +} + +defaultSeries = { + "name": "", + "label": { + "text": "" + }, + "visible": True, + "hiddenInLegend": False, + "defaultState": { + "visible": True + }, + "data": { + "source": "", + "x": "", + "y": "" + }, + "xAxis": "", + "yAxis": "", + "zIndex": 0, + "tooltip": { + "enabled": True, + "text": "{name}: [bold]{valueY}[/]", + "cornerRadius": 3, + "pointerLength": 4, + "background": { + "color": "", + "opacity": 1 + } + }, + "render": "column", + "candlestick": { + "open": { + "x": "", + "y": "" + }, + "high": { + "x": "", + "y": "" + }, + "low": { + "x": "", + "y": "" + }, + "appearance": { + "fill": { + "color": "", + "opacity": 1 + }, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "stacked": False, + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "heatRules": { + "enabled": False, + "max": "", + "min": "", + "dataField": "" + } + } + }, + "column": { + "open": { + "x": "", + "y": "" + }, + "appearance": { + "fill": { + "color": "", + "opacity": 1 + }, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "stacked": False, + "width": None, + "height": None, + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "heatRules": { + "enabled": False, + "max": "", + "min": "", + "dataField": "" + } + } + }, + "line": { + "open": { + "x": "", + "y": "" + }, + "appearance": { + "connect": True, + "tensionX": 1, + "tensionY": 1, + "minDistance": 0.5, + "stroke": { + "width": 3, + "opacity": 1, + "color": "", + "dashArray": "" + }, + "fill": { + "opacity": 0, + "color": "" + }, + "bullets": [ + { + "enabled": False, + "render": "circle", + "width": 10, + "height": 10, + "label": { + "text": "{value}", + "position": { + "dx": 0, + "dy": 0 + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "rotation": 0, + "tooltip": { + "enabled": True, + "text": "{name}: [bold]{valueY}[/]", + "cornerRadius": 3, + "pointerLength": 4, + "background": { + "color": "", + "opacity": 1 + } + }, + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + }, + "rotation": "" + }, + "heatRules": { + "enabled": False, + "max": 100, + "min": 2, + "dataField": "" + } + } + ] + } + }, + "stepLine": { + "open": { + "x": "", + "y": "" + }, + "appearance": { + "connect": True, + "tensionX": 1, + "tensionY": 1, + "minDistance": 0.5, + "stroke": { + "width": 3, + "opacity": 1, + "color": "", + "dashArray": "" + }, + "fill": { + "opacity": 0, + "color": "" + }, + "bullets": [ + { + "enabled": True, + "render": "circle", + "width": 10, + "height": 10, + "label": { + "text": "{value}", + "position": { + "dx": 0, + "dy": 0 + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "rotation": 0, + "tooltip": { + "enabled": True, + "text": "{name}: [bold]{valueY}[/]", + "cornerRadius": 3, + "pointerLength": 4, + "background": { + "color": "", + "opacity": 1 + } + }, + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + }, + "rotation": "" + }, + "heatRules": { + "enabled": False, + "max": 100, + "min": 2, + "dataField": "" + } + } + ] + } + } +} + +####################################################### +####################################################### +####################################################### +#### Functions +####################################################### + +def checkRole(filename, roles=[]): + roles = [role.split("/")[-1] for role in roles] + if "Administrator" in roles: # Admin reports has "@" in the beginning + return True + elif filename[0] == "#" and "Maintenance" in roles: + return True + elif filename[0] not in ["@", "#"]: + return True + else: + return False +def checkCompatibility(filename, extensions=[".csv", ".sql"]): + if filename[-4:].lower() in extensions: + return True + else: + return False + +def generateColumn(field, extra={}): + column = copy.deepcopy(defaultColumn) + column["field"] = field + # Convert title: + title = utils.prettyTitle(field) + column["header"]["title"] = title + # Apply rendering styles: + if title.endswith("(%)"): + column["numberFormat"] = "0.##%" + # Apply overrides: + for prop, value in extra.iteritems(): + column[prop] = value + return column + +def generateSeries(field, extra={}): + series = copy.deepcopy(defaultSeries) + series["name"] = field + series["data"]["y"] = field + # Convert title: + series["label"]["text"] = utils.prettyTitle(field) + # Apply overrides: + for prop, value in extra.iteritems(): + series[prop] = value + return series + +def generateZip(filenames, rootPath): + if len(filenames) > 2000: + return {'err': "Too many files! Max of 2000 allowed."} + # Encode filenames (since they are unicode): + filenames = [filename.encode('UTF-8', 'replace') for filename in filenames] + # Determine greatest common prefix to strip out for filenames in zip: + prefix = os.path.commonprefix(filenames) + if prefix.rfind('\\') >= 0: + prefix = prefix[:prefix.rfind('\\')+1] + else: + prefix = "" + prefixOmmit = len(prefix) + # Add files to zip: + zippath = os.path.join(TP, str(uuid.uuid4()) + ".zip") + with ZipFile(zippath, "w", ZIP_DEFLATED) as z: + for filename in filenames: + filepath = os.path.join(rootPath, filename) + try: + z.write(filepath, filename[prefixOmmit:]) + except: + return {'err': "File doesn't exist!"} + # Read contents of zip: + content = system.file.readFileAsBytes(zippath) + os.remove(zippath) + return {'content': content} + +def getConfigs(configPath = CP, roles = []): + if roles is None: + roles = [] + # Get custom reports: + return sorted([f for f in listdir(configPath) if isfile(join(configPath, f)) and checkRole(f, roles) and checkCompatibility(f)]) + +def uploadConfig(filename, contents, configPath = CP): + filepath = join(configPath, filename) + #if system.file.fileExists(filepath): + #return "Config file already exists!\r\nYou must delete the config before uploading over it." + if not checkCompatibility(filename): + return "File extension not compatible!\r\nThe supported extensions are: csv, sql" + else: + system.file.writeFile(filepath, contents, False) + +def downloadConfig(filename, configPath = CP): + filepath = join(configPath, filename) + if not system.file.fileExists(filepath): + return {'err': "Config file doesn't exist!"} + else: + return {'contents': system.file.readFileAsString(filepath, 'UTF-8')} + +def downloadConfigs(filenames, configPath = CP): + if len(filenames) == 1: + filename = filenames[0] + filepath = join(configPath, filename) + if not system.file.fileExists(filepath): + return "Config file doesn't exist!" + else: + system.perspective.download(filename, system.file.readFileAsString(filepath, 'UTF-8')) + elif len(filenames) > 1: + result = generateZip(filenames, configPath) + if "err" in result: + return result["err"] + else: + system.perspective.download("configs.zip", result["content"]) + +def deleteConfigs(filenames, configPath = CP): + for filename in filenames: + filepath = join(configPath, filename) + if not system.file.fileExists(filepath): + return "Config file doesn't exist!" + else: + os.remove(filepath) + +def getOldReports(dataPath = DP, roles = []): + if roles is None: + roles = [] + # Get old reports: + reports = [] + for root, dirs, files in os.walk(dataPath): + path = root[len(dataPath):].strip("\\") + for name in files: + if checkRole(name, roles) and checkCompatibility(name, extensions=[".csv"]): + reports.append((path, name)) + return reports + +def downloadOldReport(filename, dataPath = DP): + filepath = join(dataPath, filename) + if not system.file.fileExists(filepath): + return {'err': "Report file doesn't exist!"} + else: + return {'contents': system.file.readFileAsString(filepath, 'UTF-8')} + +def downloadOldReports(filenames, dataPath = DP): + if len(filenames) > 2000: + return {'err': "Too many files! Max of 2000 allowed."} + # Encode filenames (since they are unicode): + filenames = [filename.encode('UTF-8', 'replace') for filename in filenames] + # Determine greatest common prefix to strip out for filenames in zip: + prefix = os.path.commonprefix(filenames) + if prefix.rfind('\\') >= 0: + prefix = prefix[:prefix.rfind('\\')+1] + else: + prefix = "" + prefixOmmit = len(prefix) + # Open in-memory zip: + zmem = StringIO.StringIO() + # Add files to zip: + with closing(ZipFile(zmem, "w", ZIP_DEFLATED)) as z: + for filename in filenames: + filepath = os.path.join(dataPath, filename) + z.write(filepath, filename[prefixOmmit:]) + # Read contents of zip: + zmem.seek(0) + contents = zmem.read() + # Send zip: + return {'contents': contents} + +def retrieveTags(headers, values, plcTagPaths, plcTagPos, ignitionTagPaths, ignitionTagPos, configPath = CP, server = "Ignition OPC UA Server"): + # Retrieve values of the tag table: + plcResults = system.opc.readValues(server, plcTagPaths) + ignitionResults = system.tag.readAll(ignitionTagPaths) + # Retrieve values of the plc tags: + for i, result in enumerate(system.opc.readValues(server, plcTagPaths)): + (r, c) = plcTagPos[i] + if result.value is not None: + # Retrieved a value, so add it: + values[r][c] = result.value + # Retrieve values of the ignition tags: + for i, result in enumerate(system.tag.readAll(ignitionTagPaths)): + (r, c) = ignitionTagPos[i] + if result.value is not None: + # Retrieved a value, so add it: + val = result.value + try: + val = round(float(val), 2) + except: + pass + values[r][c] = val + # Generate columns + columns = [] + for col in headers: + column = copy.deepcopy(defaultColumn) + column['field'] = col + columns.append(column) + # Return data table: + return {'data': values, 'columns': columns} + +def readDataTable(headers, rows, configPath = CP, server = "Ignition OPC UA Server"): + # Default results: + values = [{} for row in range(len(rows))] + # Extract tags: + plcTagPaths = [] + plcTagPos = [] + ignitionTagPaths = [] + ignitionTagPos = [] + for r, row in enumerate(rows): + for c, val in enumerate(row[:len(headers)]): + column = headers[c] + if val is not None and len(val) > 0 and val[0] == "[": + # Default value: + values[r][column] = { + "value": "ERR: NOT FOUND", + "style": { "background": "#F88" } + } + # Determine type of tag: + if val.lower().startswith("[ignition]"): + # Is an Ignition tag + ignitionTagPaths.append(val[10:]) + ignitionTagPos.append((r, column)) + else: + # Is a PLC tag + plcTagPaths.append(val) + plcTagPos.append((r, column)) + elif val is not None and len(val) > 0 and val[0] == "'": + # Is not a tag, treat as string: + values[r][column] = val[1:] + else: + # Is not a tag, treat as value: + values[r][column] = val + # Retrieve and return data table: + return retrieveTags(headers, values, plcTagPaths, plcTagPos, ignitionTagPaths, ignitionTagPos, configPath, server) + +def readJsonTable(headers, json, configPath = CP, server = "Ignition OPC UA Server"): + # Default results: + values = [{} for row in range(len(json))] + # Extract tags: + plcTagPaths = [] + plcTagPos = [] + ignitionTagPaths = [] + ignitionTagPos = [] + for r, row in enumerate(values): + for column in headers: + val = json[r].get(column, None) + if val is not None and len(val) > 0 and val[0] == "[": + # Default value: + row[column] = { + "value": "ERR: NOT FOUND", + "style": { "background": "#F88" } + } + # Determine type of tag: + if val.lower().startswith("[ignition]"): + # Is an Ignition tag + ignitionTagPaths.append(val[10:]) + ignitionTagPos.append((r, column)) + else: + # Is a PLC tag + plcTagPaths.append(val) + plcTagPos.append((r, column)) + elif val is not None and len(val) > 0 and val[0] == "'": + # Is not a tag, treat as string: + row[column] = val[1:] + else: + # Is not a tag, treat as value: + row[column] = val + # Retrieve and return data table: + return retrieveTags(headers, values, plcTagPaths, plcTagPos, ignitionTagPaths, ignitionTagPos, configPath, server) + +def readCSVTable(filename, configPath = CP, server = "Ignition OPC UA Server"): + # Open CSV file: + filepath = join(configPath, filename) + if system.file.fileExists(filepath): + with codecs.open(filepath, mode='rb', encoding='UTF-8') as csvfile: + rows = csv.reader(csvfile) + headers = rows.next() + rows = list(rows) + # Retrieve data: + return readDataTable(headers, rows, configPath, server) + return {'err': "Config file doesn't exist!"} + +def readSQLTable(filename, configPath = CP): + # Open SQL file: + filepath = join(configPath, filename) + sql = "" + try: + sql = system.file.readFileAsString(filepath, 'UTF-8') + except: + return {'err': "Config file doesn't exist!"} + data = None + values = None + headers = None + try: + data = system.db.runQuery(sql).getUnderlyingDataset() + headers = [name for name in data.getColumnNames()] + def parse(r, c): + v = data.getValueAt(r, c) + return v if v <> None else "null" + values = [{headers[c]: parse(r, c) for c in range(data.getColumnCount())} for r in range(data.getRowCount())] + except: + return {'err': "Bad SQL:\r\n"+sql} + # Generate columns + columns = [] + for col in headers: + column = defaultColumn.copy() + column['field'] = col + columns.append(column) + # Return data table: + return {'data': values, 'columns': columns} + +def readTable(filename, configPath = CP, server = "Ignition OPC UA Server"): + extension = filename.split(".")[-1].lower() + # Check type of data: + if extension == "csv": + return readCSVTable(filename, configPath, server) + elif extension == "sql": + return readSQLTable(filename, configPath) + else: + return {'err': "File extension not compatible!\r\nThe supported extensions are: csv, sql"} + +#def getAlarmHitListBySystem(sys, startDate, endDate, projectName=system.util.getProjectName()): +# # Run the Named Query +# params = {"startDate": startDate, "endDate": endDate, "system": sys} +# try: +# # Gateway Scope: +# return system.db.runNamedQuery(projectName, "AlarmHitListBySystem", params) +# except: +# # Project Scope: +# return system.db.runNamedQuery("AlarmHitListBySystem", params) + + + +def importFromCSV(filename, dataPath = DP, numDefault=0, strDefault=""): + # Open CSV file: + filepath = join(dataPath, filename) + with codecs.open(filepath, mode='rb', encoding='UTF-8') as csvfile: + rows = csv.reader(csvfile) + headers = rows.next() + rows = list(rows) + # Create all other types: + values = [[str(v) for v in row] for row in rows] + textValues = [[""]*len(headers)]*len(values) + errValues = [[False]*len(headers)]*len(values) + isTagValues = errValues + # Return data table: + return { + 'values': system.dataset.toDataSet(headers, values), + 'text': system.dataset.toDataSet(headers, textValues), + 'errors': system.dataset.toDataSet(headers, errValues), + 'isTag': system.dataset.toDataSet(headers, isTagValues), + 'numDefault': numDefault, 'strDefault': strDefault + } + return {'err': "Report file doesn't exist!"} + +def exportToCSV(filename, dataset, text=None, numDefault=None, strDefault=None): + with open(filename, mode='wb') as csv_file: + writer = csv.writer(csv_file, quoting=csv.QUOTE_ALL) + writer.writerow(dataset.getColumnNames()) + dataset = system.dataset.toPyDataSet(dataset) + if text is not None: + text = system.dataset.toPyDataSet(text) + else: + text = dataset + def check(v, r, c): + try: + if len(text[r][c]) > 0 or v in [numDefault, strDefault]: + return text[r][c] + except: + pass + return v + for row in [[check(v, r, c) for c, v in enumerate(row)] for r, row in enumerate(dataset)]: + writer.writerow(row) \ No newline at end of file diff --git a/.resources/a6ac2c3e3630f2ce032a7ffbd751876e557da860562725e6cac5d0266f5d964a b/.resources/a6ac2c3e3630f2ce032a7ffbd751876e557da860562725e6cac5d0266f5d964a new file mode 100644 index 00000000..111ac8b3 --- /dev/null +++ b/.resources/a6ac2c3e3630f2ce032a7ffbd751876e557da860562725e6cac5d0266f5d964a @@ -0,0 +1,18 @@ +WITH GAYLORDS AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + gaylord_id AS gaylord, + SUM(count) AS count + FROM gl_history + WHERE timestamp BETWEEN :startDate AND :endDate + GROUP BY gaylord_id + ORDER BY gaylord_id +) +SELECT + start_timestamp, + end_timestamp, + gaylord, + /* Counts: */ + count +FROM GAYLORDS; \ No newline at end of file diff --git a/.resources/a7a51bdab4f2e795feacb82d3bd8c08d4f3facde4aecd62a8d8a4a87858b3bac b/.resources/a7a51bdab4f2e795feacb82d3bd8c08d4f3facde4aecd62a8d8a4a87858b3bac new file mode 100644 index 00000000..198a4d1e --- /dev/null +++ b/.resources/a7a51bdab4f2e795feacb82d3bd8c08d4f3facde4aecd62a8d8a4a87858b3bac @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#007EFC", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/a7c485e5272f2f907fc261fe574588ebd649716d6be8a4c999d01078733369ea b/.resources/a7c485e5272f2f907fc261fe574588ebd649716d6be8a4c999d01078733369ea new file mode 100644 index 00000000..bfcced54 --- /dev/null +++ b/.resources/a7c485e5272f2f907fc261fe574588ebd649716d6be8a4c999d01078733369ea @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FCC400" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/a7dcacd2e0ed258203104a348a431f51dcfb6b12e96fcf6a8045b296f881a3bf b/.resources/a7dcacd2e0ed258203104a348a431f51dcfb6b12e96fcf6a8045b296f881a3bf new file mode 100644 index 00000000..2512e968 --- /dev/null +++ b/.resources/a7dcacd2e0ed258203104a348a431f51dcfb6b12e96fcf6a8045b296f881a3bf @@ -0,0 +1,1387 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1467, + "width": 709 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "RO16A_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 240, + "x": 25, + "y": 704 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16A_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0" + }, + "width": 240, + "x": 44, + "y": 963 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16_06" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 720, + "x": 303, + "y": 523 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16_07" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 170, + "x": 303, + "y": 1242 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_07/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16_09" + }, + "position": { + "height": 20, + "width": 310, + "x": 322, + "y": 1431 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16_11" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 136, + "x": 651, + "y": 1412 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "RO16A_02CHNP" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 40, + "x": 45, + "y": 943 + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "side": "left" + }, + "status": { + "color": "#FFF" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RO16_08CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 40, + "x": 323, + "y": 1411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_08CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RO16_10CH" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 631, + "y": 1411 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_10CH/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "props": { + "config": { + "side": "left" + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "RO16A_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 26, + "y": 830 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16A_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 138, + "y": 946 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16_06_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 304, + "y": 1204 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16_07_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 304, + "y": 1314 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_07/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16_09_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 470, + "y": 1414 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16_11_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 634, + "y": 1384 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "RO16A_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 26, + "y": 911 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RO16_11_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 672, + "y": 1323 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "RO16A_01_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 26, + "y": 717 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16A_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 26, + "y": 871 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16A_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 26, + "y": 890 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_06_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 262, + "y": 1015 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_07_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 304, + "y": 1379 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_07/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_09_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 599, + "y": 1410 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_11_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 672, + "y": 1344 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_11_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 672, + "y": 1363 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_11_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 630, + "y": 1344 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16_11_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 630, + "y": 1363 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "RO16A_03_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 76, + "y": 947 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16A_03_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 107, + "y": 947 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_06_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 304, + "y": 1077 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_09_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 386, + "y": 1452 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_09_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 417, + "y": 1452 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_11_FIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 614, + "y": 1374 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16_11_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 693, + "y": 1374 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "RO16A_01_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 47, + "y": 886 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16A_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 47, + "y": 871 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_06_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 266, + "y": 998 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_07_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 304, + "y": 1362 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_07/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_09_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 582, + "y": 1414 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_11_BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 672, + "y": 1306 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/BCN1/BLU/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_11_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 672, + "y": 1291 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16_11_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 634, + "y": 1327 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RO16A_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 35, + "y": 942 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16A_01_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 35, + "y": 716 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_01/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16A_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 282, + "y": 953 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16A_03_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 56, + "y": 953 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16A/RO16A_03/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_06_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 313, + "y": 1241 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_06_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 313, + "y": 1046 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_06/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_07_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 313, + "y": 1410 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_07/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_09_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 630, + "y": 1421 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_09_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 334, + "y": 1421 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_09/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_11_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 641, + "y": 1278 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "RO16_11_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0" + }, + "width": 34, + "x": 641, + "y": 1401 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP20/RO16/RO16_11/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/a84a4864a7b228b6dfa6a7bba07262a089752a995b189b9101aafd7d2483de02 b/.resources/a84a4864a7b228b6dfa6a7bba07262a089752a995b189b9101aafd7d2483de02 new file mode 100644 index 00000000..c0472e04 --- /dev/null +++ b/.resources/a84a4864a7b228b6dfa6a7bba07262a089752a995b189b9101aafd7d2483de02 @@ -0,0 +1,264 @@ +{ + "custom": {}, + "params": { + "alwaysShowAll": false, + "isClickable": true, + "tagPath": "" + }, + "propConfig": { + "params.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.isClickable": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 110, + "width": 66 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 30, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 102, + "x": 56, + "y": 1 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Conv/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "props": { + "config": { + "type": "chute" + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 5, + "y": 62 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/AMB/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1, + "y": 82 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/RS1/Restart/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "Half_PE" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 43, + "x": 65, + "y": 79 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Half_PE/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "BCN1_BLU" + }, + "position": { + "height": 16, + "width": 16, + "x": 5, + "y": 47 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/BCN1/BLU/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "Full_PE" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 43, + "x": 65, + "y": 56 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Full_PE/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + } + ], + "meta": { + "name": "root" + }, + "propConfig": { + "props.style.transform": { + "binding": { + "config": { + "path": "view.params.mirror" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scale(-1, 1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openPopup", + "params": [], + "script": "\tif self.view.params.isClickable:\n\t\tid \u003d \"DivChute|\" + self.view.params.tagPath\n\t\ttitle \u003d utils.prettyName(self.view.params.tagPath.split(\"/\")[-1])\n\t\tparams \u003d { \n\t\t\t\"deviceType\": \"divchute\",\n\t\t\t\"props\": { \n\t\t\t\t\"config\": {\n\t\t\t\t\t\"alwaysShowAll\": self.view.params.alwaysShowAll,\n\t\t\t\t\t\"isClickable\": self.view.params.isClickable,\n\t\t\t\t\t#\"rotate\": self.view.params.rotate,\n\t\t\t\t\t\"mirror\": self.view.params.mirror\n\t\t\t\t},\n\t\t\t\t\"status\": {\n\t\t\t\t\t\"tagPath\": self.view.params.tagPath\n\t\t\t\t}\n\t\t \t},\n\t\t \t\"tabs\": [\"Controls\", \"Alarm History\", \"Devices\"]\t\t\n\t\t}\n\t\tsystem.perspective.openPopup(id, \"Popups/DeviceWrapper\", params, title, resizable \u003d True)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/a8c43be0f1607c74bd78fffec0fe7b084efea8bf1bb0a77c82781fcda4375c90 b/.resources/a8c43be0f1607c74bd78fffec0fe7b084efea8bf1bb0a77c82781fcda4375c90 new file mode 100644 index 00000000..3b06f627 --- /dev/null +++ b/.resources/a8c43be0f1607c74bd78fffec0fe7b084efea8bf1bb0a77c82781fcda4375c90 @@ -0,0 +1,17 @@ +{ + "base": { + "style": { + "backgroundColor": "#FFF", + "borderLeftColor": "#000", + "borderLeftStyle": "solid", + "borderLeftWidth": "2px", + "borderRightColor": "#000", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold", + "textAlign": "center" + } + } +} \ No newline at end of file diff --git a/.resources/a99ad7c52e9d24380f63c5a041e31236c41dc9f15185928c7c3cc8f633c48c85 b/.resources/a99ad7c52e9d24380f63c5a041e31236c41dc9f15185928c7c3cc8f633c48c85 new file mode 100644 index 00000000..d9310f1d --- /dev/null +++ b/.resources/a99ad7c52e9d24380f63c5a041e31236c41dc9f15185928c7c3cc8f633c48c85 @@ -0,0 +1,84 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1621, + "width": 969 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "HSS_Singulator" + }, + "position": { + "height": 1601, + "width": 949, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/HSS_Singulator", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Inbound" + }, + "position": { + "height": 40, + "width": 106, + "x": 240, + "y": 1530 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSInboundStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Sorter" + }, + "position": { + "height": 40, + "width": 95, + "x": 700, + "y": 280 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/aa836e4f47a5b2b0af024080cfd8736c8b16812b5aabb7490cfae33978dc35e3 b/.resources/aa836e4f47a5b2b0af024080cfd8736c8b16812b5aabb7490cfae33978dc35e3 new file mode 100644 index 00000000..914bd6ce --- /dev/null +++ b/.resources/aa836e4f47a5b2b0af024080cfd8736c8b16812b5aabb7490cfae33978dc35e3 @@ -0,0 +1,71 @@ +import re +import system + +reSource = re.compile(r"prov\:([^:]+)\:/tag\:([^:]+)\:") +reTagPathProvider = re.compile(r"(\[[^\]]+\])?(.+)") + +SUBVIEWS = { +} + +def resolveScreenByTagPath(tagPath, defaultOverview="Windows/Graphics/Overview", defaultError=""): + try: + (provider, path) = reTagPathProvider.findall(tagPath)[0] + if provider == None: + provider = "[default]" + except: + return defaultError + pathParts = path.split("/") + tags = [provider+"/".join(pathParts[:i])+"/Parameters.GoToScreen" for i in range(len(pathParts), 0, -1)] + for value in system.tag.readBlocking(tags): + if value.quality.isGood(): + value = value.getValue() + if value not in (None, ""): + return value + else: + return defaultError + # Couldn't find a PathToInstance parameter, default to overview: + return defaultOverview + +def resolveScreenBySource(source, defaultOverview="Windows/Graphics/Overview", defaultError=""): + try: + (provider, path) = reSource.findall(source)[0] + tagPath = "["+provider+"]"+path + except: + return defaultOverview + return resolveScreenByTagPath(tagPath, defaultOverview, defaultError) + + +def filterAlarms(screen, alarms): + # Only filter if this isn't the overview: + if screen <> "Windows/Graphics/Overview": + # Lookup views to filter on + views = SUBVIEWS.get(screen, [screen]) + [""] # Include any device tags not set up yet for all views + badrows = [row for row in range(alarms.getRowCount()) if resolveScreenBySource(alarms.getValueAt(row, "source")) not in views] + # Return filtered rows: + return system.dataset.deleteRows(alarms, badrows) + else: + return alarms + +""" +reMCP = re.compile(r"\[([^\]]+)\]") + +def resolveScreen(location, plctag): + conveyor = location.split(".")[0] + conveyor_parts = conveyor.split("-") + conveyor_num = int(conveyor_parts[1].strip(string.ascii_letters)) if len(conveyor_parts) > 1 and conveyor_parts[1].isalnum() and not conveyor_parts[1].isalpha() else 0 + area = conveyor_parts[0] + area_num = int(area.strip(string.ascii_letters)) if area.isalnum() and not area.isalpha() else 0 + mcp = reMCP.findall(plctag)[0] + + return "Windows/Graphics/Overview" + +def filterAlarms(screen, alarms): + # Lookup views to filter on + views = SUBVIEWS.get(screen, []) + # Only filter if there are views we found: + if len(views) > 0: + badrows = [row for row in range(alarms.getRowCount()) if resolveScreen(alarms.getValueAt(row, "device"), alarms.getValueAt(row, "plctag")) not in views] + # Return filtered rows: + return system.dataset.deleteRows(alarms, badrows) + else: + return alarms""" diff --git a/.resources/ac1d56d60ffc4b972bcc058477c6f2f0894e393a4a0825ff55655b4367f0ae32 b/.resources/ac1d56d60ffc4b972bcc058477c6f2f0894e393a4a0825ff55655b4367f0ae32 new file mode 100644 index 00000000..b02087ae --- /dev/null +++ b/.resources/ac1d56d60ffc4b972bcc058477c6f2f0894e393a4a0825ff55655b4367f0ae32 @@ -0,0 +1,13 @@ +{ + "base": { + "style": {} + }, + "variants": [ + { + "pseudo": "hover", + "style": { + "backgroundColor": "#DBEFFA" + } + } + ] +} \ No newline at end of file diff --git a/.resources/ae3072a006fe8ffc01840dae90829cebb025847d277dab15e3827b7514822025 b/.resources/ae3072a006fe8ffc01840dae90829cebb025847d277dab15e3827b7514822025 new file mode 100644 index 00000000..7314cda3 --- /dev/null +++ b/.resources/ae3072a006fe8ffc01840dae90829cebb025847d277dab15e3827b7514822025 @@ -0,0 +1,313 @@ +{ + "custom": {}, + "params": { + "tab": "Active Alarms" + }, + "propConfig": { + "params.tab": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 400, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": " property(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\")\r\n+if(len({../EmbeddedView.props.params.titleExtra})\u003e0,\r\n\t\" (\" + {../EmbeddedView.props.params.titleExtra} + \")\",\r\n\t\"\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Dropdown" + }, + "position": { + "height": 20, + "width": 120, + "x": "calc(100% - 230px)", + "y": 10 + }, + "props": { + "options": [ + { + "label": "Error", + "value": [ + "Error" + ] + }, + { + "label": "Warning", + "value": [ + "Warning", + "Error" + ] + }, + { + "label": "Message", + "value": [ + "Message", + "Warning", + "Error" + ] + } + ], + "search": { + "enabled": false + }, + "style": { + "fontSize": "14px" + }, + "value": [ + "Error" + ] + }, + "type": "ia.input.dropdown" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 20, + "width": 100, + "x": "calc(100% - 335px)", + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Min Class:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"export-data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "custom": { + "pages": [ + "Active", + "History", + "HitList" + ] + }, + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "100%", + "y": 40 + }, + "propConfig": { + "props.currentTabIndex": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "code": "\ttab \u003d self.page.props.path.split(\"/\")[-1]\n\t# Search for tab:\n\tfor i, page in enumerate(self.custom.pages):\n\t\tif page.lower() \u003d\u003d tab:\n\t\t\treturn i\n\t# Default value in case of not finding the tab\n\treturn 0", + "type": "script" + } + ], + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tpage \u003d \"/alarms/\"+self.custom.pages[self.props.currentTabIndex].lower()\n\tif previousValue \u003c\u003e currentValue and self.page.props.path.lower() \u003c\u003e page.lower():\n\t\tsystem.perspective.navigate(page)" + }, + "persistent": true + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "width": 130 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + }, + "tabs": [ + "Active Alarms", + "Alarm History", + "Alarm Hit List" + ] + }, + "type": "ia.container.tab" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "height": "calc(100% - 76px)", + "width": "100%", + "y": 76 + }, + "propConfig": { + "props.params.classDropdownValue": { + "binding": { + "config": { + "path": "../Dropdown.props.value" + }, + "type": "property" + }, + "persistent": true + }, + "props.path": { + "binding": { + "config": { + "expression": " \"Windows/Alarms/\"\r\n+property(\"../TabContainer.custom.pages[\"+{../TabContainer.props.currentTabIndex}+\"]\")" + }, + "transforms": [ + { + "code": "\t# Reset the titleExtra whenever the view is changed to prevent the numbers from showing while loading the new view:\n\tif value \u003c\u003e self.props.path:\n\t\tself.props.params.titleExtra \u003d \"\"\n\t# Return new view path:\n\treturn value", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "params": { + "classDropdownValue": [ + "Error" + ], + "titleExtra": "24 rows" + }, + "path": "Windows/Alarms/Active" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "TimeWidget" + }, + "position": { + "height": 40, + "width": 600 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../TabContainer.props.currentTabIndex" + }, + "transforms": [ + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + }, + { + "input": 2, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "params": { + "endDate": "2021-02-11 00:00:00", + "startDate": "2021-02-10 00:00:00" + }, + "path": "Templates/Widget/TimeWidget" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "min-width": "1000px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/ae6f15937671d219adbf9728d86fb3e70a8048bd62605655a3ed01910e20adf3 b/.resources/ae6f15937671d219adbf9728d86fb3e70a8048bd62605655a3ed01910e20adf3 new file mode 100644 index 00000000..2887093c --- /dev/null +++ b/.resources/ae6f15937671d219adbf9728d86fb3e70a8048bd62605655a3ed01910e20adf3 @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF8000", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/af805333dcd041a41ed50544ed1f23151b1ef69b2ed9148a981e557346027959 b/.resources/af805333dcd041a41ed50544ed1f23151b1ef69b2ed9148a981e557346027959 new file mode 100644 index 00000000..8ddfe1be --- /dev/null +++ b/.resources/af805333dcd041a41ed50544ed1f23151b1ef69b2ed9148a981e557346027959 @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#4747FF" + } + } +} \ No newline at end of file diff --git a/.resources/b0a81bb3dfa0a0904783d34085ada9232a8423dc4c8e0ddb4da1368387e643aa b/.resources/b0a81bb3dfa0a0904783d34085ada9232a8423dc4c8e0ddb4da1368387e643aa new file mode 100644 index 00000000..5bf085b1 --- /dev/null +++ b/.resources/b0a81bb3dfa0a0904783d34085ada9232a8423dc4c8e0ddb4da1368387e643aa @@ -0,0 +1,57 @@ +{ + "custom": {}, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"custom-reports-refreshlist\", {})" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": {}, + "props": { + "defaultSize": { + "height": 300, + "width": 400 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onFileReceived": { + "config": { + "script": "\treports.uploadConfig(event.file.name, event.file.getString())\n\t\n\t# Close popup:\n\t#system.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "FileUpload" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "props": { + "maxUploads": 50, + "supportedFileTypes": [ + "csv", + "sql" + ] + }, + "type": "ia.input.fileupload" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b1969eb2cf2dbea4302e342fedfe3aa3f0205500cf903a401de03a437f128fd0 b/.resources/b1969eb2cf2dbea4302e342fedfe3aa3f0205500cf903a401de03a437f128fd0 new file mode 100644 index 00000000..0360a08c --- /dev/null +++ b/.resources/b1969eb2cf2dbea4302e342fedfe3aa3f0205500cf903a401de03a437f128fd0 @@ -0,0 +1,233 @@ +{ + "custom": { + "plc": "", + "searchId": "value", + "state": 0, + "string": "Inactive" + }, + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Faulted" + }, + { + "input": 0, + "output": "Inactive" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 30 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "text": "PX", + "textStyle": { + "fontSize": "20px", + "textAlign": "center", + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-JR\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_beacons" + }, + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "borderStyle": "solid", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b1cc309fe47cbff1d761ffb3e6112c88b1c69d9e879e50fdc3d6aed78149fe98 b/.resources/b1cc309fe47cbff1d761ffb3e6112c88b1c69d9e879e50fdc3d6aed78149fe98 new file mode 100644 index 00000000..797bdf79 --- /dev/null +++ b/.resources/b1cc309fe47cbff1d761ffb3e6112c88b1c69d9e879e50fdc3d6aed78149fe98 @@ -0,0 +1,286 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "Conveyor" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false, + "showLabel": true, + "type": "belt" + }, + "status": { + "color": { + "inner": "#D2B48C", + "outer": "#C49C67" + }, + "showAlways": false, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Gaylord" + }, + "position": { + "height": 48, + "width": 48, + "x": 76, + "y": 11 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "type": "dex.display.gaylord" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b2329aa61c513199edddf62e45f30796c81009c5c79cf0a69a35511a1739fd8b b/.resources/b2329aa61c513199edddf62e45f30796c81009c5c79cf0a69a35511a1739fd8b new file mode 100644 index 00000000..90d4dab7 --- /dev/null +++ b/.resources/b2329aa61c513199edddf62e45f30796c81009c5c79cf0a69a35511a1739fd8b @@ -0,0 +1,299 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "LS1" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": true, + "showLabel": true + }, + "status": { + "color": [ + "#AAA" + ], + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "LimitSwitch" + }, + "position": { + "height": 48, + "width": 48, + "x": 75.5, + "y": 11 + }, + "propConfig": { + "props.config.showLabel": { + "binding": { + "config": { + "path": "view.params.props.config.showLabel" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.limitswitch" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b4db0e9a9baa9e386a541c82db1e230e82d245e83235800ae0d156591ed75783 b/.resources/b4db0e9a9baa9e386a541c82db1e230e82d245e83235800ae0d156591ed75783 new file mode 100644 index 00000000..d34b1464 --- /dev/null +++ b/.resources/b4db0e9a9baa9e386a541c82db1e230e82d245e83235800ae0d156591ed75783 @@ -0,0 +1,643 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 600, + "width": 750 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "TitleLabel" + }, + "position": { + "height": 35, + "width": "100%" + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "1px", + "color": "#FFF", + "fontSize": "20px", + "fontWeight": "bold", + "paddingLeft": 5 + }, + "text": "Heatmap Options" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "ShiftLabel" + }, + "position": { + "height": 25, + "width": "33%", + "y": 40 + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "solid", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Filter By Time \u0026 Shifts" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "TimeStartLabel" + }, + "position": { + "height": 30, + "width": 75, + "y": 65 + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderLeftStyle": "solid", + "borderRightStyle": "solid", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Start:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tstartDate \u003d self.props\n\tendDate \u003d self.getSibling(\"TimeEndInput\").props\n\thours \u003d system.date.hoursBetween(startDate.value, endDate.value)\n\tif hours \u003e 30*24:\n\t\t# Cap endDate to within 30 days of startDate:\n\t\tendDate.value \u003d system.date.addDays(startDate.value, 30)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "TimeStartInput" + }, + "position": { + "height": 30, + "width": "calc(33% - 75px)", + "x": 75, + "y": 65 + }, + "props": { + "format": "YYYY-MM-DD HH:mm:ss", + "formattedValue": "2021-02-13 00:00:00", + "formattedValues": { + "date": "2021-02-13", + "datetime": "2021-02-13 00:00:00", + "time": "00:00:00" + }, + "value": { + "$": [ + "ts", + 192, + 1613256769474 + ], + "$ts": 1613192400000 + } + }, + "type": "ia.input.date-time-input" + }, + { + "meta": { + "name": "TimeEndLabel" + }, + "position": { + "height": 30, + "width": 75, + "y": 95 + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderLeftStyle": "solid", + "borderRightStyle": "solid", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "End:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tstartDate \u003d self.getSibling(\"TimeStartInput\").props\n\tendDate \u003d self.props\n\thours \u003d system.date.hoursBetween(startDate.value, endDate.value)\n\tif hours \u003e 30*24:\n\t\t# Cap startDate to within 30 days of endDate:\n\t\tstartDate.value \u003d system.date.addDays(endDate.value, -30)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "TimeEndInput" + }, + "position": { + "height": 30, + "width": "calc(33% - 75px)", + "x": 75, + "y": 95 + }, + "props": { + "format": "YYYY-MM-DD HH:mm:ss", + "formattedValue": "2021-02-14 00:00:00", + "formattedValues": { + "date": "2021-02-14", + "datetime": "2021-02-14 00:00:00", + "time": "00:00:00" + }, + "value": { + "$": [ + "ts", + 192, + 1613256769474 + ], + "$ts": 1613278800000 + } + }, + "type": "ia.input.date-time-input" + }, + { + "meta": { + "name": "AlarmTypeTable" + }, + "position": { + "height": "calc(100% - 145px)", + "width": "33%", + "x": 251.25, + "y": 90 + }, + "propConfig": { + "props.cells.style.backgroundColor": { + "binding": { + "config": { + "path": "../AlarmTypeAll.props.selected" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#888" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "queryPath": "Alarms/HeatmapUniqueAlarms" + }, + "type": "query" + } + }, + "props.selection.enableRowSelection": { + "binding": { + "config": { + "expression": "!{../AlarmTypeAll.props.selected}" + }, + "type": "expr" + } + } + }, + "props": { + "enableHeader": false, + "pager": { + "bottom": false, + "initialOption": 5 + }, + "selection": { + "mode": "multiple interval" + } + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "AlarmTypeLabel" + }, + "position": { + "height": 25, + "width": "33%", + "x": 251.25, + "y": 40 + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "solid", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Filter By Alarm Type" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "AlarmTypeAll" + }, + "position": { + "height": 25, + "width": "33%", + "x": 251.25, + "y": 65 + }, + "props": { + "selected": true, + "style": { + "backgroundColor": "#F0F0F0", + "borderBottomStyle": "solid", + "borderLeftStyle": "solid", + "borderRightStyle": "solid" + }, + "text": "Select All" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "ShiftAll" + }, + "position": { + "height": 25, + "width": "33%", + "y": 125 + }, + "props": { + "selected": true, + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "solid" + }, + "text": "No Shift Filter (24/7)" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "ShiftTable" + }, + "position": { + "height": "calc(100% - 205px)", + "width": "33%", + "y": 150 + }, + "propConfig": { + "props.cells.style.backgroundColor": { + "binding": { + "config": { + "path": "../ShiftAll.props.selected" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#888" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Shifts" + }, + "transforms": [ + { + "code": "\tdata \u003d [[value.getValueAt(r, \"Name\")] for r in range(value.getRowCount()) if value.getValueAt(r, \"Enabled\")]\n\tdata \u003d [r for r in data if r[0] !\u003d \"\"]\n\treturn system.dataset.toDataSet([\"description\"], data)", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.selection.enableRowSelection": { + "binding": { + "config": { + "expression": "!{../ShiftAll.props.selected}" + }, + "type": "expr" + } + } + }, + "props": { + "enableHeader": false, + "pager": { + "bottom": false, + "initialOption": 5 + }, + "selection": { + "mode": "multiple interval" + } + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "DeviceTypeLabel" + }, + "position": { + "height": 25, + "width": "33%", + "x": 502.5, + "y": 40 + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "solid", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Filter By Device Type" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DeviceTypeAll" + }, + "position": { + "height": 25, + "width": "33%", + "x": 502.5, + "y": 65 + }, + "props": { + "selected": true, + "style": { + "backgroundColor": "#F0F0F0", + "borderBottomStyle": "solid", + "borderLeftStyle": "solid", + "borderRightStyle": "solid" + }, + "text": "Select All" + }, + "type": "ia.input.checkbox" + }, + { + "meta": { + "name": "DeviceTypeTable" + }, + "position": { + "height": "calc(100% - 145px)", + "width": "33%", + "x": 502.5, + "y": 90 + }, + "propConfig": { + "props.cells.style.backgroundColor": { + "binding": { + "config": { + "path": "../DeviceTypeAll.props.selected" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#888" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.selection.enableRowSelection": { + "binding": { + "config": { + "expression": "!{../DeviceTypeAll.props.selected}" + }, + "type": "expr" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "data": { + "$": [ + "ds", + 192, + 1597260961733 + ], + "$columns": [ + { + "data": [ + "Beacons", + "EIPs", + "Encoders", + "Estops", + "Limit Switches", + "MCPs", + "Photo Eyes", + "Push Buttons", + "Scanners", + "VFDs", + "Solenoids", + "Conveyors" + ], + "name": "description", + "type": "String" + }, + { + "data": [ + "beacon", + "eip", + "encoder", + "estop", + "limitswitch", + "mcp", + "photoeye", + "pushbutton", + "scanner", + "vfd", + "solenoid", + "conveyor" + ], + "name": "type", + "type": "String" + } + ] + }, + "enableHeader": false, + "pager": { + "bottom": false, + "initialOption": 5 + }, + "selection": { + "mode": "multiple interval" + } + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\timport re\n\timport time\n\t\n\t# Gather Shifts:\n\tshifts \u003d []\n\tshiftsQuery \u003d []\n\tshiftsText \u003d \"None\"\n\tif not self.getSibling(\"ShiftAll\").props.selected:\n\t\t# Retrieve shift table:\n\t\tshiftTable \u003d utils.datasetToJSON(system.tag.readBlocking([\"[default]Gateway/Shifts\"])[0].value)\n\t\tshiftTable \u003d {row[\"Name\"]: row for row in shiftTable}\n\t\t# Grab selection:\n\t\tselection \u003d self.getSibling(\"ShiftTable\").props.selection.data\n\t\tshifts \u003d [dat[\"description\"] for dat in selection]\n\t\tshiftsText \u003d \", \".join(shifts)\n\t\t# Generate shift query:\n\t\tfor shift in selection:\n\t\t\tif shift[\"description\"] in shiftTable:\n\t\t\t\tshift \u003d shiftTable[shift[\"description\"]]\n\t\t\t\tline \u003d []\n\t\t\t\t# Add day filter:\n\t\t\t\tdays \u003d [str(i+1) for i, day in enumerate([\"isSunday\", \"isMonday\", \"isTuesday\", \"isWednesday\", \"isThursday\", \"isFriday\", \"isSaturday\"]) if shift[day]]\n\t\t\t\t# If no days, ignore this shift:\n\t\t\t\tif len(days) \u003c\u003d 0:\n\t\t\t\t\tshiftsQuery.append(\"false\")\n\t\t\t\t\tcontinue\n\t\t\t\t# If not all days are present, then add day filter:\n\t\t\t\tif len(days) \u003c 7:\n\t\t\t\t\tline.append(\"DAYOFWEEK(eventtime) IN (\"+\",\".join(days)+\")\")\n\t\t\t\t# If time range is incompatible (starttime \u003e\u003d endtime), then remove shift:\n\t\t\t\t# TODO: Handle time ranges that go across midnight\n\t\t\t\tif shift[\"StartHour\"]*60+shift[\"StartMinute\"] \u003e\u003d shift[\"EndHour\"]*60+shift[\"EndMinute\"]:\n\t\t\t\t\tshiftsQuery.append(\"false\")\n\t\t\t\t\tcontinue\n\t\t\t\t# Add time range:\n\t\t\t\tline.append(\"TIME(eventtime) BETWEEN \\\"{:02d}:{:02d}:00\\\" AND \\\"{:02d}:{:02d}:00\\\"\".format(shift[\"StartHour\"], shift[\"StartMinute\"], shift[\"EndHour\"], shift[\"EndMinute\"]))\n\t\t\t\t# If nothing was added to line, then treat shift as 24/7, which then we can ignore all shifts:\n\t\t\t\tif len(line) \u003c\u003d 0:\n\t\t\t\t\tshiftsQuery \u003d []\n\t\t\t\t\tbreak\n\t\t\t\t# Add shift to shifts:\n\t\t\t\tshiftsQuery.append(\" AND \".join(line))\n\t# Gather Alarms:\n\talarms \u003d []\n\talarmsText \u003d \"All\"\n\tif not self.getSibling(\"AlarmTypeAll\").props.selected:\n\t\talarms \u003d self.getSibling(\"AlarmTypeTable\").props.selection.data\n\t\talarms \u003d [dat[\"description\"] for dat in alarms]\n\t\talarmsText \u003d \", \".join(alarms)\n\tif len(alarms) \u003d\u003d 0:\n\t\talarms \u003d self.getSibling(\"AlarmTypeTable\").props.data\n\t\talarms \u003d [alarms.getValueAt(r, \"description\") for r in range(alarms.getRowCount())]\n\t# Gather Devices:\n\tdevices \u003d []\n\tdeviceTypes \u003d []\n\tdevicesText \u003d \"All\"\n\tif self.getSibling(\"DeviceTypeAll\").props.selected:\n\t\tdataset \u003d self.getSibling(\"DeviceTypeTable\").props.data\n\t\tdevices \u003d [dataset.getValueAt(row, \"description\") for row in range(dataset.getRowCount())]\n\t\tdeviceTypes \u003d [dataset.getValueAt(row, \"type\") for row in range(dataset.getRowCount())]\n\telse:\n\t\tdataset \u003d self.getSibling(\"DeviceTypeTable\").props.data\n\t\tdevices \u003d [dat[\"description\"] for dat in self.getSibling(\"DeviceTypeTable\").props.selection.data]\n\t\tdeviceTypes \u003d [dataset.getValueAt(row, \"type\") for row in range(dataset.getRowCount()) if dataset.getValueAt(row, \"description\") in devices]\n\t\tdevicesText \u003d \", \".join(devices)\n\tdevices \u003d [dat.replace(\" \", \"\") for dat in devices]\n\tif len(devices) \u003d\u003d 0:\n\t\tdevicesText \u003d \"None\"\n\t\n\t# Run report:\n\t# Sanitize:\n\talarmQuery \u003d (\u0027\"\u0027+alarm.replace(\"\\\\\", \"\\\\\\\\\").replace(\u0027\"\u0027, \u0027\\\\\"\u0027)+\u0027\"\u0027 for alarm in alarms)\n\tshiftsQuery \u003d [\"(\"+shift+\")\" for shift in shiftsQuery]\n\tparams \u003d {\n\t\t\"startDate\": self.getSibling(\"TimeStartInput\").props.formattedValue,\n\t\t\"endDate\": self.getSibling(\"TimeEndInput\").props.formattedValue,\n\t\t\"alarms\": \",\".join(alarmQuery),\n\t\t\"shifts\": \" \" if len(shiftsQuery) \u003d\u003d 0 else \"AND (\"+\" OR \".join(shiftsQuery)+\")\",\n\t\t\"devices\": \u0027\"\"\u0027 if len(deviceTypes) \u003d\u003d 0 else \",\".join([\u0027\"\u0027+device+\u0027\"\u0027 for device in deviceTypes])\n\t}\n\t#system.perspective.print(params)\n\tdata \u003d system.db.runNamedQuery(\"Alarms/Heatmap\", params)\n\t\n\t# Apply and activate heatmap:\n\tself.session.custom.heatmapSettings \u003d {\n\t\t\"enabled\": True,\n\t\t\"time\": {\n\t\t\t\"start\": params[\"startDate\"],\n\t\t\t\"end\": params[\"endDate\"]\n\t\t},\n\t\t\"shifts\": shifts,\n\t\t\"alarms\": alarms,\n\t\t\"devices\": devices,\n\t\t\"shiftsText\": shiftsText,\n\t\t\"alarmsText\": alarmsText,\n\t\t\"devicesText\": devicesText,\n\t\t\"data\": data\n\t}\n\t\n\t# Close popup:\n\tif self.session.custom.isMobile:\n\t\tsystem.perspective.navigate(page\u003d\"/\")\n\telse:\n\t\tsystem.perspective.closePopup(\"\")\n\t\t# Force client to graphics screens only:\n\t\tif self.page.props.primaryView !\u003d \"Windows/GraphicsWrapper\":\n\t\t\tsystem.perspective.navigate(page\u003d\"/\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "RunButton" + }, + "position": { + "height": 50, + "width": "100%", + "y": "calc(100% - 50px)" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": " {../TimeStartInput.props.value} !\u003d null\r\n\u0026\u0026{../TimeEndInput.props.value} !\u003d null\r\n\u0026\u0026({../ShiftAll.props.selected}||{../ShiftTable.props.selection.selectedRow}!\u003dnull)\r\n\u0026\u0026({../AlarmTypeAll.props.selected}||{../AlarmTypeTable.props.selection.selectedRow}!\u003dnull)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Run heatmap" + }, + "type": "ia.input.button" + } + ], + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tnow \u003d system.date.now()\n\tstart \u003d system.date.midnight(now)\n\tend \u003d system.date.addDays(start, 1)\n\tself.getChild(\"TimeStartInput\").props.value \u003d start\n\tself.getChild(\"TimeEndInput\").props.value \u003d end" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "window", + "minWidth": "750px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b5b39c7f1257c074180e04f0f723b59b1d618454babbdf9581a6fdae60c87eaf b/.resources/b5b39c7f1257c074180e04f0f723b59b1d618454babbdf9581a6fdae60c87eaf new file mode 100644 index 00000000..5dcbe572 --- /dev/null +++ b/.resources/b5b39c7f1257c074180e04f0f723b59b1d618454babbdf9581a6fdae60c87eaf @@ -0,0 +1,495 @@ +{ + "custom": { + "isMaint": false + }, + "params": { + "titleExtra": "0 of 0" + }, + "propConfig": { + "custom.isMaint": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\ttabs \u003d []\n\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Jam Cameras" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onEditCellCommit": { + "config": { + "script": "\t# Update jam cameras:\n\tdata \u003d system.dataset.updateRow(self.props.data, event.row, {\n\t\tevent.column: event.value\n\t})\n\tsystem.tag.writeBlocking([\"[default]Gateway/JamCameras\"], [data])" + }, + "scope": "G", + "type": "script" + } + }, + "dom": { + "onKeyDown": { + "config": { + "script": "\tif event.key \u003d\u003d \"Escape\": # Escape key\n\t\tself.props.selection.selectedColumn \u003d None\n\t\tself.props.selection.selectedRow \u003d None" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "JamCameras" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "100%", + "y": 40 + }, + "propConfig": { + "props.columns[0].editable": { + "binding": { + "config": { + "path": "view.custom.isMaint" + }, + "type": "property" + } + }, + "props.columns[1].editable": { + "binding": { + "config": { + "path": "view.custom.isMaint" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/JamCameras" + }, + "type": "tag" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "field": "Name", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 120 + }, + { + "align": "center", + "boolean": "value", + "dateFormat": "MM/DD/YYYY", + "field": "Address", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 300 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"JamCameras\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tcameras \u003d self.getSibling(\"JamCameras\")\n\tnewRow \u003d [\"New Jam Camera\", \"http://localhost\"]\n\tdata \u003d system.dataset.addRow(cameras.props.data, newRow)\n\tsystem.tag.writeBlocking([\"[default]Gateway/JamCameras\"], [data])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_New" + }, + "position": { + "height": 34, + "width": 140, + "x": "calc(100% - 435px)", + "y": 48 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": " {view.custom.isMaint}\r\n\u0026\u0026 len({../JamCameras.props.data}) \u003c 32" + }, + "type": "expr" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.isMaint" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": {}, + "text": "Add New" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tcameras \u003d self.getSibling(\"JamCameras\")\n\trow \u003d cameras.props.selection.selectedRow\n\tdata \u003d system.dataset.deleteRow(cameras.props.data, row)\n\tsystem.tag.writeBlocking([\"[default]Gateway/JamCameras\"], [data])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Delete" + }, + "position": { + "height": 34, + "width": 140, + "x": "calc(100% - 290px)", + "y": 48 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": " {view.custom.isMaint}\r\n\u0026\u0026 {../JamCameras.props.selection.selectedRow} !\u003d null" + }, + "type": "expr" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.isMaint" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Red" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": {}, + "text": "Delete Selected" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tcameras \u003d self.getSibling(\"JamCameras\")\n\turl \u003d cameras.props.data.getValueAt(cameras.props.selection.selectedRow, \"Address\")\n\tsystem.perspective.navigate(url\u003durl, newTab\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Open" + }, + "position": { + "height": 34, + "width": 140, + "x": "calc(100% - 145px)", + "y": 48 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "{../JamCameras.props.selection.selectedRow} !\u003d null" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Open Selected" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"export-data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Export" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b646c9c085c9bcbffd2d6abf9bb617aa87ec1f198cc0b145d36dac8ae49b2efa b/.resources/b646c9c085c9bcbffd2d6abf9bb617aa87ec1f198cc0b145d36dac8ae49b2efa new file mode 100644 index 00000000..264f3b15 --- /dev/null +++ b/.resources/b646c9c085c9bcbffd2d6abf9bb617aa87ec1f198cc0b145d36dac8ae49b2efa @@ -0,0 +1,130 @@ +{ + "custom": {}, + "params": { + "titleExtra": "625 rows", + "usesTimewidget": false + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "false" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Ethernet" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.columns": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Ethernet" + }, + "transforms": [ + { + "expression": "jsonGet({value}, \"columns\")", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Ethernet" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value.data)\n\tself.view.params.titleExtra \u003d \"{:n} rows\".format(cou)\n\t# Return data\n\treturn value.data", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Ethernet\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b9096d493b10d4ac64e5363c7c378f76daf952b742df59574c55625080b2f37e b/.resources/b9096d493b10d4ac64e5363c7c378f76daf952b742df59574c55625080b2f37e new file mode 100644 index 00000000..79f787fb --- /dev/null +++ b/.resources/b9096d493b10d4ac64e5363c7c378f76daf952b742df59574c55625080b2f37e @@ -0,0 +1,323 @@ +{ + "custom": { + "plc": "value", + "searchId": "value", + "state": 0, + "state_string": "Clear", + "string": "Clear" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 1, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 4 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 6 + }, + { + "input": 7, + "output": 7 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Clear", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Clear" + }, + { + "input": 2, + "output": "Blocked" + }, + { + "input": 3, + "output": "Disabled" + }, + { + "input": 4, + "output": "Jammed" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 80 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Photoeye" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#000000" + }, + { + "input": 3, + "output": "#800080" + }, + { + "input": 4, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.elements[2].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00FF00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#000000" + }, + { + "input": 3, + "output": "#800080" + }, + { + "input": 4, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "d": "m 28.763932,20 -20,10 V 10 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "path" + }, + { + "stroke": { + "paint": "#000000", + "width": "2" + }, + "stroke-dasharray": "4,4", + "type": "line", + "x1": "30", + "x2": "60", + "y1": "20", + "y2": "20" + }, + { + "fill": {}, + "height": "20", + "stroke": { + "paint": "#000000", + "width": "2" + }, + "type": "rect", + "width": "6", + "x": "60", + "y": "10" + } + ], + "viewBox": "0 0 80 40" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-Photoeye\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\n\talarm \u003d []\n\tmessage \u003d None\n\n\tsleep(0.5)\n\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_photoeyes" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/b925d000320ca364358c980500a592c59bc5d0145edb68ec7a6323754f252376 b/.resources/b925d000320ca364358c980500a592c59bc5d0145edb68ec7a6323754f252376 new file mode 100644 index 00000000..f53b8f55 --- /dev/null +++ b/.resources/b925d000320ca364358c980500a592c59bc5d0145edb68ec7a6323754f252376 @@ -0,0 +1,319 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "FL01_01CH" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "isRightOfSorter": false, + "mirror": false + }, + "status": { + "tagPath": "[default]MCP03/FL01/FL01_01CH/Conv" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.isRightOfSorter": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.mirror": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 349, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ChuteLabel" + }, + "position": { + "height": 30, + "width": 100, + "x": 198, + "y": 298.8 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.meta.name" + }, + "transforms": [ + { + "code": "\treturn utils.prettyName(value)", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/SetEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Enable" + }, + "position": { + "height": 40, + "width": 120, + "x": 120, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "enabled": false, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Enable" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/SetEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Disable" + }, + "position": { + "height": 40, + "width": 120, + "x": 260, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "enabled": false, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/CH/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Red" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Disable" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "ChuteLabel_0" + }, + "position": { + "height": 35, + "width": 260, + "x": 120, + "y": 63 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/StatusText" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Conveyor" + }, + "position": { + "height": 59, + "width": 224, + "x": 136, + "y": 167 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/Footer/view.json b/.resources/b98b0c6e1aa5ba7ac2575c8990b9ef46361d857e49c5e495b1a39b5a33ba5a2e similarity index 100% rename from BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/Footer/view.json rename to .resources/b98b0c6e1aa5ba7ac2575c8990b9ef46361d857e49c5e495b1a39b5a33ba5a2e diff --git a/.resources/b9d2f87f39bc63ef3bec45755e5351ca51c5c3dd1ef9d5c4c6397d3d1fc8a6a8 b/.resources/b9d2f87f39bc63ef3bec45755e5351ca51c5c3dd1ef9d5c4c6397d3d1fc8a6a8 new file mode 100644 index 00000000..e2856f54 --- /dev/null +++ b/.resources/b9d2f87f39bc63ef3bec45755e5351ca51c5c3dd1ef9d5c4c6397d3d1fc8a6a8 @@ -0,0 +1,1062 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1700 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "LaneOEE" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Status/LaneOEE" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "firsttime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "lasttime", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "lane", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Lane" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "enabled_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Enabled Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "empty_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Empty Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full25_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "25% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full50_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full75_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "75% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full100_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "100% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jammed_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jammed Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "inbound_oee", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Inbound OEE" + }, + "justify": "center", + "number": "value", + "numberFormat": "0.00%", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 120 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "induct_oee", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Induct OEE" + }, + "justify": "center", + "number": "value", + "numberFormat": "0.00%", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 120 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Manual Lane Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "Icon" + }, + "position": { + "height": 30, + "width": 30, + "x": "calc(100% - 35px)", + "y": 5 + }, + "props": { + "path": "material/help_outline" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": 30, + "width": 30, + "x": "calc(100% - 35px)", + "y": 5 + }, + "props": { + "status": { + "tooltip": "\u003cb\u003e\u003cu\u003eAbout Report:\u003c/u\u003e\u003c/b\u003e\u003cbr\u003eThis report adds up the duration of each state each manual chute has entered.\u003cbr\u003eIt then computes the Inbound and Induct OEE.\u003cbr\u003e\u003cbr\u003eThis report filters the data for the time period selected in the top left.\u003cbr\u003eDurations are in the format: HH:mm:ss\u003cbr\u003eMax duration is 899:59:59\u003cbr\u003e\u003cbr\u003e\u003cb\u003e\u003cu\u003eColumns:\u003c/u\u003e\u003c/b\u003e\u003cbr\u003eStart/End Timestamp - the range of time used to compute the remaining columns for this row\u003cbr\u003eLane - the manual chute\u003cbr\u003eEnabled Duration - the total time the lane is enabled\u003cbr\u003eAvailable Duration - the total time the lane is enabled and not 100% full, jammed, or faulted\u003cbr\u003eEmpty Duration - the total time the lane is enabled and not 50% full, 100% full, jammed, or faulted\u003cbr\u003e50% Full Duration - the total time the lane is enabled and 50% full\u003cbr\u003e100% Full Duration - the total time the lane is enabled and 100% full\u003cbr\u003eJammed Duration - the total time the lane is enabled and jammed\u003cbr\u003eFaulted Duration - the total time the lane is enabled and either the divert arm or FIO is faulted\u003cbr\u003eInbound OEE - the efficiency of the FMS logic to keep the lane at 50% or 100% full, ignores jammed or faulted\u003cbr\u003eInduct OEE - the efficiency of the operators to keep the lane at empty or 50% full, ignores faulted\u003cbr\u003e\u003cbr\u003e\u003cb\u003e\u003cu\u003eInbound OEE:\u003c/u\u003e\u003c/b\u003e\u003cbr\u003eThis is the efficiency of the FMS logic to keep the lane at 50% or 100% full.\u003cbr\u003eThis calculation will ignore the time spent in the jammed or faulted state.\u003cbr\u003eThe ideal efficiency is 100%. The formula is:\u003cbr\u003e(Full50 + Full100) / (Empty + Full50 + Full100)\u003cbr\u003e\u003cbr\u003e\u003cb\u003e\u003cu\u003eInduct OEE:\u003c/u\u003e\u003c/b\u003e\u003cbr\u003eThis is the efficiency of the operators to keep the lane at empty or 50% full.\u003cbr\u003eThis calculation will ignore the time spent in the faulted state.\u003cbr\u003eThe time spent in the jammed state will negatively impact this efficiency.\u003cbr\u003eThe ideal efficiency is 100%. The formula is:\u003cbr\u003e(Empty + Full50) / (Empty + Full50 + Full100 + Jammed)" + } + }, + "type": "dex.display.tooltipoverlay" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/bc9ab1b93c7a6e61b1ae7ea27e33dcb031811b7a628e5f5a36f4df8082312bf0 b/.resources/bc9ab1b93c7a6e61b1ae7ea27e33dcb031811b7a628e5f5a36f4df8082312bf0 new file mode 100644 index 00000000..e10f42f0 --- /dev/null +++ b/.resources/bc9ab1b93c7a6e61b1ae7ea27e33dcb031811b7a628e5f5a36f4df8082312bf0 @@ -0,0 +1,679 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "S1-CH1" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "rotation": 0 + }, + "status": { + "tagPath": "[default]MCP04/CH_20116/CH_20116" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.rotation": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 500, + "width": 900 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Commands" + }, + "position": { + "height": 180, + "width": "calc(100% - 330px)", + "x": 10, + "y": 10 + }, + "props": { + "style": { + "backgroundColor": "#FF0", + "borderStyle": "solid" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Instructions" + }, + "position": { + "height": "calc(100% - 20px)", + "width": 300, + "x": "calc(100% - 310px)", + "y": 10 + }, + "props": { + "style": { + "backgroundColor": "#FF0", + "borderStyle": "solid" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Instructions_Label" + }, + "position": { + "height": 32, + "width": 300, + "x": "calc(100% - 310px)", + "y": 10 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Oiler Procedure" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Instructions_Text" + }, + "position": { + "height": "calc(100% - 52px)", + "width": 300, + "x": "calc(100% - 310px)", + "y": 42 + }, + "props": { + "markdown": { + "escapeHtml": false + }, + "source": "1) Make sure system is stopped and press enable button\u003cbr\u003e\n2) Press \"START SORTER\" to run the sorter at 10% speed\u003cbr\u003e\n3) Press \"START OIL CYCLE\" or the start push button on the oiler start/stop switch to begin the oil cycle\u003cbr\u003e\n4) Stop the sorter once the Cycle Finished indicator appears\u003cbr\u003e\n5) Disable Oiler once system is stopped", + "style": { + "paddingLeft": 5, + "paddingRight": 5 + } + }, + "type": "ia.display.markdown" + }, + { + "meta": { + "name": "Commands_Label" + }, + "position": { + "height": 40, + "width": 140, + "x": 15, + "y": 20 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Oiler Commands:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttags \u003d [\"[default]MCP21_Custom/Oiler/Commands/MaintEnable\"]\n\tvalues \u003d [self.props.text \u003d\u003d \"Click to Enable\"]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "EnableCommands" + }, + "position": { + "height": 40, + "width": 100, + "x": 160, + "y": 20 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "isGood({[default]MCP21_Custom/Oiler/Commands/MaintEnable})\r\n\u0026\u0026try((!{[default]MCP21_Custom/Oiler/Commands/MaintEnable}||{[default]MCP21_Custom/Oiler/Status/SorterSpeed}\u003d0), false)\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)" + }, + "type": "expr" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Oiler/Commands/MaintEnable" + }, + "transforms": [ + { + "expression": "try({value}, false)", + "type": "expression" + }, + { + "fallback": "Buttons/Red", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Oiler/Commands/MaintEnable" + }, + "transforms": [ + { + "expression": "try({value}, false)", + "type": "expression" + }, + { + "fallback": "Click to Disable", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Click to Enable" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {} + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttags \u003d [\"[default]MCP21_Custom/Oiler/Commands/StartSorter\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartSorter" + }, + "position": { + "height": 40, + "width": 100, + "x": 265, + "y": 20 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "try({[default]MCP21_Custom/Oiler/Commands/MaintEnable}, false)\r\n\u0026\u0026isGood({[default]MCP21_Custom/Oiler/Commands/StartSorter})\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Green" + }, + "text": "Start Sorter" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttags \u003d [\"[default]MCP21_Custom/Oiler/Commands/StopSorter\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StopSorter" + }, + "position": { + "height": 40, + "width": 100, + "x": 370, + "y": 20 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "try({[default]MCP21_Custom/Oiler/Commands/MaintEnable}, false)\r\n\u0026\u0026isGood({[default]MCP21_Custom/Oiler/Commands/StopSorter})\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Red", + "color": "#FFF" + }, + "text": "Stop Sorter" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttags \u003d [\"[default]MCP21_Custom/Oiler/Commands/StartOilCycle\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartOilCycle" + }, + "position": { + "height": 40, + "width": 100, + "x": 475, + "y": 20 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "try({[default]MCP21_Custom/Oiler/Commands/MaintEnable}, false)\r\n\u0026\u0026isGood({[default]MCP21_Custom/Oiler/Commands/StartOilCycle})\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Green" + }, + "text": "Start Oil Cycle" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Status_Label" + }, + "position": { + "height": 50, + "width": 140, + "x": 15, + "y": 80 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Oiler Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "CycleActive" + }, + "position": { + "height": 50, + "width": 100, + "x": 160, + "y": 80 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Oiler/Status/CycleActive" + }, + "transforms": [ + { + "expression": "try({value}, true)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#0F0", + "borderStyle": "solid", + "textAlign": "center" + }, + "text": "Cycle Active" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "CycleFinished" + }, + "position": { + "height": 50, + "width": 100, + "x": 265, + "y": 80 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Oiler/Status/CycleFinished" + }, + "transforms": [ + { + "expression": "try({value}, true)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#0F0", + "borderStyle": "solid", + "textAlign": "center" + }, + "text": "Cycle Finished" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "CycleFaulted" + }, + "position": { + "height": 50, + "width": 100, + "x": 370, + "y": 80 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP21_Custom/Oiler/Status/CycleFaulted" + }, + "transforms": [ + { + "expression": "try({value}, true)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#F00", + "borderColor": "#000", + "borderStyle": "solid", + "color": "#FFF", + "textAlign": "center" + }, + "text": "Faulted" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Speed_Label" + }, + "position": { + "height": 40, + "width": 140, + "x": 15, + "y": 140 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Sorter Speed:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Speed" + }, + "position": { + "height": 40, + "width": 150, + "x": 160, + "y": 140 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "try({[default]MCP21_Custom/Oiler/Status/SorterSpeed}, \"Unknown\")" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFF", + "borderStyle": "solid", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "RuntimeBox" + }, + "position": { + "height": "calc(100% - 210px)", + "width": "calc(100% - 330px)", + "x": 10, + "y": 200 + }, + "props": { + "style": { + "backgroundColor": "#FF0", + "borderStyle": "solid" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Runtime_Label" + }, + "position": { + "height": 50, + "width": 140, + "x": 15, + "y": 210 + }, + "props": { + "style": { + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Runtime Till Next Oil Cycle:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Runtime" + }, + "position": { + "height": 50, + "width": 150, + "x": 160, + "y": 210 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "try({[default]MCP21_Custom/Oiler/Status/RuntimeTillNextCycle}, \"Unknown\")" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFF", + "borderStyle": "solid", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttags \u003d [\"[default]MCP21_Custom/Oiler/Commands/ExtendTime\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ExtendTime" + }, + "position": { + "height": 50, + "width": 130, + "x": 320, + "y": 210 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "isGood({[default]MCP21_Custom/Oiler/Commands/ExtendTime})\r\n\u0026\u0026isAuthorized(false,\r\n\t\"Authenticated/Roles/Administrator\",\r\n\t\"Authenticated/Roles/Developer\",\r\n\t\"Authenticated/Roles/Supervisor\",\r\n\t\"Authenticated/Roles/Maintenance\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Red", + "color": "#FFF" + }, + "text": "Extend Time 168 Hours" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "RuntimeRecommended_Label" + }, + "position": { + "height": 80, + "width": 250, + "x": 320, + "y": 270 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "\"Mechanical Recommended Runtime in Hours Before Oiling the Chain is \"\r\n+try({[default]MCP21_Custom/Oiler/Status/RuntimeTillNextCycle}, \"xxxx\")\r\n+\" Hours\"" + }, + "type": "expr" + } + } + }, + "props": { + "alignVertical": "top" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/bc9c09b323a9f752f615aba7b473b5f072322bcec5dc016febcc1d3b8aac8fcd b/.resources/bc9c09b323a9f752f615aba7b473b5f072322bcec5dc016febcc1d3b8aac8fcd new file mode 100644 index 00000000..9835e84c --- /dev/null +++ b/.resources/bc9c09b323a9f752f615aba7b473b5f072322bcec5dc016febcc1d3b8aac8fcd @@ -0,0 +1,69 @@ +{ + "custom": {}, + "events": { + "system": { + "onShutdown": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"custom-documents-refreshlist\", {})" + }, + "scope": "G", + "type": "script" + } + } + }, + "params": { + "parentFolder": "" + }, + "propConfig": { + "params.parentFolder": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 300, + "width": 400 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onFileReceived": { + "config": { + "script": "\tdocuments.uploadDocument(event.file, self.view.params.parentFolder)\n\t\n\t# Close popup:\n\t#system.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "FileUpload" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "props": { + "fileSizeLimit": 100, + "maxUploads": 10, + "supportedFileTypes": [ + "pdf" + ] + }, + "type": "ia.input.fileupload" + } + ], + "meta": { + "name": "root" + }, + "position": { + "x": 3, + "y": -7 + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/bfc21a9ec6c32f571e10c330d6d4393f4e07f0c483a6f3a2eb71882040e88585 b/.resources/bfc21a9ec6c32f571e10c330d6d4393f4e07f0c483a6f3a2eb71882040e88585 new file mode 100644 index 00000000..b16ebb22 --- /dev/null +++ b/.resources/bfc21a9ec6c32f571e10c330d6d4393f4e07f0c483a6f3a2eb71882040e88585 @@ -0,0 +1,45 @@ +WITH INDUCTS AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + sorter, + induct, + COUNT(*) AS total, + SUM(carriers=1) AS single_carrier, + SUM(carriers=2) AS double_carrier, + AVG(pkg_length/10) AS pkg_length_avg, + AVG(gap_leading/10) AS gap_avg + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct +), SORTERS AS ( + SELECT + sorter, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + SUM(total) AS total + FROM INDUCTS + GROUP BY sorter +) +SELECT + I.start_timestamp, + I.end_timestamp, + S.sorter, + I.induct, + /* Averages: */ + ROUND(I.pkg_length_avg, 1) AS 'avg_package_length_(")', + ROUND(I.gap_avg, 1) AS 'avg_gap_(")', + /* Counts: */ + I.total AS total_count, + I.single_carrier AS single_carrier_count, + I.double_carrier AS double_carrier_count, + /* PPH: */ + ROUND(I.total*S.pph_multiplier) AS total_pph, + ROUND(I.single_carrier*S.pph_multiplier) AS single_carrier_pph, + ROUND(I.double_carrier*S.pph_multiplier) AS double_carrier_pph, + /* Percents: */ + ROUND(I.total/S.total, 4) AS 'total/sorter_percent', + ROUND(I.single_carrier/I.total, 4) AS single_carrier_percent, + ROUND(I.double_carrier/I.total, 4) AS double_carrier_percent +FROM INDUCTS I, SORTERS S +WHERE I.sorter = S.sorter +ORDER BY S.sorter, I.induct; \ No newline at end of file diff --git a/.resources/c04f510f8e9c341bb0d3485b30a4bac6f515f4a132f136ac3b2a4418b6632295 b/.resources/c04f510f8e9c341bb0d3485b30a4bac6f515f4a132f136ac3b2a4418b6632295 new file mode 100644 index 00000000..dbe7f65c --- /dev/null +++ b/.resources/c04f510f8e9c341bb0d3485b30a4bac6f515f4a132f136ac3b2a4418b6632295 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#CCCCFF" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/c22ac63abfb9a7a635184a1f67861d19f994dc7b218a3c365fad7760cd5681bc b/.resources/c22ac63abfb9a7a635184a1f67861d19f994dc7b218a3c365fad7760cd5681bc new file mode 100644 index 00000000..e9119a9c --- /dev/null +++ b/.resources/c22ac63abfb9a7a635184a1f67861d19f994dc7b218a3c365fad7760cd5681bc @@ -0,0 +1,84 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1487, + "width": 729 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Runout" + }, + "position": { + "height": 1467, + "width": 709, + "x": -62, + "y": -9 + }, + "props": { + "path": "Windows/Graphics/Templates/Runout", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_HSS_Sorter" + }, + "position": { + "height": 40, + "width": 95, + "x": 260, + "y": 450 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]HSSSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Sorter" + }, + "position": { + "height": 40, + "width": 97, + "x": 60, + "y": 630 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/c2601e72150a6be62816682c7c4ce887fbb2e6cbae4cb12c26ed53ec3e51cd7a b/.resources/c2601e72150a6be62816682c7c4ce887fbb2e6cbae4cb12c26ed53ec3e51cd7a new file mode 100644 index 00000000..812c3c83 --- /dev/null +++ b/.resources/c2601e72150a6be62816682c7c4ce887fbb2e6cbae4cb12c26ed53ec3e51cd7a @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FF6000", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/c27f57d68cfe254040fe001786c0065388a95bb25e09abd29078938c4ba2b573 b/.resources/c27f57d68cfe254040fe001786c0065388a95bb25e09abd29078938c4ba2b573 new file mode 100644 index 00000000..9740c7de --- /dev/null +++ b/.resources/c27f57d68cfe254040fe001786c0065388a95bb25e09abd29078938c4ba2b573 @@ -0,0 +1,2276 @@ +{ + "custom": { + "tabData": [ + { + "chartNamedQuery": "Statistics/Gaylords/DetailsChart", + "dataNamedQuery": "Statistics/Gaylords/Details", + "idField": "gaylord", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Gaylord Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/AR/InductDetailsChart", + "dataNamedQuery": "Statistics/AR/InductDetails", + "idField": "induct", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "AR Induct Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/AR/RobinDetailsChart", + "dataNamedQuery": "Statistics/AR/RobinDetails", + "idField": "chute", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Robin MEP Volume", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/AR/SorterDetailsChart", + "dataNamedQuery": "Statistics/AR/SorterDetails", + "idField": "sorter", + "isAdmin": true, + "isBar": false, + "isVisible": true, + "title": "AR Sorter Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/AR/LaneDetailsChart", + "dataNamedQuery": "Statistics/AR/LaneDetails", + "idField": "lane", + "isAdmin": true, + "isBar": false, + "isVisible": true, + "title": "AR Lane Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/AR/HourlyLaneChart", + "dataNamedQuery": "Statistics/AR/HourlyLane", + "idField": "lane", + "isAdmin": false, + "isBar": true, + "isVisible": true, + "title": "Hourly AR Induct", + "uniqueNamedQuery": "Statistics/AR/UniqueInducts" + }, + { + "chartNamedQuery": "Statistics/AR/HourlyLaneChart", + "dataNamedQuery": "Statistics/AR/HourlyLane", + "idField": "lane", + "isAdmin": false, + "isBar": true, + "isVisible": true, + "title": "Hourly Robin Volume", + "uniqueNamedQuery": "Statistics/AR/UniqueRobins" + }, + { + "chartNamedQuery": "Statistics/AR/HourlySorterChart", + "dataNamedQuery": "Statistics/AR/HourlySorter", + "idField": "sorter", + "isAdmin": true, + "isBar": true, + "isVisible": true, + "title": "Hourly AR Sorter", + "uniqueNamedQuery": "Statistics/AR/UniqueSorters" + }, + { + "chartNamedQuery": "Statistics/AR/HourlyLaneChart", + "dataNamedQuery": "Statistics/AR/HourlyLane", + "idField": "lane", + "isAdmin": true, + "isBar": true, + "isVisible": true, + "title": "Hourly AR Lane", + "uniqueNamedQuery": "Statistics/AR/UniqueLanes" + }, + { + "chartNamedQuery": "Statistics/Sorter/InductDetailsChart", + "dataNamedQuery": "Statistics/Sorter/InductDetails", + "idField": "induct", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Induct Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/Sorter/ScannerDetailsChart", + "dataNamedQuery": "Statistics/Sorter/ScannerDetails", + "idField": "scanner", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Scanner Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/Sorter/SorterSummaryChart", + "dataNamedQuery": "Statistics/Sorter/SorterSummary", + "idField": "sorter", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Sorter Summary", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/Sorter/SorterDetailsChart", + "dataNamedQuery": "Statistics/Sorter/SorterDetails", + "idField": "sorter", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Sorter Details", + "uniqueNamedQuery": "" + }, + { + "chartNamedQuery": "Statistics/Sorter/LaneDetailsChart", + "dataNamedQuery": "Statistics/Sorter/LaneDetails", + "idField": "lane", + "isAdmin": false, + "isBar": false, + "isVisible": true, + "title": "Lane Details", + "uniqueNamedQuery": "" + } + ], + "timewidget": { + "endDate": { + "$": [ + "ts", + 192, + 1637031280586 + ], + "$ts": 1637107200000 + }, + "mode": "currentDay", + "startDate": { + "$": [ + "ts", + 192, + 1637031280586 + ], + "$ts": 1637020800000 + }, + "update": { + "$": [ + "ts", + 192, + 1637031280586 + ], + "$ts": 1637031280585 + } + }, + "titleExtra": "0 rows" + }, + "params": {}, + "propConfig": { + "custom.tabData": { + "binding": { + "config": { + "struct": { + "auth": "{session.props.auth.user.roles}", + "tabs": "{[default]Gateway/StatisticsTabs}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\"]\n\tauth \u003d value.auth\n\ttabs \u003d value.tabs\n\tisNotAuth \u003d (auth \u003d\u003d None or len(auth) \u003d\u003d 0 or len([i for i in auth if i in roles]) \u003d\u003d 0)\n\treturn [v for v in utils.datasetToJSON(tabs) if v[\"isVisible\"] and not (v[\"isAdmin\"] and isNotAuth)]", + "type": "script" + } + ], + "type": "expr-struct" + }, + "persistent": true + }, + "custom.tabDataAdmin": { + "persistent": true + }, + "custom.tabDataOperator": { + "persistent": true + }, + "custom.timewidget": { + "binding": { + "config": { + "path": "session.custom.timewidget" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tif self.custom.tabData \u003c\u003e None and len(self.custom.tabData) \u003e 0:\n\t\troot \u003d self.getChild(\"root\")\n\t\troot.getChild(\"Table\").forceRefresh()\n\t\troot.getChild(\"LineChart\").forceRefresh()\n\t\troot.getChild(\"BarChart\").forceRefresh()" + }, + "persistent": true + }, + "custom.titleExtra": { + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 525, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "try(\r\n\t property(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\")\r\n\t+if(len({view.custom.titleExtra})\u003e0,\r\n\t\t\" (\" + {view.custom.titleExtra} + \")\",\r\n\t\t\"\"\r\n\t),\r\n\t\"No Statistics\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttable \u003d self.getSibling(\"Table\")\n\tlines \u003d self.getSibling(\"LineChart\")\n\tbars \u003d self.getSibling(\"BarChart\")\n\tdropdown \u003d self.getSibling(\"Dropdown\")\n\ttabContainer \u003d self.getSibling(\"TabContainer\")\n\ttabData \u003d self.view.custom.tabData[tabContainer.props.currentTabIndex]\n\t# Create title:\n\ttitle \u003d tabData.title\n\tif len(dropdown.props.options) \u003e 0:\n\t\ttitle \u003d dropdown.props.value + \" \" + title\n\t# Force CSV download:\n\tutils.downloadCSV(table, title)\n\tif lines.meta.visible:\n\t\tutils.downloadCSV(lines.props.series[0].data, title + \" Chart\")\n\tif bars.meta.visible:\n\t\tutils.downloadCSV(bars.props.dataSources.example, title + \" Chart\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TimeWidget" + }, + "position": { + "height": 40, + "width": 600 + }, + "props": { + "params": { + "endDate": "2021-02-11 00:00:00", + "startDate": "2021-02-10 00:00:00" + }, + "path": "Templates/Widget/TimeWidget" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "100%", + "y": 40 + }, + "propConfig": { + "props.currentTabIndex": { + "onChange": { + "enabled": null, + "script": "\t# Reset components:\n\tlines \u003d self.getSibling(\"LineChart\")\n\tlines.meta.visible \u003d False\n\tlines.props.series[0].data \u003d system.dataset.clearDataset(lines.props.series[0].data)\n\tbars \u003d self.getSibling(\"BarChart\")\n\tbars.meta.visible \u003d False\n\tbars.props.dataSources.example \u003d system.dataset.clearDataset(bars.props.dataSources.example)\n\ttable \u003d self.getSibling(\"Table\")\n\ttable.props.data \u003d system.dataset.clearDataset(table.props.data)\n\ttable.props.selection.selectedColumn \u003d None\n\ttable.props.selection.selectedRow \u003d None\n\t#table.props.selection.data \u003d []\n\tself.getSibling(\"Dropdown\").props.value \u003d \"\"\n\t# Now update the current tab data:\n\tif len(self.props.tabs) \u003e 0:\n\t\tself.getSibling(\"Table\").forceRefresh()" + } + }, + "props.tabs": { + "binding": { + "config": { + "path": "view.custom.tabData" + }, + "transforms": [ + { + "code": "\t# Return tab list:\n\treturn [val.title for val in value]", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "width": 160 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + } + }, + "type": "ia.container.tab" + }, + { + "events": { + "component": { + "onSelectionChange": { + "config": { + "script": "\tlines \u003d self.getSibling(\"LineChart\")\n\tbars \u003d self.getSibling(\"BarChart\")\n\ttabIndex \u003d self.getSibling(\"TabContainer\").props.currentTabIndex\n\ttabData \u003d self.view.custom.tabData[tabIndex]\n\tif len(event.data) \u003e 0 and \"chartNamedQuery\" in tabData:\n\t\tif tabData[\"isBar\"]:\n\t\t\tlines.meta.visible \u003d False\n\t\t\tbars.meta.visible \u003d True\n\t\t\t# Apply:\n\t\t\tbars.forceRefresh()\n\t\telse:\n\t\t\tbars.meta.visible \u003d False\n\t\t\tlines.meta.visible \u003d True\n\t\t\t# Apply:\n\t\t\tlines.forceRefresh()\n\telse:\n\t\tlines.meta.visible \u003d False\n\t\tbars.meta.visible \u003d False\n\t\tlines.props.series[0].data \u003d system.dataset.clearDataset(lines.props.series[0].data)\n\t\tbars.props.dataSources.example \u003d system.dataset.clearDataset(bars.props.dataSources.example)" + }, + "scope": "G", + "type": "script" + } + }, + "dom": { + "onKeyDown": { + "config": { + "script": "\tif event.key \u003d\u003d \"Escape\": # Escape key\n\t\tself.props.selection.selectedColumn \u003d None\n\t\tself.props.selection.selectedRow \u003d None" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Table" + }, + "position": { + "height": "calc(100% - 75px)", + "width": "100%", + "y": 75 + }, + "propConfig": { + "position.height": { + "binding": { + "config": { + "expression": "{../LineChart.meta.visible} || {../BarChart.meta.visible}" + }, + "transforms": [ + { + "fallback": "calc(100% - 75px)", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "calc(40% - 75px/2)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "gaylord", + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Gaylord" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "render": "auto", + "resizable": true, + "sortable": true, + "visible": true + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "cycles_count", + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Cycles (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "render": "auto", + "resizable": true, + "sortable": true, + "visible": true + } + ], + "data": { + "$": [ + "ds", + 192, + 1637031280591 + ], + "$columns": [ + { + "data": [], + "name": "start_timestamp", + "type": "Date" + }, + { + "data": [], + "name": "end_timestamp", + "type": "Date" + }, + { + "data": [], + "name": "gaylord", + "type": "String" + }, + { + "data": [], + "name": "cycles_count", + "type": "Double" + }, + { + "data": [], + "name": "cycles_cph", + "type": "Double" + }, + { + "data": [], + "name": "cycles_percent", + "type": "Double" + } + ] + }, + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\t# Collect data:\n\tcurrentTabIndex \u003d self.getSibling(\"TabContainer\").props.currentTabIndex\n\ttabData \u003d self.view.custom.tabData[currentTabIndex]\n\tstartDate \u003d self.session.custom.timewidget.startDate\n\tendDate \u003d self.session.custom.timewidget.endDate\n\tid \u003d self.getSibling(\"Dropdown\").props.value\n\t\n\t# Apply:\n\t#system.perspective.print(\"Table Check: \" + tabData.title)\n\tif (tabData.uniqueNamedQuery \u003d\u003d \"\" or id \u003c\u003e \"\"):\n\t\t#system.perspective.print(\"Table Refresh: \" + tabData.title)\n\t\tparams \u003d {\n\t\t\t\"startDate\": startDate,\n\t\t\t\"endDate\": endDate\n\t\t}\n\t\tif id \u003c\u003e \"\":\n\t\t\tparams[tabData.idField] \u003d id\n\t\tdata \u003d system.db.runNamedQuery(tabData.dataNamedQuery, params)\n\t\t# Create title:\n\t\tcou \u003d utils.getRowCount(data)\n\t\tast \u003d \"*\" if cou \u003e\u003d 1000 else \"\"\n\t\tself.view.custom.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t\t# Update columns:\n\t\tcolumns \u003d []\n\t\tfilterColumns \u003d self.getSibling(\"Mode\").props.value\n\t\tfor name in data.getColumnNames():\n\t\t\tif name.split(\"_\")[-1] not in filterColumns:\n\t\t\t\textra \u003d {}\n\t\t\t\tif name in [\"start_timestamp\", \"end_timestamp\"]:\n\t\t\t\t\textra[\"resizable\"] \u003d False\n\t\t\t\t\textra[\"strictWidth\"] \u003d True\n\t\t\t\t\textra[\"width\"] \u003d 150\n\t\t\t\telif name in [\"induct\", \"scanner\", \"sorter\", \"lane\"]:\n\t\t\t\t\textra[\"resizable\"] \u003d False\n\t\t\t\t\textra[\"strictWidth\"] \u003d True\n\t\t\t\t\textra[\"width\"] \u003d 80\n\t\t\t\tcolumns.append(reports.generateColumn(name, extra))\n\t\tself.props.columns \u003d columns\n\t\t# Return data\n\t\tself.props.data \u003d data" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.display.table" + }, + { + "meta": { + "name": "Dropdown", + "visible": null + }, + "position": { + "height": 36, + "width": 200, + "x": "calc(100% - 205px)", + "y": 80 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{../TabContainer.props.currentTabIndex}" + }, + "transforms": [ + { + "code": "\ttabData \u003d self.view.custom.tabData[value]\n\treturn tabData.uniqueNamedQuery not in [None, \"\"]", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "props.options": { + "binding": { + "config": { + "path": "../TabContainer.props.currentTabIndex" + }, + "transforms": [ + { + "code": "\ttabData \u003d self.view.custom.tabData[value]\n\tquery \u003d tabData.uniqueNamedQuery\n\tif query not in [None, \"\"]:\n\t\tdata \u003d system.db.runNamedQuery(query)\n\t\tvalues \u003d [data.getValueAt(row, 0) for row in range(data.getRowCount())]\n\t\toptions \u003d []\n\t\tfor val in values:\n\t\t\toptions.append({\n\t\t\t\t\"value\": val,\n\t\t\t\t\"label\": val\n\t\t\t})\n\t\t# Select the first one if no value is selected:\n\t\tif self.props.value not in values and len(values) \u003e 0:\n\t\t\tself.props.value \u003d values[0]\n\t\t# Return list:\n\t\treturn options\n\telse:\n\t\tself.props.value \u003d \"\"\n\t\treturn []", + "type": "script" + } + ], + "type": "property" + } + }, + "props.value": { + "onChange": { + "enabled": null, + "script": "\tif currentValue.value \u003c\u003e \"\":\n\t\t# Apply\n\t\tself.getSibling(\"Table\").forceRefresh()\n\t\ttabIndex \u003d self.getSibling(\"TabContainer\").props.currentTabIndex\n\t\tif self.view.custom.tabData[tabIndex][\"isBar\"]:\n\t\t\tself.getSibling(\"BarChart\").forceRefresh()\n\t\telse:\n\t\t\tself.getSibling(\"LineChart\").forceRefresh()" + } + } + }, + "type": "ia.input.dropdown" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tfilterColumns \u003d self.props.value\n\t# Update columns:\n\ttable \u003d self.getSibling(\"Table\")\n\tcolumns \u003d []\n\tfor name in table.props.data.getColumnNames():\n\t\tif name.split(\"_\")[-1] not in filterColumns:\n\t\t\textra \u003d {}\n\t\t\tif name in [\"start_timestamp\", \"end_timestamp\"]:\n\t\t\t\textra[\"resizable\"] \u003d False\n\t\t\t\textra[\"strictWidth\"] \u003d True\n\t\t\t\textra[\"width\"] \u003d 150\n\t\t\telif name in [\"induct\", \"scanner\", \"sorter\", \"lane\"]:\n\t\t\t\textra[\"resizable\"] \u003d False\n\t\t\t\textra[\"strictWidth\"] \u003d True\n\t\t\t\textra[\"width\"] \u003d 80\n\t\t\tcolumns.append(reports.generateColumn(name, extra))\n\ttable.props.columns \u003d columns\n\t# Update columns:\n\tlines \u003d self.getSibling(\"LineChart\")\n\tdata \u003d lines.props.series[0].data\n\tcolumns \u003d [{\"key\": name} for name in data.getColumnNames() if name.split(\"_\")[-1] not in filterColumns]\n\tlines.props.plots[0].trends[0].columns \u003d columns\n\t# Update columns:\n\tbars \u003d self.getSibling(\"BarChart\")\n\tdata \u003d bars.props.dataSources.example\n\tcolumns \u003d []\n\tfor name in data.getColumnNames():\n\t\tif name.split(\"_\")[-1] not in filterColumns and name not in [\"time\", \"hour\"]:\n\t\t\textra \u003d {\n\t\t\t\t\"xAxis\": \"hour\",\n\t\t\t\t\"yAxis\": \"count\",\n\t\t\t\t\"render\": \"column\"\n\t\t\t}\n\t\t\tseries \u003d reports.generateSeries(name, extra)\n\t\t\tseries[\"data\"][\"source\"] \u003d \"example\"\n\t\t\tseries[\"data\"][\"x\"] \u003d \"hour\"\n\t\t\tseries[\"column\"][\"appearance\"][\"stacked\"] \u003d True\n\t\t\tcolumns.append(series)\n\tbars.props.series \u003d columns" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Mode" + }, + "position": { + "height": 20, + "width": 120, + "x": "calc(100% - 230px)", + "y": 10 + }, + "props": { + "options": [ + { + "label": "Count", + "value": [ + "pph", + "cph", + "percent" + ] + }, + { + "label": "Percent", + "value": [ + "count", + "pph", + "cph" + ] + }, + { + "label": "Rate", + "value": [ + "count", + "percent" + ] + } + ], + "search": { + "enabled": false + }, + "style": { + "fontSize": "14px" + }, + "value": [ + "pph", + "cph", + "percent" + ] + }, + "type": "ia.input.dropdown" + }, + { + "meta": { + "name": "ModeLabel" + }, + "position": { + "height": 20, + "width": 120, + "x": "calc(100% - 355px)", + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Aggregate Mode:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "DropdownLabel", + "visible": null + }, + "position": { + "height": 20, + "width": 120, + "x": "calc(100% - 330px)", + "y": 88 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "expression": "{../TabContainer.props.currentTabIndex}" + }, + "transforms": [ + { + "code": "\ttabData \u003d self.view.custom.tabData[value]\n\treturn tabData.uniqueNamedQuery not in [None, \"\"]", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "props.text": { + "binding": { + "config": { + "path": "../TabContainer.props.currentTabIndex" + }, + "transforms": [ + { + "code": "\ttabData \u003d self.view.custom.tabData[value]\n\tvalue \u003d tabData.uniqueNamedQuery\n\tif value not in [None, \"\"]:\n\t\treturn tabData.idField.title() + \":\"\n\telse:\n\t\treturn \"\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "color": "#000", + "fontSize": "14px", + "textAlign": "right" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "LineChart", + "visible": false + }, + "position": { + "height": "calc(60% - 75px/2)", + "width": "100%" + }, + "propConfig": { + "position.y": { + "binding": { + "config": { + "expression": "if({this.meta.visible},\r\n\t\"calc(40% + 75px/2)\",\r\n\t\"200%\"\r\n)" + }, + "type": "expr" + } + }, + "props.xTrace.infoBox.dataFormat": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "code": "\tif \"percent\" not in value:\n\t\treturn \"0.##%\"\n\telse:\n\t\treturn \"0,0.##\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "defaultStyles": { + "colorScheme": "Spectral", + "normal": { + "stroke": { + "width": 2 + } + } + }, + "legend": { + "position": "right", + "visible": true + }, + "plots": [ + { + "axes": [], + "markers": [], + "trends": [ + { + "axis": "", + "baselines": [], + "breakLine": false, + "columns": [ + { + "key": "time" + }, + { + "key": "total_count" + }, + { + "key": "single_carrier_count" + }, + { + "key": "double_carrier_count" + } + ], + "interpolation": "curveLinear", + "radius": 2, + "series": "Boiler", + "stack": true, + "type": "line", + "visible": true + } + ] + } + ], + "series": [ + { + "data": { + "$": [ + "ds", + 192, + 1636690363196 + ], + "$columns": [ + { + "data": [], + "name": "time", + "type": "Date" + }, + { + "data": [], + "name": "total_count", + "type": "Integer" + }, + { + "data": [], + "name": "single_carrier_count", + "type": "Integer" + }, + { + "data": [], + "name": "double_carrier_count", + "type": "Integer" + }, + { + "data": [], + "name": "total_pph", + "type": "Double" + }, + { + "data": [], + "name": "single_carrier_pph", + "type": "Double" + }, + { + "data": [], + "name": "double_carrier_pph", + "type": "Double" + }, + { + "data": [], + "name": "single_carrier/sorter_percent", + "type": "Double" + }, + { + "data": [], + "name": "double_carrier/sorter_percent", + "type": "Double" + } + ] + }, + "name": "Boiler" + } + ], + "style": { + "backgroundColor": "#FFF", + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "2px" + }, + "timeRange": { + "dateFormat": "YYYY-MM-DD", + "timeFormat": "HH:mm:ss" + }, + "xTrace": { + "infoBox": { + "dateFormat": "YYYY-MM-DD", + "timeFormat": "HH:mm", + "width": 200 + } + } + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\tif self.meta.visible:\n\t\t# Generate tabData\n\t\tcurrentTabIndex \u003d self.getSibling(\"TabContainer\").props.currentTabIndex\n\t\ttabData \u003d self.view.custom.tabData[currentTabIndex]\n\t\tstartDate \u003d self.session.custom.timewidget.startDate\n\t\tendDate \u003d self.session.custom.timewidget.endDate\n\t\tselected \u003d self.getSibling(\"Table\").props.selection.data\n\t\tidField \u003d tabData[\"idField\"]\n\t\tid \u003d selected[0][idField]\n\t\t\n\t\t# Apply:\n\t\t#system.perspective.print(\"Chart Check: \" + tabData.title + \"|\" + id)\n\t\tif not tabData.isBar:\n\t\t\t#system.perspective.print(\"Chart Refresh: \" + tabData.title + \"|\" + id)\n\t\t\tparams \u003d {\n\t\t\t\t\"startDate\": startDate,\n\t\t\t\t\"endDate\": endDate,\n\t\t\t\tidField: id\n\t\t\t}\n\t\t\tdata \u003d system.db.runNamedQuery(tabData.chartNamedQuery, params)\n\t\t\t# Add breaks:\n\t\t\tbreaks \u003d []\n\t\t\tfor row in range(data.getRowCount()-1):\n\t\t\t\tcurTime \u003d system.date.parse(data.getValueAt(row, \"time\"), \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\t\t\tnextTime \u003d system.date.parse(data.getValueAt(row+1, \"time\"), \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\t\t\tminBetween \u003d system.date.minutesBetween(curTime, nextTime)\n\t\t\t\tif minBetween \u003e 1:\n\t\t\t\t\tb \u003d []\n\t\t\t\t\tfor col in data.getColumnNames():\n\t\t\t\t\t\tif col \u003c\u003e \"time\":\n\t\t\t\t\t\t\tb.append(0)\n\t\t\t\t\t\telse:\n\t\t\t\t\t\t\tnewTime \u003d system.date.addMinutes(curTime, 1)\n\t\t\t\t\t\t\tb.append(system.date.format(newTime, \u0027yyyy-MM-dd HH:mm:ss\u0027))\n\t\t\t\t\tbreaks.append(b)\n\t\t\t\tif minBetween \u003e 2:\n\t\t\t\t\tb \u003d []\n\t\t\t\t\tfor col in data.getColumnNames():\n\t\t\t\t\t\tif col \u003c\u003e \"time\":\n\t\t\t\t\t\t\tb.append(0)\n\t\t\t\t\t\telse:\n\t\t\t\t\t\t\tnewTime \u003d system.date.addMinutes(nextTime, -1)\n\t\t\t\t\t\t\tb.append(system.date.format(newTime, \u0027yyyy-MM-dd HH:mm:ss\u0027))\n\t\t\t\t\tbreaks.append(b)\n\t\t\tdata \u003d system.dataset.addRows(data, breaks)\n\t\t\tdata \u003d system.dataset.sort(data, \"time\", True)\n\t\t\t# Update columns:\n\t\t\tfilterColumns \u003d [col for col in self.getSibling(\"Mode\").props.value]\n\t\t\tcolumns \u003d [{\"key\": name} for name in data.getColumnNames() if name.split(\"_\")[-1] not in filterColumns]\n\t\t\tself.props.plots[0].trends[0].columns \u003d columns\n\t\t\t# Return data\n\t\t\tself.props.series[0].data \u003d data" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.chart.timeseries" + }, + { + "meta": { + "name": "BarChart", + "visible": false + }, + "position": { + "height": "calc(60% - 75px/2)", + "width": "100%", + "y": "calc(40% + 75px/2)" + }, + "propConfig": { + "props.yAxes[0].label.text": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "code": "\tif \"percent\" not in value:\n\t\treturn \"Percent\"\n\telif \"pph\" not in value:\n\t\treturn \"PPH\"\n\telse:\n\t\treturn \"Count\"", + "type": "script" + } + ], + "type": "property" + } + }, + "props.yAxes[0].value.format": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "code": "\tif \"percent\" not in value:\n\t\treturn \"###.##%\"\n\telse:\n\t\treturn \"#,###.##\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "dataSources": { + "example": { + "$": [ + "ds", + 192, + 1636690363197 + ], + "$columns": [ + { + "data": [], + "name": "time", + "type": "String" + }, + { + "data": [], + "name": "hour", + "type": "String" + }, + { + "data": [], + "name": "diverted", + "type": "Double" + }, + { + "data": [], + "name": "lane_disabled", + "type": "Double" + }, + { + "data": [], + "name": "lane_full", + "type": "Double" + }, + { + "data": [], + "name": "lane_jam", + "type": "Double" + } + ] + } + }, + "series": [ + { + "candlestick": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "stacked": false, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + } + }, + "high": { + "x": "", + "y": "" + }, + "low": { + "x": "", + "y": "" + }, + "open": { + "x": "", + "y": "" + } + }, + "column": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "height": null, + "stacked": true, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "width": null + }, + "open": { + "x": "", + "y": "" + } + }, + "data": { + "source": "example", + "x": "hour", + "y": "diverted" + }, + "defaultState": { + "visible": true + }, + "hiddenInLegend": false, + "label": { + "text": "Diverted" + }, + "line": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": false, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "name": "diverted", + "render": "column", + "stepLine": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": true, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "visible": true, + "xAxis": "hour", + "yAxis": "count", + "zIndex": 0 + }, + { + "candlestick": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "stacked": false, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + } + }, + "high": { + "x": "", + "y": "" + }, + "low": { + "x": "", + "y": "" + }, + "open": { + "x": "", + "y": "" + } + }, + "column": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "height": null, + "stacked": true, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "width": null + }, + "open": { + "x": "", + "y": "" + } + }, + "data": { + "source": "example", + "x": "hour", + "y": "lane_disabled" + }, + "defaultState": { + "visible": true + }, + "hiddenInLegend": false, + "label": { + "text": "Lane Disabled" + }, + "line": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": false, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "name": "lane_disabled", + "render": "column", + "stepLine": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": true, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "visible": true, + "xAxis": "hour", + "yAxis": "count", + "zIndex": 0 + }, + { + "candlestick": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "stacked": false, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + } + }, + "high": { + "x": "", + "y": "" + }, + "low": { + "x": "", + "y": "" + }, + "open": { + "x": "", + "y": "" + } + }, + "column": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "height": null, + "stacked": true, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "width": null + }, + "open": { + "x": "", + "y": "" + } + }, + "data": { + "source": "example", + "x": "hour", + "y": "lane_full" + }, + "defaultState": { + "visible": true + }, + "hiddenInLegend": false, + "label": { + "text": "Lane Full" + }, + "line": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": false, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "name": "lane_full", + "render": "column", + "stepLine": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": true, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "visible": true, + "xAxis": "hour", + "yAxis": "count", + "zIndex": 0 + }, + { + "candlestick": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "stacked": false, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + } + }, + "high": { + "x": "", + "y": "" + }, + "low": { + "x": "", + "y": "" + }, + "open": { + "x": "", + "y": "" + } + }, + "column": { + "appearance": { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": "", + "min": "" + }, + "height": null, + "stacked": true, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "width": null + }, + "open": { + "x": "", + "y": "" + } + }, + "data": { + "source": "example", + "x": "hour", + "y": "lane_jam" + }, + "defaultState": { + "visible": true + }, + "hiddenInLegend": false, + "label": { + "text": "Lane Jam" + }, + "line": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": false, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "name": "lane_jam", + "render": "column", + "stepLine": { + "appearance": { + "bullets": [ + { + "deriveFieldsFromData": { + "fill": { + "color": "", + "opacity": "" + }, + "rotation": "", + "stroke": { + "color": "", + "opacity": "", + "width": "" + } + }, + "enabled": true, + "fill": { + "color": "", + "opacity": 1 + }, + "heatRules": { + "dataField": "", + "enabled": false, + "max": 100, + "min": 2 + }, + "height": 10, + "label": { + "position": { + "dx": 0, + "dy": 0 + }, + "text": "{value}" + }, + "render": "circle", + "rotation": 0, + "stroke": { + "color": "", + "opacity": 1, + "width": 1 + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "width": 10 + } + ], + "connect": true, + "fill": { + "color": "", + "opacity": 0 + }, + "minDistance": 0.5, + "stroke": { + "color": "", + "dashArray": "", + "opacity": 1, + "width": 3 + }, + "tensionX": 1, + "tensionY": 1 + }, + "open": { + "x": "", + "y": "" + } + }, + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "{name}: [bold]{valueY}[/]" + }, + "visible": true, + "xAxis": "hour", + "yAxis": "count", + "zIndex": 0 + } + ], + "style": { + "backgroundColor": "#FFF", + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "2px" + }, + "xAxes": [ + { + "appearance": { + "font": { + "size": "", + "weight": 500 + }, + "grid": { + "color": "", + "dashArray": "", + "minDistance": 60, + "opacity": 1, + "position": 0.5 + }, + "inside": false, + "labels": { + "color": "", + "opacity": 1, + "rotation": 0, + "wrap": true + }, + "opposite": false + }, + "category": { + "break": { + "enabled": false, + "endCategory": "", + "size": 0.05, + "startCategory": "" + } + }, + "date": { + "baseInterval": { + "count": 1, + "enabled": false, + "skipEmptyPeriods": false, + "timeUnit": "hour" + }, + "break": { + "enabled": false, + "endDate": "", + "size": 0.05, + "startDate": "" + }, + "format": "kk", + "inputFormat": "yyyy-MM-dd kk:mm:ss", + "range": { + "max": "", + "min": "", + "useStrict": false + } + }, + "inversed": false, + "label": { + "color": "", + "enabled": true, + "text": "Hour" + }, + "name": "hour", + "render": "category", + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "" + }, + "value": { + "break": { + "enabled": false, + "endValue": 100, + "size": 0.05, + "startValue": 0 + }, + "format": "#,###.##", + "logarithmic": false, + "range": { + "max": "", + "min": "", + "useStrict": false + } + }, + "visible": true + } + ], + "yAxes": [ + { + "appearance": { + "font": { + "size": "", + "weight": 500 + }, + "grid": { + "color": "", + "dashArray": "", + "minDistance": null, + "opacity": 1, + "position": 0.5 + }, + "inside": false, + "labels": { + "color": "", + "opacity": 1, + "rotation": 0, + "wrap": true + }, + "opposite": false + }, + "category": { + "break": { + "enabled": false, + "endCategory": "", + "size": 0.05, + "startCategory": "" + } + }, + "date": { + "baseInterval": { + "count": 1, + "enabled": false, + "skipEmptyPeriods": false, + "timeUnit": "hour" + }, + "break": { + "enabled": false, + "endDate": "", + "size": 0.05, + "startDate": "" + }, + "format": "M/d/yyyy HH:mm:ss", + "inputFormat": "yyyy-MM-dd kk:mm:ss", + "range": { + "max": "", + "min": "", + "useStrict": false + } + }, + "inversed": false, + "label": { + "color": "", + "enabled": true + }, + "name": "count", + "render": "value", + "tooltip": { + "background": { + "color": "", + "opacity": 1 + }, + "cornerRadius": 3, + "enabled": true, + "pointerLength": 4, + "text": "" + }, + "value": { + "break": { + "enabled": false, + "endValue": 100, + "size": 0.05, + "startValue": 0 + }, + "logarithmic": false, + "range": { + "max": "", + "min": "", + "useStrict": false + } + }, + "visible": true + } + ] + }, + "scripts": { + "customMethods": [ + { + "name": "forceRefresh", + "params": [], + "script": "\tif self.meta.visible:\n\t\t# Generate tabData\n\t\tcurrentTabIndex \u003d self.getSibling(\"TabContainer\").props.currentTabIndex\n\t\ttabData \u003d self.view.custom.tabData[currentTabIndex]\n\t\tstartDate \u003d self.session.custom.timewidget.startDate\n\t\tendDate \u003d self.session.custom.timewidget.endDate\n\t\tidField \u003d tabData.idField\n\t\tid \u003d self.getSibling(\"Dropdown\").props.value\n\t\t\n\t\t# Apply:\n\t\t#system.perspective.print(\"Chart Check: \" + tabData.title + \"|\" + id)\n\t\tif id \u003c\u003e \"\" and tabData.isBar:\n\t\t\t#system.perspective.print(\"Chart Refresh: \" + tabData.title + \"|\" + id)\n\t\t\tparams \u003d {\n\t\t\t\t\"startDate\": startDate,\n\t\t\t\t\"endDate\": endDate,\n\t\t\t\tidField: id\n\t\t\t}\n\t\t\tdata \u003d system.db.runNamedQuery(tabData.chartNamedQuery, params)\n\t\t\t# Update columns:\n\t\t\tfilterColumns \u003d [col for col in self.getSibling(\"Mode\").props.value]\n\t\t\tcolumns \u003d []\n\t\t\tfor name in data.getColumnNames():\n\t\t\t\tif name.split(\"_\")[-1] not in filterColumns and name not in [\"time\", \"hour\"]:\n\t\t\t\t\textra \u003d {\n\t\t\t\t\t\t\"xAxis\": \"hour\",\n\t\t\t\t\t\t\"yAxis\": \"count\",\n\t\t\t\t\t\t\"render\": \"column\"\n\t\t\t\t\t}\n\t\t\t\t\tseries \u003d reports.generateSeries(name, extra)\n\t\t\t\t\tseries[\"data\"][\"source\"] \u003d \"example\"\n\t\t\t\t\tseries[\"data\"][\"x\"] \u003d \"hour\"\n\t\t\t\t\tseries[\"column\"][\"appearance\"][\"stacked\"] \u003d True\n\t\t\t\t\tcolumns.append(series)\n\t\t\tself.props.series \u003d columns\n\t\t\t# Return data\n\t\t\tself.props.dataSources.example \u003d data" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.chart.xy" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "min-width": "1000px", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/c37d7b84dd70a0c30bb90512e1539dd2170bc9947d9f22e959fb1b4f4348923d b/.resources/c37d7b84dd70a0c30bb90512e1539dd2170bc9947d9f22e959fb1b4f4348923d new file mode 100644 index 00000000..a5d68c59 --- /dev/null +++ b/.resources/c37d7b84dd70a0c30bb90512e1539dd2170bc9947d9f22e959fb1b4f4348923d @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#F00077B3", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/c4064c23b6b45cbe8774ccb47193f221dbd7772c5650a9566eb015c4266e70eb b/.resources/c4064c23b6b45cbe8774ccb47193f221dbd7772c5650a9566eb015c4266e70eb new file mode 100644 index 00000000..6001e9e4 --- /dev/null +++ b/.resources/c4064c23b6b45cbe8774ccb47193f221dbd7772c5650a9566eb015c4266e70eb @@ -0,0 +1,156 @@ +################################################################ +################################################################ +## Version: 1.0 / Author: Dillon Uzar +## +## DESC: For use in FMS in recording Flow Management data +## WARN: Modifying code may cause system to function incorrectly +################################################################ +################################################################ + +import json +import system +import time + +####################################################### +####################################################### +####################################################### +#### Constants +####################################################### + +# Logger: +LOG = system.util.logger("FMS Handler") + +# For inserting data into database: +INSERT_QUERY = "INSERT INTO fms_history (conveyor, segment, data) VALUES (?,?,?)" + +####################################################### +####################################################### +####################################################### +#### Parsing Utils +####################################################### + +def extractNibble(val, nibble): + if val is not None: + return (val >> (nibble*4)) & 0x0F + +def logTime(title, conv, seg, data, start_time): + millisec = round((time.time() - start_time) * 1000, 1) + LOG.info("%s[CONV=%s][SEG=%s][DATA=%s] took %sms to process" % (title, conv, seg, data, millisec)) + +####################################################### +####################################################### +####################################################### +#### Tag Event Handling +####################################################### + +def logSegment(conveyor, segment, data): + # Log event in SQL: + # Insert into FMS History: + start_time = time.time() + INSERT_QUERY = "INSERT INTO fms_history (conveyor, segment, data) VALUES (?,?,?)" + system.db.runPrepUpdate(INSERT_QUERY, [conveyor, segment, data]) + #logTime("FMS[DB_INSERT]", conveyor, segment, data, start_time) + +def dintOnChange(tag, tagPath, previousValue, currentValue, initialChange, missedEvents): + # Don't execute on startup, or if new value is bad quality: + if currentValue.quality.isGood(): + # Only consider it a change if the value is different: + if currentValue.value <> previousValue.value: + id = int(tagPath.split("/")[-1].replace("DINT", "")) + conveyor = tag['parameters']['LabelFull'] + # ID=0 is unique where the first nibble is the average of all segments, the 7 other segments are normal segments: + if id == 0: + # Ignore first nibble, which is the average of all segments: + for i in range(1, 8): + # Check if segment changed: + curVal = extractNibble(currentValue.value, i) + prevVal = extractNibble(previousValue.value, i) + if curVal <> prevVal: + segment = i - 1 + logSegment(conveyor, segment, curVal) + else: + for i in range(0, 8): + # Check if segment changed: + curVal = extractNibble(currentValue.value, i) + prevVal = extractNibble(previousValue.value, i) + if curVal <> prevVal: + segment = i + (id-1)*8 + 7 + logSegment(conveyor, segment, curVal) + +####################################################### +####################################################### +####################################################### +#### Graphics Tag Scripts +####################################################### + +""" +radial-gradient(circle at 30%, + #f5bff5 calc((var(--conv-width) - 4px)/2*0.25), + #000 calc((var(--conv-width) - 4px)/2*0.25), + #000 calc((var(--conv-width) - 4px)/2*0.25 + 1px), + transparent calc((var(--conv-width) - 4px)/2*0.25 + 1px)), +radial-gradient(circle at 50%, #d900d9 calc((var(--conv-width) - 4px)/2*1), #000 calc((var(--conv-width) - 4px)/2*1), #000 calc((var(--conv-width) - 4px)/2*1 + 1px), transparent calc((var(--conv-width) - 4px)/2*0.25 + 1px)), radial-gradient(circle at 70%, #ec7fec 7px, #000 7px, #000 8px, transparent 8px), radial-gradient(circle at 90%, #e23fe2 10px, #000 10px, #000 11px, transparent 11px), #00D900 +""" + + +def genSegmentsTable(obj): + segments = [] + if obj is not None and obj["Count"] is not None: + for i in range(1, obj["Count"]+1): + dint = "DINT"+str(int(i/8)) + if obj[dint] is not None: + percent = extractNibble(obj[dint], i % 8) / 15.0 + segments.append([i, percent]) + return system.dataset.toDataSet(["segment", "fill"], segments) + +def genSegmentColor(data): + perc = (data/15.0) + c1 = 255 - (255 - 217)*perc + c2 = 255 - (255 - 0)*perc + return "rgb(%s, %s, %s)" % (c1, c2, c1) + +def genSegmentsPattern(obj): + if obj["Count"] is not None and obj["Count"] > 0: + percUnit = 100 / float(obj["Count"]) + gradients = [] + for i in range(1, obj["Count"]+1): + dint = "DINT"+str(int(i/8)) + if obj[dint] is not None: + data = extractNibble(obj[dint], i % 8) + color = genSegmentColor(data) + circlePos = ((obj["Count"]-i))*percUnit + percUnit/2.0 + perc = (data/15.0*0.5+0.5) if data > 0 else 0.0 # Make circle size between 50%-100% + if perc > 0.0: + output = "radial-gradient(circle at %s%%" % (circlePos) + output += ", %s calc((var(--conv-width) - 8px)/2*%s)" % (color, perc) + output += ", #000 calc((var(--conv-width) - 8px)/2*%s)" % (perc) + output += ", #000 calc((var(--conv-width) - 8px)/2*%s + 1px)" % (perc) + output += ", transparent calc((var(--conv-width) - 8px)/2*%s + 1px)" % (perc) + output += ")" + gradients.append(output) + if len(gradients) > 0: + return ", ".join(gradients)+"," + return "" + +def genSegmentsTooltip(obj): + if obj["Count"] is not None and obj["Count"] > 0: + data = extractNibble(obj["DINT0"], 0) + output = "

SegmentAVG: %s%%" % (int(round(100 * data / 15.0))) + for i in range(1, obj["Count"]+1): + dint = "DINT"+str(int(i/8)) + if obj[dint] is not None: + data = extractNibble(obj[dint], i % 8) + output += "
Segment%s: %s%%" % (i, int(round(100 * data / 15.0))) + return output + return "" + +def genSegmentHeatmap(obj): + segments = [] + if obj["Count"] is not None and obj["Count"] > 0: + for i in range(1, obj["Count"]+1): + dint = "DINT"+str(int(i/8)) + if obj[dint] is not None: + data = extractNibble(obj[dint], i % 8) + color = 255 * data / 15 + segments.append("rgb(255, %s, %s)" % (color, color)) + return json.dumps(segments) \ No newline at end of file diff --git a/.resources/c4b11a62c77de72749d2fac91042026636c3e6bcf2efce58c4987728e630e198 b/.resources/c4b11a62c77de72749d2fac91042026636c3e6bcf2efce58c4987728e630e198 new file mode 100644 index 00000000..c9af6be8 --- /dev/null +++ b/.resources/c4b11a62c77de72749d2fac91042026636c3e6bcf2efce58c4987728e630e198 @@ -0,0 +1,290 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "SCAN" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#AAA", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Scanner" + }, + "position": { + "height": 27, + "rotate": { + "angle": "90deg" + }, + "width": 54, + "x": 72, + "y": 21.5 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.scanner" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/c5cbebcb426fadfad2bbe3758efd63702a7eea017e71775625530923b8965af6 b/.resources/c5cbebcb426fadfad2bbe3758efd63702a7eea017e71775625530923b8965af6 new file mode 100644 index 00000000..32ee0e76 --- /dev/null +++ b/.resources/c5cbebcb426fadfad2bbe3758efd63702a7eea017e71775625530923b8965af6 @@ -0,0 +1,9 @@ +{ + "isIdleTimeoutEnabled": true, + "idleMinutes": 240, + "gracePeriod": 300, + "gracePeriodMessage": "You will be logged out due to inactivity in {seconds} seconds", + "timeoutAction": "UserLogout", + "logoutUrl": "", + "isCustomLogout": false +} \ No newline at end of file diff --git a/.resources/cb9355f102afc2ddd48731bb559f0e3fcef841852500a9c7f414611a79d7ca6c b/.resources/cb9355f102afc2ddd48731bb559f0e3fcef841852500a9c7f414611a79d7ca6c new file mode 100644 index 00000000..01f19e3c --- /dev/null +++ b/.resources/cb9355f102afc2ddd48731bb559f0e3fcef841852500a9c7f414611a79d7ca6c @@ -0,0 +1,106 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code="Unknown") AS unknown, + SUM(sort_code="Unexpected") AS unexpected, + SUM(sort_code="Track Err") AS track_err, + SUM(sort_code="Gap Err") AS gap_err, + SUM(sort_code="Dest Full") AS dest_full, + SUM(sort_code="Dest Fault") AS dest_fault, + SUM(sort_code="Dest Invalid") AS dest_invalid, + SUM(sort_code="No Read") AS no_read, + SUM(sort_code="No Code") AS no_code, + SUM(sort_code="Multi Label") AS multi_label, + SUM(sort_code="Dest Disabled") AS dest_disabled, + SUM(sort_code="Rate High") AS rate_high, + SUM(sort_code="Div Fail") AS div_fail, + SUM(sort_code="Dest None") AS dest_none, + SUM(sort_code="Lost") AS lost, + SUM(sort_code="Dim Err") AS dim_err, + SUM(sort_code="Weight Err") AS weight_err, + SUM(sort_code="Underutilized") AS underutilized, + SUM(sort_code="Unsafe") AS unsafe + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter=:sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp AS time, + hour, + /* Counts: */ + success AS success_count, + unknown AS unknown_count, + unexpected AS unexpected_count, + track_err AS track_err_count, + gap_err AS gap_err_count, + dest_full AS dest_full_count, + dest_fault AS dest_fault_count, + dest_invalid AS dest_invalid_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + dest_disabled AS dest_disabled_count, + rate_high AS rate_high_count, + div_fail AS div_fail_count, + dest_none AS dest_none_count, + lost AS lost_count, + dim_err AS dim_err_count, + weight_err AS weight_err_count, + underutilized AS underutilized_count, + unsafe AS unsafe_count, + /* PPH: */ + success AS success_pph, + unknown AS unknown_pph, + unexpected AS unexpected_pph, + track_err AS track_err_pph, + gap_err AS gap_err_pph, + dest_full AS dest_full_pph, + dest_fault AS dest_fault_pph, + dest_invalid AS dest_invalid_pph, + no_read AS no_read_pph, + no_code AS no_code_pph, + multi_label AS multi_label_pph, + dest_disabled AS dest_disabled_pph, + rate_high AS rate_high_pph, + div_fail AS div_fail_pph, + dest_none AS dest_none_pph, + lost AS lost_pph, + dim_err AS dim_err_pph, + weight_err AS weight_err_pph, + underutilized AS underutilized_pph, + unsafe AS unsafe_pph, + /* Percents: */ + ROUND(success/total, 4) AS success_percent, + ROUND(unknown/total, 4) AS unknown_percent, + ROUND(unexpected/total, 4) AS unexpected_percent, + ROUND(track_err/total, 4) AS track_err_percent, + ROUND(gap_err/total, 4) AS gap_err_percent, + ROUND(dest_full/total, 4) AS dest_full_percent, + ROUND(dest_fault/total, 4) AS dest_fault_percent, + ROUND(dest_invalid/total, 4) AS dest_invalid_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent, + ROUND(dest_disabled/total, 4) AS dest_disabled_percent, + ROUND(rate_high/total, 4) AS rate_high_percent, + ROUND(div_fail/total, 4) AS div_fail_percent, + ROUND(dest_none/total, 4) AS dest_none_percent, + ROUND(lost/total, 4) AS lost_percent, + ROUND(dim_err/total, 4) AS dim_err_percent, + ROUND(weight_err/total, 4) AS weight_err_percent, + ROUND(underutilized/total, 4) AS underutilized_percent, + ROUND(unsafe/total, 4) AS unsafe_percent +FROM SORTERS +ORDER BY start_timestamp; \ No newline at end of file diff --git a/.resources/cbbbf2ebe8e1ead0fd196d4aab6315f5af83ee2057937cbe430dc68b795d01ba b/.resources/cbbbf2ebe8e1ead0fd196d4aab6315f5af83ee2057937cbe430dc68b795d01ba new file mode 100644 index 00000000..db15bce3 --- /dev/null +++ b/.resources/cbbbf2ebe8e1ead0fd196d4aab6315f5af83ee2057937cbe430dc68b795d01ba @@ -0,0 +1,156 @@ +{ + "custom": {}, + "params": { + "tagPath": "" + }, + "propConfig": { + "params.tagPath": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 29, + "width": 27 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Estop" + }, + "position": { + "height": 20, + "width": 20, + "x": 1, + "y": 8 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/EPC/Graphics" + }, + "overlayOptOut": true, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "Icon" + }, + "position": { + "height": 16, + "width": 16, + "x": 10, + "y": 1 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/LKD/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonGet({value}, \"showAlways\") || {session.custom.dexmanager.show.Estops}", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.color": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/LKD/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonGet({value}, \"color\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "path": "material/lock" + }, + "type": "ia.display.icon" + }, + { + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": 16, + "width": 16, + "x": 10, + "y": 1 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../Icon.meta.visible" + }, + "type": "property" + } + }, + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/LKD/Graphics" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "jsonGet({value}, \"tooltip\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/ccbf71f248b4cddc0c5774706d4957edf57c579eb68976bd5c7ef31b669713be b/.resources/ccbf71f248b4cddc0c5774706d4957edf57c579eb68976bd5c7ef31b669713be new file mode 100644 index 00000000..4499f90e --- /dev/null +++ b/.resources/ccbf71f248b4cddc0c5774706d4957edf57c579eb68976bd5c7ef31b669713be @@ -0,0 +1,178 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "overview" + }, + "position": { + "height": 1080, + "width": 1920 + }, + "props": { + "fit": { + "mode": "fill" + }, + "source": "/system/images/overview.svg" + }, + "type": "ia.display.image" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "page": "/mcm01" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 36, + "width": 124, + "x": 278, + "y": 626 + }, + "props": { + "primary": false, + "text": "MCM01 - FLUID INBOUND" + }, + "type": "ia.input.button" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "page": "/mcm02" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button_0" + }, + "position": { + "height": 36, + "width": 124, + "x": 1052, + "y": 726 + }, + "props": { + "primary": false, + "text": "MCM02 - NC SORTER" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Camera" + }, + "position": { + "height": 40, + "width": 40, + "x": 8, + "y": 368 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_0" + }, + "position": { + "height": 40, + "width": 40, + "x": 486, + "y": 432 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_1" + }, + "position": { + "height": 40, + "width": 40, + "x": 759, + "y": 613 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_2" + }, + "position": { + "height": 40, + "width": 40, + "x": 940, + "y": 408 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_3" + }, + "position": { + "height": 40, + "width": 40, + "x": 1863, + "y": 624 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/d0d272fbc909e084c41f6cf5cf4192ecd6f35258cb30740dfa0062abdc92a870 b/.resources/d0d272fbc909e084c41f6cf5cf4192ecd6f35258cb30740dfa0062abdc92a870 new file mode 100644 index 00000000..0c7fb436 --- /dev/null +++ b/.resources/d0d272fbc909e084c41f6cf5cf4192ecd6f35258cb30740dfa0062abdc92a870 @@ -0,0 +1,395 @@ +{ + "custom": { + "hasControls": null, + "isRunning": false + }, + "params": { + "label": "System", + "tagPath": "[default]SystemStatus", + "tagPaths": [], + "view": "Windows/Graphics/Overview" + }, + "propConfig": { + "custom.hasControls": { + "binding": { + "config": { + "expression": "// Force refresh:\r\nif(now(1000)\u003dnow(1000),\r\n\t{view.params.tagPaths},\r\n\t{view.params.tagPaths}\r\n)" + }, + "transforms": [ + { + "code": "\ttags \u003d [tagPath + \"/SetStart.Quality\" for tagPath in value] + [tagPath + \"/SetStop.Quality\" for tagPath in value]\n\tqualities \u003d [v.getQuality() for v in system.tag.readBlocking(tags)]\n\tqualities \u003d [v \u003d\u003d v.Good for v in qualities]\n\treturn any(qualities) and len(qualities) \u003e 0", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "custom.isRunning": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/bStarted" + }, + "type": "tag" + }, + "persistent": true + }, + "params.label": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPath": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPaths": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPaths[0]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPaths[1]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPaths[2]": { + "paramDirection": "input", + "persistent": true + }, + "params.tagPaths[3]": { + "paramDirection": "input", + "persistent": true + }, + "params.view": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 125 + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Status" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}.jsonValues" + }, + "transforms": [ + { + "expression": "try(\r\n\tif(jsonGet({value}, \"Estop_Active\") \u0026\u0026 {[default]Gateway/ToggleTag},\r\n\t\t\"#F00\",\t\t// Estop\r\n\t\tif(jsonGet({value}, \"bStarted\"),\r\n\t\t\t\"#0F0\",\t// Running\r\n\t\t\t\"#AAA\"\t// Stopped\r\n\t\t)\r\n\t),\r\n\t\"#808080\" // Unknown\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 1 + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Text" + }, + "position": { + "height": "calc(100% - 10px)", + "width": "calc(100% - 10px)", + "x": 5, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "if({view.params.label} \u003d None || {view.params.label} \u003d \"\",\r\n\t{value},\r\n\t{view.params.label}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFF", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 1, + "fontFamily": "var(--font-NotoSans)", + "fontSize": "12px", + "fontWeight": "bold", + "paddingLeft": "5px", + "textTransform": "uppercase", + "user-select": "none" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tself.parent.openWindow()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "//\"System\u003cbr\u003eStatus: \"+if({view.custom.hasControls}, if({view.custom.isRunning}, \"Running\", \"Stopped\"), \"Unknown\")\r\njsonGet({value}, \"tooltip\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPaths \u003d self.view.params.tagPaths\n\tif len(tagPaths) \u003e 0:\n\t\ttags \u003d [tagPath + \"/SetStart\" for tagPath in tagPaths]\n\t\tvalues \u003d [1]*len(tagPaths)\n\t\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Start" + }, + "position": { + "height": 25, + "width": 25, + "x": "calc(100% - 60px)", + "y": "calc(50% - 12.5px)" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "view.custom.hasControls" + }, + "type": "property" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "view.custom.isRunning" + }, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#888888", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#32CD32" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "â–º", + "textStyle": { + "fontFamily": "Arial", + "fontSize": "14px" + } + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPaths \u003d self.view.params.tagPaths\n\tif len(tagPaths) \u003e 0:\n\t\ttags \u003d [tagPath + \"/SetStop\" for tagPath in tagPaths]\n\t\tvalues \u003d [1]*len(tagPaths)\n\t\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Stop" + }, + "position": { + "height": 25, + "width": 25, + "x": "calc(100% - 32.5px)", + "y": "calc(50% - 12.5px)" + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "view.custom.hasControls" + }, + "type": "property" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "view.custom.isRunning" + }, + "transforms": [ + { + "expression": "if(isGood({value}), {value}, \"\")", + "type": "expression" + }, + { + "fallback": "#888888", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "â– ", + "textStyle": { + "fontFamily": "monospace", + "fontSize": "14px" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "cursor": "pointer" + } + }, + "scripts": { + "customMethods": [ + { + "name": "openWindow", + "params": [], + "script": "\tview \u003d self.view.params.view\n\tif view in [\"\", None]:\n\t\tview \u003d \"Windows/Graphics/\"+self.getChild(\"Text\").props.text.replace(\" \", \"_\")\n\t# Open window:\n\twindow \u003d \"Windows/GraphicsWrapper\"\n\tparams \u003d {\"view\": view}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)" + } + ], + "extensionFunctions": null, + "messageHandlers": [] + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/d2e3aa36d1ba6b72820b4713b2caf7b05861e0bfdd21a6b7aeeee1d74c308965 b/.resources/d2e3aa36d1ba6b72820b4713b2caf7b05861e0bfdd21a6b7aeeee1d74c308965 new file mode 100644 index 00000000..497a3612 --- /dev/null +++ b/.resources/d2e3aa36d1ba6b72820b4713b2caf7b05861e0bfdd21a6b7aeeee1d74c308965 @@ -0,0 +1,1001 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 60, + "width": 1600 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onDexClick": { + "config": { + "script": "\twindow \u003d \"Popups/DeviceWrapper\"\n\tparams \u003d {\n\t\t\"deviceType\": event.type.split(\".\")[-1],\n\t\t\"props\": event.props,\n\t\t\"meta\": event.meta,\n\t\t\"custom\": event.custom\n\t}\n\t# Change device type if available:\n\ttry:\n\t\ttagPath \u003d \"[default]\"+params[\"props\"].status.tagPath+\"/Parameters.DeviceType\"\n\t\tvalue \u003d system.tag.readBlocking([tagPath])[0]\n\t\tif value.quality.isGood():\n\t\t\tparams[\"deviceType\"] \u003d value.value\n\texcept:\n\t\tpass\n\t# Open window, if one is specified:\n\tid \u003d event.props.status.tagPath\n\ttitle \u003d utils.extractName(event.props.status)\n\tif self.session.custom.isMobile:\n\t\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)\n\telse:\n\t\tsystem.perspective.openPopup(id, window, params, title, resizable\u003dTrue)" + }, + "scope": "G", + "type": "script" + }, + "onDexComponentClick": { + "config": { + "script": "\tparams \u003d {\n\t\t\"type\": event.type,\n\t\t\"props\": event.props,\n\t\t\"meta\": event.meta,\n\t\t\"custom\": event.custom\n\t}\n\tsystem.perspective.openPopup(event.meta.name, \"Windows/Popup/Conveyor\", params)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "DexManager" + }, + "position": { + "height": 10, + "width": 10 + }, + "propConfig": { + "props.config": { + "binding": { + "config": { + "path": "session.custom.dexmanager.config" + }, + "type": "property" + } + }, + "props.highlight": { + "binding": { + "config": { + "path": "session.custom.dexmanager.highlight" + }, + "enabled": false, + "type": "property" + } + }, + "props.override": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\t{session.custom.heatmapSettings.data},\r\n\t0\r\n)" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d 0:\n\t\treturn {}\n\telse:\n\t\tdata \u003d value\n\t\taggregate \u003d {}\n\t\taggregate_conv \u003d {}\n\t\tmaxCount \u003d 0\n\t\t# Perform aggregates:\n\t\tfor r in range(data.getRowCount()):\n\t\t\tdevice \u003d data.getValueAt(r, \"device\")\n\t\t\tcount \u003d data.getValueAt(r, \"count\")\n\t\t\t# Add count to device:\n\t\t\taggregate[device] \u003d aggregate[device] + count if device in aggregate else count\n\t\t\t# Check if new max:\n\t\t\tmaxCount \u003d aggregate[device] if aggregate[device] \u003e maxCount else maxCount\n\t\t\t# Retrieve conveyor name:\n\t\t\tconv \u003d device.split(\".\")[0]\n\t\t\t# Add count to conveyor:\n\t\t\taggregate_conv[conv] \u003d aggregate_conv[conv] + count if conv in aggregate_conv else count\n\t\t\t# Check if new max:\n\t\t\tmaxCount \u003d aggregate_conv[conv] if aggregate_conv[conv] \u003e maxCount else maxCount\n\t\t# Convert to overrides:\n\t\tresult \u003d {}\n\t\tfor k, v in aggregate.items():\n\t\t\tresult[k] \u003d {\n\t\t\t\t\"tooltip\": k+\"\u003cbr\u003eCount: \"+str(v),\n\t\t\t\t\"color\": \"#FF\"+(format(255 - int(round(255 * v / maxCount)), \u0027x\u0027).zfill(2)*2)\n\t\t\t}\n\t\tfor k, v in aggregate_conv.items():\n\t\t\tresult[\"conveyor_\"+k] \u003d {\n\t\t\t\t\"tooltip\": k+\"\u003cbr\u003eCount: \"+str(v),\n\t\t\t\t\"color\": \"#FF\"+(format(255 - int(round(255 * v / maxCount)), \u0027x\u0027).zfill(2)*2)\n\t\t\t}\n\t\treturn result", + "type": "script" + } + ], + "type": "expr" + } + }, + "props.overrideAll.config.enableHighlight": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "enabled": false, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.overrideAll.config.isClickable": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": false + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.overrideAll.status.color": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "#FFF" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.overrideAll.status.tooltip": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "transforms": [ + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + }, + "props.show": { + "binding": { + "config": { + "struct": { + "heatmapDevices": "{session.custom.heatmapSettings.devices}", + "heatmapEnabled": "{session.custom.heatmapSettings.enabled}", + "show": "{session.custom.dexmanager.show}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tif value.heatmapEnabled:\n\t\tdevices \u003d [v.value for v in value.heatmapDevices]\n\t\treturn {\n\t\t\t\"Beacons\": \"Beacons\" in devices,\n\t\t\t\"ConveyorLabels\": True,\n\t\t\t\"ConveyorPatterns\": False,\n\t\t\t\"Conveyors\": True,\n\t\t\t\"DivertPaddles\": True,\n\t\t\t\"EIPs\": \"EIPs\" in devices,\n\t\t\t\"Encoders\": \"Encoders\" in devices,\n\t\t\t\"Estops\": \"Estops\" in devices,\n\t\t\t\"Gaylords\": True,\n\t\t\t\"LimitSwitches\": \"LimitSwitches\" in devices,\n\t\t\t\"MCPs\": \"MCPs\" in devices,\n\t\t\t\"PhotoEyes\": \"PhotoEyes\" in devices,\n\t\t\t\"PushButtons\": \"PushButtons\" in devices,\n\t\t\t\"Scanners\": \"Scanners\" in devices,\n\t\t\t\"VFDs\": \"VFDs\" in devices\n\t\t}\n\telse:\n\t\treturn value.show#{k: v.value for k, v in value.show.iteritems()}", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "overrideAll": { + "config": { + "enableHighlight": null + }, + "status": {} + } + }, + "type": "dex.controller.manager" + }, + { + "meta": { + "name": "Label_Date" + }, + "position": { + "height": 28, + "width": 90 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Date" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_Time" + }, + "position": { + "height": 28, + "width": 90, + "y": 28 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Time" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "1px", + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_Site" + }, + "position": { + "height": 56, + "width": 90, + "x": 88 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "{[default]Gateway/Parameters.Customer}" + }, + "transforms": [ + { + "code": "\treturn system.project.getProjectName() + \" \" + value", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_IPAddr" + }, + "position": { + "height": 28, + "width": 120, + "x": 176 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "session.props.host" + }, + "type": "property" + } + } + }, + "props": { + "style": { + "borderBottomColor": "#000", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tif self.session.props.auth.user.userName is not None:\n\t\t#system.perspective.print(\"Logout\")\n\t\tsystem.perspective.logout()\n\telse:\n\t\t#system.perspective.print(\"Login\")\n\t\tsystem.perspective.login()" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Label_User" + }, + "position": { + "height": 28, + "width": 120, + "x": 176, + "y": 28 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "coalesce({session.props.auth.user.userName}, \"LOGIN\")" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderTopColor": "#000", + "borderTopStyle": "solid", + "borderTopWidth": "1px", + "classes": "Docked/StatusText", + "cursor": "pointer" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/help" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Legend" + }, + "position": { + "height": 52, + "width": 100, + "x": 988, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Help" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": [ + { + "config": { + "page": "/" + }, + "scope": "C", + "type": "nav" + }, + { + "config": { + "params": { + "view": "Windows/Graphics/Overview" + }, + "view": "Windows/GraphicsWrapper" + }, + "scope": "C", + "type": "nav" + } + ] + } + }, + "meta": { + "name": "Nav_Overview" + }, + "position": { + "height": 52, + "width": 100, + "x": 356, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Overview" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "action": "Toggle", + "type": "Page" + }, + "scope": "C", + "type": "fullscreen" + } + } + }, + "meta": { + "name": "Nav_ToggleFull" + }, + "position": { + "height": 52, + "width": 100, + "x": 1090, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Fullscreen" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label_Status" + }, + "position": { + "height": 56, + "width": 60, + "x": 294 + }, + "props": { + "style": { + "classes": "Docked/StatusText" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Status" + }, + "position": { + "height": 40, + "width": 40, + "x": 304, + "y": 8 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/CommStatusColor" + }, + "type": "tag" + } + } + }, + "props": { + "elements": [ + { + "cx": 20, + "cy": 20, + "fill": {}, + "r": 19, + "stroke": { + "paint": "#000", + "width": 2 + }, + "style": {}, + "type": "circle" + } + ], + "preserveAspectRatio": "none", + "viewBox": "0 0 40 40" + }, + "type": "ia.shapes.svg" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/active" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_ActiveAlarms" + }, + "position": { + "height": 52, + "width": 100, + "x": 458, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Active Alarms" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/hitlist" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_HitList" + }, + "position": { + "height": 25, + "width": 100, + "x": 560, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Hit List" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/alarms/history" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_History" + }, + "position": { + "height": 25, + "width": 100, + "x": 560, + "y": 29 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "History" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/statistics" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Statistics" + }, + "position": { + "height": 52, + "width": 100, + "x": 662, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Statistics" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/status" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Status" + }, + "position": { + "height": 52, + "width": 100, + "x": 764, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Status" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": 40, + "width": 40, + "x": 304, + "y": 8 + }, + "propConfig": { + "props.status.tooltip": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/CommStatusTooltip" + }, + "type": "tag" + } + } + }, + "props": { + "status": {} + }, + "type": "dex.display.tooltipoverlay" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/custom-reports" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_CustomReports" + }, + "position": { + "height": 52, + "width": 100, + "x": 1192, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Custom Reports" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/config" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Config" + }, + "position": { + "height": 52, + "width": 100, + "x": 1294, + "y": 2 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\", \"Maintenance\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Config", + "visible": true + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\twindow\u003d\"Popups/Heatmap/Config\"\n\tif self.session.custom.isMobile:\n\t\tsystem.perspective.navigate(view\u003dwindow)\n\telse:\n\t\tsystem.perspective.openPopup(\"HeatmapSettings\", window, title\u003d\"Heatmap Configuration\", modal\u003dTrue, overlayDismiss\u003dTrue)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Nav_AlarmHeatmap" + }, + "position": { + "height": 52, + "width": 100, + "x": 1498, + "y": 2 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "props.enabled": { + "binding": { + "config": { + "expression": "!{session.custom.heatmapSettings.enabled}" + }, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Alarm Heatmap", + "visible": true + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "LabelHeatMap", + "visible": false + }, + "position": { + "height": 56, + "width": 732, + "x": 458 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.heatmapSettings.enabled" + }, + "type": "property" + }, + "persistent": true + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if({session.custom.heatmapSettings.enabled},\r\n\tif({[default]Gateway/ToggleTag},\r\n\t\t\"#FF0\",\r\n\t\t\"#F00\"\r\n\t),\r\n\t\"#AAA\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderBottomStyle": "none", + "borderBottomWidth": 2, + "borderLeftStyle": "solid", + "borderLeftWidth": 2, + "borderRightStyle": "solid", + "borderRightWidth": 2, + "borderTopStyle": "none", + "borderTopWidth": 2, + "fontWeight": "bold", + "lineHeight": "16px", + "textAlign": "center", + "textTransform": "uppercase" + }, + "text": "Heatmap Mode Active" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "LabelFireAlarm", + "visible": false + }, + "position": { + "height": 56, + "width": 178 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/FireAlarm" + }, + "type": "tag" + }, + "persistent": true + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "expression": "if({[default]Gateway/FireAlarm},\r\n\tif({[default]Gateway/ToggleTag},\r\n\t\t\"#FF0\",\r\n\t\t\"#F00\"\r\n\t),\r\n\t\"#AAA\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "borderBottomStyle": "none", + "borderBottomWidth": 2, + "borderLeftStyle": "solid", + "borderLeftWidth": 2, + "borderRightStyle": "solid", + "borderRightWidth": 2, + "borderTopStyle": "none", + "borderTopWidth": 2, + "fontWeight": "bold", + "lineHeight": "16px", + "textAlign": "center", + "textTransform": "uppercase" + }, + "text": "Building Fire Alarm" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/commission" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_Commission" + }, + "position": { + "height": 52, + "width": 100, + "x": 1396, + "y": 2 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\", \"Supervisor\", \"Maintenance\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Commission", + "visible": true + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "page": "/cameras" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Nav_JamCameras" + }, + "position": { + "height": 52, + "width": 100, + "x": 866, + "y": 2 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Jam Cameras" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background": "#AAA", + "border-bottom": "2px solid #000", + "border-top": "2px solid #000" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/d30f506ea841278c9262ac93c281dc6306de58ca77fc5f2970cc6a9037fd2c28 b/.resources/d30f506ea841278c9262ac93c281dc6306de58ca77fc5f2970cc6a9037fd2c28 new file mode 100644 index 00000000..e5b93432 --- /dev/null +++ b/.resources/d30f506ea841278c9262ac93c281dc6306de58ca77fc5f2970cc6a9037fd2c28 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#00CC00" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/d3bc2c48f8b4977f4af45af6fb251d24446d01d9b9dcc202770a38fce731642c b/.resources/d3bc2c48f8b4977f4af45af6fb251d24446d01d9b9dcc202770a38fce731642c new file mode 100644 index 00000000..e8c78e85 --- /dev/null +++ b/.resources/d3bc2c48f8b4977f4af45af6fb251d24446d01d9b9dcc202770a38fce731642c @@ -0,0 +1,1092 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "RobinLaneStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}", + "where": "\"lane LIKE \\\"RS%CH\\\"\"" + }, + "queryPath": "Status/LaneStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "lane", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Lane" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Robin Lane Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/d3f447c13f858ee593d553f107c2454d3e96ce668900381aa1d6a19dd9d59936 b/.resources/d3f447c13f858ee593d553f107c2454d3e96ce668900381aa1d6a19dd9d59936 new file mode 100644 index 00000000..1d9eb861 --- /dev/null +++ b/.resources/d3f447c13f858ee593d553f107c2454d3e96ce668900381aa1d6a19dd9d59936 @@ -0,0 +1,112 @@ +import re +import system + +reDefault = re.compile(r'\[[^[]+\]') + +def _extractParameter(params, parameter, path): + val = params[parameter].value + if hasattr(val, "bindType"): + return system.tag.readBlocking([path+"/Parameters."+parameter])[0].value + else: + return val + +def _isGroupedUDT(obj): + for tag in obj["tags"]: + if tag["name"] in ["Graphics", "StatusText"]: + return False + return True + +def getSiblingDevices(tagPath, filterType=None, filterTagPath=True): + devices = [] + + def extractStatusText(obj, path): + # Scan for status text tag: + for tag in obj["tags"]: + if tag["name"] == "StatusText": + return "[ignition]" + reDefault.sub("", path) + "/StatusText" + # Couldn't find it, so return None: + return None + + def scan(obj, parentPath): + if isinstance(obj, list): + for tag in obj: + scan(tag, parentPath) + else: + path = parentPath + "/" + obj["name"] + if str(obj["tagType"]) == "Folder" or (str(obj["tagType"]) == "UdtInstance" and (tagPath <> path or not filterTagPath) and _isGroupedUDT(obj)): + for tag in obj["tags"]: + scan(tag, path) + elif str(obj["tagType"]) == "UdtInstance" and (tagPath <> path or not filterTagPath): + params = obj["parameters"] + # Make sure this is a renderable device: + if "DeviceType" in params: + deviceType = _extractParameter(params, "DeviceType", path) + if filterType == None or deviceType in filterType: + labelFull = _extractParameter(params, "LabelFull", path) + devices.append({ + "deviceType": deviceType, + "tagPath": path, + "device": labelFull,#"[ignition]" + reDefault.sub("", path) + "/Parameters.LabelFull", + "status": extractStatusText(obj, path) + }) + + # Scan devices: + if tagPath not in [None, ""]: + tagPath = reDefault.sub("", tagPath) # Remove [default] from tagpath + parentPath = "/".join(tagPath.split("/")[:-1]) + config = system.tag.getConfiguration(parentPath, True) + #system.perspective.print(parentPath) + #system.perspective.print(config) + if len(config) > 0 and "tags" in config[0]: + scan(config[0]["tags"], parentPath) + devices.sort(key=lambda x: x["device"]) + + return devices + +def _isTagOPC(path): + try: + return system.tag.readBlocking([path+".ValueSource"])[0].value == "opc" + except: + return False + +def _isTagEnabled(path): + try: + return system.tag.readBlocking([path+".Enabled"])[0].value + except: + return False + +def getOPCTags(tagPath): + tags = [] + + def scan(obj, parentPath, relPath=""): + if isinstance(obj, list): + for tag in obj: + scan(tag, parentPath, relPath) + elif "name" in obj: + path = parentPath + "/" + obj["name"] + if "tags" in obj: + # Scan deeper: + relPath = relPath + obj["name"] + "/" + for tag in obj["tags"]: + scan(tag, path, relPath) + else: + if _isTagEnabled(path) and _isTagOPC(path):#and obj["name"] not in ["Graphics"]: + # Found an OPC tag: + tags.append({ + "tagName": relPath + obj["name"], + "tagType": "opc", + "tagPath": "[ignition]" + path + ".OpcItemPath", + "tagValue": "[ignition]" + path, + "tagTooltip": "[ignition]" + path + ".Tooltip", + "tagDocumentation": "[ignition]" + path + ".Documentation" + }) + + # Scan devices: + if tagPath not in [None, ""]: + tagPath = reDefault.sub("", tagPath) # Remove [default] from tagpath + config = system.tag.getConfiguration(tagPath, True) + if len(config) > 0 and "tags" in config[0]: + scan(config[0]["tags"], tagPath) + tags.sort(key=lambda x: x["tagName"]) + + return tags \ No newline at end of file diff --git a/.resources/d6d5e1b875627a31ba89016e0e8ad3d0178879649b0a70b6a2cdc5875bed0f9b b/.resources/d6d5e1b875627a31ba89016e0e8ad3d0178879649b0a70b6a2cdc5875bed0f9b new file mode 100644 index 00000000..40a10ef1 --- /dev/null +++ b/.resources/d6d5e1b875627a31ba89016e0e8ad3d0178879649b0a70b6a2cdc5875bed0f9b @@ -0,0 +1,297 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "BCN1_BLU" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#AAA", + "showAlways": true, + "showLabel": "B", + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "BCN1_BLU" + }, + "position": { + "height": 48, + "width": 48, + "x": 76, + "y": 11 + }, + "propConfig": { + "meta.name": { + "binding": { + "config": { + "path": "view.params.meta.name" + }, + "type": "property" + }, + "persistent": true + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/d7708674a0c68b2602557b8792d5b1cce48ee495b3a66292b3625e8132a46730 b/.resources/d7708674a0c68b2602557b8792d5b1cce48ee495b3a66292b3625e8132a46730 new file mode 100644 index 00000000..0abcff0a --- /dev/null +++ b/.resources/d7708674a0c68b2602557b8792d5b1cce48ee495b3a66292b3625e8132a46730 @@ -0,0 +1,16 @@ +DEVICE_WINDOW = "Popups/DeviceWrapper" + +def openDevice(params, title, isMobile=False): + params["tabs"] = ["Status"] + # Add alarm history tab: + if params["deviceType"] not in ["beacon"]: + params["tabs"].append("Alarm History") + # Add devices tab: + if params["deviceType"] in ["conveyor", "conveyorcurve", "gaylord", "mcp"]: + params["tabs"].append("Devices") + # Open window, if one is specified: + id = params["props"]["status"]["tagPath"] + if isMobile: + system.perspective.navigate(view=DEVICE_WINDOW, params=params) + else: + system.perspective.openPopup(id, DEVICE_WINDOW, params, title, resizable=True) \ No newline at end of file diff --git a/.resources/d7f9d5faaeddecd6dd07a892910f4a4528cb612933d38d5668eaf88620b6de3e b/.resources/d7f9d5faaeddecd6dd07a892910f4a4528cb612933d38d5668eaf88620b6de3e new file mode 100644 index 00000000..621a5925 --- /dev/null +++ b/.resources/d7f9d5faaeddecd6dd07a892910f4a4528cb612933d38d5668eaf88620b6de3e @@ -0,0 +1,403 @@ +{ + "custom": {}, + "params": { + "deviceType": "beacon", + "meta": { + "name": "" + }, + "props": { + "config": { + "alwaysShowAll": true, + "enableHighlight": true, + "isClickable": false, + "isRightOfSorter": false, + "mirror": false, + "originSide": "left", + "paddleThickness": 10, + "showLabel": true, + "type": "belt" + }, + "status": { + "color": "#aaa", + "isExtended": true, + "isManual": false, + "isRetracted": false, + "showAlways": true, + "showLabel": "B", + "tagPath": "", + "tooltip": "" + } + }, + "tabs": [ + "Status", + "Alarm History", + "Devices", + "Controls" + ] + }, + "propConfig": { + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.isRightOfSorter": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.mirror": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.originSide": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.paddleThickness": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.showLabel": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.type": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.background": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isExtended": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isFaulted": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isManual": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.isRetracted": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.showLabel": { + "paramDirection": "input", + "persistent": true + }, + "params.props.status.tooltip": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs": { + "paramDirection": "inout", + "persistent": true + }, + "params.tabs[0]": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs[1]": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs[2]": { + "paramDirection": "input", + "persistent": true + }, + "params.tabs[3]": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 569 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 35, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": "view.params.deviceType" + }, + "transforms": [ + { + "code": "\t# Handle special cases\n\tif(value \u003d\u003d \"eip\"):\n\t\tvalue \u003d \"Ethernet IP (EIP)\"\n\telif(value \u003d\u003d \"mcp\"):\n\t\tvalue \u003d \"Main Control Panel (MCP)\"\n\telif(value \u003d\u003d \"divertpaddle\"):\n\t\tvalue \u003d \"Divert Paddle\"\n\telif(value \u003d\u003d \"limitswitch\"):\n\t\tvalue \u003d \"Limit Switch\"\n\telif(value \u003d\u003d \"photoeye\"):\n\t\tvalue \u003d \"Photo Eye\"\n\telif(value \u003d\u003d \"pushbutton\"):\n\t\tvalue \u003d \"Push Button\"\n\telif(value.startswith(\"vfd\")):\n\t\tvalue \u003d \"Variable Frequency Drive (VFD)\"\n\telif(value \u003d\u003d \"chutedestination\"):\n\t\tvalue \u003d \"Chute Destination\"\n\telif(value \u003d\u003d \"hss_chute\"):\n\t\tvalue \u003d \"Chute Destination\"\n\telif(value \u003d\u003d \"spiralchute\"):\n\t\tvalue \u003d \"Spiral Chute\"\n\telif(value \u003d\u003d \"divchute\"):\n\t\tvalue \u003d \"Divert Chute\"\n\telif(value \u003d\u003d \"rrchute\"):\n\t\tvalue \u003d \"Round Robin Chute\"\n\telse:\n\t\t# Do proper caps for anything else\n\t\tvalue \u003d value.title()\n\treturn value", + "type": "script" + }, + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "1px", + "color": "#FFF", + "fontSize": "20px", + "fontWeight": "bold", + "paddingLeft": 5 + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 35px)", + "width": "100%", + "y": 35 + }, + "propConfig": { + "custom.key": { + "binding": { + "config": { + "path": "session.props.auth.user.roles" + }, + "transforms": [ + { + "code": "\troles \u003d [\"Administrator\", \"Developer\"]\n\treturn value !\u003d None and len(value) \u003e 0 and len([i for i in value if i in roles]) \u003e 0", + "type": "script" + } + ], + "type": "property" + } + }, + "props.tabs": { + "binding": { + "config": { + "struct": { + "deviceType": "{view.params.deviceType}", + "roles": "{session.props.auth.user.roles}", + "tagPath": "try({view.params.props.status.tagPath}, \"\")" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tcontrols \u003d [\"spiralchute\", \"divchute\", \"rrchute\", \"chutedestination\", \"hss_chute\"]\n\tdevices \u003d controls + [\"conveyor\", \"conveyorcurve\", \"gaylord\"]#, \"mcp\"]\n\troles \u003d [\"Administrator\", \"Developer\", \"Maintenance\"]\n\t\n\t# Add base tab:\n\ttabs \u003d [\"Status\" if value.deviceType not in controls else \"Controls\"]\n\t# Add alarm history tab:\n\tif value.deviceType not in [\"beacon\"]:\n\t\ttabs.append(\"Alarm History\")\n\t# Add fms:\n\tif value.tagPath not in [None, \"\"]:\n\t\ttag \u003d system.tag.getConfiguration(self.view.params.props.status.tagPath)[0]\n\t\tif \"typeId\" in tag and tag[\"typeId\"].endswith(\"_FMS\"):\n\t\t\ttabs.append(\"Flow Management\")\n\t# Add devices tab:\n\tif value.deviceType in devices:\n\t\ttabs.append(\"Devices\")\n\t# Add tags tab:\n\tif value.deviceType not in controls and value.roles !\u003d None and len([r for r in value.roles if r in roles]) \u003e 0:\n\t\ttabs.append(\"Tags\")\n\t\n\t# Return tabs:\n\treturn tabs", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "height": 35, + "width": 150 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + } + }, + "type": "ia.container.tab" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "height": "calc(100% - 69px)", + "width": "100%", + "y": 69 + }, + "propConfig": { + "props.params.deviceType": { + "binding": { + "config": { + "path": "view.params.deviceType" + }, + "type": "property" + } + }, + "props.params.meta": { + "binding": { + "config": { + "path": "view.params.meta" + }, + "type": "property" + } + }, + "props.params.props": { + "binding": { + "config": { + "path": "view.params.props" + }, + "type": "property" + } + }, + "props.path": { + "binding": { + "config": { + "expression": "property(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\")" + }, + "transforms": [ + { + "fallback": "\"Popups/Device/Statuses/\" + {view.params.deviceType}", + "inputType": "scalar", + "mappings": [ + { + "input": "Status", + "output": "\"Popups/Device/Statuses/\" + {view.params.deviceType}" + }, + { + "input": "Controls", + "output": "\"Popups/Device/Controls/\" + {view.params.deviceType}" + }, + { + "input": "Alarm History", + "output": "\"Popups/Device/AlarmHistory\"" + }, + { + "input": "Flow Management", + "output": "\"Popups/Device/FlowManagement\"" + }, + { + "input": "Devices", + "output": "\"Popups/Device/Devices\"" + }, + { + "input": "Tags", + "output": "\"Popups/Device/Tags\"" + } + ], + "outputType": "expression", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "type": "ia.display.view" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\twindow \u003d \"Windows/GraphicsWrapper\"\n\tplctag \u003d self.view.params.props.status.tagPath.replace(\"[default]\", \"\").split(\"/\")[0]\n\tplctag \u003d \"[\"+plctag+\"]\"\n\tdevice \u003d utils.extractName(self.view.params.props.status)\n\tscreen \u003d alarms.resolveScreen(device, plctag)\n\tparams \u003d {\"view\": screen}\n\tsystem.perspective.navigate(\"/\")\n\tsystem.perspective.navigate(view\u003dwindow, params\u003dparams)\n\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_GoTo" + }, + "position": { + "height": 25, + "width": 80, + "x": "calc(100% - 85px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Go To" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"export-data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Export" + }, + "position": { + "height": 25, + "width": 80, + "x": "calc(100% - 170px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "window" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/d8531ce71f5d55eedf1488ea3e729e13cdb543068effa2b4749d76c052213d11 b/.resources/d8531ce71f5d55eedf1488ea3e729e13cdb543068effa2b4749d76c052213d11 new file mode 100644 index 00000000..677242c8 --- /dev/null +++ b/.resources/d8531ce71f5d55eedf1488ea3e729e13cdb543068effa2b4749d76c052213d11 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#007DFA" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/d86c9c80184cca595b562b99b76703567f16078606e1b83fb72ecdcaaa70e3c6 b/.resources/d86c9c80184cca595b562b99b76703567f16078606e1b83fb72ecdcaaa70e3c6 new file mode 100644 index 00000000..f568c225 --- /dev/null +++ b/.resources/d86c9c80184cca595b562b99b76703567f16078606e1b83fb72ecdcaaa70e3c6 @@ -0,0 +1,151 @@ +import csv +import re +import StringIO + +reRemoveZeroes = re.compile(r'([^\d])0+([1-9])') +reStartingDashes = re.compile(r'^([^_]+)_([^_]+)') +reChuteDashes = re.compile(r'_CH') +reExtraDashes = re.compile(r'_(\d+)(?=_)') +reUnderscores = re.compile(r'_') +reName = re.compile(r'^(.+?)(
|$)') +reStatus = re.compile(r'Status: (.+?)(
|$)') + +reCount = re.compile(r'Count$') +rePPH = re.compile(r'Pph$') +reCPH = re.compile(r'Cph$') +rePercent = re.compile(r'Percent$') + +def prettyName(name, hasDots=True): + # Remove zero padding: + name = reRemoveZeroes.sub(r"\1\2", name) + # Change _ to -: + name = reExtraDashes.sub(r"-\1", reChuteDashes.sub("-CH", reStartingDashes.sub(r"\1-\2", name))) + # Fix device names: + name = reUnderscores.sub("." if hasDots else "-", name) + # Return name: + return name + +def prettyTitle(title): + # Convert title: + title = title.replace("_", " ").title() + title = reCount.sub("(#)", title) + title = rePPH.sub("(pph)", title) + title = reCPH.sub("(cph)", title) + title = rePercent.sub("(%)", title) + return title + +def extractName(obj): + # Return status: + try: + return reName.search(obj["tooltip"]).group(1) + except: + return "Unknown" + +def extractStatus(obj): + # Return status: + try: + return reStatus.search(obj["tooltip"]).group(1) + except: + return "Unknown" + +def getRowCount(data): + if hasattr(data, 'getRowCount'): + return data.getRowCount() + else: + return len(data) + +def toCSV(headers, rows): + buf = StringIO.StringIO() + writer = csv.writer(buf, delimiter=',') + writer.writerows([headers] + rows) + return buf.getvalue() + +def datasetFromJson(json, columns=None): + hasStyling = "value" in json[0].keys() + fields = json[0]["value"].keys() if hasStyling else json[0].keys() + titles = fields + if columns <> None: + fields = columns[0] + titles = columns[1] + + # Extract json data into 2D array: + datasetData = [] + for row in json: + rowData = [] + for field in fields: + cell = row["value"][field] if hasStyling else row[field] + if hasattr(cell, 'value'): + rowData.append(cell.value) + else: + rowData.append(cell) + datasetData.append(rowData) + + return toCSV(titles, datasetData) + +def datasetFromDataset(data, columns=None): + fields = system.dataset.getColumnHeaders(data) + titles = fields + if columns <> None: + fields = columns[0] + titles = columns[1] + datasetData = [[data.getValueAt(row, col) for col in fields] for row in range(data.getRowCount())] + + return toCSV(titles, datasetData) + +def datasetFromTable(table): + data = table.props.data + columns = table.props.columns + if len(columns) > 0: + fields = [] + titles = [] + for col in columns: + if "visible" not in col or col.visible: + fields.append(col.field) + if "header" in col and "title" in col.header and col.header.title not in [None,""]: + titles.append(col.header.title) + else: + titles.append(col.field) + if hasattr(data, 'getValueAt'): + return datasetFromDataset(data, [fields, titles]) + else: + return datasetFromJson(data, [fields, titles]) + else: + return datasetFrom(data) + +def datasetFrom(data): + t = str(type(data)) + #system.perspective.print(t) + if "$ArrayWrapper" in t:# == "": + return datasetFromJson(data) + elif "$SafetyWrapper" in t: + return datasetFromTable(data) + else: + return datasetFromDataset(data) + +def datasetToJSON(data): + fields = system.dataset.getColumnHeaders(data) + return [{col:data.getValueAt(row, col) for col in fields} for row in range(data.getRowCount())] + +def downloadCSV(data, title): + csv = datasetFrom(data) + # Generate filename: + title = title.lower().replace(" ", "_") + datetime = system.date.format(system.date.now(), "yyyyMMdd_HHmmss") + filename = title + "_" + datetime + ".csv" + # Download: + system.perspective.download(filename, csv) + +def getScope(): + """gets the scope that the execution is running in and returns a string indication of which scope + + Returns: a string indicating with scope the function is executing in + """ + from com.inductiveautomation.ignition.common.model import ApplicationScope + scope = ApplicationScope.getGlobalScope() + + if ApplicationScope.isGateway(scope): + return 'gateway' + if ApplicationScope.isClient(scope): + return 'client' + if ApplicationScope.isDesigner(scope): + return 'designer' diff --git a/.resources/d95848c2a566e004940b840802020dec56c88e9130d3346ef2014556a74f9dd3 b/.resources/d95848c2a566e004940b840802020dec56c88e9130d3346ef2014556a74f9dd3 new file mode 100644 index 00000000..66627cd5 --- /dev/null +++ b/.resources/d95848c2a566e004940b840802020dec56c88e9130d3346ef2014556a74f9dd3 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#FF6000" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/da58916084ff6d2ba3f6dca3be1445db4edfa75e884d832440cddfbbb7f18c51 b/.resources/da58916084ff6d2ba3f6dca3be1445db4edfa75e884d832440cddfbbb7f18c51 new file mode 100644 index 00000000..9f90ef8b --- /dev/null +++ b/.resources/da58916084ff6d2ba3f6dca3be1445db4edfa75e884d832440cddfbbb7f18c51 @@ -0,0 +1,112 @@ +{ + "custom": {}, + "params": { + "filenames": [] + }, + "propConfig": { + "params.filenames": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 300, + "width": 400 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Markdown" + }, + "position": { + "height": "calc(100% - 100px)", + "width": "calc(100% - 50px)", + "x": 25, + "y": 25 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "path": "view.params.filenames" + }, + "transforms": [ + { + "code": "\ttext \u003d \"Are you sure you would like to delete the following documents:\\n\"\n\tfor val in value:\n\t\ttext +\u003d \"\\n* \"+val\n\treturn text", + "type": "script" + } + ], + "type": "property" + } + } + }, + "type": "ia.display.markdown" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tdocuments.deleteDocuments(self.view.params.filenames)\n\tsystem.perspective.sendMessage(\"custom-documents-refreshlist\", {})\n\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Yes" + }, + "position": { + "height": 55, + "width": 100, + "x": 25, + "y": 235 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Yes" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.closePopup(\"\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_No" + }, + "position": { + "height": 55, + "width": 100, + "x": "calc(100% - 125px)", + "y": 235 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "No" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/dd587d3408d7038ad48dcdf849a25607dcfdf0c14e0823f12aaa957ccf96a22c b/.resources/dd587d3408d7038ad48dcdf849a25607dcfdf0c14e0823f12aaa957ccf96a22c new file mode 100644 index 00000000..8fd1dd38 --- /dev/null +++ b/.resources/dd587d3408d7038ad48dcdf849a25607dcfdf0c14e0823f12aaa957ccf96a22c @@ -0,0 +1,130 @@ +################################################################ +################################################################ +## Version: 1.0 / Author: Dillon Uzar +## +## DESC: For use in WCS Sorting Lane Lookup & Recording +## WARN: Modifying code may cause system to function incorrectly +################################################################ +################################################################ + +from __future__ import with_statement +import csv +import os +import random +import re +import string +import system +import time +from os import path + +####################################################### +####################################################### +####################################################### +#### Constants +####################################################### + +# Logger: +LOG = system.util.logger("WCS Sorting Handler") + +# Defaults for function arguments: +PROGRAM_PATH = "" +CARTON_PATH = "WCS_Package" +DEFAULT_DEVICE = "MCP20" +DEFAULT_OPC_SERVER = "Ignition OPC UA Server" + +# Configuration variables: +MAX_CARTONS = 100 # Max possible carton IDs +MAX_BARCODE_SIZE = 82 # Max possible size of full barcode + +# For extracting PLC info: +PACKAGE_DATA = [ + #["Induct_ID", "induct"], # The induct the package was inducted from + #["Scanner_ID", "scanner"], # The scanner the package was scanned from + #["Sorter_ID", "sorter"], # The sorter the package was sorted from + ["BCR_Img_ID", "bcr_imgid"], # Barcode reader, sequence ID + ["BCR_Seq_ID", "bcr_seqid"], # Barcode reader, image ID + ["Length", "pkg_length"], # Package length in units of 1/10". Only populated if available, use 0 if not + ["Width", "pkg_width"], # Package width in units of 1/10". Only populated if available, use 0 if not + ["Height", "pkg_height"], # Package height in units of 1/10". Only populated if available, use 0 if not + ["Carriers", "carriers"], # Num of carriers (trays/shoes) on sorter that the package is occupying. Only populated if available, use 0 if not + ["Gap_Leading", "gap_leading"], # Leading edge gap distance in units of 1/10". Only populated if available, use 0 if not. If value exceeds INT size, cap it to the max INT value + ["Gap_Trailing", "gap_trailing"], # Trailing edge gap distance in units of 1/10". Only populated if available, use 0 if not. If value exceeds INT size, cap it to the max INT value + ["S01_Barcode", "s01_barcode"], # The barcode sent in the S01 message + ["S02_Req_Dest_ID", "s02_req_dest"], # The requested destination ID sent in the S02 message + ["S02_Alt_Dest_ID", "s02_alt_dest"], # The alternate destination ID sent in the S02 message + ["S04_PLC_ID", "s04_plc_id"], # Internal PLC number used to track packages and cross reference to the Host ID + ["S04_Host_ID", "s04_host_id"], # The PLC record number sent in the S04 message, (1 - 9999) + ["S04_Req_Dest_ID", "s04_req_dest"], # The requested destination ID sent in the S04 message + ["S04_Act_Dest_ID", "s04_act_dest"], # The actual destination ID sent in the S04 message + ["S04_Sort_Code", "s04_sort_code"], # The reason code sent in the S04 message + ["Req_Dest_Reason", "req_dest_reason"], # See Destination Reason Bit-Map sheet + ["Alt_Dest_Reason", "alt_dest_reason"] # See Destination Reason Bit-Map sheet +] +TIMESTAMP_DATA = [ + ["S01_Timestamp_H", "s01_timestamp"], # The timestamp sent in the S01 message, Upper 32-bits, UTS in microseconds + ["S01_Timestamp_L", "s01_timestamp"], # The timestamp sent in the S01 message, Lower 32-bits, UTS in microseconds + ["S02_Timestamp_H", "s02_timestamp"], # The timestamp sent in the S02 message, Upper 32-bits, UTS in microseconds + ["S02_Timestamp_L", "s02_timestamp"], # The timestamp sent in the S02 message, Lower 32-bits, UTS in microseconds + ["S04_Timestamp_H", "s04_timestamp"], # The timestamp sent in the S04 message, Upper 32-bits, UTS in microseconds + ["S04_Timestamp_L", "s04_timestamp"] # The timestamp sent in the S04 message, Lower 32-bits, UTS in microseconds +] +# Generate array of paths to read: +PACKAGE_PATHS = [v[0] for v in PACKAGE_DATA] +TIMESTAMP_PATHS = [v[0] for v in TIMESTAMP_DATA] +DATA_PATHS = PACKAGE_PATHS + TIMESTAMP_PATHS + +# For inserting data into database: +PACKAGE_COLS = [v[1] for v in PACKAGE_DATA] +PACKAGE_VALS = ["?"]*len(PACKAGE_COLS) +TIMESTAMP_COLS = [TIMESTAMP_DATA[i][1] for i in range(len(TIMESTAMP_DATA)) if TIMESTAMP_DATA[i][1] in (v[1] for v in TIMESTAMP_DATA[:i])] +TIMESTAMP_VALS = ["FROM_UNIXTIME(((?&(POWER(2, 32)-1))*POWER(2, 32)+(?&(POWER(2, 32)-1)))/1000000)"]*len(TIMESTAMP_COLS) +UNIQUE_COLS = ["trackid", "induct", "scanner", "sorter"] + PACKAGE_COLS + TIMESTAMP_COLS +UNIQUE_VALS = ["?"]*4 + PACKAGE_VALS + TIMESTAMP_VALS +CONFIRM_INSERT_QUERY = "INSERT IGNORE INTO package_history (" + ",".join(UNIQUE_COLS) + ") VALUES (" + ",".join(UNIQUE_VALS) + ")" + +####################################################### +####################################################### +####################################################### +#### Parsing Utils +####################################################### + +def isNoRead(field): + return field.replace("?","") == "" + +def isMultiRead(field): + return field.replace("#","") == "" + +def isBadRead(field): + return (field == None or isNoRead(field) or isMultiRead(field)) + +def logTime(title, trackID, seconds): + millisec = round(seconds * 1000, 1) + LOG.info("%s[ID=%s] took %sms to process" % (title, trackID, millisec)) + +####################################################### +####################################################### +####################################################### +#### PLC Event Handling +####################################################### + +def processConfirmAsync(trackID, induct, scanner, sorter, program=PROGRAM_PATH, carton=CARTON_PATH, device=DEFAULT_DEVICE, opcServer=DEFAULT_OPC_SERVER): + # This function handles confirm events, and logs the event in SQL + # Ensure ID is valid + if trackID > 0 and trackID < MAX_CARTONS: + def processConfirmInner(): + start_time = time.time() + # Setup carton location: + devicePrefix = "[" + device + "]" + program + cartonPrefix = devicePrefix + carton + "[" + str(trackID) + "]" + # Read all carton data directly: + tags = [cartonPrefix + "." + path for path in DATA_PATHS] + values = [trackID, induct, scanner, sorter] + [value.value for value in system.opc.readValues(opcServer, tags)] + logTime("Confirm[PLC_READ]", trackID, time.time() - start_time) + start_time = time.time() + # Log confirm event in SQL: + # Insert into Package History: + system.db.runPrepUpdate(CONFIRM_INSERT_QUERY, values) + logTime("Confirm[DB_INSERT]", trackID, time.time() - start_time) + + system.util.invokeAsynchronous(processConfirmInner) + diff --git a/.resources/de3495c33eb729464cd6f23d78260cd920b2e90a71df6d3edcebef05da6980f1 b/.resources/de3495c33eb729464cd6f23d78260cd920b2e90a71df6d3edcebef05da6980f1 new file mode 100644 index 00000000..cdd6ca38 --- /dev/null +++ b/.resources/de3495c33eb729464cd6f23d78260cd920b2e90a71df6d3edcebef05da6980f1 @@ -0,0 +1,286 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "S1-CH1" + }, + "props": { + "config": { + "alwaysShowAll": true, + "isClickable": false, + "mirror": false + }, + "status": { + "tagPath": "[default]MCP04/PS03/PS03_36CH" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.alwaysShowAll": { + "paramDirection": "input", + "persistent": true + }, + "params.props.config.mirror": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 349, + "width": 500 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/Conv/SetEnable\"]\n\tvalues \u003d [1]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Enable" + }, + "position": { + "height": 40, + "width": 120, + "x": 120, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Buttons/Green" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Enable" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttagPath \u003d self.view.params.props.status.tagPath\n\ttags \u003d [tagPath + \"/Conv/SetEnable\"]\n\tvalues \u003d [0]\n\tsystem.tag.writeAsync(tags, values)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Disable" + }, + "position": { + "height": 40, + "width": 120, + "x": 260, + "y": 20.3 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "expression": "isGood({value})", + "type": "expression" + } + ], + "type": "tag" + } + }, + "props.style.classes": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/SetEnable" + }, + "transforms": [ + { + "fallback": "Buttons/Grey", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Buttons/Red" + } + ], + "outputType": "scalar", + "type": "map" + }, + { + "expression": "if(isGood({value}),\r\n\t{value},\r\n\t\"Buttons/Grey\"\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": {}, + "text": "Disable" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "SpiralChute" + }, + "position": { + "height": 115, + "width": 90, + "x": 205, + "y": 165 + }, + "propConfig": { + "props.params": { + "binding": { + "config": { + "struct": { + "alwaysShowAll": true, + "isClickable": false, + "mirror": "{view.params.props.config.mirror}", + "tagPath": "{view.params.props.status.tagPath}" + }, + "waitOnAll": true + }, + "type": "expr-struct" + }, + "persistent": false + } + }, + "props": { + "path": "Templates/Areas/DivChute", + "style": { + "transform": "scale(2)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "ChuteLabel" + }, + "position": { + "height": 35, + "width": 260, + "x": 120, + "y": 63 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Conv/StatusText" + }, + "type": "tag" + } + } + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e0745a3ffe1729baa0ee83be056dd361b374cf27fde39a43a4decc5953d29861 b/.resources/e0745a3ffe1729baa0ee83be056dd361b374cf27fde39a43a4decc5953d29861 new file mode 100644 index 00000000..8ea4d2f7 --- /dev/null +++ b/.resources/e0745a3ffe1729baa0ee83be056dd361b374cf27fde39a43a4decc5953d29861 @@ -0,0 +1,103 @@ +WITH SORTERS AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + sorter, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code="Unknown") AS unknown, + SUM(sort_code="Unexpected") AS unexpected, + SUM(sort_code="Track Err") AS track_err, + SUM(sort_code="Gap Err") AS gap_err, + SUM(sort_code="Dest Full") AS dest_full, + SUM(sort_code="Dest Fault") AS dest_fault, + SUM(sort_code="Dest Invalid") AS dest_invalid, + SUM(sort_code="No Read") AS no_read, + SUM(sort_code="No Code") AS no_code, + SUM(sort_code="Multi Label") AS multi_label, + SUM(sort_code="Dest Disabled") AS dest_disabled, + SUM(sort_code="Rate High") AS rate_high, + SUM(sort_code="Div Fail") AS div_fail, + SUM(sort_code="Dest None") AS dest_none, + SUM(sort_code="Lost") AS lost, + SUM(sort_code="Dim Err") AS dim_err, + SUM(sort_code="Weight Err") AS weight_err, + SUM(sort_code="Underutilized") AS underutilized, + SUM(sort_code="Unsafe") AS unsafe + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter + ORDER BY sorter +) +SELECT + start_timestamp, + end_timestamp, + sorter, + /* Counts: */ + total AS total_count, + success AS success_count, + unknown AS unknown_count, + unexpected AS unexpected_count, + track_err AS track_err_count, + gap_err AS gap_err_count, + dest_full AS dest_full_count, + dest_fault AS dest_fault_count, + dest_invalid AS dest_invalid_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + dest_disabled AS dest_disabled_count, + rate_high AS rate_high_count, + div_fail AS div_fail_count, + dest_none AS dest_none_count, + lost AS lost_count, + dim_err AS dim_err_count, + weight_err AS weight_err_count, + underutilized AS underutilized_count, + unsafe AS unsafe_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + ROUND(success*pph_multiplier) AS success_pph, + ROUND(unknown*pph_multiplier) AS unknown_pph, + ROUND(unexpected*pph_multiplier) AS unexpected_pph, + ROUND(track_err*pph_multiplier) AS track_err_pph, + ROUND(gap_err*pph_multiplier) AS gap_err_pph, + ROUND(dest_full*pph_multiplier) AS dest_full_pph, + ROUND(dest_fault*pph_multiplier) AS dest_fault_pph, + ROUND(dest_invalid*pph_multiplier) AS dest_invalid_pph, + ROUND(no_read*pph_multiplier) AS no_read_pph, + ROUND(no_code*pph_multiplier) AS no_code_pph, + ROUND(multi_label*pph_multiplier) AS multi_label_pph, + ROUND(dest_disabled*pph_multiplier) AS dest_disabled_pph, + ROUND(rate_high*pph_multiplier) AS rate_high_pph, + ROUND(div_fail*pph_multiplier) AS div_fail_pph, + ROUND(dest_none*pph_multiplier) AS dest_none_pph, + ROUND(lost*pph_multiplier) AS lost_pph, + ROUND(dim_err*pph_multiplier) AS dim_err_pph, + ROUND(weight_err*pph_multiplier) AS weight_err_pph, + ROUND(underutilized*pph_multiplier) AS underutilized_pph, + ROUND(unsafe*pph_multiplier) AS unsafe_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(success/total, 4) AS success_percent, + ROUND(unknown/total, 4) AS unknown_percent, + ROUND(unexpected/total, 4) AS unexpected_percent, + ROUND(track_err/total, 4) AS track_err_percent, + ROUND(gap_err/total, 4) AS gap_err_percent, + ROUND(dest_full/total, 4) AS dest_full_percent, + ROUND(dest_fault/total, 4) AS dest_fault_percent, + ROUND(dest_invalid/total, 4) AS dest_invalid_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent, + ROUND(dest_disabled/total, 4) AS dest_disabled_percent, + ROUND(rate_high/total, 4) AS rate_high_percent, + ROUND(div_fail/total, 4) AS div_fail_percent, + ROUND(dest_none/total, 4) AS dest_none_percent, + ROUND(lost/total, 4) AS lost_percent, + ROUND(dim_err/total, 4) AS dim_err_percent, + ROUND(weight_err/total, 4) AS weight_err_percent, + ROUND(underutilized/total, 4) AS underutilized_percent, + ROUND(unsafe/total, 4) AS unsafe_percent +FROM SORTERS; \ No newline at end of file diff --git a/.resources/e0b991fa7c4dfa142453747146578e45216dbd97ffbdaf29ca884be29ed6ac6c b/.resources/e0b991fa7c4dfa142453747146578e45216dbd97ffbdaf29ca884be29ed6ac6c new file mode 100644 index 00000000..1efcbe06 --- /dev/null +++ b/.resources/e0b991fa7c4dfa142453747146578e45216dbd97ffbdaf29ca884be29ed6ac6c @@ -0,0 +1,420 @@ +{ + "custom": {}, + "params": { + "titleExtra": "4 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "LaneStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}" + }, + "queryPath": "Status/LoopStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "loop", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Loop" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "no_demand_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "No Demand (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 130 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "no_demand_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "No Demand Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Loop Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e0e7e09a9c43cc199b14ee9afce64f8e03919ebd66a057831e5635acbf8c4450 b/.resources/e0e7e09a9c43cc199b14ee9afce64f8e03919ebd66a057831e5635acbf8c4450 new file mode 100644 index 00000000..02587298 --- /dev/null +++ b/.resources/e0e7e09a9c43cc199b14ee9afce64f8e03919ebd66a057831e5635acbf8c4450 @@ -0,0 +1,304 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "DIV" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": true, + "originSide": "left", + "paddleThickness": 10 + }, + "status": { + "color": "#AAA", + "isExtended": true, + "isRetracted": false, + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 105, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "DivertPaddle" + }, + "position": { + "height": 42, + "rotate": { + "angle": "180deg" + }, + "width": 101, + "x": 48.5, + "y": 14 + }, + "propConfig": { + "props.config.originSide": { + "binding": { + "config": { + "path": "view.params.props.config.originSide" + }, + "overlayOptOut": true, + "type": "property" + } + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false, + "paddleThickness": 10 + } + }, + "type": "dex.display.divertpaddle" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e166b5e7752ed9af121d6f34b32462c11b236794fbbad4b0b546d21727d79a51 b/.resources/e166b5e7752ed9af121d6f34b32462c11b236794fbbad4b0b546d21727d79a51 new file mode 100644 index 00000000..1d62e3aa --- /dev/null +++ b/.resources/e166b5e7752ed9af121d6f34b32462c11b236794fbbad4b0b546d21727d79a51 @@ -0,0 +1,108 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 535, + "width": 1454 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "OXD_Sorter" + }, + "position": { + "height": 515, + "width": 1434, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Sorter", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Problem_Solve" + }, + "position": { + "height": 40, + "width": 150, + "x": 396, + "y": 310 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDProblemSolveStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Singulator" + }, + "position": { + "height": 40, + "width": 128, + "x": 50, + "y": 310 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSingulatorStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_Runout" + }, + "position": { + "height": 40, + "width": 74, + "x": 1340, + "y": 350 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]RunoutStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e1b97afca00c0d8bcc8796a8534fd94f5583d64438ed884c6fe35ff99a9ba024 b/.resources/e1b97afca00c0d8bcc8796a8534fd94f5583d64438ed884c6fe35ff99a9ba024 new file mode 100644 index 00000000..d70afddd --- /dev/null +++ b/.resources/e1b97afca00c0d8bcc8796a8534fd94f5583d64438ed884c6fe35ff99a9ba024 @@ -0,0 +1,43 @@ +WITH SORTERS AS ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + sorter, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs, + SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational, + SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine, + SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter + ORDER BY sorter +) +SELECT + start_timestamp, + end_timestamp, + sorter, + /* Counts: */ + total AS total_count, + success AS success_count, + awcs AS awcs_issues_count, + operational AS operational_issues_count, + machine AS machine_issues_count, + scanner AS scanner_issues_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + ROUND(success*pph_multiplier) AS success_pph, + ROUND(awcs*pph_multiplier) AS awcs_issues_pph, + ROUND(operational*pph_multiplier) AS operational_issues_pph, + ROUND(machine*pph_multiplier) AS machine_issues_pph, + ROUND(scanner*pph_multiplier) AS scanner_issues_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(success/total, 4) AS success_percent, + ROUND(awcs/total, 4) AS awcs_issues_percent, + ROUND(operational/total, 4) AS operational_issues_percent, + ROUND(machine/total, 4) AS machine_issues_percent, + ROUND(scanner/total, 4) AS scanner_issues_percent +FROM SORTERS; \ No newline at end of file diff --git a/.resources/e1e9cb08f09307c6f146984dc524305d687742d1de4135bf7467c9d68e3f614a b/.resources/e1e9cb08f09307c6f146984dc524305d687742d1de4135bf7467c9d68e3f614a new file mode 100644 index 00000000..e53c528e --- /dev/null +++ b/.resources/e1e9cb08f09307c6f146984dc524305d687742d1de4135bf7467c9d68e3f614a @@ -0,0 +1,49 @@ +WITH SORTERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total, + SUM(sort_code="Success") AS success, + SUM(sort_code IN ("Dest Invalid", "Dest None", "Underutilized")) AS awcs, + SUM(sort_code IN ("Dest Disabled", "Dest Full", "Dim Error", "Unexpected", "Weight Err")) AS operational, + SUM(sort_code IN ("Dest Fault", "Div Fail", "Gap Err", "Lost", "Rate High", "Track Err", "Unknown", "Unsafe")) AS machine, + SUM(sort_code IN ("No Read", "No Code", "Multi Label")) AS scanner + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND sorter=:sorter + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp, + hour, + /* Counts: */ + total AS total_count, + success AS success_count, + awcs AS awcs_issues_count, + operational AS operational_issues_count, + machine AS machine_issues_count, + scanner AS scanner_issues_count, + /* PPH: */ + total AS total_pph, + success AS success_pph, + awcs AS awcs_issues_pph, + operational AS operational_issues_pph, + machine AS machine_issues_pph, + scanner AS scanner_issues_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(success/total, 4) AS success_percent, + ROUND(awcs/total, 4) AS awcs_issues_percent, + ROUND(operational/total, 4) AS operational_issues_percent, + ROUND(machine/total, 4) AS machine_issues_percent, + ROUND(scanner/total, 4) AS scanner_issues_percent +FROM SORTERS +ORDER BY start_timestamp; \ No newline at end of file diff --git a/.resources/e20ba159c1d89575d1b263847ca6cf0c9e1e532419f57f6287946dcbda1ccda7 b/.resources/e20ba159c1d89575d1b263847ca6cf0c9e1e532419f57f6287946dcbda1ccda7 new file mode 100644 index 00000000..d893ac2c --- /dev/null +++ b/.resources/e20ba159c1d89575d1b263847ca6cf0c9e1e532419f57f6287946dcbda1ccda7 @@ -0,0 +1,293 @@ +{ + "custom": { + "disconnected": 0, + "plc": "value", + "priority": 0, + "priority_string": "No active alarms", + "searchId": "value", + "state": 0, + "state_string": "Normal" + }, + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "type": "property" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 4 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 4, + "output": 1 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"High\",\r\n0, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"Communication Faulted\",\r\n0, \"Normal\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 47, + "width": 68 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "ControlCabinet" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_dpm_mcm" + }, + "type": "property" + } + }, + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.disconnected},\r\n \u0027#808080\u0027,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \u0027#FF0000\u0027,\r\n if(\r\n {view.custom.state} \u003d 0,\r\n \u0027#00D900\u0027,\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n)\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0 40 L 0 0 L 61 40 Z", + "fill": {}, + "name": "path", + "stroke": { + "paint": "#4c4c4c", + "width": 4 + }, + "transform": "rotate(-180,30.5,20)", + "type": "path" + }, + { + "d": "M 0 40 L 0 0 L 61 40 Z", + "fill": { + "paint": "#4C4C4C" + }, + "name": "path", + "stroke": { + "paint": "#000000", + "width": 4 + }, + "type": "path" + } + ], + "preserveAspectRatio": "none", + "viewBox": "-0.5 -0.5 62 41" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Low" + }, + { + "input": 3, + "output": "Alarms-Styles/Medium" + }, + { + "input": 4, + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + } + }, + "props": { + "aspectRatio": "68:47", + "mode": "percent", + "style": { + "classes": "Disconnects/Device-Connected", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e2f8ac4facf19c3de66cd70088ed050017566884d00311645e3f8667e3cb297f b/.resources/e2f8ac4facf19c3de66cd70088ed050017566884d00311645e3f8667e3cb297f new file mode 100644 index 00000000..b109ee70 --- /dev/null +++ b/.resources/e2f8ac4facf19c3de66cd70088ed050017566884d00311645e3f8667e3cb297f @@ -0,0 +1,108 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 528, + "width": 1123 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "OXD_Singulator" + }, + "position": { + "height": 508, + "width": 1103, + "x": 10, + "y": 10 + }, + "props": { + "path": "Windows/Graphics/Templates/OXD_Singulator", + "style": { + "classes": "painted-events" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Inbound" + }, + "position": { + "height": 40, + "width": 110, + "x": 40, + "y": 466 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDInboundStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Sorter" + }, + "position": { + "height": 40, + "width": 97, + "x": 991, + "y": 180 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDSorterStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "NavButton_OXD_Problem_Solve" + }, + "position": { + "height": 40, + "width": 150, + "x": 640, + "y": 180 + }, + "props": { + "params": { + "enableTooltip": true, + "label": null, + "tagPath": "[default]OXDProblemSolveStatus", + "view": "" + }, + "path": "Templates/Buttons/NavButton", + "style": { + "transform": "scale(1.5)" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e30811e0d009c98f34a1529ad391147f7db23cb4453cef3d7f2428181ed8f5ba b/.resources/e30811e0d009c98f34a1529ad391147f7db23cb4453cef3d7f2428181ed8f5ba new file mode 100644 index 00000000..a222549e --- /dev/null +++ b/.resources/e30811e0d009c98f34a1529ad391147f7db23cb4453cef3d7f2428181ed8f5ba @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#FCC400B3", + "color": "#FFFFFF", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/e4ee7a3a294388e22ed40eaadcf5eb2dd699fb87b7f95b24910ab4034d13f87b b/.resources/e4ee7a3a294388e22ed40eaadcf5eb2dd699fb87b7f95b24910ab4034d13f87b new file mode 100644 index 00000000..55e15f24 --- /dev/null +++ b/.resources/e4ee7a3a294388e22ed40eaadcf5eb2dd699fb87b7f95b24910ab4034d13f87b @@ -0,0 +1,10 @@ +{ + "base": { + "style": { + "backgroundColor": "#8C8C8C", + "color": "#000000", + "fontFamily": "Arial", + "fontWeight": "bold" + } + } +} \ No newline at end of file diff --git a/.resources/e81ba7121edef42ef349574d2a97ce522151b0d3e0292a555273e591efa7c6bf b/.resources/e81ba7121edef42ef349574d2a97ce522151b0d3e0292a555273e591efa7c6bf new file mode 100644 index 00000000..aee1c2f1 --- /dev/null +++ b/.resources/e81ba7121edef42ef349574d2a97ce522151b0d3e0292a555273e591efa7c6bf @@ -0,0 +1,257 @@ +{ + "custom": { + "disconnected": true, + "plc": "", + "searchId": "value", + "state": 0, + "string": "Unknown" + }, + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "!isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "OK" + }, + { + "input": 2, + "output": "Faulted" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 20, + "width": 40 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "style": { + "paddingBottom": 1, + "paddingLeft": 1, + "paddingRight": 1, + "paddingTop": 1 + }, + "text": "SIO", + "textStyle": { + "fontSize": "20px", + "textAlign": "center", + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-JR\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_fio_safety" + }, + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "borderStyle": "solid", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/e83c5faa1d6beb5333e40efaf1ccb7cada0d9a7a410667be885d4e75d8f35b5a b/.resources/e83c5faa1d6beb5333e40efaf1ccb7cada0d9a7a410667be885d4e75d8f35b5a new file mode 100644 index 00000000..3bb886ed --- /dev/null +++ b/.resources/e83c5faa1d6beb5333e40efaf1ccb7cada0d9a7a410667be885d4e75d8f35b5a @@ -0,0 +1,64 @@ +import system +import generate + +BASE_TAGS = [ + "SetEnable", + "Color" +] + +def getStatus(*args): + if len(args) % 5 <> 0: + raise ValueError('Argument list must be a multiple of (path, rowstart, rowend, colstart, colend) pairs') + groups = [args[i:i+5] for i in range(0, len(args), 5)] + + # Produce tags: + tags = [] + for (path, rowstart, rowend, colstart, colend) in groups: + for col in range(colstart, colend+1): + for row in range(rowstart, rowend+1): + spiral = "CH_2{:02d}{:02d}".format(row, col) + prefix = "[default]"+path+"/"+spiral+"/"+spiral+"/CH/" + tags.extend([prefix+tag for tag in BASE_TAGS]) + + # Get values + values = [val for val in system.tag.readBlocking(tags)] + + # Produce status: + unknown = 0 + faulted = 0 + disabled = 0 + full = 0 + fullWarn = 0 + jammed = 0 + enabled = 0 + for (SetEnable, Color) in (values[i:i+len(BASE_TAGS)] for i in range(0, len(values), len(BASE_TAGS))): + # Ignore those that don't have SetEnable: + if not SetEnable.quality.isBad(): + if SetEnable.quality.isError() or Color.quality.isError(): + unknown += 1 + elif Color.value == 1024: + faulted += 1 + elif Color.value == 512: + jammed += 1 + elif not SetEnable.value: + disabled += 1 + elif Color.value == 128: + full += 1 + elif Color.value == 64: + fullWarn += 1 + else: + enabled += 1 + + + headers = ["status", "count", "percent"] + total = max(1, float(unknown + faulted + jammed + disabled + full + fullWarn + enabled)) + values = [ + ["Enabled", enabled, enabled/total], + ["50% Full", fullWarn, fullWarn/total], + ["100% Full", full, full/total], + ["Disabled", disabled, disabled/total], + ["Jammed", jammed, jammed/total], + ["Faulted", faulted, faulted/total], + ["Unknown", unknown, unknown/total], + ] + return system.dataset.toDataSet(headers, values) diff --git a/.resources/e9663f9a6bfbb0302408eb438d3bc692f5cd2964bdd8c05d4e5599ad3968f97d b/.resources/e9663f9a6bfbb0302408eb438d3bc692f5cd2964bdd8c05d4e5599ad3968f97d new file mode 100644 index 00000000..f6968286 --- /dev/null +++ b/.resources/e9663f9a6bfbb0302408eb438d3bc692f5cd2964bdd8c05d4e5599ad3968f97d @@ -0,0 +1,44 @@ +WITH SCANNERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total, + SUM(scanner_status NOT IN ("No Read", "No Code", "Multi Label")) AS good_read, + SUM(scanner_status = "No Read") AS no_read, + SUM(scanner_status = "No Code") AS no_code, + SUM(scanner_status = "Multi Label") AS multi_label + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND scanner=:scanner + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp, + hour, + /* Counts: */ + total AS total_count, + good_read AS good_read_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + /* PPH: */ + total AS total_pph, + good_read AS good_read_pph, + no_read AS no_read_pph, + no_code AS no_code_pph, + multi_label AS multi_label_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent, + ROUND(good_read/total, 4) AS good_read_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent +FROM SCANNERS; \ No newline at end of file diff --git a/.resources/eb3d0835779c03c59cacc8433bba836eea5e4f7fe0df5247baa978df7d220070 b/.resources/eb3d0835779c03c59cacc8433bba836eea5e4f7fe0df5247baa978df7d220070 new file mode 100644 index 00000000..9f144187 --- /dev/null +++ b/.resources/eb3d0835779c03c59cacc8433bba836eea5e4f7fe0df5247baa978df7d220070 @@ -0,0 +1,46 @@ +WITH INDUCTS AS ( + ( + SELECT + MIN(s04_timestamp) AS start_timestamp, + MAX(s04_timestamp) AS end_timestamp, + sorter, + induct, + COUNT(*) AS total + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + GROUP BY sorter, induct + ) UNION ALL ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + "AR" AS sorter, + lane_id AS induct, + SUM(count) AS total + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + AND lane_id LIKE "UL%" + GROUP BY lane_id + ) + ORDER BY sorter, induct +), SORTERS AS ( + SELECT + sorter, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + SUM(total) AS total + FROM INDUCTS + GROUP BY sorter +) +SELECT + I.start_timestamp, + I.end_timestamp, + S.sorter, + I.induct, + /* Counts: */ + I.total AS total_count, + /* PPH: */ + ROUND(I.total*S.pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(I.total/S.total, 4) AS 'total/sorter_percent' +FROM INDUCTS I, SORTERS S +WHERE I.sorter = S.sorter +ORDER BY sorter, induct; \ No newline at end of file diff --git a/.resources/ed29a16c1d7312f66b9bf3393a41d66c02873b3946f9c3bc21746ef01299079d b/.resources/ed29a16c1d7312f66b9bf3393a41d66c02873b3946f9c3bc21746ef01299079d new file mode 100644 index 00000000..0effd7f5 --- /dev/null +++ b/.resources/ed29a16c1d7312f66b9bf3393a41d66c02873b3946f9c3bc21746ef01299079d @@ -0,0 +1,196 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 400, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": "try(\r\n\t property(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\")\r\n\t+if(len({../EmbeddedView.props.params.titleExtra})\u003e0,\r\n\t\t\" (\" + {../EmbeddedView.props.params.titleExtra} + \")\",\r\n\t\t\"\"\r\n\t),\r\n\t\"No Tabs\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": 20, + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"export-data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "TimeWidget" + }, + "position": { + "height": 40, + "width": 600 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../EmbeddedView.props.params.usesTimewidget" + }, + "type": "property" + }, + "persistent": true + } + }, + "props": { + "params": { + "endDate": "2021-02-11 00:00:00", + "startDate": "2021-02-10 00:00:00" + }, + "path": "Templates/Widget/TimeWidget" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "100%", + "y": 40 + }, + "propConfig": { + "props.tabs": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/StatusTabs" + }, + "transforms": [ + { + "code": "\treturn [v[\"Title\"] for v in utils.datasetToJSON(value) if v[\"isVisible\"]]", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "width": 160 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + } + }, + "type": "ia.container.tab" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "height": "calc(100% - 75px)", + "width": "100%", + "y": 75 + }, + "propConfig": { + "props.path": { + "binding": { + "config": { + "expression": " \"Windows/Statuses/\"\r\n+replace(\r\n\tproperty(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\"),\r\n\t\" \",\r\n\t\"\"\r\n)" + }, + "transforms": [ + { + "code": "\t# Reset the titleExtra whenever the view is changed to prevent the numbers from showing while loading the new view:\n\tif value \u003c\u003e self.props.path:\n\t\tself.props.params.titleExtra \u003d \"\"\n\t# Return new view path:\n\treturn value", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "path": "Windows/Statuses/LoopStatus" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "min-width": "1000px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/ef938b2a07893e216e272e5993cb456db72097ecfec1e3bd85e4d742a0b4215f b/.resources/ef938b2a07893e216e272e5993cb456db72097ecfec1e3bd85e4d742a0b4215f new file mode 100644 index 00000000..ca24e026 --- /dev/null +++ b/.resources/ef938b2a07893e216e272e5993cb456db72097ecfec1e3bd85e4d742a0b4215f @@ -0,0 +1,323 @@ +{ + "custom": { + "forceModeRefresh": false, + "setDatesScript": null + }, + "params": { + "endDate": "2021-02-11 00:00:00", + "refreshDelay": 30, + "startDate": "2021-02-10 00:00:00" + }, + "propConfig": { + "custom.forceModeRefresh": { + "persistent": true + }, + "custom.setDatesScript": { + "binding": { + "config": { + "expression": "toBoolean(now({view.params.refreshDelay}*1000))\r\n\u0026\u0026{view.custom.forceModeRefresh}" + }, + "transforms": [ + { + "code": "\tnow \u003d system.date.now()\n\tcurrentDay \u003d system.date.getDate(system.date.getYear(now), system.date.getMonth(now), system.date.getDayOfMonth(now))\n\tpreviousDay \u003d system.date.addDays(currentDay, -1)\n\tnextDay \u003d system.date.addDays(currentDay, 1)\n\tstartDate \u003d self.getChild(\"root\").getChild(\"StartDateTime\")\n\tendDate \u003d self.getChild(\"root\").getChild(\"EndDateTime\")\n\tvalue \u003d self.getChild(\"root\").getChild(\"Mode\").props.value\n\t\n\t# Retrieve shifts table:\n\tshifts \u003d utils.datasetToJSON(system.tag.readBlocking([\"[default]Gateway/Shifts\"])[0].value)\n\t# Filter for shifts that are enabled and for today:\n\tcurrentDayOfWeek \u003d system.date.getDayOfWeek(now)\n\tcurrentDayOfWeek \u003d \"is\" + [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"][currentDayOfWeek-1]\n\tshifts \u003d [shift for shift in shifts if shift[\"Enabled\"] and shift[currentDayOfWeek]]\n\t# Build SORTS list:\n\tSORTS \u003d [{ \"name\": shift[\"Name\"], \"start\": [shift[\"StartHour\"],shift[\"StartMinute\"]], \"actualEnd\": [shift[\"EndHour\"],shift[\"EndMinute\"]] } for shift in shifts]\n\tSORTS.sort(key\u003dlambda x: x[\"start\"])\n\t# Add end time based on next sort:\n\tfor i in range(len(SORTS) - 1):\n\t\tSORTS[i][\"end\"] \u003d SORTS[i+1][\"start\"]\n\tSORTS[-1][\"end\"] \u003d SORTS[0][\"start\"]\n\t\n\tstart \u003d startDate.props.value\n\tend \u003d endDate.props.value\n\t\n\tif value \u003d\u003d \"past30min\":\n\t\tstart \u003d system.date.addMinutes(now, -30)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"pastHour\":\n\t\tstart \u003d system.date.addHours(now, -1)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"past2Hours\":\n\t\tstart \u003d system.date.addHours(now, -2)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"past4Hours\":\n\t\tstart \u003d system.date.addHours(now, -4)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"past8Hours\":\n\t\tstart \u003d system.date.addHours(now, -8)\n\t\tend \u003d now\n\t\n\telif value \u003d\u003d \"currentDay\":\n\t\tstart \u003d currentDay\n\t\tend \u003d system.date.addDays(currentDay, 1)\n\t\n\telif value \u003d\u003d \"previousDay\":\n\t\tstart \u003d previousDay\n\t\tend \u003d currentDay\n\t\t\n\telse:\n\t\t# Resolve sort:\n\t\tif value \u003d\u003d \"currentShift\":\n\t\t\tsort \u003d SORTS[-1] # Default to last sort (assumes last sort includes midnight)\n\t\t\tfor i, s in enumerate(SORTS[::-1]):\n\t\t\t\tif system.date.isAfter(now, system.date.setTime(currentDay, s[\"start\"][0], s[\"start\"][1], 0)):\n\t\t\t\t\tsort \u003d s\n\t\t\t\t\tbreak\n\t\t\t# Apply:\n\t\t\tstart \u003d system.date.setTime(currentDay, sort[\"start\"][0], sort[\"start\"][1], 0)\n\t\t\tend \u003d system.date.setTime(currentDay, sort[\"actualEnd\"][0], sort[\"actualEnd\"][1], 0)\n\t\telif value \u003d\u003d \"previousShift\":\n\t\t\tsort \u003d SORTS[-2] # Default to second to last sort (assumes last sort includes midnight)\n\t\t\tSORTS_REV \u003d SORTS[:]\n\t\t\tSORTS_REV.sort(key\u003dlambda x: x[\"end\"])\n\t\t\tfor i, s in enumerate(SORTS_REV[::-1]):\n\t\t\t\tif system.date.isAfter(now, system.date.setTime(currentDay, s[\"end\"][0], s[\"end\"][1], 0)):\n\t\t\t\t\tsort \u003d s\n\t\t\t\t\tbreak\n\t\t\t# Apply:\n\t\t\tstart \u003d system.date.setTime(currentDay, sort[\"start\"][0], sort[\"start\"][1], 0)\n\t\t\tend \u003d system.date.setTime(currentDay, sort[\"actualEnd\"][0], sort[\"actualEnd\"][1], 0)\n\t\telse:\n\t\t\tfor s in SORTS:\n\t\t\t\tif s[\"name\"] \u003d\u003d value:\n\t\t\t\t\t# Apply:\n\t\t\t\t\tstart \u003d system.date.setTime(currentDay, s[\"start\"][0], s[\"start\"][1], 0)\n\t\t\t\t\tend \u003d system.date.setTime(currentDay, s[\"actualEnd\"][0], s[\"actualEnd\"][1], 0)\n\t\t\t\t\tbreak\n\n\t\t# Increase end if before start:\n\t\tif system.date.isAfter(start, end):\n\t\t\tend \u003d system.date.addDays(end, 1)\n\t\t# If current time is before startDate, then subtract one day to show last occurrence of that sort:\n\t\tif system.date.isBefore(now, start):\n\t\t\tstart \u003d system.date.addDays(start, -1)\n\t\t\tend \u003d system.date.addDays(end, -1)\n\t\t\t\n\t# Apply:\n\tif startDate.props.value !\u003d start or endDate.props.value !\u003d end or (system.date.isAfter(now, start) and system.date.isBefore(now, system.date.addMinutes(end, 1))):\n\t\tstartDate.props.value \u003d start\n\t\tendDate.props.value \u003d end\n\t\tself.session.custom.timewidget \u003d {\n\t\t\t\"startDate\": start,\n\t\t\t\"endDate\": end,\n\t\t\t\"mode\": value,\n\t\t\t\"update\": now\n\t\t}\n\t\n\treturn value", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + }, + "params.endDate": { + "binding": { + "config": { + "path": "/root/EndDateTime.props.formattedValues.datetime" + }, + "type": "property" + }, + "paramDirection": "output", + "persistent": true + }, + "params.refreshDelay": { + "paramDirection": "input", + "persistent": true + }, + "params.startDate": { + "binding": { + "config": { + "path": "/root/StartDateTime.props.formattedValues.datetime" + }, + "type": "property" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 40, + "width": 550 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "StartLabel" + }, + "position": { + "height": 20, + "width": 40, + "x": 180, + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Start:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttimewidget \u003d self.session.custom.timewidget\n\thours \u003d system.date.hoursBetween(self.props.value, timewidget.endDate)\n\tsystem.perspective.print(hours)\n\tnewVal \u003d {\n\t\t\"startDate\": self.props.value,\n\t\t\"endDate\": timewidget.endDate,\n\t\t\"mode\": timewidget.mode\n\t}\n\tif hours \u003e 7*24:\n\t\t# Cap endDate to within 7 days of startDate:\n\t\tnewVal[\"endDate\"] \u003d system.date.addDays(self.props.value, 7)\n\t# Apply changes:\n\tself.session.custom.timewidget \u003d newVal" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "StartDateTime" + }, + "position": { + "height": 20, + "width": 135, + "x": 225, + "y": 10 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "expression": "{value} \u003d \"custom\"", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.value": { + "binding": { + "config": { + "path": "session.custom.timewidget.startDate" + }, + "type": "property" + } + } + }, + "props": { + "format": "YYYY-MM-DD HH:mm:ss", + "formattedValue": "2021-06-01 20:00:00", + "formattedValues": { + "date": "2021-02-10", + "datetime": "2021-02-10 00:00:00", + "time": "00:00:00" + }, + "inputProps": { + "style": { + "fontSize": "12px" + } + } + }, + "type": "ia.input.date-time-input" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttimewidget \u003d self.session.custom.timewidget\n\thours \u003d system.date.hoursBetween(timewidget.startDate, self.props.value)\n\tnewVal \u003d {\n\t\t\"startDate\": timewidget.startDate,\n\t\t\"endDate\": self.props.value,\n\t\t\"mode\": timewidget.mode\n\t}\n\tif hours \u003e 7*24:\n\t\t# Cap startDate to within 7 days of endDate:\n\t\tnewVal[\"startDate\"] \u003d system.date.addDays(self.props.value, -7)\n\t# Apply changes:\n\tself.session.custom.timewidget \u003d newVal" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "EndDateTime" + }, + "position": { + "height": 20, + "width": 135, + "x": 410, + "y": 10 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../Mode.props.value" + }, + "transforms": [ + { + "expression": "{value} \u003d \"custom\"", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.value": { + "binding": { + "config": { + "path": "session.custom.timewidget.endDate" + }, + "type": "property" + } + } + }, + "props": { + "format": "YYYY-MM-DD HH:mm:ss", + "formattedValue": "2021-06-02 20:00:00", + "formattedValues": { + "date": "2021-02-11", + "datetime": "2021-02-11 00:00:00", + "time": "00:00:00" + }, + "inputProps": { + "style": { + "fontSize": "12px" + } + } + }, + "type": "ia.input.date-time-input" + }, + { + "meta": { + "name": "EndLabel" + }, + "position": { + "height": 20, + "width": 40, + "x": 365, + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "End:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "ModeLabel" + }, + "position": { + "height": 20, + "width": 45, + "x": 5, + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Period:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.session.custom.timewidget.mode \u003d self.props.value\n\tself.view.custom.forceModeRefresh \u003d not self.view.custom.forceModeRefresh" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Mode" + }, + "position": { + "height": 20, + "width": 120, + "x": 55, + "y": 10 + }, + "propConfig": { + "props.options": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Shifts" + }, + "transforms": [ + { + "code": "\t# Add default relative options:\n\toptions \u003d [\n\t { \"value\": \"past30min\", \"label\": \"Past 30min\" },\n\t { \"value\": \"pastHour\", \"label\": \"Past Hour\" },\n\t { \"value\": \"past2Hours\", \"label\": \"Past 2 Hours\" },\n\t { \"value\": \"past4Hours\", \"label\": \"Past 4 Hours\" },\n\t { \"value\": \"past8Hours\", \"label\": \"Past 8 Hours\" },\n\t { \"value\": \"currentDay\", \"label\": \"Current Day\" },\n\t { \"value\": \"previousDay\", \"label\": \"Previous Day\" },\n\t { \"value\": \"currentShift\", \"label\": \"Current Shift\" },\n\t { \"value\": \"previousShift\", \"label\": \"Previous Shift\" }\n\t]\n\t# Add shifts:\n\tshifts \u003d utils.datasetToJSON(value)\n\t# Filter for shifts that are enabled and for today:\n\tcurrentDayOfWeek \u003d system.date.getDayOfWeek(system.date.now())\n\tcurrentDayOfWeek \u003d \"is\" + [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"][currentDayOfWeek-1]\n\tshifts \u003d [shift for shift in shifts if shift[\"Enabled\"] and shift[currentDayOfWeek]]\n\t# Add shifts to options:\n\tfor shift in shifts:\n\t\tif shift[\"Enabled\"]:\n\t\t\toptions.append({ \"value\": shift[\"Name\"], \"label\": \"Shift: \" + shift[\"Name\"] })\n\t# Add custom:\n\toptions.append({ \"value\": \"custom\", \"label\": \"Custom\" })\n\t# Return options:\n\treturn options", + "type": "script" + } + ], + "type": "tag" + } + }, + "props.value": { + "binding": { + "config": { + "struct": { + "mode": "{session.custom.timewidget.mode}", + "options": "{this.props.options}" + }, + "waitOnAll": true + }, + "transforms": [ + { + "code": "\tif value.options !\u003d None:\n\t\tfor option in value.options:\n\t\t\tif option.value \u003d\u003d value.mode:\n\t\t\t\treturn value.mode\n\t# Value isn\u0027t in options, default to currentDay:\n\treturn \"currentDay\"", + "type": "script" + } + ], + "type": "expr-struct" + } + } + }, + "props": { + "dropdownOptionStyle": { + "fontSize": "11px" + }, + "style": { + "fontSize": "10px" + } + }, + "type": "ia.input.dropdown" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/efcdaa177efbd2ab3afd7752c522041d786f6fc7f16febd1057c80f6e98154c1 b/.resources/efcdaa177efbd2ab3afd7752c522041d786f6fc7f16febd1057c80f6e98154c1 new file mode 100644 index 00000000..f91b8751 --- /dev/null +++ b/.resources/efcdaa177efbd2ab3afd7752c522041d786f6fc7f16febd1057c80f6e98154c1 @@ -0,0 +1,1092 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 rows", + "usesTimewidget": true + }, + "propConfig": { + "params.titleExtra": { + "paramDirection": "output", + "persistent": true + }, + "params.usesTimewidget": { + "binding": { + "config": { + "expression": "true" + }, + "type": "expr" + }, + "paramDirection": "output", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "LaneStatus" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "parameters": { + "endDate": "{session.custom.timewidget.endDate}", + "startDate": "{session.custom.timewidget.startDate}", + "where": "\"(sorter \u003d \\\"MCP20\\\" AND lane LIKE \\\"SO%CH%\\\") OR (sorter \u003d \\\"MCP03\\\" AND (lane LIKE \\\"FL%1CH%\\\" OR lane LIKE \\\"RO%1CH%\\\"))\"" + }, + "queryPath": "Status/LaneStatus" + }, + "transforms": [ + { + "code": "\tcou \u003d utils.getRowCount(value)\n\tast \u003d \"*\" if cou \u003e\u003d 2000 else \"\"\n\tself.view.params.titleExtra \u003d \"{:n}{} rows\".format(cou, ast)\n\t# Return data\n\treturn value", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "start_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "end_timestamp", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "End Timestamp" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "value" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "sorter", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Sorter" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": false, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "lane", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Lane" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_count", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted (#)" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "available_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Available Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "disabled_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Disabled Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "full_warn_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "50% Full Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "jam_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Jam Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "faulted_duration", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Faulted Duration" + }, + "justify": "center", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 140 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Lane Status\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/efe2c62559adb70420a86fca8be17e883df9b0bd4443ffb33f518ab26ede7175 b/.resources/efe2c62559adb70420a86fca8be17e883df9b0bd4443ffb33f518ab26ede7175 new file mode 100644 index 00000000..46a4a7ea --- /dev/null +++ b/.resources/efe2c62559adb70420a86fca8be17e883df9b0bd4443ffb33f518ab26ede7175 @@ -0,0 +1,75 @@ +{ + "pages": { + "/": { + "title": "", + "viewPath": "Windows/GraphicsWrapper" + }, + "/alarms/active": { + "viewPath": "Windows/AlarmWrapper" + }, + "/alarms/history": { + "viewPath": "Windows/AlarmWrapper" + }, + "/alarms/hitlist": { + "viewPath": "Windows/AlarmWrapper" + }, + "/cameras": { + "title": "", + "viewPath": "Windows/JamCameras" + }, + "/commission": { + "title": "", + "viewPath": "Windows/Commissioning" + }, + "/config": { + "viewPath": "Windows/ConfigWrapper" + }, + "/custom-reports": { + "viewPath": "Windows/CustomReports" + }, + "/help": { + "viewPath": "Windows/Help" + }, + "/statistics": { + "viewPath": "Windows/Statistics" + }, + "/status": { + "title": "", + "viewPath": "Windows/StatusWrapper" + } + }, + "sharedDocks": { + "bottom": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "footer", + "modal": false, + "resizable": false, + "show": "visible", + "size": 100, + "viewParams": {}, + "viewPath": "Windows/Docked/Footer" + } + ], + "top": [ + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "push", + "handle": "autoHide", + "iconUrl": "", + "id": "header", + "modal": false, + "resizable": false, + "show": "visible", + "size": 60, + "viewParams": {}, + "viewPath": "Windows/Docked/Header" + } + ] + } +} \ No newline at end of file diff --git a/.resources/f1bdfce353418dd494505dc1049302fe514d59a6cf6c7f12c7862114b78d4ff7 b/.resources/f1bdfce353418dd494505dc1049302fe514d59a6cf6c7f12c7862114b78d4ff7 new file mode 100644 index 00000000..cd05cb73 --- /dev/null +++ b/.resources/f1bdfce353418dd494505dc1049302fe514d59a6cf6c7f12c7862114b78d4ff7 @@ -0,0 +1,246 @@ +{ + "custom": {}, + "params": { + "view": "Windows/Graphics/Overview" + }, + "propConfig": { + "params.view": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 750, + "width": 1450 + }, + "loading": { + "mode": "blocking" + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Graphics" + }, + "propConfig": { + "props.path": { + "binding": { + "config": { + "path": "view.params.view" + }, + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tself.session.custom.currentGraphic \u003d currentValue\n\tself.getSibling(\"DexZoombox\").props.zoombox.current \u003d 1" + } + } + }, + "props": { + "style": { + "overflow": "hidden" + }, + "useDefaultViewHeight": true, + "useDefaultViewWidth": true + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "DexZoombox" + }, + "position": { + "height": 10, + "width": 10 + }, + "propConfig": { + "props.zoombox.max": { + "binding": { + "config": { + "expression": "coalesce({../Graphics.props.params.maxZoom}, 4)" + }, + "type": "expr" + } + } + }, + "props": { + "view": { + "height": "750px", + "width": "1450px" + }, + "zoombox": { + "current": 1 + } + }, + "type": "dex.controller.zoombox" + } + ], + "meta": { + "name": "Window" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "type": "ia.container.coord" + }, + { + "children": [ + { + "meta": { + "name": "mhs" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 110px)", + "y": 10 + }, + "props": { + "fit": { + "mode": "contain" + }, + "source": "data:image/png;base64,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\u003d", + "style": { + "pointer-events": "none", + "user-select": "none" + } + }, + "type": "ia.display.image" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 20, + "width": 285, + "x": 60, + "y": 10 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "path": ".../Window/Graphics.props.path" + }, + "transforms": [ + { + "code": "\tpathParts \u003d value.split(\"/\")\n\tif len(pathParts) \u003e 0:\n\t\treturn pathParts[-1].replace(\"_\", \" \")\n\telse:\n\t\treturn \"Unknown\"", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "fontFamily": "Helvetica", + "fontSize": "24px", + "fontWeight": "bold", + "pointer-events": "none", + "user-select": "none" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tzoomBox \u003d self.parent.parent.getChild(\"Window\").getChild(\"DexZoombox\")\n\t# Set new angle:\n\tnewAngle \u003d (zoomBox.props.zoombox.rotate + 90) % 360\n\tsystem.perspective.print(\"\u003d\u003d\u003d\")\n\tsystem.perspective.print(zoomBox.props.zoombox.rotate)\n\tsystem.perspective.print(newAngle)\n\tsystem.perspective.print(\"\u003d\u003d\u003d\")\n\tzoomBox.props.zoombox.rotate \u003d newAngle" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Rotate" + }, + "position": { + "height": 25, + "width": 25, + "x": 32, + "y": 8 + }, + "props": { + "style": { + "classes": "Buttons/Grey", + "pointer-events": "all" + }, + "text": "↻", + "textStyle": { + "font-size": 20, + "position": "relative", + "top": "-1px" + } + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Icon" + }, + "position": { + "height": 25, + "width": 25, + "x": 5, + "y": 8 + }, + "props": { + "path": "material/help_outline" + }, + "type": "ia.display.icon" + } + ], + "meta": { + "name": "HUD" + }, + "position": { + "height": 40, + "width": "100%" + }, + "props": { + "style": { + "overflow": "visible", + "pointer-events": "none" + } + }, + "type": "ia.container.coord" + }, + { + "meta": { + "name": "TooltipOverlay" + }, + "position": { + "height": 25, + "width": 25, + "x": 5, + "y": 8 + }, + "props": { + "status": { + "tooltip": "\u003cu\u003eZoom:\u003c/u\u003e\u003cbr\u003eCtrl+MouseWheel\u003cbr\u003eCtrl++/Ctrl+-\u003cbr\u003e2-finger Pinch\u003cbr\u003e\u003cbr\u003e\u003cu\u003ePan:\u003c/u\u003e\u003cbr\u003eMiddleMouse\u003cbr\u003e2-finger Pan" + } + }, + "type": "dex.display.tooltipoverlay" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "classes": "window" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f2ca90d03a77d7c61f6967ae9fd654d82fca2c41c01cd5d874ab336547944790 b/.resources/f2ca90d03a77d7c61f6967ae9fd654d82fca2c41c01cd5d874ab336547944790 new file mode 100644 index 00000000..3d166843 --- /dev/null +++ b/.resources/f2ca90d03a77d7c61f6967ae9fd654d82fca2c41c01cd5d874ab336547944790 @@ -0,0 +1,41 @@ +WITH SCANNERS AS ( + SELECT + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00") AS start_timestamp, + CONCAT("H", + CAST( + TIMESTAMPDIFF( + HOUR, + DATE_FORMAT(MIN(s04_timestamp), "%Y-%m-%d %H:00:00"), + DATE_FORMAT(LEAST(CURRENT_TIMESTAMP(), :endDate), "%Y-%m-%d %H:00:00") + ) AS CHAR + ) + ) AS hour, + COUNT(*) AS total, + SUM(scanner_status NOT IN ("No Read", "No Code", "Multi Label")) AS good_read, + SUM(scanner_status = "No Read") AS no_read, + SUM(scanner_status = "No Code") AS no_code, + SUM(scanner_status = "Multi Label") AS multi_label + FROM package_history + WHERE s04_timestamp BETWEEN :startDate AND :endDate + AND scanner=:scanner + GROUP BY DATE_FORMAT(s04_timestamp, "%Y-%m-%d %H:00") +) +SELECT + start_timestamp AS time, + hour, + /* Counts: */ + good_read AS good_read_count, + no_read AS no_read_count, + no_code AS no_code_count, + multi_label AS multi_label_count, + /* PPH: */ + good_read AS good_read_pph, + no_read AS no_read_pph, + no_code AS no_code_pph, + multi_label AS multi_label_pph, + /* Percents: */ + ROUND(good_read/total, 4) AS good_read_percent, + ROUND(no_read/total, 4) AS no_read_percent, + ROUND(no_code/total, 4) AS no_code_percent, + ROUND(multi_label/total, 4) AS multi_label_percent +FROM SCANNERS; \ No newline at end of file diff --git a/.resources/f32ef7a52e416470388fb1240524e73b0ff3b0975e4cf98fbefef9386b791fcf b/.resources/f32ef7a52e416470388fb1240524e73b0ff3b0975e4cf98fbefef9386b791fcf new file mode 100644 index 00000000..b79dbba3 --- /dev/null +++ b/.resources/f32ef7a52e416470388fb1240524e73b0ff3b0975e4cf98fbefef9386b791fcf @@ -0,0 +1,3450 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "MCM01" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "expression": "\"http://127.0.0.1:5500/MCM01.svg?var\" + toMillis(now(1000))" + }, + "type": "expr" + } + } + }, + "props": { + "fit": { + "mode": "fill" + } + }, + "type": "ia.display.image" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "height": 1080, + "width": 1920 + }, + "props": { + "direction": "column", + "style": { + "pointerEvents": "none" + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "dom": { + "onClick": { + "config": { + "page": "/mcm02" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Button_0" + }, + "position": { + "height": 36, + "width": 124, + "x": 1686, + "y": 811 + }, + "props": { + "primary": false, + "text": "MCM02 - NC SORTER" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Camera" + }, + "position": { + "height": 30, + "width": 30, + "x": 30, + "y": 323 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_0" + }, + "position": { + "height": 30, + "width": 30, + "x": 806, + "y": 372 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_1" + }, + "position": { + "height": 30, + "width": 30, + "x": 1482, + "y": 660 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_2" + }, + "position": { + "height": 30, + "width": 30, + "x": 1819, + "y": 339 + }, + "props": { + "path": "autStand/Equipment/Camera", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_SS1" + }, + "position": { + "height": 20, + "width": 35, + "x": 62, + "y": 577 + }, + "props": { + "path": "autStand/Equipment/SS_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_SS1" + }, + "position": { + "height": 20, + "width": 35, + "x": 269, + "y": 683 + }, + "props": { + "path": "autStand/Equipment/SS_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_SS1" + }, + "position": { + "height": 20, + "width": 35, + "x": 343, + "y": 268 + }, + "props": { + "path": "autStand/Equipment/SS_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_SS1" + }, + "position": { + "height": 20, + "width": 35, + "x": 1880.99, + "y": 609 + }, + "props": { + "path": "autStand/Equipment/SS_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_SS2" + }, + "position": { + "height": 20, + "width": 35, + "x": 1877.99, + "y": 691 + }, + "props": { + "path": "autStand/Equipment/SS_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 99, + "y": 551 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 31, + "y": 551 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 314, + "y": 271 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 387, + "y": 272 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 243, + "y": 654 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 309, + "y": 655 + }, + "props": { + "params": { + "tagProps": [ + "System/MCM01/EPC/UL14_1_EPC2", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1859, + "y": 607.999 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1854, + "y": 692 + }, + "props": { + "path": "autStand/Equipment/EPC", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 38.4461, + "y": 416 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_2_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "60deg" + }, + "width": 80, + "x": 64.4296, + "y": 357.997 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_3_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "60deg" + }, + "width": 80, + "x": 93.43, + "y": 341 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_4_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "60deg" + }, + "width": 80, + "x": 124.43, + "y": 324 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 198.43, + "y": 292 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 241.45, + "y": 450 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_2_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 241.45, + "y": 415 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_3_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 241.45, + "y": 381 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_4_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "60deg" + }, + "width": 80, + "x": 273.43, + "y": 324 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_TPE2" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 390.43, + "y": 292 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_TPE3" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 560.43, + "y": 292 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_2_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 971.43, + "y": 292 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_3_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "270deg" + }, + "width": 80, + "x": 1469.43, + "y": 292 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_4_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 1526.45, + "y": 340 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_5_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 1526.45, + "y": 550 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_6_TPE1" + }, + "position": { + "height": 43, + "width": 83, + "x": 1526.45, + "y": 585 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_7_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 1577.43, + "y": 641 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_8_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 1658.43, + "y": 641 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_9AL_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 1734.43, + "y": 641 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_10_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 1780.43, + "y": 641 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_TPE1" + }, + "position": { + "height": 40, + "rotate": { + "angle": "90deg" + }, + "width": 80, + "x": 1828.43, + "y": 641 + }, + "props": { + "path": "autStand/Equipment/Photoeye", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_BCN1_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 21, + "y": 428 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_4" + }, + "position": { + "height": 20, + "width": 20, + "x": 21, + "y": 407 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_BCN1_R" + }, + "position": { + "height": 20, + "width": 20, + "x": 21, + "y": 407 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_BCN2_R" + }, + "position": { + "height": 20, + "width": 20, + "x": 114, + "y": 455 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_BCN1_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 252, + "y": 341 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_BCN1_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 221, + "y": 455 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_BCN1_R" + }, + "position": { + "height": 20, + "width": 20, + "x": 221, + "y": 435 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_BCN2_R" + }, + "position": { + "height": 20, + "width": 20, + "x": 317, + "y": 488 + }, + "props": { + "params": { + "name": "Red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_BCN2_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 350, + "y": 245 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_BCN2_R" + }, + "position": { + "height": 20, + "width": 20, + "x": 350, + "y": 225 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_BCN4_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 564, + "y": 254 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_BCN4_H" + }, + "position": { + "height": 20, + "width": 20, + "x": 564, + "y": 234 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "horn", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_2_BCN1_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 973, + "y": 254 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_4_BCN1_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 1526, + "y": 398 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_16" + }, + "position": { + "height": 20, + "width": 20, + "x": 1645, + "y": 601 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_17" + }, + "position": { + "height": 20, + "width": 20, + "x": 1793, + "y": 580 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_18" + }, + "position": { + "height": 20, + "width": 20, + "x": 1871, + "y": 581 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "Camera_19" + }, + "position": { + "height": 20, + "width": 20, + "x": 1883, + "y": 665 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 314.417, + "y": 460 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_2_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 314.42, + "y": 425 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_3_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 314.42, + "y": 391 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_4_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 325.42, + "y": 365 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 110.42, + "y": 429 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_2_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 115.42, + "y": 401 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_3_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 145.42, + "y": 384 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_4_ENSH1" + }, + "position": { + "height": 25, + "width": 25, + "x": 171.42, + "y": 369 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_10_ENW1" + }, + "position": { + "height": 25, + "width": 25, + "x": 526.42, + "y": 303 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_ENW1" + }, + "position": { + "height": 25, + "width": 25, + "x": 1788.75, + "y": 648 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_ENW1" + }, + "position": { + "height": 25, + "width": 25, + "x": 1824.75, + "y": 648 + }, + "props": { + "path": "autStand/Equipment/Encoder", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 101, + "y": 496 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_2_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 139, + "y": 419 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_3_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 162, + "y": 406 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_4_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 185, + "y": 392 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_5_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 204, + "y": 364 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 312, + "y": 556 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_2_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 343, + "y": 464 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_3_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 343, + "y": 430 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_4_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 343, + "y": 399 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_5_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 357, + "y": 346 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 527, + "y": 346 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_2_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 687, + "y": 346 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_3_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1444, + "y": 336 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_4_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1513, + "y": 347 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_5_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1594, + "y": 479 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_6_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1601, + "y": 553 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_7_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1606, + "y": 605 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_8_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1667, + "y": 624 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_9AL_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1713, + "y": 627 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_10_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1787, + "y": 628 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1838, + "y": 627 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_9B_VFD1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1742, + "y": 627 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "red", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/VFD", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_JR1" + }, + "position": { + "height": 20, + "width": 20, + "x": 31, + "y": 464 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_JR1" + }, + "position": { + "height": 20, + "width": 20, + "x": 222, + "y": 484 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_JR1" + }, + "position": { + "height": 20, + "width": 20, + "x": 232, + "y": 366 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_JR2" + }, + "position": { + "height": 20, + "width": 20, + "x": 421, + "y": 361 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_JR3" + }, + "position": { + "height": 20, + "width": 20, + "x": 564, + "y": 276 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_2_JR1" + }, + "position": { + "height": 20, + "width": 20, + "x": 973, + "y": 276 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_4_JR3" + }, + "position": { + "height": 20, + "width": 20, + "x": 1526, + "y": 420 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_8_JR2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1646, + "y": 684 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_8_JR1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1643, + "y": 625 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_10_JR2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1787, + "y": 690 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_10_JR1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1764, + "y": 581 + }, + "props": { + "path": "autStand/Equipment/JR_Button", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_1_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 306, + "y": 533 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_2_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 367, + "y": 463 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_3_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 367, + "y": 431 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_4_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 367, + "y": 401 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_1_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 122, + "y": 496 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_2_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 138, + "y": 451 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_3_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 176, + "y": 428 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_4_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 206, + "y": 405 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL15_5_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 208, + "y": 343 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "UL14_5_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 378, + "y": 360 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 483, + "y": 346 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_3_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 643, + "y": 346 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_3_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1400, + "y": 336 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_4_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1476, + "y": 367 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_5_SIO1" + }, + "position": { + "height": 20, + "width": 40, + "x": 1592, + "y": 455 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_6_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1602, + "y": 526 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_7_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1606, + "y": 579 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_8_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1668, + "y": 599 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_9AL_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1713, + "y": 604 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_9B_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1757, + "y": 605 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_11_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1862, + "y": 553 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_10_SIO1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1808, + "y": 604 + }, + "props": { + "params": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Safety_IO", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "MCM01" + }, + "position": { + "height": 30, + "width": 42, + "x": 449.64, + "y": 405 + }, + "props": { + "params": { + "forceFaultStatus": null, + "forceRunningStatus": null, + "has_state": false, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/MCM" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_DPM1" + }, + "position": { + "height": 30, + "width": 30, + "x": 269.64, + "y": 265 + }, + "props": { + "params": { + "forceFaultStatus": null, + "forceRunningStatus": null, + "has_state": false, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/DPM" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_5_DPM1" + }, + "position": { + "height": 30, + "width": 30, + "x": 1599.64, + "y": 375 + }, + "props": { + "params": { + "forceFaultStatus": null, + "forceRunningStatus": null, + "has_state": false, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/DPM" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PDP01_FIOM1" + }, + "position": { + "height": 22, + "width": 40, + "x": 1407, + "y": 384 + }, + "props": { + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Field_IO" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "PS3_1_BCN3_A" + }, + "position": { + "height": 20, + "width": 20, + "x": 421, + "y": 340 + }, + "props": { + "params": { + "forceFaultStatus": null, + "name": "amber", + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "path": "autStand/Equipment/Beacon", + "style": { + "overflow": "hidden" + } + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f41534f390938ac58790720254a00b665c1dfafd470f9c018acf5eed23b44fdf b/.resources/f41534f390938ac58790720254a00b665c1dfafd470f9c018acf5eed23b44fdf new file mode 100644 index 00000000..902aeac1 --- /dev/null +++ b/.resources/f41534f390938ac58790720254a00b665c1dfafd470f9c018acf5eed23b44fdf @@ -0,0 +1,490 @@ +{ + "custom": {}, + "params": { + "meta": { + "name": "MCP" + }, + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.meta": { + "paramDirection": "input", + "persistent": true + }, + "params.meta.name": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 180, + "width": 500 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "MCP" + }, + "position": { + "height": 40, + "width": 100, + "x": 50, + "y": 15 + }, + "propConfig": { + "meta.name": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Label" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027MCP\u0027)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "expression": "try(\r\n\tjsonSet({value}, \"showAlways\", true),\r\n\t{view.params.props.status}\r\n)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "config": { + "enableHighlight": false, + "isClickable": false + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "lbStatus" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 40 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Graphics" + }, + "transforms": [ + { + "code": "\treturn utils.extractStatus(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbName" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 5 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.LabelFull" + }, + "transforms": [ + { + "expression": "coalesce({value}, \u0027\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_1" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 5 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Name: " + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_11" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 40 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Status:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_12" + }, + "position": { + "height": 25, + "width": 75, + "x": 195, + "y": 75 + }, + "props": { + "style": { + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "right" + }, + "text": "Panel:" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "lbStatus_0" + }, + "position": { + "height": 25, + "width": "calc(100% - 300px)", + "x": 280, + "y": 75 + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/Parameters.OPC_Server" + }, + "transforms": [ + { + "expression": "coalesce({value}, \"Unknown\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "fontSize": "14px", + "fontWeight": "bold", + "overflow": "hidden", + "textAlign": "center", + "textOverview": "ellipsis", + "whiteSpace": "nowrap" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "CPU_Switch" + }, + "position": { + "height": 40, + "rotate": { + "angle": "135deg" + }, + "width": 40, + "x": 80, + "y": 100 + }, + "propConfig": { + "position.rotate.angle": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU.jsonValues" + }, + "overlayOptOut": true, + "transforms": [ + { + "code": "\ttry:\n\t\tif value.Key_Run:\n\t\t\treturn \"0deg\"\n\t\telif value.Key_Rem:\n\t\t\treturn \"45deg\"\n\t\telif value.Key_Pgm:\n\t\t\treturn \"90deg\"\n\t\telse:\n\t\t\treturn \"135deg\"\n\texcept:\n\t\treturn \"135deg\"", + "type": "script" + } + ], + "type": "tag" + }, + "persistent": true + }, + "props.elements[0].d": { + "binding": { + "config": { + "expression": "if({this.position.rotate.angle}\u003d\"135deg\",\r\n\t\"M40,40L0,0\",\r\n\t\"M40,40L0,0H20M0,0V20\"\r\n)" + }, + "overlayOptOut": true, + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "elements": [ + { + "d": "M40,40L0,0", + "fill": { + "paint": "none" + }, + "stroke": { + "linecap": "square", + "paint": "#000", + "width": 5 + }, + "type": "path" + } + ], + "viewBox": "0 0 41 41" + }, + "type": "ia.shapes.svg" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "height": 20, + "width": 40, + "x": 40, + "y": 70 + }, + "propConfig": { + "props.style.borderWidth": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU/Key_Run" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "forceQuality({value}, 192)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 2 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 0, + "fontSize": 11, + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "RUN" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Label_2" + }, + "position": { + "height": 20, + "width": 40, + "x": 120, + "y": 70 + }, + "propConfig": { + "props.style.borderWidth": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/aoCPU/Key_Pgm" + }, + "overlayOptOut": true, + "transforms": [ + { + "expression": "forceQuality({value}, 192)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": 2 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + } + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": 0, + "fontSize": 11, + "fontWeight": "bold", + "textAlign": "center", + "user-select": "none" + }, + "text": "PGM" + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "background-color": "#CFCFCF" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f4873ded43213f344d8880534bd1e7dab05c7c30d2ec9c1048f9cbcf0165507d b/.resources/f4873ded43213f344d8880534bd1e7dab05c7c30d2ec9c1048f9cbcf0165507d new file mode 100644 index 00000000..f2595593 --- /dev/null +++ b/.resources/f4873ded43213f344d8880534bd1e7dab05c7c30d2ec9c1048f9cbcf0165507d @@ -0,0 +1,233 @@ +{ + "custom": { + "plc": "", + "searchId": "value", + "state": 1, + "string": "Actuated" + }, + "params": { + "tagProps": [ + "/system/mcm01/test", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 0, + "output": 0 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.string": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Actuated" + }, + { + "input": 2, + "output": "Faulted" + }, + { + "input": 0, + "output": "Inactive" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 22, + "width": 25 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 1, + "width": 1 + }, + "props": { + "text": "SOL", + "textStyle": { + "fontSize": 10, + "textAlign": "center", + "textTransform": "uppercase" + } + }, + "type": "ia.display.label" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-JR\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true + } + }, + "propConfig": { + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "\"Source Id: \" + {view.params.tagProps[0]} + \", Status: \" + {view.custom.string}\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_beacons" + }, + "type": "property" + } + }, + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#808080", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#FF0000" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "borderStyle": "solid", + "cursor": "pointer", + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f5d5b3fc3be0e8f46d02700a2485c870a1ecd256f3c8365a74740c4402a235c8 b/.resources/f5d5b3fc3be0e8f46d02700a2485c870a1ecd256f3c8365a74740c4402a235c8 new file mode 100644 index 00000000..ff045115 --- /dev/null +++ b/.resources/f5d5b3fc3be0e8f46d02700a2485c870a1ecd256f3c8365a74740c4402a235c8 @@ -0,0 +1,57 @@ +{ + "custom": {}, + "params": { + "help": "Welcome to _Markdown_" + }, + "propConfig": { + "params.help": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 400, + "width": 600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Markdown" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.source": { + "binding": { + "config": { + "path": "view.params.help" + }, + "transforms": [ + { + "code": "\treturn value.replace(\"\u003cu\u003e\", \"**\").replace(\"\u003c/u\u003e\", \"**\")", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "markdown": { + "escapeHtml": false + } + }, + "type": "ia.display.markdown" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f6a27c9b8c48bb0587df49704b9124a97554291b92c28104e8f6025b33d44fe2 b/.resources/f6a27c9b8c48bb0587df49704b9124a97554291b92c28104e8f6025b33d44fe2 new file mode 100644 index 00000000..6b173246 --- /dev/null +++ b/.resources/f6a27c9b8c48bb0587df49704b9124a97554291b92c28104e8f6025b33d44fe2 @@ -0,0 +1,241 @@ +{ + "custom": {}, + "params": { + "deviceType": "", + "props": { + "config": { + "enableHighlight": true, + "isClickable": false + }, + "status": { + "color": "#aaa", + "showAlways": true, + "tagPath": "", + "tooltip": "" + } + } + }, + "propConfig": { + "params.deviceType": { + "paramDirection": "input", + "persistent": true + }, + "params.props": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 280 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Table" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "tagPath": "{view.params.props.status.tagPath}" + }, + "tagPath": "{tagPath}/FMS.jsonValues" + }, + "transforms": [ + { + "code": "\treturn historian.fms.genSegmentsTable(value)", + "type": "script" + } + ], + "type": "tag" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "1px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "1px", + "fontFamily": "Helvetica", + "fontSize": "16px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "segment", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Belt Section (10ft)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": true, + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 160 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "editable": false, + "field": "fill", + "footer": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "table/column-header" + }, + "title": "Package Fill (%)" + }, + "justify": "center", + "number": "value", + "numberFormat": "0.##%", + "progressBar": { + "bar": { + "color": "#62A3F6", + "linecap": "round", + "width": 5 + }, + "max": 100, + "track": { + "color": "#DADADA", + "linecap": "round", + "width": 2 + }, + "value": { + "color": "#7D7D7D", + "show": true + } + }, + "render": "auto", + "resizable": false, + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "minWidth": "250px" + }, + "toggleSwitch": { + "color": { + "selected": "#2196F3", + "unselected": "#FFFFFF" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 250 + } + ], + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "16px", + "fontWeight": "bold", + "zoom": 1 + } + }, + "scripts": { + "customMethods": [], + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tname \u003d utils.extractName(self.view.params.props.status)\n\tutils.downloadCSV(self, \"[\"+name+\"]FlowManagement\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f8dd5849cbaf59443404e7766bd8a3b6c425d0ad55d5ca425d1f68c69a9181b0 b/.resources/f8dd5849cbaf59443404e7766bd8a3b6c425d0ad55d5ca425d1f68c69a9181b0 new file mode 100644 index 00000000..0457a093 --- /dev/null +++ b/.resources/f8dd5849cbaf59443404e7766bd8a3b6c425d0ad55d5ca425d1f68c69a9181b0 @@ -0,0 +1,169 @@ +{ + "custom": { + "alarmHighlight": "", + "areaHover": [], + "currentGraphic": "Windows/Graphics/Overview", + "demoHighlight": "", + "dexmanager": { + "config": { + "font": "bold 12px Arial", + "highlight": "#ff0" + }, + "highlight": [], + "show": { + "Beacons": false, + "ConveyorLabels": true, + "ConveyorPatterns": true, + "Conveyors": true, + "DivertPaddles": true, + "EIPs": false, + "Encoders": false, + "Estops": false, + "Gaylords": true, + "LimitSwitches": false, + "MCPs": false, + "PhotoEyes": false, + "PushButtons": false, + "Scanners": false, + "VFDs": false + } + }, + "heatmapSettings": { + "alarms": [], + "alarmsText": "", + "data": { + "$": [ + "ds", + 192, + 1602856991637 + ], + "$columns": [ + { + "data": [], + "name": "firsttime", + "type": "Date" + }, + { + "data": [], + "name": "lasttime", + "type": "Date" + }, + { + "data": [], + "name": "duration", + "type": "String" + }, + { + "data": [], + "name": "count", + "type": "Long" + }, + { + "data": [], + "name": "device", + "type": "String" + }, + { + "data": [], + "name": "description", + "type": "String" + } + ] + }, + "devices": [], + "devicesText": "", + "enabled": false, + "shifts": [], + "shiftsText": "", + "time": { + "end": "2020-07-30 00:00:00", + "start": "2020-07-29 00:00:00" + } + }, + "isMobile": false, + "timewidget": { + "endDate": { + "$": [ + "ts", + 192, + 1646422591477 + ], + "$ts": 1646438400000 + }, + "mode": "currentDay", + "startDate": { + "$": [ + "ts", + 192, + 1646422591477 + ], + "$ts": 1646352000000 + }, + "update": { + "$": [ + "ts", + 192, + 1646422591477 + ], + "$ts": 1646422591465 + } + } + }, + "propConfig": { + "props.auth": { + "access": "PRIVATE", + "persistent": false + }, + "props.device.accelerometer": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.identifier": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.timezone": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.type": { + "access": "SYSTEM", + "persistent": false + }, + "props.device.userAgent": { + "access": "SYSTEM", + "persistent": false + }, + "props.gateway": { + "access": "SYSTEM", + "persistent": false + }, + "props.geolocation.data": { + "access": "SYSTEM", + "persistent": false + }, + "props.geolocation.permissionGranted": { + "access": "SYSTEM", + "persistent": false + }, + "props.host": { + "access": "SYSTEM", + "persistent": false + }, + "props.id": { + "access": "SYSTEM", + "persistent": false + }, + "props.lastActivity": { + "access": "SYSTEM", + "persistent": false + } + }, + "props": { + "address": "127.0.0.1", + "device": {}, + "geolocation": {}, + "locale": "en-US", + "timeZoneId": "Asia/Tbilisi" + } +} \ No newline at end of file diff --git a/.resources/f9b5bc7ac6d3f64b63cf6366e6aca3a9284a1b710b77d924cef4bd8391ed1b59 b/.resources/f9b5bc7ac6d3f64b63cf6366e6aca3a9284a1b710b77d924cef4bd8391ed1b59 new file mode 100644 index 00000000..18c7ae4c --- /dev/null +++ b/.resources/f9b5bc7ac6d3f64b63cf6366e6aca3a9284a1b710b77d924cef4bd8391ed1b59 @@ -0,0 +1,588 @@ +{ + "custom": { + "covert_mode": true, + "disconnected": false, + "display_icon": true, + "error": false, + "isMatch": 0, + "plc": "value", + "priority": 0, + "priority_string": "No active alarms", + "running_status": 0, + "searchId": "value", + "state": 5, + "state_string": "Unknown" + }, + "params": { + "directionLeft": true, + "forceFaultStatus": null, + "forceRunningStatus": null, + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.covert_mode": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case(\t{value},\r\n\t\t0, {session.custom.alarm_filter.show_running},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_low_alarm},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic},\r\n\t\t5, {session.custom.alarm_filter.show_running},\r\n\t\tFalse)", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "fc": "{session.custom.fc}", + "plc": "{view.custom.plc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN" + }, + "transforms": [ + { + "expression": "if(isNull({value}), False, {value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.display_icon": { + "binding": { + "config": { + "expression": "{this.custom.covert_mode}//||{this.custom.isMatch}\u003e0" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.error": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "0 \u003c {value} \u0026\u0026 {value} \u003c 5", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.isMatch": { + "binding": { + "config": { + "expression": "if({view.params.tagProps[0]}\u003d\"value\",0,\nif({this.custom.searchId}\u003d{view.params.tagProps[0]},100,0))" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 4 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 4, + "output": 1 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n1, \"High\",\r\n2, \"Medium\",\r\n3, \"Low\",\r\n4, \"Diagnostic\",\r\n5, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.running_status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceRunningStatus},0)", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": null, + "inputType": "scalar", + "mappings": [ + { + "input": 4, + "output": 1 + }, + { + "input": 3, + "output": 2 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 1, + "output": 4 + }, + { + "input": 0, + "output": 5 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.running_status},\r\n1, \"Faulted\",\r\n2, \"Stopped\",\r\n3, \"Running\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "params.directionLeft": { + "paramDirection": "input", + "persistent": true + }, + "params.forceFaultStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.forceRunningStatus": { + "paramDirection": "input", + "persistent": true + }, + "params.tagProps": { + "paramDirection": "inout", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 100, + "width": 100 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Camera" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[1].elements[0].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "enabled": false, + "transforms": [ + { + "expression": "if({session.custom.colours}[\"state\"+{value}] \u003d null, \r\n{session.custom.colours}[\"Fallback\"],\r\n{session.custom.colours}[\"state\"+{value}])", + "type": "expression" + }, + { + "expression": "if({view.custom.display_icon}\u0026\u0026 {view.custom.isMatch}\u003d0,{value},{value}+\u002700\u0027)", + "type": "expression" + } + ], + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "expression": "if({session.custom.colours.colour_impaired} \u003d True \u0026\u0026 {view.custom.isMatch} \u003e 0,\r\n{view.custom.state} + 100 + {view.custom.isMatch},\r\n{view.custom.state} + {view.custom.isMatch})" + }, + "transforms": [ + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": 101, + "output": "State-Styles/State101" + }, + { + "input": 102, + "output": "State-Styles/State102" + }, + { + "input": 103, + "output": "State-Styles/State103" + }, + { + "input": 104, + "output": "State-Styles/State104" + }, + { + "input": 105, + "output": "State-Styles/State105" + }, + { + "input": 106, + "output": "State-Styles/State106" + }, + { + "input": 201, + "output": "State-Styles/State201" + }, + { + "input": 202, + "output": "State-Styles/State202" + }, + { + "input": 203, + "output": "State-Styles/State203" + }, + { + "input": 204, + "output": "State-Styles/State204" + }, + { + "input": 205, + "output": "State-Styles/State205" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + } + }, + "props": { + "elements": [ + { + "id": "defs963", + "name": "defs963", + "type": "defs" + }, + { + "elements": [ + { + "d": "M 108.69378,77.205299 A 30.372795,30.372799 0 0 1 78.350262,107.57808 30.372795,30.372799 0 0 1 47.948245,77.263855 30.372795,30.372799 0 0 1 78.23315,46.832627 a 30.372795,30.372799 0 0 1 30.4604,30.255561", + "fill": { + "paint": "#00CC00" + }, + "id": "path2823", + "name": "path2823", + "stroke": { + "dasharray": "none", + "linejoin": "round", + "miterlimit": "4", + "paint": "#000000", + "width": "2.30899" + }, + "style": { + "paintOrder": "markers fill stroke" + }, + "type": "path" + }, + { + "elements": [ + { + "elements": [ + { + "elements": [ + { + "d": "m 308.1,277.95 c 0,35.7 -28.9,64.6 -64.6,64.6 -35.7,0 -64.6,-28.9 -64.6,-64.6 0,-35.7 28.9,-64.6 64.6,-64.6 35.7,0 64.6,28.9 64.6,64.6 z m 132.2,-161.9 c 25.8,0 46.7,20.9 46.7,46.7 v 122.4 103.8 c 0,27.5 -22.3,49.8 -49.8,49.8 H 49.8 C 22.3,438.75 0,416.45 0,388.95 v -103.9 -122.3 0 c 0,-25.8 20.9,-46.7 46.7,-46.7 h 93.4 l 4.4,-18.6 c 6.7,-28.8 32.4,-49.2 62,-49.2 h 74.1 c 29.6,0 55.3,20.4 62,49.2 l 4.3,18.6 z m -342.9,67.4 c 0,-12.9 -10.5,-23.4 -23.4,-23.4 -13,0 -23.5,10.5 -23.5,23.4 0,12.9 10.5,23.4 23.4,23.4 13,0.1 23.5,-10.4 23.5,-23.4 z m 261.3,94.5 c 0,-63.6 -51.6,-115.2 -115.2,-115.2 -63.6,0 -115.2,51.6 -115.2,115.2 0,63.6 51.6,115.2 115.2,115.2 63.6,0 115.2,-51.6 115.2,-115.2 z", + "id": "path954", + "name": "path954", + "type": "path" + } + ], + "id": "g956", + "name": "g956", + "type": "group" + } + ], + "id": "g958", + "name": "g958", + "transform": "matrix(0.10552692,0,0,0.1049851,58.573883,61.035557)", + "type": "group" + } + ], + "id": "g2695", + "name": "g2695", + "transform": "matrix(0.78290367,0,0,0.78703031,12.345936,11.651649)", + "type": "group" + } + ], + "id": "g3222", + "name": "g3222", + "transform": "matrix(0.45169465,0,0,0.44391375,-20.878644,-19.304276)", + "type": "group" + } + ], + "fill": { + "paint": "#000000" + }, + "style": {}, + "viewBox": "0 0 29.22 29.22" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})\n\t" + }, + "enabled": false, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "location": "top-left", + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.backgroundColor": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)", + "type": "expression" + } + ], + "type": "property" + } + }, + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Low" + }, + { + "input": 3, + "output": "Alarms-Styles/Medium" + }, + { + "input": 4, + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.style.color": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#FFFFFF\u0027,\r\n\t\t\t2,\u0027#000000\u0027,\r\n\t\t\t3,\u0027#000000\u0027,\r\n\t\t\t4,\u0027#FFFFFF\u0027,\r\n\t\t\t5,\u0027#FFFFFF\u0027,\r\n\t\t\t\u0027#000000\u0027)\r\n\t)", + "type": "expression" + } + ], + "type": "property" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_camera_jams" + }, + "type": "property" + } + }, + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.disconnected" + }, + "transforms": [ + { + "fallback": "Disconnects/Device-Connected", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "Disconnects/Device-Disconnected" + }, + { + "input": false, + "output": "Disconnects/Device-Connected" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "aspectRatio": "1:1", + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/f9e495b56234135e882c24ad01eb713ce9ba7e5ac8ae413ea709b74b17ee6ab0 b/.resources/f9e495b56234135e882c24ad01eb713ce9ba7e5ac8ae413ea709b74b17ee6ab0 new file mode 100644 index 00000000..ecf9f8d4 --- /dev/null +++ b/.resources/f9e495b56234135e882c24ad01eb713ce9ba7e5ac8ae413ea709b74b17ee6ab0 @@ -0,0 +1,23 @@ +WITH GAYLORDS AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + gaylord_id AS gaylord, + SUM(count) AS total + FROM gl_history + WHERE timestamp BETWEEN :startDate AND :endDate + GROUP BY gaylord_id + ORDER BY gaylord_id +) +SELECT + start_timestamp, + end_timestamp, + gaylord, + /* Counts: */ + total AS total_count, + /* PPH: */ + ROUND(total*pph_multiplier) AS total_pph, + /* Percents: */ + ROUND(total/total, 4) AS total_percent +FROM GAYLORDS; \ No newline at end of file diff --git a/.resources/fad1c687459ea36dfc5f14b05c85d244cae3939edcf20f2078b8a39eb43d95e4 b/.resources/fad1c687459ea36dfc5f14b05c85d244cae3939edcf20f2078b8a39eb43d95e4 new file mode 100644 index 00000000..65016643 --- /dev/null +++ b/.resources/fad1c687459ea36dfc5f14b05c85d244cae3939edcf20f2078b8a39eb43d95e4 @@ -0,0 +1,4244 @@ +{ + "custom": {}, + "params": {}, + "props": { + "defaultSize": { + "height": 651, + "width": 1687 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "UL01_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1624, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL02_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1554, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL02/UL02_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL03_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1464, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL03/UL03_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL04_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1384, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL04/UL04_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL01_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1645, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL01_01_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1608, + "y": 480 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UL05_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1304, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL05/UL05_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL06_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1224, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL06/UL06_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL01_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1645, + "y": 383 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UL01_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1645, + "y": 362 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL01_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1624, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL02_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1554, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL02/UL02_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL03_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1464, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL03/UL03_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL04_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1384, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL04/UL04_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL05_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1304, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL05/UL05_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL06_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1224, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL06/UL06_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL07_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 1144, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL07_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 1144, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL07_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1165, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL07_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1165, + "y": 383 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UL01_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1645, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL07_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1165, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL07_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1165, + "y": 362 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL01_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1666, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL07_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1186, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL07_01_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 1128, + "y": 480 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UL08_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 974, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL08_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 974, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL08_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 995, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL08_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 995, + "y": 383 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UL08_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 995, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL08_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 995, + "y": 362 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL08_01_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 958, + "y": 480 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UL08_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1016, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL09_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 894, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL09/UL09_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL09_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 894, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL09/UL09_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL01_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1645, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL02_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1575, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL02/UL02_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL03_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1485, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL03/UL03_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL04_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1405, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL04/UL04_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL05_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1325, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL05/UL05_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL06_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1245, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL06/UL06_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL07_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1165, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL08_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 995, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL09_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 915, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL09/UL09_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL10_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 814, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL10/UL10_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL10_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 814, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL10/UL10_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL10_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 835, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL10/UL10_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 670, + "x": 1687, + "y": 73 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 490, + "x": 1018, + "y": 73 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL11_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 734, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL11/UL11_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL11_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 734, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL11/UL11_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL11_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 755, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL11/UL11_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL01_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1645, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL02_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1575, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL02/UL02_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL03_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1485, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL03/UL03_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL04_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1405, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL04/UL04_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL05_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1325, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL05/UL05_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL06_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1245, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL06/UL06_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL07_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1165, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL08_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 995, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL09_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 915, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL09/UL09_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL10_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 835, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL10/UL10_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL11_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 755, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL11/UL11_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL12_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 696, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_01_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1030, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1123, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE3" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1192, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE4" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1283, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE5" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1352, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE5/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE6" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1432, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE6/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE7" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1512, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE7/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_01_PE8" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 1602, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/PE8/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_02_PE3" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 702, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/PE3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_02_PE4" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 782, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/PE4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_02_PE5" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 862, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/PE5/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_02_PE6" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 942, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/PE6/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL01_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1654, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL01/UL01_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL02_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1584, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL02/UL02_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL03_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1494, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL03/UL03_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL04_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1414, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL04/UL04_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL05_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1334, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL05/UL05_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL06_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1254, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL06/UL06_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL07_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1174, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL07/UL07_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL08_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 1004, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL08/UL08_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL09_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 924, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL09/UL09_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL10_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 844, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL10/UL10_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL11_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 764, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL11/UL11_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL12_01" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 310, + "x": 654, + "y": 651 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "UL12_02" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 270, + "x": 654, + "y": 342 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_02/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "MCP02" + }, + "position": { + "height": 20, + "width": 50, + "x": 1248, + "y": 12 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/MCP02/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.mcp" + }, + { + "meta": { + "name": "PS02_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 1256, + "y": 36 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 623, + "y": 36 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL12_01_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 675, + "y": 464 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL12_02_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 675, + "y": 194 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_02/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1031, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_01_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1092, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "UL12_01_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 675, + "y": 383 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_01_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 1321, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_01_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 1664, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 1052, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 1071, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_02_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 640, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_02_RS2" + }, + "position": { + "height": 20, + "width": 20, + "x": 814, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/RS2/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL12_01_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 675, + "y": 343 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "UL12_01_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 675, + "y": 362 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_01_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 1225, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_01_FIO2" + }, + "position": { + "height": 15, + "width": 30, + "x": 1454, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/FIO2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_01_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 1194, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_02_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 661, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "UL12_01_SIO1" + }, + "position": { + "height": 15, + "rotate": { + "anchor": "0 0", + "angle": "270deg" + }, + "width": 30, + "x": 638, + "y": 480 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_01/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_01_BCN1_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 1052 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/BCN1/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_01_BCN1_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 1052, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/BCN1/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_01_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 1321, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_01/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_02_BCN1_PUR" + }, + "position": { + "height": 16, + "width": 16, + "x": 623, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/BCN1/PUR/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_02_BCN2_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 640, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/BCN2/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_02_BCN2_HRN" + }, + "position": { + "height": 16, + "width": 16, + "x": 640 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/BCN2/HRN/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_02_BCN3_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 814, + "y": 15 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/BCN3/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "UL12_02_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 675, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_02/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 542, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_02_PE2" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 622, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_02/PE2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "UL12_02_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 34, + "x": 684, + "y": 101 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/UL12/UL12_02/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_03" + }, + "position": { + "height": 20, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 490, + "x": 529, + "y": 73 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyor" + }, + { + "meta": { + "name": "PS02_03_EPC1" + }, + "position": { + "height": 20, + "width": 20, + "x": 250, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/EPC1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_03_EPC2" + }, + "position": { + "height": 20, + "width": 20, + "x": 250, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/EPC2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.estop" + }, + { + "meta": { + "name": "PS02_03_SS1_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 210, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/SS1/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_03_SS1_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 229, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/SS1/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_03_SS2_START" + }, + "position": { + "height": 20, + "width": 20, + "x": 210, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/SS2/Start/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_03_SS2_STOP" + }, + "position": { + "height": 20, + "width": 20, + "x": 229, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/SS2/Stop/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_03_BCN2_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 193, + "y": 36 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/BCN2/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_03_BCN3_RED" + }, + "position": { + "height": 16, + "width": 16, + "x": 193, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/BCN3/RED/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_03_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 145, + "y": 36 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "PS02_03_FIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 114, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/FIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_03_SIO1" + }, + "position": { + "height": 15, + "width": 30, + "x": 83, + "y": 37 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/SIO1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.eip" + }, + { + "meta": { + "name": "PS02_03_RS1" + }, + "position": { + "height": 20, + "width": 20, + "x": 56, + "y": 74 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/RS1/Restart/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.pushbutton" + }, + { + "meta": { + "name": "PS02_03_BCN1_AMB" + }, + "position": { + "height": 16, + "width": 16, + "x": 39, + "y": 78 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/BCN1/AMB/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.beacon" + }, + { + "meta": { + "name": "PS02_03_PE1" + }, + "position": { + "height": 10, + "rotate": { + "anchor": "0 0", + "angle": "90deg" + }, + "width": 34, + "x": 52, + "y": 43 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_03/PE1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.photoeye" + }, + { + "meta": { + "name": "PS02_04PT" + }, + "position": { + "height": 40, + "rotate": { + "anchor": "0 0", + "angle": "180deg" + }, + "width": 40, + "x": 40, + "y": 73 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_04PT/Conv/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.conveyorcurve" + }, + { + "meta": { + "name": "PS02_04PT_VFD" + }, + "position": { + "height": 16, + "width": 16, + "x": 25, + "y": 32 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02/PS02/PS02_04PT/VFD/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.vfd" + }, + { + "meta": { + "name": "UL1Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1582, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 124 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL2Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1512, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 123 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL3Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1422, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 122 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL4Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1342, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 121 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL5Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1262, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 120 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL6Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1182, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 119 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL8Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 932, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 116 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL9Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 852, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 115 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL10Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 772, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 114 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL11Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 692, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 113 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL12Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 612, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 112 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL12Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 612, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "publishInitial": false, + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_12/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL11Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 692, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_11/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL10Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 772, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_10/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL9Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 852, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_9/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL8Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 932, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_8/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL6Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1182, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_6/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL5Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1262, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_5/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL4Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1342, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_4/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL3Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1422, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_3/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL2Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1512, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_2/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL1Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1582, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_1/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UL7Label" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 40, + "x": 1102, + "y": 620 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": 118 + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UL7Label_Tooltip" + }, + "position": { + "height": 25, + "width": 40, + "x": 1102, + "y": 620 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_7/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + }, + { + "meta": { + "name": "UnloadLabel" + }, + "position": { + "height": 25, + "rotate": { + "anchor": "0 0" + }, + "width": 90, + "x": 402, + "y": 80 + }, + "props": { + "style": { + "borderColor": "#000", + "borderStyle": "solid", + "borderWidth": "2px", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + }, + "text": "Unloads" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UnloadLabel_Tooltip" + }, + "position": { + "height": 25, + "width": 90, + "x": 402, + "y": 80 + }, + "propConfig": { + "props.status": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]MCP02_Custom/adiPPH_Unload_Total/Graphics" + }, + "type": "tag" + } + } + }, + "type": "dex.display.tooltipoverlay" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "overflow": "hidden" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/fb58f84db080c110adfc319d38f958cf3ad09e0121d2bd3c4db92d33e1cddbbf b/.resources/fb58f84db080c110adfc319d38f958cf3ad09e0121d2bd3c4db92d33e1cddbbf new file mode 100644 index 00000000..55e76935 --- /dev/null +++ b/.resources/fb58f84db080c110adfc319d38f958cf3ad09e0121d2bd3c4db92d33e1cddbbf @@ -0,0 +1,7 @@ +{ + "base": { + "style": { + "color": "#FFB200" + } + } +} \ No newline at end of file diff --git a/.resources/fbb12b5f6b54c6385b4871b655657d088ef8ff9a7d487fae3349124a80ccbdc5 b/.resources/fbb12b5f6b54c6385b4871b655657d088ef8ff9a7d487fae3349124a80ccbdc5 new file mode 100644 index 00000000..d06c0f15 --- /dev/null +++ b/.resources/fbb12b5f6b54c6385b4871b655657d088ef8ff9a7d487fae3349124a80ccbdc5 @@ -0,0 +1,13 @@ +{ + "base": { + "animation": { + "duration": "1s", + "keyframes": { + "0%": { + "backgroundColor": "#F00077" + }, + "100%": {} + } + } + } +} \ No newline at end of file diff --git a/.resources/fbece6a5c417baaa418f3e81c95a6986aaa6ac699d3d3ddb30153b090e59c9b9 b/.resources/fbece6a5c417baaa418f3e81c95a6986aaa6ac699d3d3ddb30153b090e59c9b9 new file mode 100644 index 00000000..7061802c --- /dev/null +++ b/.resources/fbece6a5c417baaa418f3e81c95a6986aaa6ac699d3d3ddb30153b090e59c9b9 @@ -0,0 +1,313 @@ +{ + "custom": {}, + "params": { + "tab": "Active Alarms" + }, + "propConfig": { + "params.tab": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 400, + "width": 1600 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "height": 40, + "width": "100%" + }, + "propConfig": { + "props.text": { + "binding": { + "config": { + "expression": " property(\"../TabContainer.props.tabs[\"+{../TabContainer.props.currentTabIndex}+\"]\")\r\n+if(len({../EmbeddedView.props.params.titleExtra})\u003e0,\r\n\t\" (\" + {../EmbeddedView.props.params.titleExtra} + \")\",\r\n\t\"\"\r\n)" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#1A4A5E", + "borderBottomColor": "#000000", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "color": "#fff", + "fontFamily": "Helvetica", + "fontSize": "20px", + "fontWeight": "bold", + "textAlign": "center" + } + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Dropdown" + }, + "position": { + "height": 20, + "width": 120, + "x": "calc(100% - 230px)", + "y": 10 + }, + "props": { + "options": [ + { + "label": "Error", + "value": [ + "Error" + ] + }, + { + "label": "Warning", + "value": [ + "Warning", + "Error" + ] + }, + { + "label": "Message", + "value": [ + "Message", + "Warning", + "Error" + ] + } + ], + "search": { + "enabled": false + }, + "style": { + "fontSize": "14px" + }, + "value": [ + "Error" + ] + }, + "type": "ia.input.dropdown" + }, + { + "meta": { + "name": "Label_0" + }, + "position": { + "height": 20, + "width": 100, + "x": "calc(100% - 335px)", + "y": 10 + }, + "props": { + "style": { + "color": "#fff", + "fontSize": "14px", + "textAlign": "right" + }, + "text": "Min Class:" + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tsystem.perspective.sendMessage(\"export-data\")" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "height": 30, + "width": 100, + "x": "calc(100% - 105px)", + "y": 5 + }, + "props": { + "style": { + "classes": "Buttons/Grey" + }, + "text": "Export" + }, + "type": "ia.input.button" + }, + { + "custom": { + "pages": [ + "Active", + "History", + "HitList" + ] + }, + "meta": { + "name": "TabContainer" + }, + "position": { + "height": "calc(100% - 40px)", + "width": "100%", + "y": 40 + }, + "propConfig": { + "props.currentTabIndex": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "code": "\ttab \u003d self.page.props.path.split(\"/\")[-1]\n\t# Search for tab:\n\tfor i, page in enumerate(self.custom.pages):\n\t\tif page.lower() \u003d\u003d tab:\n\t\t\treturn i\n\t# Default value in case of not finding the tab\n\treturn 0", + "type": "script" + } + ], + "type": "property" + }, + "onChange": { + "enabled": null, + "script": "\tpage \u003d \"/alarms/\"+self.custom.pages[self.props.currentTabIndex].lower()\n\tif previousValue \u003c\u003e currentValue and self.page.props.path.lower() \u003c\u003e page.lower():\n\t\tsystem.perspective.navigate(page)" + }, + "persistent": true + } + }, + "props": { + "menuStyle": { + "backgroundColor": "#225E77" + }, + "tabSize": { + "width": 130 + }, + "tabStyle": { + "active": { + "backgroundColor": "#2D7D9F", + "color": "#FFF", + "fontWeight": "bold" + }, + "inactive": { + "backgroundColor": "#389CC7", + "color": "#FFF" + } + }, + "tabs": [ + "Active Alarms", + "Alarm History", + "Alarm Hit List" + ] + }, + "type": "ia.container.tab" + }, + { + "meta": { + "name": "EmbeddedView" + }, + "position": { + "height": "calc(100% - 76px)", + "width": "100%", + "y": 76 + }, + "propConfig": { + "props.params.classDropdownValue": { + "binding": { + "config": { + "path": "../Dropdown.props.value" + }, + "type": "property" + }, + "persistent": true + }, + "props.path": { + "binding": { + "config": { + "expression": " \"Windows/Alarms/\"\r\n+property(\"../TabContainer.custom.pages[\"+{../TabContainer.props.currentTabIndex}+\"]\")" + }, + "transforms": [ + { + "code": "\t# Reset the titleExtra whenever the view is changed to prevent the numbers from showing while loading the new view:\n\tif value \u003c\u003e self.props.path:\n\t\tself.props.params.titleExtra \u003d \"\"\n\t# Return new view path:\n\treturn value", + "type": "script" + } + ], + "type": "expr" + }, + "persistent": true + } + }, + "props": { + "params": { + "classDropdownValue": [ + "Error" + ], + "titleExtra": "24 rows" + }, + "path": "Windows/Alarms/Active" + }, + "type": "ia.display.view" + }, + { + "meta": { + "name": "TimeWidget" + }, + "position": { + "height": 40, + "width": 600 + }, + "propConfig": { + "meta.visible": { + "binding": { + "config": { + "path": "../TabContainer.props.currentTabIndex" + }, + "transforms": [ + { + "fallback": false, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": true + }, + { + "input": 2, + "output": true + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "params": { + "endDate": "2021-02-13 00:00:00", + "startDate": "2021-02-12 00:00:00" + }, + "path": "Templates/Widget/TimeWidget" + }, + "type": "ia.display.view" + } + ], + "meta": { + "name": "root" + }, + "props": { + "style": { + "min-width": "1000px" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/fcdc32cca3bf6bd7e3b6b1c7831f9ebe6624092f31f6915489e008f6388a8d80 b/.resources/fcdc32cca3bf6bd7e3b6b1c7831f9ebe6624092f31f6915489e008f6388a8d80 new file mode 100644 index 00000000..89bf26ba --- /dev/null +++ b/.resources/fcdc32cca3bf6bd7e3b6b1c7831f9ebe6624092f31f6915489e008f6388a8d80 @@ -0,0 +1,1073 @@ +{ + "custom": {}, + "params": { + "titleExtra": "0 of 0" + }, + "props": { + "defaultSize": { + "height": 324, + "width": 1600 + } + }, + "root": { + "children": [ + { + "events": { + "component": { + "onEditCellCommit": { + "config": { + "script": "\tif event.column in [\"StartHour\", \"EndHour\"]:\n\t\tif int(event.value) \u003c 0 or int(event.value) \u003e 24:\n\t\t\treturn\n\telif event.column in [\"StartMinute\", \"EndMinute\"]:\n\t\tif event.value \u003c 0 or int(event.value) \u003e\u003d 60:\n\t\t\treturn\n\t# Update shifts:\n\tdata \u003d system.dataset.updateRow(self.props.data, event.row, {\n\t\tevent.column: event.value\n\t})\n\tsystem.tag.writeBlocking([\"[default]Gateway/Shifts\"], [data])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Shifts" + }, + "position": { + "height": "100%", + "width": "100%" + }, + "propConfig": { + "props.data": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "direct", + "tagPath": "[default]Gateway/Shifts" + }, + "type": "tag" + } + } + }, + "props": { + "cells": { + "style": { + "borderBottomColor": "#D5D5D5", + "borderBottomStyle": "solid", + "borderBottomWidth": "2px", + "borderRightColor": "#D5D5D5", + "borderRightStyle": "solid", + "borderRightWidth": "2px", + "color": "#000", + "fontFamily": "Helvetica", + "fontSize": "14px" + } + }, + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": true, + "field": "Name", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": true, + "field": "Enabled", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "" + }, + "justify": "auto", + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "StartHour", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Start Hour" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "StartMinute", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Start Minute" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "EndHour", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "End Hour" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "EndMinute", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "End Minute" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 110 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isSunday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Sunday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isMonday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Monday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isTuesday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Tuesday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isWednesday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Wednesday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 100 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isThursday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Thursday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 85 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isFriday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Friday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "hh:mm:ss a", + "editable": true, + "field": "isSaturday", + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "table/column-header" + }, + "title": "Saturday" + }, + "justify": "auto", + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": false, + "sort": "none", + "sortable": true, + "strictWidth": true, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + } + ], + "filter": { + "enabled": true + }, + "pager": { + "bottom": false + }, + "rows": { + "highlight": { + "enabled": false + }, + "striped": { + "enabled": false + }, + "style": { + "classes": "table/highlight" + } + }, + "style": { + "fontFamily": "Helvetica", + "fontSize": "14px", + "fontWeight": "bold" + } + }, + "scripts": { + "customMethods": [], + "messageHandlers": [ + { + "messageType": "export-data", + "pageScope": true, + "script": "\tutils.downloadCSV(self, \"Shifts\")", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tshifts \u003d self.getSibling(\"Shifts\")\n\trow \u003d shifts.props.selection.selectedRow\n\tdata \u003d system.dataset.deleteRow(shifts.props.data, row)\n\tsystem.tag.writeBlocking([\"[default]Gateway/Shifts\"], [data])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_Delete" + }, + "position": { + "height": 34, + "width": 140, + "x": "calc(100% - 145px)", + "y": 8 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "expression": "{../Shifts.props.selection.selectedRow} !\u003d null" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Red" + }, + "text": "Delete Selected" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tshifts \u003d self.getSibling(\"Shifts\")\n\tnewRow \u003d [\"\", False, 0, 0, 0, 0, False, False, False, False, False, False, False]\n\tdata \u003d system.dataset.addRow(shifts.props.data, newRow)\n\tsystem.tag.writeBlocking([\"[default]Gateway/Shifts\"], [data])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button_New" + }, + "position": { + "height": 34, + "width": 140, + "x": "calc(100% - 290px)", + "y": 8 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "path": "../Shifts.props.data" + }, + "transforms": [ + { + "code": "\treturn value.getRowCount() \u003c 8", + "type": "script" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "classes": "Buttons/Green" + }, + "text": "Add New" + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "root" + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/.resources/fd38c85b4fe815c20aac8297616dfeec681b5a4af4e8ce84918f1b71092e0a05 b/.resources/fd38c85b4fe815c20aac8297616dfeec681b5a4af4e8ce84918f1b71092e0a05 new file mode 100644 index 0000000000000000000000000000000000000000..8a632849a6ccdcb7d8757b0aaeffcbcd1d8f4525 GIT binary patch literal 6188 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 literal 0 HcmV?d00001 diff --git a/.resources/fe0644f5c3ac02de9c1f9c31d42f075c18e91f7da37f5b7332c665b1ea183e68 b/.resources/fe0644f5c3ac02de9c1f9c31d42f075c18e91f7da37f5b7332c665b1ea183e68 new file mode 100644 index 00000000..19ee6d05 --- /dev/null +++ b/.resources/fe0644f5c3ac02de9c1f9c31d42f075c18e91f7da37f5b7332c665b1ea183e68 @@ -0,0 +1,26 @@ +WITH SORTERS AS ( + SELECT + MIN(timestamp) AS start_timestamp, + MAX(timestamp) AS end_timestamp, + 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, + "SYSTEM" AS sorter, + SUM(IF(lane_id LIKE "UL%", count, 0)) AS inducted, + SUM(IF(lane_id LIKE "CH%", count, 0)) AS sorted + FROM pe_history + WHERE timestamp BETWEEN :startDate AND :endDate + GROUP BY "SYSTEM" /* Makes it so no row is returned if no rows are processed */ +) +SELECT + start_timestamp, + end_timestamp, + sorter, + /* Counts: */ + inducted AS inducted_count, + sorted AS sorted_count, + /* PPH: */ + ROUND(inducted*pph_multiplier) AS inducted_pph, + ROUND(sorted*pph_multiplier) AS sorted_pph, + /* Percents: */ + ROUND(inducted/inducted, 4) AS inducted_percent, + ROUND(sorted/sorted, 4) AS sorted_percent +FROM SORTERS; \ No newline at end of file diff --git a/.resources/fe109525974c059498bbbe9c62b754300c85932f47d99b300e0f46864acda199 b/.resources/fe109525974c059498bbbe9c62b754300c85932f47d99b300e0f46864acda199 new file mode 100644 index 00000000..c47d408e --- /dev/null +++ b/.resources/fe109525974c059498bbbe9c62b754300c85932f47d99b300e0f46864acda199 @@ -0,0 +1,457 @@ +{ + "custom": { + "disconnected": true, + "plc": "System", + "priority": 5, + "priority_string": "No active alarms", + "searchId": "value", + "state": 0, + "state_string": "Stopped" + }, + "params": { + "tagProps": [ + "System/MCM01/Station/SSPB/UL6_1_SS1", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + "propConfig": { + "custom.disconnected": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "!isGood({value})", + "type": "expression" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.plc": { + "binding": { + "config": { + "path": "view.params.tagProps[0]" + }, + "transforms": [ + { + "expression": "split({value}, \"/\")[0]", + "type": "expression" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": 5, + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": 5 + }, + { + "input": 1, + "output": 3 + }, + { + "input": 2, + "output": 3 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 5 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 5 + }, + { + "input": 7, + "output": 3 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.priority_string": { + "binding": { + "config": { + "expression": "case({view.custom.priority},\r\n3, \"Medium\",\r\n5, \"No active alarms\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.searchId": { + "binding": { + "config": { + "path": "session.custom.searchId" + }, + "type": "property" + }, + "persistent": true + }, + "custom.state": { + "binding": { + "config": { + "fallbackDelay": 1, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": 0, + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": 1 + }, + { + "input": 2, + "output": 2 + }, + { + "input": 3, + "output": 3 + }, + { + "input": 4, + "output": 4 + }, + { + "input": 5, + "output": 5 + }, + { + "input": 6, + "output": 6 + }, + { + "input": 7, + "output": 7 + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + }, + "persistent": true + }, + "custom.state_string": { + "binding": { + "config": { + "expression": "case({view.custom.state},\r\n0, \"Stopped\",\r\n1, \"Started\",\r\n2, \"Stopped\",\r\n3, \"Stopped\",\r\n4, \"Disabled\",\r\n5, \"Started\",\r\n6, \"Started\",\r\n7, \"Stopped\",\r\n\"Unknown\")" + }, + "type": "expr" + }, + "persistent": true + }, + "params.tagProps": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 25, + "width": 50 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "SS_button" + }, + "position": { + "height": 1, + "width": 1 + }, + "propConfig": { + "props.elements[0].fill.paint": { + "binding": { + "config": { + "expression": "if(\r\n {view.custom.disconnected},\r\n \"#808080\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, 2, 3, 4, 5, 6 ,7,\r\n \"#AAAAAA\", \"#AAAAAA\", \"#AAAAAA\", \"#AAAAAA\", \"#AAAAAA\",\r\n \"#AAAAAA\", \"#AAAAAA\", \"#AAAAAA\", \r\n \"#FFFF00\"\r\n )\r\n)\r\n" + }, + "type": "expr" + } + }, + "props.elements[1].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#00CC00", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#007400" + }, + { + "input": 1, + "output": "#00FF00" + }, + { + "input": 2, + "output": "#00FF00" + }, + { + "input": 3, + "output": "#00FF00" + }, + { + "input": 4, + "output": "#007400" + }, + { + "input": 5, + "output": "#00FF00" + }, + { + "input": 6, + "output": "#00FF00" + }, + { + "input": 7, + "output": "#00FF00" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + }, + "props.elements[2].fill.paint": { + "binding": { + "config": { + "path": "view.custom.state" + }, + "transforms": [ + { + "fallback": "#940003", + "inputType": "scalar", + "mappings": [ + { + "input": 0, + "output": "#940003" + }, + { + "input": 1, + "output": "#940003" + }, + { + "input": 2, + "output": "#940003" + }, + { + "input": 3, + "output": "#D90000" + }, + { + "input": 4, + "output": "#940003" + }, + { + "input": 5, + "output": "#940003" + }, + { + "input": 6, + "output": "#940003" + } + ], + "outputType": "color", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "elements": [ + { + "d": "M 0,0 H 40 V 20 H 0 Z", + "fill": {}, + "id": "outer-rect", + "name": "outer-rect", + "stroke": { + "paint": "#000000", + "width": "1.5" + }, + "type": "path" + }, + { + "d": "m 17,10.5 c 0,3.865993 -3.134007,7 -7,7 -3.8659932,0 -7,-3.134007 -7,-7 0,-3.8659932 3.1340068,-7 7,-7 3.865993,0 7,3.1340068 7,7 z", + "fill": {}, + "id": "inner-circle", + "name": "inner-circle", + "stroke": { + "paint": "#000000", + "width": "1" + }, + "type": "path" + }, + { + "d": "m 36.642136,10.376001 c 0,3.865993 -3.134007,7 -7,7 -3.865993,0 -7,-3.134007 -7,-7 0,-3.8659928 3.134007,-6.9999998 7,-6.9999998 3.865993,0 7,3.134007 7,6.9999998 z", + "fill": {}, + "id": "inner-circle-8", + "name": "inner-circle-8", + "stroke": { + "paint": "#000000", + "width": "1" + }, + "type": "path" + } + ], + "viewBox": "0 0 40 20" + }, + "type": "ia.shapes.svg" + } + ], + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tsystem.perspective.openDock(\u0027Docked-East-SS-BTN\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onDoubleClick": { + "config": { + "script": "\ttagProps \u003d self.view.params.tagProps\n\tsystem.perspective.openPopup(\"StatusPopUP\", \"PopUp-Views/Controller-Equipment/Information\", params \u003d{\"tagProps\":tagProps})" + }, + "scope": "G", + "type": "script" + }, + "onMouseEnter": { + "config": { + "script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root", + "tooltip": { + "enabled": true, + "style": {} + } + }, + "propConfig": { + "meta.tooltip.style.classes": { + "binding": { + "config": { + "expression": "{view.custom.priority}" + }, + "transforms": [ + { + "fallback": "Alarms-Styles/NoAlarm", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "Alarms-Styles/Diagnostic" + }, + { + "input": 2, + "output": "Alarms-Styles/Low" + }, + { + "input": 3, + "output": "Alarms-Styles/Medium" + }, + { + "input": 4, + "output": "Alarms-Styles/High" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "expr" + } + }, + "meta.tooltip.text": { + "binding": { + "config": { + "expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n" + }, + "type": "expr" + } + }, + "meta.visible": { + "binding": { + "config": { + "path": "session.custom.alarm_filter.show_buttons" + }, + "type": "property" + } + } + }, + "props": { + "mode": "percent", + "style": { + "cursor": "pointer" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/page-config/config.json b/BNA8/com.inductiveautomation.perspective/page-config/config.json index 1aad6983..033fa6ed 100644 --- a/BNA8/com.inductiveautomation.perspective/page-config/config.json +++ b/BNA8/com.inductiveautomation.perspective/page-config/config.json @@ -166,7 +166,7 @@ "show": "onDemand", "size": 165, "viewParams": {}, - "viewPath": "autStand/Docked_Views/Footer/Footer" + "viewPath": "autStand/Docked_Views/Footer" } ], "top": [ @@ -182,7 +182,7 @@ "show": "visible", "size": 50, "viewParams": {}, - "viewPath": "autStand/Docked_Views/Header/Header" + "viewPath": "autStand/Docked_Views/Header" } ] }, @@ -391,7 +391,7 @@ "show": "onDemand", "size": 165, "viewParams": {}, - "viewPath": "autStand/Docked_Views/Footer/Footer" + "viewPath": "autStand/Docked_Views/Footer" } ], "top": [ @@ -401,13 +401,13 @@ "content": "push", "handle": "hide", "iconUrl": "", - "id": "", + "id": "header-autStand", "modal": false, "resizable": false, "show": "visible", - "size": 150, + "size": 60, "viewParams": {}, - "viewPath": "autStand/Docked_Views/Header/Header" + "viewPath": "autStand/Docked_Views/Header" } ] }, @@ -428,7 +428,7 @@ "show": "visible", "size": 165, "viewParams": {}, - "viewPath": "autStand/Docked_Views/Footer/Footer" + "viewPath": "autStand/Docked_Views/Footer" } ], "top": [ @@ -438,13 +438,13 @@ "content": "push", "handle": "hide", "iconUrl": "", - "id": "", + "id": "header-autStand", "modal": false, "resizable": false, "show": "visible", - "size": 150, + "size": 60, "viewParams": {}, - "viewPath": "autStand/Docked_Views/Header/Header" + "viewPath": "autStand/Docked_Views/Header" } ] }, diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM02-NC SORTER/view.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM02-NC SORTER/view.json index 975266f7..a698d92e 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM02-NC SORTER/view.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Detailed_Views/MCM02-NC SORTER/view.json @@ -40,8 +40,8 @@ "name": "FlexContainer" }, "position": { - "height": 1080, - "width": 1920 + "height": 1, + "width": 1 }, "props": { "direction": "column", @@ -68,10 +68,10 @@ "name": "Button" }, "position": { - "height": 36, - "width": 124, - "x": 34, - "y": 666 + "height": 0.0333, + "width": 0.0646, + "x": 0.0177, + "y": 0.6167 }, "props": { "primary": false, @@ -84,10 +84,10 @@ "name": "NCS1_1_SOL1" }, "position": { - "height": 22, - "width": 23, - "x": 331, - "y": 492 + "height": 0.0204, + "width": 0.012, + "x": 0.1724, + "y": 0.4556 }, "props": { "params": { @@ -113,10 +113,10 @@ "name": "NCS1_1_SOL2" }, "position": { - "height": 22, - "width": 23, - "x": 363, - "y": 474 + "height": 0.0204, + "width": 0.012, + "x": 0.1891, + "y": 0.4389 }, "props": { "params": { @@ -142,10 +142,10 @@ "name": "NCS1_1_SOL3" }, "position": { - "height": 22, - "width": 23, - "x": 363, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.1891, + "y": 0.463 }, "props": { "params": { @@ -171,10 +171,10 @@ "name": "NCS1_1_SOL4" }, "position": { - "height": 22, - "width": 23, - "x": 403, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.2099, + "y": 0.463 }, "props": { "params": { @@ -200,10 +200,10 @@ "name": "NCS1_1_SOL5" }, "position": { - "height": 22, - "width": 23, - "x": 403, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.2099, + "y": 0.4398 }, "props": { "params": { @@ -229,10 +229,10 @@ "name": "NCS1_1_SOL6" }, "position": { - "height": 22, - "width": 23, - "x": 443, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.2307, + "y": 0.463 }, "props": { "params": { @@ -258,10 +258,10 @@ "name": "NCS1_1_SOL7" }, "position": { - "height": 22, - "width": 23, - "x": 443, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.2307, + "y": 0.4398 }, "props": { "params": { @@ -287,10 +287,10 @@ "name": "NCS1_1_SOL8" }, "position": { - "height": 22, - "width": 23, - "x": 483, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.2516, + "y": 0.463 }, "props": { "params": { @@ -316,10 +316,10 @@ "name": "NCS1_1_SOL9" }, "position": { - "height": 22, - "width": 23, - "x": 483, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.2516, + "y": 0.4398 }, "props": { "params": { @@ -345,10 +345,10 @@ "name": "NCS1_1_SOL10" }, "position": { - "height": 22, - "width": 23, - "x": 523, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.2724, + "y": 0.463 }, "props": { "params": { @@ -374,10 +374,10 @@ "name": "NCS1_1_SOL11" }, "position": { - "height": 22, - "width": 23, - "x": 523, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.2724, + "y": 0.4398 }, "props": { "params": { @@ -403,10 +403,10 @@ "name": "NCS1_1_SOL12" }, "position": { - "height": 22, - "width": 23, - "x": 557, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.2901, + "y": 0.463 }, "props": { "params": { @@ -432,10 +432,10 @@ "name": "NCS1_1_SOL13" }, "position": { - "height": 22, - "width": 23, - "x": 557, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.2901, + "y": 0.4398 }, "props": { "params": { @@ -461,10 +461,10 @@ "name": "NCS1_1_SOL14" }, "position": { - "height": 22, - "width": 23, - "x": 590, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.3073, + "y": 0.463 }, "props": { "params": { @@ -490,10 +490,10 @@ "name": "NCS1_1_SOL15" }, "position": { - "height": 22, - "width": 23, - "x": 590, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.3073, + "y": 0.4398 }, "props": { "params": { @@ -519,10 +519,10 @@ "name": "NCS1_1_SOL16" }, "position": { - "height": 22, - "width": 23, - "x": 630, - "y": 509 + "height": 0.0204, + "width": 0.012, + "x": 0.3281, + "y": 0.4713 }, "props": { "params": { @@ -548,10 +548,10 @@ "name": "NCS1_1_SOL17" }, "position": { - "height": 22, - "width": 23, - "x": 630, - "y": 486 + "height": 0.0204, + "width": 0.012, + "x": 0.3281, + "y": 0.45 }, "props": { "params": { @@ -577,10 +577,10 @@ "name": "NCS1_1_SOL18" }, "position": { - "height": 22, - "width": 23, - "x": 663, - "y": 509 + "height": 0.0204, + "width": 0.012, + "x": 0.3453, + "y": 0.4713 }, "props": { "params": { @@ -606,10 +606,10 @@ "name": "NCS1_1_SOL19" }, "position": { - "height": 22, - "width": 23, - "x": 663, - "y": 486 + "height": 0.0204, + "width": 0.012, + "x": 0.3453, + "y": 0.45 }, "props": { "params": { @@ -635,10 +635,10 @@ "name": "NCS1_1_SOL20" }, "position": { - "height": 22, - "width": 23, - "x": 703, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.3661, + "y": 0.463 }, "props": { "params": { @@ -664,10 +664,10 @@ "name": "NCS1_1_SOL21" }, "position": { - "height": 22, - "width": 23, - "x": 703, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.3661, + "y": 0.4398 }, "props": { "params": { @@ -693,10 +693,10 @@ "name": "NCS1_1_SOL22" }, "position": { - "height": 22, - "width": 23, - "x": 743, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.387, + "y": 0.463 }, "props": { "params": { @@ -722,10 +722,10 @@ "name": "NCS1_1_SOL23" }, "position": { - "height": 22, - "width": 23, - "x": 743, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.387, + "y": 0.4398 }, "props": { "params": { @@ -751,10 +751,10 @@ "name": "NCS1_1_SOL24" }, "position": { - "height": 22, - "width": 23, - "x": 783, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.4078, + "y": 0.463 }, "props": { "params": { @@ -780,10 +780,10 @@ "name": "NCS1_1_SOL25" }, "position": { - "height": 22, - "width": 23, - "x": 783, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.4078, + "y": 0.4398 }, "props": { "params": { @@ -809,10 +809,10 @@ "name": "NCS1_1_SOL26" }, "position": { - "height": 22, - "width": 23, - "x": 823, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.4286, + "y": 0.463 }, "props": { "params": { @@ -838,10 +838,10 @@ "name": "NCS1_1_SOL27" }, "position": { - "height": 22, - "width": 23, - "x": 823, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.4286, + "y": 0.4398 }, "props": { "params": { @@ -867,10 +867,10 @@ "name": "NCS1_1_SOL28" }, "position": { - "height": 22, - "width": 23, - "x": 870, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.4531, + "y": 0.463 }, "props": { "params": { @@ -896,10 +896,10 @@ "name": "NCS1_1_SOL29" }, "position": { - "height": 22, - "width": 23, - "x": 870, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.4531, + "y": 0.4398 }, "props": { "params": { @@ -925,10 +925,10 @@ "name": "NCS1_1_SOL30" }, "position": { - "height": 22, - "width": 23, - "x": 907, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.4724, + "y": 0.463 }, "props": { "params": { @@ -954,10 +954,10 @@ "name": "NCS1_1_SOL31" }, "position": { - "height": 22, - "width": 23, - "x": 907, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.4724, + "y": 0.4398 }, "props": { "params": { @@ -983,10 +983,10 @@ "name": "NCS1_1_SOL32" }, "position": { - "height": 22, - "width": 23, - "x": 947, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.4932, + "y": 0.463 }, "props": { "params": { @@ -1012,10 +1012,10 @@ "name": "NCS1_1_SOL33" }, "position": { - "height": 22, - "width": 23, - "x": 947, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.4932, + "y": 0.4398 }, "props": { "params": { @@ -1041,10 +1041,10 @@ "name": "NCS1_1_SOL34" }, "position": { - "height": 22, - "width": 23, - "x": 987, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.5141, + "y": 0.463 }, "props": { "params": { @@ -1070,10 +1070,10 @@ "name": "NCS1_1_SOL35" }, "position": { - "height": 22, - "width": 23, - "x": 987, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.5141, + "y": 0.4398 }, "props": { "params": { @@ -1099,10 +1099,10 @@ "name": "NCS1_1_SOL36" }, "position": { - "height": 22, - "width": 23, - "x": 1027, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.5349, + "y": 0.463 }, "props": { "params": { @@ -1128,10 +1128,10 @@ "name": "NCS1_1_SOL37" }, "position": { - "height": 22, - "width": 23, - "x": 1027, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.5349, + "y": 0.4398 }, "props": { "params": { @@ -1157,10 +1157,10 @@ "name": "NCS1_1_SOL38" }, "position": { - "height": 22, - "width": 23, - "x": 1060, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.5521, + "y": 0.463 }, "props": { "params": { @@ -1186,10 +1186,10 @@ "name": "NCS1_1_SOL39" }, "position": { - "height": 22, - "width": 23, - "x": 1060, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.5521, + "y": 0.4398 }, "props": { "params": { @@ -1215,10 +1215,10 @@ "name": "NCS1_1_SOL40" }, "position": { - "height": 22, - "width": 23, - "x": 1094, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.5698, + "y": 0.463 }, "props": { "params": { @@ -1244,10 +1244,10 @@ "name": "NCS1_1_SOL41" }, "position": { - "height": 22, - "width": 23, - "x": 1094, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.5698, + "y": 0.4398 }, "props": { "params": { @@ -1273,10 +1273,10 @@ "name": "NCS1_1_SOL42" }, "position": { - "height": 22, - "width": 23, - "x": 1134, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.463 }, "props": { "params": { @@ -1302,10 +1302,10 @@ "name": "NCS1_1_SOL43" }, "position": { - "height": 22, - "width": 23, - "x": 1134, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.4398 }, "props": { "params": { @@ -1331,10 +1331,10 @@ "name": "NCS1_1_SOL44" }, "position": { - "height": 22, - "width": 23, - "x": 1134, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.463 }, "props": { "params": { @@ -1360,10 +1360,10 @@ "name": "NCS1_1_SOL45" }, "position": { - "height": 22, - "width": 23, - "x": 1134, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.5906, + "y": 0.4398 }, "props": { "params": { @@ -1389,10 +1389,10 @@ "name": "NCS1_1_SOL46" }, "position": { - "height": 22, - "width": 23, - "x": 1174, - "y": 509 + "height": 0.0204, + "width": 0.012, + "x": 0.6115, + "y": 0.4713 }, "props": { "params": { @@ -1418,10 +1418,10 @@ "name": "NCS1_1_SOL47" }, "position": { - "height": 22, - "width": 23, - "x": 1174, - "y": 486 + "height": 0.0204, + "width": 0.012, + "x": 0.6115, + "y": 0.45 }, "props": { "params": { @@ -1447,10 +1447,10 @@ "name": "NCS1_1_SOL48" }, "position": { - "height": 22, - "width": 23, - "x": 1214, - "y": 509 + "height": 0.0204, + "width": 0.012, + "x": 0.6323, + "y": 0.4713 }, "props": { "params": { @@ -1476,10 +1476,10 @@ "name": "NCS1_1_SOL49" }, "position": { - "height": 22, - "width": 23, - "x": 1214, - "y": 486 + "height": 0.0204, + "width": 0.012, + "x": 0.6323, + "y": 0.45 }, "props": { "params": { @@ -1505,10 +1505,10 @@ "name": "NCS1_1_SOL50" }, "position": { - "height": 22, - "width": 23, - "x": 1246, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.649, + "y": 0.463 }, "props": { "params": { @@ -1534,10 +1534,10 @@ "name": "NCS1_1_SOL51" }, "position": { - "height": 22, - "width": 23, - "x": 1246, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.649, + "y": 0.4398 }, "props": { "params": { @@ -1563,10 +1563,10 @@ "name": "NCS1_1_SOL52" }, "position": { - "height": 22, - "width": 23, - "x": 1279, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.6661, + "y": 0.463 }, "props": { "params": { @@ -1592,10 +1592,10 @@ "name": "NCS1_1_SOL53" }, "position": { - "height": 22, - "width": 23, - "x": 1279, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.6661, + "y": 0.4398 }, "props": { "params": { @@ -1621,10 +1621,10 @@ "name": "NCS1_1_SOL54" }, "position": { - "height": 22, - "width": 23, - "x": 1319, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.687, + "y": 0.463 }, "props": { "params": { @@ -1650,10 +1650,10 @@ "name": "NCS1_1_SOL55" }, "position": { - "height": 22, - "width": 23, - "x": 1319, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.687, + "y": 0.4398 }, "props": { "params": { @@ -1679,10 +1679,10 @@ "name": "NCS1_1_SOL56" }, "position": { - "height": 22, - "width": 23, - "x": 1359, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.7078, + "y": 0.463 }, "props": { "params": { @@ -1708,10 +1708,10 @@ "name": "NCS1_1_SOL57" }, "position": { - "height": 22, - "width": 23, - "x": 1359, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.7078, + "y": 0.4398 }, "props": { "params": { @@ -1737,10 +1737,10 @@ "name": "NCS1_1_SOL58" }, "position": { - "height": 22, - "width": 23, - "x": 1399, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.7286, + "y": 0.463 }, "props": { "params": { @@ -1766,10 +1766,10 @@ "name": "NCS1_1_SOL59" }, "position": { - "height": 22, - "width": 23, - "x": 1399, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.7286, + "y": 0.4398 }, "props": { "params": { @@ -1795,10 +1795,10 @@ "name": "NCS1_1_SOL60" }, "position": { - "height": 22, - "width": 23, - "x": 1439, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.7495, + "y": 0.463 }, "props": { "params": { @@ -1824,10 +1824,10 @@ "name": "NCS1_1_SOL61" }, "position": { - "height": 22, - "width": 23, - "x": 1439, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.7495, + "y": 0.4398 }, "props": { "params": { @@ -1853,10 +1853,10 @@ "name": "NCS1_1_SOL62" }, "position": { - "height": 22, - "width": 23, - "x": 1479, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.7703, + "y": 0.463 }, "props": { "params": { @@ -1882,10 +1882,10 @@ "name": "NCS1_1_SOL63" }, "position": { - "height": 22, - "width": 23, - "x": 1479, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.7703, + "y": 0.4398 }, "props": { "params": { @@ -1911,10 +1911,10 @@ "name": "NCS1_1_SOL64" }, "position": { - "height": 22, - "width": 23, - "x": 1519, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.7911, + "y": 0.463 }, "props": { "params": { @@ -1940,10 +1940,10 @@ "name": "NCS1_1_SOL65" }, "position": { - "height": 22, - "width": 23, - "x": 1519, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.7911, + "y": 0.4398 }, "props": { "params": { @@ -1969,10 +1969,10 @@ "name": "NCS1_1_SOL66" }, "position": { - "height": 22, - "width": 23, - "x": 1559, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.812, + "y": 0.463 }, "props": { "params": { @@ -1998,10 +1998,10 @@ "name": "NCS1_1_SOL67" }, "position": { - "height": 22, - "width": 23, - "x": 1559, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.812, + "y": 0.4398 }, "props": { "params": { @@ -2027,10 +2027,10 @@ "name": "NCS1_1_SOL68" }, "position": { - "height": 22, - "width": 23, - "x": 1599, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.8328, + "y": 0.463 }, "props": { "params": { @@ -2056,10 +2056,10 @@ "name": "NCS1_1_SOL69" }, "position": { - "height": 22, - "width": 23, - "x": 1599, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.8328, + "y": 0.4398 }, "props": { "params": { @@ -2085,10 +2085,10 @@ "name": "NCS1_1_SOL70" }, "position": { - "height": 22, - "width": 23, - "x": 1639, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.463 }, "props": { "params": { @@ -2114,10 +2114,10 @@ "name": "NCS1_1_SOL71" }, "position": { - "height": 22, - "width": 23, - "x": 1639, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.4398 }, "props": { "params": { @@ -2143,10 +2143,10 @@ "name": "NCS1_1_SOL72" }, "position": { - "height": 22, - "width": 23, - "x": 1639, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.463 }, "props": { "params": { @@ -2172,10 +2172,10 @@ "name": "NCS1_1_SOL73" }, "position": { - "height": 22, - "width": 23, - "x": 1639, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.8536, + "y": 0.4398 }, "props": { "params": { @@ -2201,10 +2201,10 @@ "name": "NCS1_1_SOL74" }, "position": { - "height": 22, - "width": 23, - "x": 1671, - "y": 475 + "height": 0.0204, + "width": 0.012, + "x": 0.8703, + "y": 0.4398 }, "props": { "params": { @@ -2230,10 +2230,10 @@ "name": "NCS1_1_SOL75" }, "position": { - "height": 22, - "width": 23, - "x": 1671, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.8703, + "y": 0.463 }, "props": { "params": { @@ -2259,10 +2259,10 @@ "name": "NCS1_1_SOL77" }, "position": { - "height": 22, - "width": 23, - "x": 1703, - "y": 500 + "height": 0.0204, + "width": 0.012, + "x": 0.887, + "y": 0.463 }, "props": { "params": { @@ -2288,10 +2288,10 @@ "name": "NCS1_1_SOL78" }, "position": { - "height": 22, - "width": 23, - "x": 1735, - "y": 490 + "height": 0.0204, + "width": 0.012, + "x": 0.9036, + "y": 0.4537 }, "props": { "params": { @@ -2317,10 +2317,10 @@ "name": "NCS1_1_SOL76" }, "position": { - "height": 22, - "width": 23, - "x": 1703, - "y": 474 + "height": 0.0204, + "width": 0.012, + "x": 0.887, + "y": 0.4389 }, "props": { "params": { @@ -2346,10 +2346,10 @@ "name": "PS3_12_EPC2" }, "position": { - "height": 30, - "width": 30, - "x": 21, - "y": 543 + "height": 0.0278, + "width": 0.0156, + "x": 0.0109, + "y": 0.5028 }, "props": { "params": { @@ -2375,10 +2375,10 @@ "name": "PS3_12_EPC1" }, "position": { - "height": 30, - "width": 30, - "x": 19, - "y": 424 + "height": 0.0278, + "width": 0.0156, + "x": 0.0099, + "y": 0.3926 }, "props": { "params": { @@ -2404,10 +2404,10 @@ "name": "S03_1_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 366, - "y": 547 + "height": 0.0185, + "width": 0.0208, + "x": 0.1906, + "y": 0.5065 }, "props": { "params": { @@ -2433,10 +2433,10 @@ "name": "PS3_14_SIO1" }, "position": { - "height": 20, - "width": 40, - "x": 263, - "y": 409 + "height": 0.0185, + "width": 0.0208, + "x": 0.137, + "y": 0.3787 }, "props": { "params": { @@ -2462,10 +2462,10 @@ "name": "NCS1_1_SS1" }, "position": { - "height": 20, - "width": 40, - "x": 1782, - "y": 434 + "height": 0.0185, + "width": 0.0208, + "x": 0.9281, + "y": 0.4019 }, "props": { "params": { @@ -2491,10 +2491,10 @@ "name": "S03_CH101_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 412, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.2146, + "y": 0.3944 }, "props": { "params": { @@ -2520,10 +2520,10 @@ "name": "Camera" }, "position": { - "height": 30, - "width": 40, - "x": 1860, - "y": 548 + "height": 0.0278, + "width": 0.0208, + "x": 0.9688, + "y": 0.5074 }, "props": { "params": { @@ -2552,10 +2552,10 @@ "name": "PS3_12_JR2" }, "position": { - "height": 25, - "width": 25, - "x": 152, - "y": 540 + "height": 0.0231, + "width": 0.013, + "x": 0.0792, + "y": 0.5 }, "props": { "params": { @@ -2581,10 +2581,10 @@ "name": "PS3_12_JR1" }, "position": { - "height": 25, - "width": 25, - "x": 154, - "y": 431 + "height": 0.0231, + "width": 0.013, + "x": 0.0802, + "y": 0.3991 }, "props": { "params": { @@ -2610,10 +2610,10 @@ "name": "PS3_12_VFD1" }, "position": { - "height": 26, - "width": 26, - "x": 121, - "y": 430 + "height": 0.0241, + "width": 0.0135, + "x": 0.063, + "y": 0.3981 }, "props": { "params": { @@ -2630,10 +2630,10 @@ "name": "PS3_13_VFD1" }, "position": { - "height": 26, - "width": 26, - "x": 205, - "y": 430 + "height": 0.0241, + "width": 0.0135, + "x": 0.1068, + "y": 0.3981 }, "props": { "params": { @@ -2650,10 +2650,10 @@ "name": "PS3_14_VFD1" }, "position": { - "height": 26, - "width": 26, - "x": 271, - "y": 430 + "height": 0.0241, + "width": 0.0135, + "x": 0.1411, + "y": 0.3981 }, "props": { "params": { @@ -2670,10 +2670,10 @@ "name": "PS3_13_SIO1" }, "position": { - "height": 20, - "width": 40, - "x": 198, - "y": 409 + "height": 0.0185, + "width": 0.0208, + "x": 0.1031, + "y": 0.3787 }, "props": { "params": { @@ -2699,10 +2699,10 @@ "name": "PS3_12_SIO1" }, "position": { - "height": 20, - "width": 40, - "x": 80, - "y": 432 + "height": 0.0185, + "width": 0.0208, + "x": 0.0417, + "y": 0.4 }, "props": { "params": { @@ -2728,10 +2728,10 @@ "name": "PS3_12_BCN1_A" }, "position": { - "height": 20, - "width": 20, - "x": 157, - "y": 408 + "height": 0.0185, + "width": 0.0104, + "x": 0.0818, + "y": 0.3778 }, "props": { "params": { @@ -2758,10 +2758,10 @@ "name": "PS3_13_ENW1" }, "position": { - "height": 25, - "width": 25, - "x": 203, - "y": 491 + "height": 0.0231, + "width": 0.013, + "x": 0.1057, + "y": 0.4546 }, "props": { "params": { @@ -2778,10 +2778,10 @@ "name": "PS3_14_ENW1" }, "position": { - "height": 25, - "width": 25, - "x": 263, - "y": 491 + "height": 0.0231, + "width": 0.013, + "x": 0.137, + "y": 0.4546 }, "props": { "params": { @@ -2798,10 +2798,10 @@ "name": "S03_1_FIOM2" }, "position": { - "height": 20, - "width": 40, - "x": 506, - "y": 547 + "height": 0.0185, + "width": 0.0208, + "x": 0.2635, + "y": 0.5065 }, "props": { "params": { @@ -2827,10 +2827,10 @@ "name": "S03_1_FIOM3" }, "position": { - "height": 20, - "width": 40, - "x": 609, - "y": 547 + "height": 0.0185, + "width": 0.0208, + "x": 0.3172, + "y": 0.5065 }, "props": { "params": { @@ -2856,10 +2856,10 @@ "name": "S03_1_FIOM5" }, "position": { - "height": 20, - "width": 40, - "x": 975, - "y": 570 + "height": 0.0185, + "width": 0.0208, + "x": 0.5078, + "y": 0.5278 }, "props": { "params": { @@ -2885,10 +2885,10 @@ "name": "S03_1_FIOM4" }, "position": { - "height": 20, - "width": 40, - "x": 768, - "y": 567 + "height": 0.0185, + "width": 0.0208, + "x": 0.4, + "y": 0.525 }, "props": { "params": { @@ -2914,10 +2914,10 @@ "name": "S03_1_FIOM6" }, "position": { - "height": 20, - "width": 40, - "x": 1113, - "y": 569 + "height": 0.0185, + "width": 0.0208, + "x": 0.5797, + "y": 0.5269 }, "props": { "params": { @@ -2943,10 +2943,10 @@ "name": "S03_1_FIOM7" }, "position": { - "height": 20, - "width": 40, - "x": 1258, - "y": 568 + "height": 0.0185, + "width": 0.0208, + "x": 0.6552, + "y": 0.5259 }, "props": { "params": { @@ -2972,10 +2972,10 @@ "name": "S03_1_FIOM8" }, "position": { - "height": 20, - "width": 40, - "x": 1402, - "y": 568 + "height": 0.0185, + "width": 0.0208, + "x": 0.7302, + "y": 0.5259 }, "props": { "params": { @@ -3001,10 +3001,10 @@ "name": "S03_1_FIOM9" }, "position": { - "height": 20, - "width": 40, - "x": 1540, - "y": 567 + "height": 0.0185, + "width": 0.0208, + "x": 0.8021, + "y": 0.525 }, "props": { "params": { @@ -3030,10 +3030,10 @@ "name": "S03_CH101_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 446, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.2323, + "y": 0.2296 }, "props": { "params": { @@ -3059,10 +3059,10 @@ "name": "S03_CH103_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 518, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.2698, + "y": 0.2296 }, "props": { "params": { @@ -3088,10 +3088,10 @@ "name": "S03_CH105_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 587, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.3057, + "y": 0.2296 }, "props": { "params": { @@ -3117,10 +3117,10 @@ "name": "S03_CH107_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 708, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.3688, + "y": 0.2296 }, "props": { "params": { @@ -3146,10 +3146,10 @@ "name": "S03_CH109_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 780, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.4063, + "y": 0.2296 }, "props": { "params": { @@ -3175,10 +3175,10 @@ "name": "S03_CH111_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 851, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.4432, + "y": 0.2296 }, "props": { "params": { @@ -3204,10 +3204,10 @@ "name": "S03_CH113_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 994, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.5177, + "y": 0.2296 }, "props": { "params": { @@ -3233,10 +3233,10 @@ "name": "S03_CH115_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1060, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.5521, + "y": 0.2296 }, "props": { "params": { @@ -3262,10 +3262,10 @@ "name": "S03_CH117_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1132, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.5896, + "y": 0.2296 }, "props": { "params": { @@ -3291,10 +3291,10 @@ "name": "S03_CH119_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1265, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.6589, + "y": 0.2296 }, "props": { "params": { @@ -3320,10 +3320,10 @@ "name": "S03_CH121_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1336, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.6958, + "y": 0.2296 }, "props": { "params": { @@ -3349,10 +3349,10 @@ "name": "S03_CH123_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1411, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.7349, + "y": 0.2296 }, "props": { "params": { @@ -3378,10 +3378,10 @@ "name": "S03_CH125_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1543, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.8036, + "y": 0.2296 }, "props": { "params": { @@ -3407,10 +3407,10 @@ "name": "S03_CH127_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1621, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.8443, + "y": 0.2296 }, "props": { "params": { @@ -3436,10 +3436,10 @@ "name": "S03_CH129_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1693, - "y": 248 + "height": 0.0231, + "width": 0.013, + "x": 0.8818, + "y": 0.2296 }, "props": { "params": { @@ -3465,10 +3465,10 @@ "name": "S03_CH130_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1692, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.8812, + "y": 0.6722 }, "props": { "params": { @@ -3494,10 +3494,10 @@ "name": "S03_CH128_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1617, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.8422, + "y": 0.6722 }, "props": { "params": { @@ -3523,10 +3523,10 @@ "name": "S03_CH126_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1547, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.8057, + "y": 0.6722 }, "props": { "params": { @@ -3552,10 +3552,10 @@ "name": "S03_CH124_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1401, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.7297, + "y": 0.6722 }, "props": { "params": { @@ -3581,10 +3581,10 @@ "name": "S03_CH122_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1322, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.6885, + "y": 0.6722 }, "props": { "params": { @@ -3610,10 +3610,10 @@ "name": "S03_CH120_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1256, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.6542, + "y": 0.6722 }, "props": { "params": { @@ -3639,10 +3639,10 @@ "name": "S03_CH118_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1116, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.5813, + "y": 0.6722 }, "props": { "params": { @@ -3668,10 +3668,10 @@ "name": "S03_CH116_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 1054, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.549, + "y": 0.6722 }, "props": { "params": { @@ -3697,10 +3697,10 @@ "name": "S03_CH114_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 982, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.5115, + "y": 0.6722 }, "props": { "params": { @@ -3726,10 +3726,10 @@ "name": "S03_CH112_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 852, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.4437, + "y": 0.6722 }, "props": { "params": { @@ -3755,10 +3755,10 @@ "name": "S03_CH110_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 781, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.4068, + "y": 0.6722 }, "props": { "params": { @@ -3784,10 +3784,10 @@ "name": "S03_CH108_EN1" }, "position": { - "height": 25, - "width": 25, - "x": 707, - "y": 726 + "height": 0.0231, + "width": 0.013, + "x": 0.3682, + "y": 0.6722 }, "props": { "params": { @@ -3813,10 +3813,10 @@ "name": "S03_CH108_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 689, - "y": 649 + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.6009 }, "props": { "params": { @@ -3843,10 +3843,10 @@ "name": "S03_CH108_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 689, - "y": 631 + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.5843 }, "props": { "params": { @@ -3873,10 +3873,10 @@ "name": "S03_CH108_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 689, - "y": 613 + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.5676 }, "props": { "params": { @@ -3903,10 +3903,10 @@ "name": "S03_CH110_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 761, - "y": 643 + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.5954 }, "props": { "params": { @@ -3933,10 +3933,10 @@ "name": "S03_CH110_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 761, - "y": 623 + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.5769 }, "props": { "params": { @@ -3963,10 +3963,10 @@ "name": "S03_CH112_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 832, - "y": 645 + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.5972 }, "props": { "params": { @@ -3993,10 +3993,10 @@ "name": "S03_CH112_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 832, - "y": 625 + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.5787 }, "props": { "params": { @@ -4023,10 +4023,10 @@ "name": "S03_CH114_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 964, - "y": 648 + "height": 0.0185, + "width": 0.0104, + "x": 0.5021, + "y": 0.6 }, "props": { "params": { @@ -4053,10 +4053,10 @@ "name": "S03_CH114_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 964, - "y": 630 + "height": 0.0185, + "width": 0.0104, + "x": 0.5021, + "y": 0.5833 }, "props": { "params": { @@ -4083,10 +4083,10 @@ "name": "S03_CH114_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 964, - "y": 612 + "height": 0.0185, + "width": 0.0104, + "x": 0.5021, + "y": 0.5667 }, "props": { "params": { @@ -4113,10 +4113,10 @@ "name": "S03_CH116_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1037, - "y": 646 + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.5981 }, "props": { "params": { @@ -4143,10 +4143,10 @@ "name": "S03_CH116_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1037, - "y": 626 + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.5796 }, "props": { "params": { @@ -4173,10 +4173,10 @@ "name": "S03_CH118_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1108, - "y": 644 + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.5963 }, "props": { "params": { @@ -4203,10 +4203,10 @@ "name": "S03_CH118_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1108, - "y": 625 + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.5787 }, "props": { "params": { @@ -4233,10 +4233,10 @@ "name": "S03_CH120_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1245, - "y": 612 + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.5667 }, "props": { "params": { @@ -4263,10 +4263,10 @@ "name": "S03_CH120_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 1245, - "y": 630 + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.5833 }, "props": { "params": { @@ -4293,10 +4293,10 @@ "name": "S03_CH120_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1245, - "y": 648 + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.6 }, "props": { "params": { @@ -4323,10 +4323,10 @@ "name": "S03_CH122_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1317, - "y": 627 + "height": 0.0185, + "width": 0.0104, + "x": 0.6859, + "y": 0.5806 }, "props": { "params": { @@ -4353,10 +4353,10 @@ "name": "S03_CH122_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1317, - "y": 645 + "height": 0.0185, + "width": 0.0104, + "x": 0.6859, + "y": 0.5972 }, "props": { "params": { @@ -4383,10 +4383,10 @@ "name": "S03_CH124_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1390, - "y": 626 + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.5796 }, "props": { "params": { @@ -4413,10 +4413,10 @@ "name": "S03_CH124_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1390, - "y": 645 + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.5972 }, "props": { "params": { @@ -4443,10 +4443,10 @@ "name": "S03_CH126_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1526, - "y": 608 + "height": 0.0185, + "width": 0.0104, + "x": 0.7948, + "y": 0.563 }, "props": { "params": { @@ -4473,10 +4473,10 @@ "name": "S03_CH126_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 1526, - "y": 626 + "height": 0.0185, + "width": 0.0104, + "x": 0.7948, + "y": 0.5796 }, "props": { "params": { @@ -4503,10 +4503,10 @@ "name": "S03_CH126_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1526, - "y": 644 + "height": 0.0185, + "width": 0.0104, + "x": 0.7948, + "y": 0.5963 }, "props": { "params": { @@ -4533,10 +4533,10 @@ "name": "S03_CH128_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1597, - "y": 625 + "height": 0.0185, + "width": 0.0104, + "x": 0.8318, + "y": 0.5787 }, "props": { "params": { @@ -4563,10 +4563,10 @@ "name": "S03_CH128_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1597, - "y": 646 + "height": 0.0185, + "width": 0.0104, + "x": 0.8318, + "y": 0.5981 }, "props": { "params": { @@ -4593,10 +4593,10 @@ "name": "S03_CH130_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1669, - "y": 622 + "height": 0.0185, + "width": 0.0104, + "x": 0.8693, + "y": 0.5759 }, "props": { "params": { @@ -4623,10 +4623,10 @@ "name": "S03_CH130_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1669, - "y": 643 + "height": 0.0185, + "width": 0.0104, + "x": 0.8693, + "y": 0.5954 }, "props": { "params": { @@ -4653,10 +4653,10 @@ "name": "S03_CH101_BNC1_B" }, "position": { - "height": 18.99, - "width": 20, - "x": 412, - "y": 333 + "height": 0.0176, + "width": 0.0104, + "x": 0.2146, + "y": 0.3083 }, "props": { "params": { @@ -4683,10 +4683,10 @@ "name": "S03_CH101_BNC1_A" }, "position": { - "height": 18.99, - "width": 20, - "x": 412, - "y": 350.09 + "height": 0.0176, + "width": 0.0104, + "x": 0.2146, + "y": 0.3242 }, "props": { "params": { @@ -4713,10 +4713,10 @@ "name": "S03_CH103_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 487, - "y": 341 + "height": 0.0185, + "width": 0.0104, + "x": 0.2536, + "y": 0.3157 }, "props": { "params": { @@ -4743,10 +4743,10 @@ "name": "S03_CH101_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 412, - "y": 365 + "height": 0.0185, + "width": 0.0104, + "x": 0.2146, + "y": 0.338 }, "props": { "params": { @@ -4773,10 +4773,10 @@ "name": "S03_CH103_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 487, - "y": 361 + "height": 0.0185, + "width": 0.0104, + "x": 0.2536, + "y": 0.3343 }, "props": { "params": { @@ -4803,10 +4803,10 @@ "name": "S03_CH105_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 559, - "y": 358 + "height": 0.0185, + "width": 0.0104, + "x": 0.2911, + "y": 0.3315 }, "props": { "params": { @@ -4833,10 +4833,10 @@ "name": "S03_CH105_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 559, - "y": 338 + "height": 0.0185, + "width": 0.0104, + "x": 0.2911, + "y": 0.313 }, "props": { "params": { @@ -4863,10 +4863,10 @@ "name": "S03_CH107_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 689, - "y": 331 + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.3065 }, "props": { "params": { @@ -4893,10 +4893,10 @@ "name": "S03_CH107_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 689, - "y": 349 + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.3231 }, "props": { "params": { @@ -4923,10 +4923,10 @@ "name": "S03_CH109_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 761, - "y": 339 + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.3139 }, "props": { "params": { @@ -4953,10 +4953,10 @@ "name": "S03_CH107_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 689, - "y": 367 + "height": 0.0185, + "width": 0.0104, + "x": 0.3589, + "y": 0.3398 }, "props": { "params": { @@ -4983,10 +4983,10 @@ "name": "S03_CH109_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 761, - "y": 359 + "height": 0.0185, + "width": 0.0104, + "x": 0.3964, + "y": 0.3324 }, "props": { "params": { @@ -5013,10 +5013,10 @@ "name": "S03_CH111_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 832, - "y": 362 + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.3352 }, "props": { "params": { @@ -5043,10 +5043,10 @@ "name": "S03_CH111_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 832, - "y": 342 + "height": 0.0185, + "width": 0.0104, + "x": 0.4333, + "y": 0.3167 }, "props": { "params": { @@ -5073,10 +5073,10 @@ "name": "S03_CH113_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 960, - "y": 331 + "height": 0.0185, + "width": 0.0104, + "x": 0.5, + "y": 0.3065 }, "props": { "params": { @@ -5103,10 +5103,10 @@ "name": "S03_CH113_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 960, - "y": 349 + "height": 0.0185, + "width": 0.0104, + "x": 0.5, + "y": 0.3231 }, "props": { "params": { @@ -5133,10 +5133,10 @@ "name": "S03_CH115_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1037, - "y": 341 + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.3157 }, "props": { "params": { @@ -5163,10 +5163,10 @@ "name": "S03_CH113_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 960, - "y": 367 + "height": 0.0185, + "width": 0.0104, + "x": 0.5, + "y": 0.3398 }, "props": { "params": { @@ -5193,10 +5193,10 @@ "name": "S03_CH115_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1037, - "y": 361 + "height": 0.0185, + "width": 0.0104, + "x": 0.5401, + "y": 0.3343 }, "props": { "params": { @@ -5223,10 +5223,10 @@ "name": "S03_CH117_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1108, - "y": 361 + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.3343 }, "props": { "params": { @@ -5253,10 +5253,10 @@ "name": "S03_CH117_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1108, - "y": 341 + "height": 0.0185, + "width": 0.0104, + "x": 0.5771, + "y": 0.3157 }, "props": { "params": { @@ -5283,10 +5283,10 @@ "name": "S03_CH119_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1245, - "y": 332 + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.3074 }, "props": { "params": { @@ -5313,10 +5313,10 @@ "name": "S03_CH119_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 1245, - "y": 350 + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.3241 }, "props": { "params": { @@ -5343,10 +5343,10 @@ "name": "S03_CH121_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1318, - "y": 343 + "height": 0.0185, + "width": 0.0104, + "x": 0.6865, + "y": 0.3176 }, "props": { "params": { @@ -5373,10 +5373,10 @@ "name": "S03_CH119_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1245, - "y": 368 + "height": 0.0185, + "width": 0.0104, + "x": 0.6484, + "y": 0.3407 }, "props": { "params": { @@ -5403,10 +5403,10 @@ "name": "S03_CH121_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1318, - "y": 363 + "height": 0.0185, + "width": 0.0104, + "x": 0.6865, + "y": 0.3361 }, "props": { "params": { @@ -5433,10 +5433,10 @@ "name": "S03_CH123_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1390, - "y": 363 + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.3361 }, "props": { "params": { @@ -5463,10 +5463,10 @@ "name": "S03_CH123_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1390, - "y": 343 + "height": 0.0185, + "width": 0.0104, + "x": 0.724, + "y": 0.3176 }, "props": { "params": { @@ -5493,10 +5493,10 @@ "name": "S03_CH125_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1524, - "y": 332 + "height": 0.0185, + "width": 0.0104, + "x": 0.7937, + "y": 0.3074 }, "props": { "params": { @@ -5523,10 +5523,10 @@ "name": "S03_CH125_BNC1_A" }, "position": { - "height": 20, - "width": 20, - "x": 1524, - "y": 350 + "height": 0.0185, + "width": 0.0104, + "x": 0.7937, + "y": 0.3241 }, "props": { "params": { @@ -5553,10 +5553,10 @@ "name": "S03_CH127_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1600, - "y": 348 + "height": 0.0185, + "width": 0.0104, + "x": 0.8333, + "y": 0.3222 }, "props": { "params": { @@ -5583,10 +5583,10 @@ "name": "S03_CH125_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1524, - "y": 368 + "height": 0.0185, + "width": 0.0104, + "x": 0.7937, + "y": 0.3407 }, "props": { "params": { @@ -5613,10 +5613,10 @@ "name": "S03_CH127_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1600, - "y": 368 + "height": 0.0185, + "width": 0.0104, + "x": 0.8333, + "y": 0.3407 }, "props": { "params": { @@ -5643,10 +5643,10 @@ "name": "S03_CH129_BNC1_G" }, "position": { - "height": 20, - "width": 20, - "x": 1672, - "y": 368 + "height": 0.0185, + "width": 0.0104, + "x": 0.8708, + "y": 0.3407 }, "props": { "params": { @@ -5673,10 +5673,10 @@ "name": "S03_CH129_BNC1_B" }, "position": { - "height": 20, - "width": 20, - "x": 1672, - "y": 348 + "height": 0.0185, + "width": 0.0104, + "x": 0.8708, + "y": 0.3222 }, "props": { "params": { @@ -5703,10 +5703,10 @@ "name": "NCS1_1_EPC1" }, "position": { - "height": 30, - "width": 30, - "x": 1745.5, - "y": 428.5 + "height": 0.0278, + "width": 0.0156, + "x": 0.9091, + "y": 0.3968 }, "props": { "params": { @@ -5732,10 +5732,10 @@ "name": "NCS1_1_EPC2" }, "position": { - "height": 30, - "width": 30, - "x": 1746.5, - "y": 542.5 + "height": 0.0278, + "width": 0.0156, + "x": 0.9096, + "y": 0.5023 }, "props": { "params": { @@ -5761,10 +5761,10 @@ "name": "Beacon_63" }, "position": { - "height": 20, - "width": 20, - "x": 1750, - "y": 403 + "height": 0.0185, + "width": 0.0104, + "x": 0.9115, + "y": 0.3731 }, "props": { "params": { @@ -5791,10 +5791,10 @@ "name": "NCS1_1_BNC1_R" }, "position": { - "height": 20, - "width": 20, - "x": 1750, - "y": 385 + "height": 0.0185, + "width": 0.0104, + "x": 0.9115, + "y": 0.3565 }, "props": { "params": { @@ -5821,10 +5821,10 @@ "name": "NCS1_1_BNC1_H" }, "position": { - "height": 20, - "width": 20, - "x": 1750, - "y": 367 + "height": 0.0185, + "width": 0.0104, + "x": 0.9115, + "y": 0.3398 }, "props": { "params": { @@ -5851,10 +5851,10 @@ "name": "S03_1_JR1" }, "position": { - "height": 25, - "width": 25, - "x": 370, - "y": 413 + "height": 0.0231, + "width": 0.013, + "x": 0.1927, + "y": 0.3824 }, "props": { "params": { @@ -5880,10 +5880,10 @@ "name": "S03_1_JR3" }, "position": { - "height": 25, - "width": 25, - "x": 651, - "y": 416 + "height": 0.0231, + "width": 0.013, + "x": 0.3391, + "y": 0.3852 }, "props": { "params": { @@ -5909,10 +5909,10 @@ "name": "S03_1_JR5" }, "position": { - "height": 25, - "width": 25, - "x": 912, - "y": 419 + "height": 0.0231, + "width": 0.013, + "x": 0.475, + "y": 0.388 }, "props": { "params": { @@ -5938,10 +5938,10 @@ "name": "S03_1_JR7" }, "position": { - "height": 25, - "width": 25, - "x": 1192, - "y": 422 + "height": 0.0231, + "width": 0.013, + "x": 0.6208, + "y": 0.3907 }, "props": { "params": { @@ -5967,10 +5967,10 @@ "name": "S03_1_JR9" }, "position": { - "height": 25, - "width": 25, - "x": 1478, - "y": 422 + "height": 0.0231, + "width": 0.013, + "x": 0.7698, + "y": 0.3907 }, "props": { "params": { @@ -5996,10 +5996,10 @@ "name": "S03_1_JR4" }, "position": { - "height": 25, - "width": 25, - "x": 657, - "y": 557 + "height": 0.0231, + "width": 0.013, + "x": 0.3422, + "y": 0.5157 }, "props": { "params": { @@ -6025,10 +6025,10 @@ "name": "S03_1_JR6" }, "position": { - "height": 25, - "width": 25, - "x": 932, - "y": 555 + "height": 0.0231, + "width": 0.013, + "x": 0.4854, + "y": 0.5139 }, "props": { "params": { @@ -6054,10 +6054,10 @@ "name": "S03_1_JR8" }, "position": { - "height": 25, - "width": 25, - "x": 1212, - "y": 554 + "height": 0.0231, + "width": 0.013, + "x": 0.6312, + "y": 0.513 }, "props": { "params": { @@ -6083,10 +6083,10 @@ "name": "S03_1_JR10" }, "position": { - "height": 25, - "width": 25, - "x": 1491, - "y": 552 + "height": 0.0231, + "width": 0.013, + "x": 0.7766, + "y": 0.5111 }, "props": { "params": { @@ -6112,10 +6112,10 @@ "name": "S03_CH103_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 504, - "y": 402 + "height": 0.0185, + "width": 0.0208, + "x": 0.2625, + "y": 0.3722 }, "props": { "params": { @@ -6141,10 +6141,10 @@ "name": "S03_CH109_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 769, - "y": 402 + "height": 0.0185, + "width": 0.0208, + "x": 0.4005, + "y": 0.3722 }, "props": { "params": { @@ -6170,10 +6170,10 @@ "name": "S03_CH115_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 1043, - "y": 402 + "height": 0.0185, + "width": 0.0208, + "x": 0.5432, + "y": 0.3722 }, "props": { "params": { @@ -6199,10 +6199,10 @@ "name": "S03_CH121_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 1256, - "y": 404 + "height": 0.0185, + "width": 0.0208, + "x": 0.6542, + "y": 0.3741 }, "props": { "params": { @@ -6228,10 +6228,10 @@ "name": "S03_CH127_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 1607, - "y": 404 + "height": 0.0185, + "width": 0.0208, + "x": 0.837, + "y": 0.3741 }, "props": { "params": { @@ -6257,10 +6257,10 @@ "name": "S03_1_FIOM10" }, "position": { - "height": 20, - "width": 40, - "x": 1670, - "y": 567 + "height": 0.0185, + "width": 0.0208, + "x": 0.8698, + "y": 0.525 }, "props": { "params": { @@ -6286,10 +6286,10 @@ "name": "S03_1_LRPE1" }, "position": { - "height": 34, - "width": 251, - "x": 387.46, - "y": 436.99 + "height": 0.0315, + "width": 0.1307, + "x": 0.2018, + "y": 0.4046 }, "props": { "params": { @@ -6315,10 +6315,10 @@ "name": "S03_1_LRPE3" }, "position": { - "height": 40, - "width": 251, - "x": 662.46, - "y": 432.99 + "height": 0.037, + "width": 0.1307, + "x": 0.345, + "y": 0.4009 }, "props": { "params": { @@ -6344,10 +6344,10 @@ "name": "S03_1_LRPE5" }, "position": { - "height": 40, - "width": 251, - "x": 940.46, - "y": 432.99 + "height": 0.037, + "width": 0.1307, + "x": 0.4898, + "y": 0.4009 }, "props": { "params": { @@ -6373,10 +6373,10 @@ "name": "S03_1_LRPE7" }, "position": { - "height": 40, - "width": 251, - "x": 1220.46, - "y": 432.99 + "height": 0.037, + "width": 0.1307, + "x": 0.6357, + "y": 0.4009 }, "props": { "params": { @@ -6402,10 +6402,10 @@ "name": "S03_1_LRPE9" }, "position": { - "height": 40, - "width": 251, - "x": 1500.46, - "y": 432.99 + "height": 0.037, + "width": 0.1307, + "x": 0.7815, + "y": 0.4009 }, "props": { "params": { @@ -6431,10 +6431,10 @@ "name": "S03_1_LRPE4" }, "position": { - "height": 32, - "width": 251, - "x": 667.46, - "y": 523.99 + "height": 0.0296, + "width": 0.1307, + "x": 0.3476, + "y": 0.4852 }, "props": { "params": { @@ -6460,10 +6460,10 @@ "name": "S03_1_LRPE6" }, "position": { - "height": 33, - "width": 254, - "x": 939.46, - "y": 523.99 + "height": 0.0306, + "width": 0.1323, + "x": 0.4893, + "y": 0.4852 }, "props": { "params": { @@ -6489,10 +6489,10 @@ "name": "S03_1_LRPE8" }, "position": { - "height": 35, - "width": 254, - "x": 1215.46, - "y": 523.99 + "height": 0.0324, + "width": 0.1323, + "x": 0.6331, + "y": 0.4852 }, "props": { "params": { @@ -6518,10 +6518,10 @@ "name": "S03_1_LRPE10" }, "position": { - "height": 33, - "width": 259, - "x": 1500.46, - "y": 521.99 + "height": 0.0306, + "width": 0.1349, + "x": 0.7815, + "y": 0.4833 }, "props": { "params": { @@ -6547,10 +6547,10 @@ "name": "S03_CH101_PE1" }, "position": { - "height": 37.97, - "width": 110, - "x": 389, - "y": 373.03 + "height": 0.0352, + "width": 0.0573, + "x": 0.2026, + "y": 0.3454 }, "props": { "params": { @@ -6576,10 +6576,10 @@ "name": "S03_CH103_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 459, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.2391, + "y": 0.3435 }, "props": { "params": { @@ -6605,10 +6605,10 @@ "name": "Photoeye_1" }, "position": { - "height": 40, - "width": 110, - "x": 534, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.2781, + "y": 0.3435 }, "props": { "params": { @@ -6634,10 +6634,10 @@ "name": "S03_CH105_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 534, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.2781, + "y": 0.3435 }, "props": { "params": { @@ -6663,10 +6663,10 @@ "name": "S03_CH107_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 659, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.3432, + "y": 0.3435 }, "props": { "params": { @@ -6692,10 +6692,10 @@ "name": "S03_CH111_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 804, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.4188, + "y": 0.3435 }, "props": { "params": { @@ -6721,10 +6721,10 @@ "name": "S03_CH109_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 729, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.3797, + "y": 0.3435 }, "props": { "params": { @@ -6750,10 +6750,10 @@ "name": "S03_CH113_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 929, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.4839, + "y": 0.3435 }, "props": { "params": { @@ -6779,10 +6779,10 @@ "name": "S03_CH117_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1074, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.5594, + "y": 0.3435 }, "props": { "params": { @@ -6808,10 +6808,10 @@ "name": "S03_CH115_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 999, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.5203, + "y": 0.3435 }, "props": { "params": { @@ -6837,10 +6837,10 @@ "name": "S03_CH119_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1213, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.6318, + "y": 0.3435 }, "props": { "params": { @@ -6866,10 +6866,10 @@ "name": "S03_CH121_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1283, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.3435 }, "props": { "params": { @@ -6895,10 +6895,10 @@ "name": "S03_CH123_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1358, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.3435 }, "props": { "params": { @@ -6924,10 +6924,10 @@ "name": "S03_CH125_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1491, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.7766, + "y": 0.3435 }, "props": { "params": { @@ -6953,10 +6953,10 @@ "name": "S03_CH127_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1561, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.813, + "y": 0.3435 }, "props": { "params": { @@ -6982,10 +6982,10 @@ "name": "S03_CH129_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1636, - "y": 371 + "height": 0.037, + "width": 0.0573, + "x": 0.8521, + "y": 0.3435 }, "props": { "params": { @@ -7011,10 +7011,10 @@ "name": "S03_CH120_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1214, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.6323, + "y": 0.5389 }, "props": { "params": { @@ -7040,10 +7040,10 @@ "name": "S03_CH122_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1283, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.5389 }, "props": { "params": { @@ -7069,10 +7069,10 @@ "name": "S03_CH124_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1358, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.5389 }, "props": { "params": { @@ -7098,10 +7098,10 @@ "name": "S03_CH114_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 932, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.4854, + "y": 0.5389 }, "props": { "params": { @@ -7127,10 +7127,10 @@ "name": "S03_CH116_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1002, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.5219, + "y": 0.5389 }, "props": { "params": { @@ -7156,10 +7156,10 @@ "name": "S03_CH118_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1076, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.5604, + "y": 0.5389 }, "props": { "params": { @@ -7185,10 +7185,10 @@ "name": "S03_CH108_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 654, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.3406, + "y": 0.5389 }, "props": { "params": { @@ -7214,10 +7214,10 @@ "name": "S03_CH110_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 724, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.3771, + "y": 0.5389 }, "props": { "params": { @@ -7243,10 +7243,10 @@ "name": "S03_CH112_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 799, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.4161, + "y": 0.5389 }, "props": { "params": { @@ -7272,10 +7272,10 @@ "name": "S03_CH126_PE1" }, "position": { - "height": 41, - "width": 107, - "x": 1497, - "y": 582 + "height": 0.038, + "width": 0.0557, + "x": 0.7797, + "y": 0.5389 }, "props": { "params": { @@ -7301,10 +7301,10 @@ "name": "S03_CH128_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1564, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.8146, + "y": 0.5389 }, "props": { "params": { @@ -7330,10 +7330,10 @@ "name": "S03_CH130_PE1" }, "position": { - "height": 40, - "width": 110, - "x": 1639, - "y": 582 + "height": 0.037, + "width": 0.0573, + "x": 0.8536, + "y": 0.5389 }, "props": { "params": { @@ -7359,10 +7359,10 @@ "name": "Camera_0" }, "position": { - "height": 30, - "width": 40, - "x": 1860, - "y": 548 + "height": 0.0278, + "width": 0.0208, + "x": 0.9688, + "y": 0.5074 }, "props": { "params": { @@ -7391,10 +7391,10 @@ "name": "NCS1_1_SS2" }, "position": { - "height": 20, - "width": 40, - "x": 1785, - "y": 545 + "height": 0.0185, + "width": 0.0208, + "x": 0.9297, + "y": 0.5046 }, "props": { "params": { @@ -7420,10 +7420,10 @@ "name": "NCS1_1_SIO1" }, "position": { - "height": 20, - "width": 40, - "x": 1747.5, - "y": 576 + "height": 0.0185, + "width": 0.0208, + "x": 0.9102, + "y": 0.5333 }, "props": { "params": { @@ -7449,10 +7449,10 @@ "name": "NCS1_1_VFD1" }, "position": { - "height": 26, - "width": 26, - "x": 1748, - "y": 599 + "height": 0.0241, + "width": 0.0135, + "x": 0.9104, + "y": 0.5546 }, "props": { "params": { @@ -7469,10 +7469,10 @@ "name": "S03_CH103_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 488, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.2542, + "y": 0.3944 }, "props": { "params": { @@ -7498,10 +7498,10 @@ "name": "S03_Ch105_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 559, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.2911, + "y": 0.3944 }, "props": { "params": { @@ -7527,10 +7527,10 @@ "name": "S03_Ch107_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 691, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.3599, + "y": 0.3944 }, "props": { "params": { @@ -7556,10 +7556,10 @@ "name": "S03_Ch109_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 761, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.3964, + "y": 0.3944 }, "props": { "params": { @@ -7585,10 +7585,10 @@ "name": "S03_CH111_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 831, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.4328, + "y": 0.3944 }, "props": { "params": { @@ -7614,10 +7614,10 @@ "name": "S03_CH113_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 962, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.501, + "y": 0.3944 }, "props": { "params": { @@ -7643,10 +7643,10 @@ "name": "S03_CH115_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1037, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.5401, + "y": 0.3944 }, "props": { "params": { @@ -7672,10 +7672,10 @@ "name": "S03_CH117_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1110, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.5781, + "y": 0.3944 }, "props": { "params": { @@ -7701,10 +7701,10 @@ "name": "S03_CH119_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1247, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.6495, + "y": 0.3944 }, "props": { "params": { @@ -7730,10 +7730,10 @@ "name": "S03_CH121_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1320, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.6875, + "y": 0.3944 }, "props": { "params": { @@ -7759,10 +7759,10 @@ "name": "S03_CH123_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1392, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.725, + "y": 0.3944 }, "props": { "params": { @@ -7788,10 +7788,10 @@ "name": "S03_CH125_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1525, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.7943, + "y": 0.3944 }, "props": { "params": { @@ -7817,10 +7817,10 @@ "name": "S03_CH127_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1598, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.8323, + "y": 0.3944 }, "props": { "params": { @@ -7846,10 +7846,10 @@ "name": "S03_CH129_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1670, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.8698, + "y": 0.3944 }, "props": { "params": { @@ -7875,10 +7875,10 @@ "name": "S03_CH108_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 690, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.3594, + "y": 0.5037 }, "props": { "params": { @@ -7904,10 +7904,10 @@ "name": "S03_CH110_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 760, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.3958, + "y": 0.5037 }, "props": { "params": { @@ -7933,10 +7933,10 @@ "name": "S03_CH112_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 831, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.4328, + "y": 0.5037 }, "props": { "params": { @@ -7962,10 +7962,10 @@ "name": "S03_CH114_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 964, - "y": 545 + "height": 0.0185, + "width": 0.0156, + "x": 0.5021, + "y": 0.5046 }, "props": { "params": { @@ -7991,10 +7991,10 @@ "name": "S03_CH116_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1037, - "y": 545 + "height": 0.0185, + "width": 0.0156, + "x": 0.5401, + "y": 0.5046 }, "props": { "params": { @@ -8020,10 +8020,10 @@ "name": "S03_CH118_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1106, - "y": 545 + "height": 0.0185, + "width": 0.0156, + "x": 0.576, + "y": 0.5046 }, "props": { "params": { @@ -8049,10 +8049,10 @@ "name": "S03_CH120_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1247, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.6495, + "y": 0.5037 }, "props": { "params": { @@ -8078,10 +8078,10 @@ "name": "S03_CH122_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1317, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.6859, + "y": 0.5037 }, "props": { "params": { @@ -8107,10 +8107,10 @@ "name": "S03_CH124_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1390, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.724, + "y": 0.5037 }, "props": { "params": { @@ -8136,10 +8136,10 @@ "name": "S03_CH126_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1528, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.7958, + "y": 0.5037 }, "props": { "params": { @@ -8165,10 +8165,10 @@ "name": "S03_CH128_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1601, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.8339, + "y": 0.5037 }, "props": { "params": { @@ -8194,10 +8194,10 @@ "name": "S03_CH130_PRX1" }, "position": { - "height": 20, - "width": 30, - "x": 1671, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.8703, + "y": 0.5037 }, "props": { "params": { @@ -8223,10 +8223,10 @@ "name": "MCM02" }, "position": { - "height": 30, - "width": 42, - "x": 468, - "y": 596 + "height": 0.0278, + "width": 0.0219, + "x": 0.2437, + "y": 0.5519 }, "props": { "params": { @@ -8252,10 +8252,10 @@ "name": "NCS1_1_DPM1" }, "position": { - "height": 25, - "width": 30, - "x": 645.62, - "y": 462 + "height": 0.0231, + "width": 0.0156, + "x": 0.3363, + "y": 0.4278 }, "props": { "params": { @@ -8281,10 +8281,10 @@ "name": "NCS1_1_DPM2" }, "position": { - "height": 25, - "width": 30, - "x": 1194.62, - "y": 462 + "height": 0.0231, + "width": 0.0156, + "x": 0.6222, + "y": 0.4278 }, "props": { "params": { @@ -8310,10 +8310,10 @@ "name": "S03_CH110_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 765, - "y": 602 + "height": 0.0185, + "width": 0.0208, + "x": 0.3984, + "y": 0.5574 }, "props": { "params": { @@ -8339,10 +8339,10 @@ "name": "S03_CH116_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 1043, - "y": 602 + "height": 0.0185, + "width": 0.0208, + "x": 0.5432, + "y": 0.5574 }, "props": { "params": { @@ -8368,10 +8368,10 @@ "name": "S03_CH122_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 1324, - "y": 602 + "height": 0.0185, + "width": 0.0208, + "x": 0.6896, + "y": 0.5574 }, "props": { "params": { @@ -8397,10 +8397,10 @@ "name": "S03_CH128_FIOM1" }, "position": { - "height": 20, - "width": 40, - "x": 1603, - "y": 602 + "height": 0.0185, + "width": 0.0208, + "x": 0.8349, + "y": 0.5574 }, "props": { "params": { @@ -8426,10 +8426,10 @@ "name": "S03_CH101_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 443, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.2307, + "y": 0.3944 }, "props": { "params": { @@ -8455,10 +8455,10 @@ "name": "S03_CH103_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 519, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.2703, + "y": 0.3944 }, "props": { "params": { @@ -8484,10 +8484,10 @@ "name": "S03_Ch105_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 590, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.3073, + "y": 0.3944 }, "props": { "params": { @@ -8513,10 +8513,10 @@ "name": "S03_Ch107_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 722, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.376, + "y": 0.3944 }, "props": { "params": { @@ -8542,10 +8542,10 @@ "name": "S03_Ch109_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 792, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.4125, + "y": 0.3944 }, "props": { "params": { @@ -8571,10 +8571,10 @@ "name": "S03_CH111_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 862, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.449, + "y": 0.3944 }, "props": { "params": { @@ -8600,10 +8600,10 @@ "name": "S03_CH113_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 993, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.5172, + "y": 0.3944 }, "props": { "params": { @@ -8629,10 +8629,10 @@ "name": "S03_CH115_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1068, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.5563, + "y": 0.3944 }, "props": { "params": { @@ -8658,10 +8658,10 @@ "name": "S03_CH117_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1141, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.5943, + "y": 0.3944 }, "props": { "params": { @@ -8687,10 +8687,10 @@ "name": "S03_CH119_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1278, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.6656, + "y": 0.3944 }, "props": { "params": { @@ -8716,10 +8716,10 @@ "name": "S03_CH121_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1351, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.7036, + "y": 0.3944 }, "props": { "params": { @@ -8745,10 +8745,10 @@ "name": "S03_CH123_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1423, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.7411, + "y": 0.3944 }, "props": { "params": { @@ -8774,10 +8774,10 @@ "name": "S03_CH125_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1556, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.8104, + "y": 0.3944 }, "props": { "params": { @@ -8803,10 +8803,10 @@ "name": "S03_CH127_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1629, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.8484, + "y": 0.3944 }, "props": { "params": { @@ -8832,10 +8832,10 @@ "name": "S03_CH129_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1701, - "y": 426 + "height": 0.0185, + "width": 0.0156, + "x": 0.8859, + "y": 0.3944 }, "props": { "params": { @@ -8861,10 +8861,10 @@ "name": "S03_CH108_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 721, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.3755, + "y": 0.5037 }, "props": { "params": { @@ -8890,10 +8890,10 @@ "name": "S03_CH110_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 791, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.412, + "y": 0.5037 }, "props": { "params": { @@ -8919,10 +8919,10 @@ "name": "S03_CH112_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 862, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.449, + "y": 0.5037 }, "props": { "params": { @@ -8948,10 +8948,10 @@ "name": "S03_CH114_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 995, - "y": 545 + "height": 0.0185, + "width": 0.0156, + "x": 0.5182, + "y": 0.5046 }, "props": { "params": { @@ -8977,10 +8977,10 @@ "name": "S03_CH116_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1068, - "y": 545 + "height": 0.0185, + "width": 0.0156, + "x": 0.5563, + "y": 0.5046 }, "props": { "params": { @@ -9006,10 +9006,10 @@ "name": "S03_CH118_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1137, - "y": 545 + "height": 0.0185, + "width": 0.0156, + "x": 0.5922, + "y": 0.5046 }, "props": { "params": { @@ -9035,10 +9035,10 @@ "name": "S03_CH120_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1278, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.6656, + "y": 0.5037 }, "props": { "params": { @@ -9064,10 +9064,10 @@ "name": "S03_CH122_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1348, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.7021, + "y": 0.5037 }, "props": { "params": { @@ -9093,10 +9093,10 @@ "name": "S03_CH124_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1421, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.7401, + "y": 0.5037 }, "props": { "params": { @@ -9122,10 +9122,10 @@ "name": "S03_CH126_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1559, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.812, + "y": 0.5037 }, "props": { "params": { @@ -9151,10 +9151,10 @@ "name": "S03_CH128_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1632, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.85, + "y": 0.5037 }, "props": { "params": { @@ -9180,10 +9180,10 @@ "name": "S03_CH130_PRX2" }, "position": { - "height": 20, - "width": 30, - "x": 1702, - "y": 544 + "height": 0.0185, + "width": 0.0156, + "x": 0.8865, + "y": 0.5037 }, "props": { "params": { @@ -9209,10 +9209,10 @@ "name": "S03_CH101_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 389, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.2026, + "y": 0.2778 }, "props": { "params": { @@ -9238,10 +9238,10 @@ "name": "S03_CH103_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 459, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.2391, + "y": 0.2778 }, "props": { "params": { @@ -9267,10 +9267,10 @@ "name": "S03_CH105_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 534, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.2781, + "y": 0.2778 }, "props": { "params": { @@ -9296,10 +9296,10 @@ "name": "S03_CH107_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 659, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.3432, + "y": 0.2778 }, "props": { "params": { @@ -9325,10 +9325,10 @@ "name": "S03_CH109_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 729, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.3797, + "y": 0.2778 }, "props": { "params": { @@ -9354,10 +9354,10 @@ "name": "S03_CH111_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 804, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.4188, + "y": 0.2778 }, "props": { "params": { @@ -9383,10 +9383,10 @@ "name": "S03_CH113_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 929, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.4839, + "y": 0.2778 }, "props": { "params": { @@ -9412,10 +9412,10 @@ "name": "S03_CH115_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 999, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.5203, + "y": 0.2778 }, "props": { "params": { @@ -9441,10 +9441,10 @@ "name": "S03_CH117_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1074, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.5594, + "y": 0.2778 }, "props": { "params": { @@ -9470,10 +9470,10 @@ "name": "S03_CH119_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1213, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.6318, + "y": 0.2778 }, "props": { "params": { @@ -9499,10 +9499,10 @@ "name": "S03_CH121_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1283, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.2778 }, "props": { "params": { @@ -9528,10 +9528,10 @@ "name": "S03_CH123_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1358, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.2778 }, "props": { "params": { @@ -9557,10 +9557,10 @@ "name": "S03_CH125_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1491, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.7766, + "y": 0.2778 }, "props": { "params": { @@ -9586,10 +9586,10 @@ "name": "S03_CH127_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1561, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.813, + "y": 0.2778 }, "props": { "params": { @@ -9615,10 +9615,10 @@ "name": "S03_CH129_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1636, - "y": 300 + "height": 0.037, + "width": 0.0573, + "x": 0.8521, + "y": 0.2778 }, "props": { "params": { @@ -9644,10 +9644,10 @@ "name": "S03_CH108_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 654, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.3406, + "y": 0.6083 }, "props": { "params": { @@ -9673,10 +9673,10 @@ "name": "S03_CH110_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 724, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.3771, + "y": 0.6083 }, "props": { "params": { @@ -9702,10 +9702,10 @@ "name": "S03_CH112_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 799, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.4161, + "y": 0.6083 }, "props": { "params": { @@ -9731,10 +9731,10 @@ "name": "S03_CH114_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 932, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.4854, + "y": 0.6083 }, "props": { "params": { @@ -9760,10 +9760,10 @@ "name": "S03_CH116_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1002, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.5219, + "y": 0.6083 }, "props": { "params": { @@ -9789,10 +9789,10 @@ "name": "S03_CH118_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1076, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.5604, + "y": 0.6083 }, "props": { "params": { @@ -9818,10 +9818,10 @@ "name": "S03_CH120_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1214, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.6323, + "y": 0.6083 }, "props": { "params": { @@ -9847,10 +9847,10 @@ "name": "S03_CH122_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1283, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.6682, + "y": 0.6083 }, "props": { "params": { @@ -9876,10 +9876,10 @@ "name": "S03_CH124_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1358, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.7073, + "y": 0.6083 }, "props": { "params": { @@ -9905,10 +9905,10 @@ "name": "S03_CH126_PE2" }, "position": { - "height": 41, - "width": 107, - "x": 1497, - "y": 657 + "height": 0.038, + "width": 0.0557, + "x": 0.7797, + "y": 0.6083 }, "props": { "params": { @@ -9934,10 +9934,10 @@ "name": "S03_CH128_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1564, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.8146, + "y": 0.6083 }, "props": { "params": { @@ -9963,10 +9963,10 @@ "name": "S03_CH130_PE2" }, "position": { - "height": 40, - "width": 110, - "x": 1639, - "y": 657 + "height": 0.037, + "width": 0.0573, + "x": 0.8536, + "y": 0.6083 }, "props": { "params": { @@ -9992,10 +9992,10 @@ "name": "S03_1_LRPE11" }, "position": { - "height": 33, - "width": 259, - "x": 1500.46, - "y": 521.99 + "height": 0.0306, + "width": 0.1349, + "x": 0.7815, + "y": 0.4833 }, "props": { "params": { @@ -10020,6 +10020,12 @@ "meta": { "name": "root" }, + "props": { + "mode": "percent", + "style": { + "overflow": "hidden" + } + }, "type": "ia.container.coord" } } \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/resource.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/resource.json new file mode 100644 index 00000000..9195902f --- /dev/null +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-08-18T10:23:32Z" + }, + "lastModificationSignature": "8ffadcdf171b959f80c684a59ad3e79d4444412a0d2efb99f82dc9533aa2d67c" + } +} \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/thumbnail.png b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..8a632849a6ccdcb7d8757b0aaeffcbcd1d8f4525 GIT binary patch literal 6188 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 literal 0 HcmV?d00001 diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/view.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/view.json new file mode 100644 index 00000000..64ccd2e6 --- /dev/null +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Footer/view.json @@ -0,0 +1,3260 @@ +{ + "custom": { + "MCM": "", + "currentTable": "HISTORY", + "page": "", + "view": "" + }, + "params": {}, + "propConfig": { + "custom.MCM": { + "binding": { + "config": { + "expression": "if({view.custom.view} !\u003d \"\", {view.custom.view}, {view.custom.page})" + }, + "type": "expr" + }, + "persistent": true + }, + "custom.currentTable": { + "persistent": true + }, + "custom.page": { + "binding": { + "config": { + "path": "page.props.path" + }, + "transforms": [ + { + "code": "\ttry:\n\t\tif \"MCM\" in value:\n\t\t\tindex \u003d value.find(\"MCM\")\n\t\t\treturn value[index:index+5] # MCM + 2 digits\n\texcept:\n\t\t\tpass\n\treturn \"\"", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + }, + "custom.view": { + "binding": { + "config": { + "path": "page.props.primaryView" + }, + "transforms": [ + { + "code": "\ttry:\n\t\tif \"MCM\" in value:\n\t\t\tindex \u003d value.find(\"MCM\")\n\t\t\treturn value[index:index+5] # MCM + 2 digits\n\texcept:\n\t\t\tpass\n\treturn \"\"", + "type": "script" + } + ], + "type": "property" + }, + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 250, + "width": 1920 + } + }, + "root": { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "grow": 1 + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "70px", + "shrink": 0 + }, + "props": { + "direction": "column", + "style": { + "backgroundColor": "#3B3B3B" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tdata \u003d self.props.selection.data\n\t\n\talarms.alarm_click.handleClick(data)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "active-table" + }, + "position": { + "basis": "1080px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.currentTable} \u003d \"ACTIVE\"" + }, + "type": "expr" + } + }, + "props.columns[4].filter.string.value": { + "binding": { + "config": { + "path": "view.custom.MCM" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "parameters": { + "priorityList": "{this.custom.priorities}" + }, + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetActiveAlarms" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d [col for col in ds.columnNames if col !\u003d \"EndTimestamp\"]\n\t\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "NumberID", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "Number (ID)" + }, + "justify": "left", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "StartTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "Event Timestamp" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "string", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 70 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Description", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Tag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 80 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "FullTag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Device", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Active Alarms" + }, + "noFilterResults": { + "text": "No Active Alarms" + } + }, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "bottom": false + } + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tdata \u003d self.props.selection.data\n\t\n\talarms.alarm_click.handleClick(data)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "hitList-table" + }, + "position": { + "basis": "1080px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.currentTable} \u003d \"HITLIST\"" + }, + "type": "expr" + } + }, + "props.columns[5].filter.string.value": { + "binding": { + "config": { + "path": "view.custom.MCM" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetAlarmsWithCount" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d list(ds.columnNames)\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data\n", + "type": "script" + } + ], + "type": "query" + } + }, + "props.editingCell": { + "onChange": { + "enabled": null, + "script": "\tall_alarms \u003d system.alarm.queryStatus(includeShelved\u003dTrue)\n\tshelved_alarms \u003d [alarm for alarm in all_alarms if alarm.isShelved()]\n\t\n\t# Build dataset for table\n\theaders \u003d [\u0027ID\u0027, \u0027StartTimestamp\u0027, \u0027EndTimestamp\u0027, \u0027Duration\u0027, \u0027Description\u0027, \u0027Priority\u0027, \u0027Tag\u0027, \u0027MCM\u0027]\n\tdata \u003d []\n\t\n\tfor alarm in shelved_alarms:\n\t # Calculate duration (time since shelved)\n\t if alarm.activeTime:\n\t duration_ms \u003d system.date.now().getTime() - alarm.activeTime.getTime()\n\t duration_seconds \u003d duration_ms / 1000\n\t hours \u003d int(duration_seconds / 3600)\n\t minutes \u003d int((duration_seconds % 3600) / 60)\n\t seconds \u003d int(duration_seconds % 60)\n\t duration \u003d \"%02d:%02d:%02d\" % (hours, minutes, seconds)\n\t else:\n\t duration \u003d \"00:00:00\"\n\t \n\t # Extract tag name from source\n\t tag_name \u003d alarm.source.split(\u0027/\u0027)[-1] if \u0027/\u0027 in alarm.source else alarm.source\n\t \n\t row \u003d [\n\t str(alarm.id) if hasattr(alarm, \u0027id\u0027) else \u0027\u0027,\n\t alarm.activeTime if alarm.activeTime else system.date.now(),\n\t None, # End timestamp (shelved alarms don\u0027t have end time yet)\n\t duration,\n\t alarm.displayPath if alarm.displayPath else alarm.source,\n\t alarm.priority.name if alarm.priority else \u0027Unknown\u0027,\n\t tag_name,\n\t \u0027System\u0027 # Adjust based on your source format\n\t ]\n\t data.append(row)\n\t\n\t# Create dataset and update the custom property\n\tdataset \u003d system.dataset.toDataSet(headers, data)\n\tself.custom.shelvedAlarmsData \u003d dataset" + } + }, + "props.selection": { + "persistent": true + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "FirstTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "backgroundColor": "#FFFEFE", + "classes": "" + }, + "title": "First Timestamp" + }, + "justify": "left", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "value", + "dateFormat": "MM-DD-YYYY HH:mm:ss", + "editable": false, + "field": "LastTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "Last Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM-DD-YYYY HH:mm:ss", + "editable": false, + "field": "Count", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Description", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": 150 + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Tag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "FullTag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Device", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Alarms" + }, + "noFilterResults": { + "text": "No Alarms" + } + }, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "activeOption": 5, + "bottom": false + } + }, + "type": "ia.display.table" + }, + { + "events": { + "component": { + "onRowDoubleClick": { + "config": { + "script": "\tdata \u003d self.props.selection.data\n\t\n\talarms.alarm_click.handleClick(data)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "historical-table" + }, + "position": { + "basis": "1080px", + "grow": 1 + }, + "propConfig": { + "position.display": { + "binding": { + "config": { + "expression": "{view.custom.currentTable} \u003d \"HISTORY\"" + }, + "type": "expr" + } + }, + "props.columns[6].filter.string.value": { + "binding": { + "config": { + "path": "view.custom.MCM" + }, + "type": "property" + } + }, + "props.data": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "3" + }, + "queryPath": "GetAlarms" + }, + "transforms": [ + { + "code": "\n\tfrom system.dataset import toPyDataSet\n\n\tds \u003d toPyDataSet(value)\n\tdata \u003d []\n\n\tcolumn_names \u003d list(ds.columnNames)\n\n\tfor row in ds:\n\t\tpriority \u003d row[\"Priority\"]\n\n\t\t# Use style class names from Perspective\n\t\tif priority \u003d\u003d \"High\":\n\t\t\tclassName \u003d \"Alarms-Styles/High\"\n\t\telif priority \u003d\u003d \"Medium\":\n\t\t\tclassName \u003d \"Alarms-Styles/Medium\"\n\t\telif priority \u003d\u003d \"Low\":\n\t\t\tclassName \u003d \"Alarms-Styles/Low\"\n\t\telif priority \u003d\u003d \"Diagnostic\":\n\t\t\tclassName \u003d \"Alarms-Styles/Diagnostic\"\n\t\telse:\n\t\t\tclassName \u003d \"Alarms-Styles/NoAlarm\"\n\n\t\t# Apply the style class to all cells in the row\n\t\trow_dict \u003d {\n\t\t\tcol: {\n\t\t\t\t\"value\": row[col],\n\t\t\t\t\"style\": { \"classes\": className }\n\t\t\t} for col in column_names\n\t\t}\n\t\tdata.append(row_dict)\n\n\treturn data", + "type": "script" + } + ], + "type": "query" + } + } + }, + "props": { + "columns": [ + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "ID", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "", + "paddingLeft": 12 + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "StartTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": { + "$": [ + "ts", + 201, + 1750755617512 + ], + "$ts": 1750435156149 + } + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "Start Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "none", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY HH:mm:ss", + "editable": false, + "field": "EndTimestamp", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": { + "$": [ + "ts", + 201, + 1750755617511 + ], + "$ts": 1750436956149 + } + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "End Timestamp" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "Duration", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "", + "paddingLeft": 12 + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "none", + "editable": false, + "field": "Description", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Priority", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "contains", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "Severity" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Location", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "equals" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Tag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": true, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "contains", + "value": "" + }, + "visible": "never" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "center", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "center", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "FullTag", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + }, + { + "align": "center", + "boolean": "checkbox", + "dateFormat": "MM/DD/YYYY", + "editable": false, + "field": "Device", + "filter": { + "boolean": { + "condition": "" + }, + "date": { + "condition": "", + "value": "" + }, + "enabled": false, + "number": { + "condition": "", + "value": "" + }, + "string": { + "condition": "", + "value": "" + }, + "visible": "on-hover" + }, + "footer": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "header": { + "align": "center", + "justify": "left", + "style": { + "classes": "" + }, + "title": "" + }, + "justify": "auto", + "nullFormat": { + "includeNullStrings": false, + "nullFormatValue": "", + "strict": false + }, + "number": "value", + "numberFormat": "0,0.##", + "progressBar": { + "bar": { + "color": "", + "style": { + "classes": "" + } + }, + "max": 100, + "min": 0, + "track": { + "color": "", + "style": { + "classes": "" + } + }, + "value": { + "enabled": true, + "format": "0,0.##", + "justify": "center", + "style": { + "classes": "" + } + } + }, + "render": "auto", + "resizable": true, + "sort": "none", + "sortable": true, + "strictWidth": false, + "style": { + "classes": "", + "display": "none" + }, + "toggleSwitch": { + "color": { + "selected": "", + "unselected": "" + } + }, + "viewParams": {}, + "viewPath": "", + "visible": true, + "width": "" + } + ], + "emptyMessage": { + "noData": { + "text": "No Alarms" + }, + "noFilterResults": { + "text": "No Alarms" + } + }, + "enabled": true, + "filter": { + "results": { + "enabled": true + } + }, + "pager": { + "bottom": false + } + }, + "scripts": { + "customMethods": [], + "extensionFunctions": null, + "messageHandlers": [ + { + "messageType": "update-first-request", + "pageScope": true, + "script": "\tdata \u003d payload[\"data\"]\n\tinitial_data \u003d payload[\"initial_data\"]\n\tself.props.data \u003d data\n\tself.custom.initial_data \u003d initial_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "update-historical-data", + "pageScope": true, + "script": "\thistorical_data \u003d payload[\"data\"]\n\tself.props.data \u003d historical_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "load_initial_data", + "pageScope": true, + "script": "\trequest \u003d payload[\"data\"]\n\tsystem.perspective.print(\"initial message received\")\n\tif request \u003d\u003d True:\n\t\tself.props.data \u003d self.custom.initial_data", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "reset-historical-filters", + "pageScope": true, + "script": "\treset \u003d payload[\"data\"]\n\tif reset \u003d\u003d \"reset\":\n\t\tself.props.data \u003d []\n\t\tself.custom.device_filters \u003d None\n\t\tself.custom.priority_filters \u003d None\n\t\tself.custom.source_id_filters \u003d None\n\t\tself.custom.time_from_filter \u003d None\n\t\tself.custom.time_to_filter \u003d None\n\t\tself.custom.type_filters \u003d None\n\t\tself.custom.duration_filter \u003d None\n\t\tself.props.enabled \u003dTrue", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-source-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.source_id_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-device-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.device_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-priority-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.priority_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-from-filters", + "pageScope": true, + "script": "\ttime \u003d payload[\"data\"]\n\tself.custom.time_from_filter \u003d time", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-to-filters", + "pageScope": true, + "script": "\ttime \u003d payload[\"data\"]\n\tself.custom.time_to_filter \u003d time", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-type-filters", + "pageScope": true, + "script": "\tfilters \u003d payload[\"data\"]\n\tself.custom.type_filters \u003d filters", + "sessionScope": false, + "viewScope": false + }, + { + "messageType": "set-duration-filters", + "pageScope": true, + "script": "\tduration \u003d payload[\"data\"]\n\tself.custom.duration_filter \u003d duration", + "sessionScope": false, + "viewScope": false + } + ] + }, + "type": "ia.display.table" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "1920px", + "grow": 1 + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.currentTable \u003d \"ACTIVE\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "ACTIVE" + }, + "position": { + "basis": "150px" + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "none", + "color": "#000000" + }, + "text": "ACTIVE" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.currentTable \u003d \"HITLIST\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "HIT LIST" + }, + "position": { + "basis": "150px" + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "none", + "color": "#000000" + }, + "text": "HIT LIST" + }, + "type": "ia.input.button" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tself.view.custom.currentTable \u003d \"HISTORY\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "HISTORY" + }, + "position": { + "basis": "150px" + }, + "props": { + "style": { + "backgroundColor": "#F0F0F0", + "borderStyle": "none", + "color": "#000000" + }, + "text": "HISTORY" + }, + "type": "ia.input.button" + }, + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "300px", + "grow": 1 + }, + "props": { + "style": { + "gap": 2 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "events": { + "system": { + "onStartup": { + "config": { + "script": "\tif self.view.custom.currentTable \u003d\u003d \"\":\n\t\tself.view.custom.currentTable \u003d \"ACTIVE\"" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "root" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/resource.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/resource.json new file mode 100644 index 00000000..9d6585c3 --- /dev/null +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "G", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "view.json", + "thumbnail.png" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-08-18T10:23:36Z" + }, + "lastModificationSignature": "87272fcbd8cc30c8968064e94a83d0eadd8eea704bfab82ea1e9f8dc12bafc29" + } +} \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/thumbnail.png b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c4ddf88d88438c3ddecc9840e6b0482981e1e6 GIT binary patch literal 1183 zcmV;Q1YrA#P)Y}j6o&m15U?VU#IYOI-=v#n3v>Yzf+C8FKu9!Y$1jKyDGOF00gFoA_6L*|Nuwf? z=0hNnGz(%QXuc2$*eSMW#&&|*hPE&F+}Kt;V|ykUO6%}09{J2U_nqr`7jt~)!vWK@ zAQ*;;-JJ@4TG`Y{EV)`;u&fd)<#I#rAW|!-G4{M4ZK+hkAGtgxXP0$sueZ|*N1eBw zw&vCR;w_|q`Hfz+(b6ktt(BHuIcu%7^vYRlr9FyQ0lTg`%ksT4MX;lFM!v zkS`dHx*x5Z(e1Q;=542SGrFDD&%AD0dgZLQ($Xtuy_J?;IqR*o$Hl9F3=oP%13Q&6 zGO8)06_rXw4=x&(##9HnnN0{t;!u=ZDC)#kilAAORt)1>6Ldaz4ET5 zS6;ODOjWCDmy~v+s=cRjd+PiyJSY`WQrem6n>vdzhmm=8m_LE@qG!H zDLlk%ai2K@xSsnPmltm9xRw`W+;hwH+P*Z?vmEw0`F8L@mAYuBBJrwe+f` zcDe{mD6W@*OKB5V)^~M0E_q|0YbNm3_I-S|_@|B~cc3xIO5s;EX$8-J{3*h(o=52H zMTFk`P}BE@d|p8RTSL{j5y_oUweZ;sjyko@I{EEJr%T5d zJyO5821%4Iq|C5<&>+AQFn6WC}wkBbe+B;_1|j2&!$#c_C1$ zKC&ctqUC0VT$hriiF6%3Ni0SPA*6#yD0<>?4E6V8s=FIO6{o6sF9fpkxDp!!A%q+o z4mO5wRb!A?a`thp2rOhRSh8xcO8POUc>`<=gb>of_-+h&c?qLvVk?`6ncK!Uxji-p zLI~+#d^ZMpu`MgFaL=bPbz=#a7jNrFp5lGoYz%}D(t-GH42Jwy1}`NMLddbfcVnpi zkrHn{6GF)GfQ^9=LP!H_41|!!M?#VGf#~h~B$`Abp|R)WGpK2WbFu;vX9u!^p^pj+4nG xLZJ|bhli0)r!hJ@ihgy{mt(Py6}{ia@DG`{boV8D;r0Lk002ovPDHLkV1n*fJb3^B literal 0 HcmV?d00001 diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/Header/view.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/view.json similarity index 79% rename from BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/Header/view.json rename to BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/view.json index c7ddac27..dd82e720 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/Header/view.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Header/view.json @@ -262,6 +262,40 @@ }, "type": "ia.display.icon" }, + { + "events": { + "dom": { + "onClick": { + "config": { + "page": "/" + }, + "scope": "C", + "type": "nav" + } + } + }, + "meta": { + "name": "Back", + "tooltip": { + "enabled": true, + "text": "Go back to DEX" + } + }, + "position": { + "basis": "24px", + "shrink": 0 + }, + "props": { + "color": "#FFFFFF", + "path": "material/arrow_back", + "style": { + "classes": "Header/Icon", + "cursor": "pointer", + "marginRight": "10px" + } + }, + "type": "ia.display.icon" + }, { "children": [ { @@ -465,186 +499,11 @@ } }, "props": { - "color": "#FF0000", + "color": "#47FF47", "path": "material/table_chart" }, "type": "ia.display.icon" }, - { - "meta": { - "hasDelegate": true, - "name": "Spacer 1" - }, - "position": { - "basis": "20px" - }, - "props": { - "text": " " - }, - "type": "ia.display.label" - }, - { - "custom": { - "buttonid": "HeaderNotifyIcon", - "entries": [ - { - "PrimaryKey": "2024-05-08 10:17:51", - "author": "pll", - "body": "Introducing our brand new Announcement Feature! 🎉 Stay in the loop with important updates, new features, planned downtime events, all in one place. Never miss out again! Check it out now and stay tuned for the latest updates. 🔊", - "childproj": "https://eu-preprod.scada2.rme.amazon.dev: MAN2", - "expire": "2024-05-09 05:00:00", - "link1": "https://", - "link1title": "", - "link2": "https://", - "link2title": "", - "priority": "Healthy", - "publish": "2024-05-08 10:08:33", - "title": "📢 Exciting News! 📢", - "whids": "" - } - ], - "entryCount": 1, - "highestPriority": 5 - }, - "events": { - "dom": { - "onClick": [ - { - "config": { - "draggable": true, - "id": "ioNP2CXn", - "modal": true, - "overlayDismiss": true, - "resizable": true, - "showCloseIcon": true, - "title": "Notifications", - "type": "open", - "viewParams": { - "entryCount": "{/root/Icon_0.custom.entryCount}", - "instances": "{/root/Icon_0.custom.entries}" - }, - "viewPath": "PopUp-Views/Notify-Tool/Notify-Popup", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - }, - { - "config": { - "script": "\tbuttonid \u003d self.custom.buttonid\n\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" - }, - "scope": "G", - "type": "script" - } - ] - } - }, - "meta": { - "name": "Icon_0", - "tooltip": { - "enabled": true, - "location": "bottom-right", - "style": { - "whiteSpace": "pre" - }, - "text": "📢 Exciting News! 📢\n" - } - }, - "position": { - "basis": "30px" - }, - "propConfig": { - "custom.refreshMSG": { - "binding": { - "config": { - "expression": "now(600000)" - }, - "type": "expr" - }, - "onChange": { - "enabled": null, - "script": "\tsystem.perspective.sendMessage(\u0027refreshNotifyIcon\u0027)" - } - }, - "position.display": { - "binding": { - "config": { - "path": "view.custom.EntriesList" - }, - "transforms": [ - { - "code": "\tfrom datetime import datetime\n\t\n#\tRead entries from dynamo table\n\treturns \u003d notifyTool.ReadFromDynamo.DynamoReader()\n\tEntriesList \u003d returns[\u0027Items\u0027]\n\tEntriesList.reverse()\n#\treturn EntriesList\n\n#\tCreate empty list and now string\n\tpublishdates \u003d []\n\tnow \u003d datetime.now()\n\tnowstr \u003d str(now)[:19]\n\tactiveNotify \u003d False\n\twhid \u003d self.session.custom.fc\n\tstates \u003d {\u0027Healthy\u0027:5,\u0027Diagnostic\u0027:4, \u0027Low\u0027:3, \u0027Medium\u0027:2, \u0027High\u0027:1}\n#\tCheck EntriesList for active entries based on publish and expire times\n\tactiveEntries \u003d []\n\ttooltip \u003d []\n\tcount \u003d 0\n\thighestPriority \u003d 5\n\tfor e in EntriesList:\n\t\t\n\t\tif len(e[\u0027whids\u0027])\u003e0:\n\t\t\tif whid in e[\u0027whids\u0027]:\n\t\t\t\tif nowstr \u003e\u003d e[\u0027publish\u0027] and nowstr\u003c\u003dstr( e[\u0027expire\u0027]):\n\t\t\t\t\tactiveEntries.append(e)\n\t\t\t\t\ttooltip.append(e[\u0027title\u0027])\n\t\t\t\t\tactiveNotify \u003d True\n\t\t\t\t\tcount +\u003d1\n\t\t\t\t\tif states[e[\u0027priority\u0027]] \u003c highestPriority:\n\t\t\t\t\t\thighestPriority \u003d states[e[\u0027priority\u0027]]\n\t\telse:\n\t\t\tif nowstr \u003e\u003d e[\u0027publish\u0027] and nowstr\u003c\u003dstr( e[\u0027expire\u0027]):\n\t\t\t\tactiveEntries.append(e)\n\t\t\t\ttooltip.append(e[\u0027title\u0027])\n\t\t\t\tactiveNotify \u003d True\t\t\n\t\t\t\tcount +\u003d1\t\n\t\t\t\tif states[e[\u0027priority\u0027]] \u003c highestPriority:\n\t\t\t\t\thighestPriority \u003d states[e[\u0027priority\u0027]]\n\n\t\t\t\n\ttooltiptext \u003d \u0027\u0027\n\tfor i in tooltip:\n\t\ttooltiptext+\u003d i+\u0027\\n\u0027\n\tself.custom.entries \u003d activeEntries\n\tself.custom.highestPriority \u003d highestPriority\n\tself.custom.entryCount \u003d count\n\tself.meta.tooltip.text \u003d tooltiptext\t\n\n\n#\treturn returns\n#\treturn activeEntries\n\treturn activeNotify", - "type": "script" - } - ], - "type": "property" - } - }, - "props.color": { - "binding": { - "config": { - "path": "this.custom.highestPriority" - }, - "transforms": [ - { - "fallback": "state5", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "state1" - }, - { - "input": 2, - "output": "state2" - }, - { - "input": 3, - "output": "state3" - }, - { - "input": 4, - "output": "state4" - }, - { - "input": 5, - "output": "state5" - } - ], - "outputType": "scalar", - "type": "map" - }, - { - "code": "\ttest \u003d self.session.custom.colours.colour_impaired\n\tstatecolor \u003d self.session.custom.colours[value]\n\treturn statecolor", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "path": "material/campaign", - "style": { - "marginLeft": 5, - "marginRight": 5 - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "refreshNotifyIcon", - "pageScope": true, - "script": "\n\tself.refreshBinding(\u0027props.color\u0027)\n\tself.refreshBinding(\u0027position.display\u0027)", - "sessionScope": true, - "viewScope": false - } - ] - }, - "type": "ia.display.icon" - }, { "meta": { "hasDelegate": true, diff --git a/conversion-report.txt b/conversion-report.txt new file mode 100644 index 00000000..aaa8c876 --- /dev/null +++ b/conversion-report.txt @@ -0,0 +1,4 @@ +Starting conversion: 20250815:23.05.38 +Conversion finished. Elapsed time: 9 ms +Starting conversion: 20250815:23.07.32 +Conversion finished. Elapsed time: 12 ms