From 1ca103a8fead0c24ede2eb3712ac7b6c4af4c59f Mon Sep 17 00:00:00 2001 From: Salijoghli <107577102+Salijoghli@users.noreply.github.com> Date: Tue, 19 Aug 2025 17:29:45 +0400 Subject: [PATCH] added mcm cards. modified the page config. --- ...f04e82811a0bfe7bd37604c3c6801a68eaeb19b32d | Bin 6144 -> 0 bytes ...78351c3d259e8a3f3867a06a6c30df2e1f9f0700a6 | 18 - ...6ea14f716ec1fb50e22fa0515db6e3366c20ae7068 | Bin 6917 -> 0 bytes ...9fce69c178f7740266154654747a71aaa497ba1399 | 17 - ...9f28599e7251b87fab5ad055ad0fe3f82458c89b86 | Bin 5893 -> 0 bytes ...7c91385dfed47ad2b86d44359c9a75c9764ac32668 | 15 - ...ad841e997f309fbc2f404073daa7cccfd291c2a63f | 9 - ...04ce98b7c8c479edeb78b151dcd256052fa8c7f444 | 1123 --- ...8fd607022040a693a2a552ece5d1c753bdf6efd13} | 0 ...b9cfcf40294346b4e165ef0a9fd4449710562b0f5} | 24 +- ...51b4a4da3d8099ec4a38276319db7bfce4d1207e51 | 58 - ...e50a5f6f512675c18db9bf4f0dcebe40a6e39d8a05 | 13 - ...46cb895a710fdef4aa2d825decbe09d894371fd5b} | 0 ...a4ab13f21fd8d861fe742ebe9681e4d59ba7f2cb0} | 0 ...0a9692849f880d7aa72bae7ceaf2159ed28ed4b549 | 1978 ----- ...59e7a132b114bbef7e4361f9503a999077ae692e55 | Bin 18826 -> 0 bytes ...3b5d1e34a042dcb46e4df16d53b62968f80df0de4e | 7 - ...625c1d4bb8aa80641c1678d39c1d7c7c7247b3e375 | 172 + ...59d53446731ffa7a17183cb086f9ac9982cfba8b66 | 8 - ...b5420467f7cc315cacd36068f6d65a039ffbe4b73b | Bin 12874 -> 0 bytes ...60fa1b4daa12167e0c18aa2c4a0a789a25b1a08cd} | 0 ...348d362cf67c54399fc8c963ee70a55fcdfe22e31f | Bin 8599 -> 0 bytes ...6f538a13ea764e239158dec673546c103eebf1c91} | 0 ...e2600cc34b825c0271e61f9ce05fba4d6fe03d8754 | 97 - ...4c2c78b4276461102acb661148fb651017b7f4522} | 0 ...89ae3a39d8fd3834c9a0320bdb5957c8446fd5abe8 | Bin 2073 -> 0 bytes ...a81373a3e230a37c4f57871ef0dc93f8ddeb273bf4 | 17 - ...68777571c670253aba153eed8bffdaae47b7ebcc8f | 732 -- ...b3099ac602fb60c1cd1cec739931d7bbb511312fc1 | 7 - ...ddfea2de4793f935610e6c548fb24be2e3fbfe0941 | 33 - ...f215032010eeadae6fec9009a7bcc3a854b45edf25 | Bin 847 -> 0 bytes ...079cae4b0f679ccade43f1cca1e608252f7ccbc8b} | 0 ...60cba242a705556a7e4499e22faf30bb53bb74808e | Bin 2983 -> 0 bytes ...2d66517284d67801a6416308819de4602be8d2ba6} | 12 +- ...956a1c2cbbb06a3816427bdb531284beff98a09acc | Bin 494 -> 0 bytes ...66c0a1478d0d803248f1b6d983393ce03dcb01a7ea | 519 -- ...b7d401f99f5ce5d2906c1af92b9d91ed64a3dbda40 | 32 - ...69305665e36f595223ea7ff96608daaa03368da2f2 | 656 -- ...1861f7f1ac60656608b4362c7cb419c3d4f82ade1f | 447 - ...abd6785bec04020561461a59aeda2db1a0baad3f1a | 773 -- ...0d7466c3bab885e672235ce78f561e4157a1439a58 | 1281 --- ...1dbb23e42c14261bd32c0a9db27ed91812963bc1a5 | Bin 1949 -> 0 bytes ...88039ab802c36de9b84402d48014958e672b1529b6 | 7 - ...3b3895d395b9a5ee0ad28910ab0b517249d7d0810} | 0 ...60f94042572ea4bceb532ff8e888e4fdccf14877a} | 40 +- ...61297e67ac67227b56dbd5e73c67cecd48bcb96000 | Bin 10791 -> 0 bytes ...bc78b4d55f75d9c4c068f250388f79bfb35251b62} | 49 +- ...dbb2dfde57e592465e03d7773f8f89cb0a09ce7cce | 17 - ...29c63e382aac6ff17837e56e4065b13e5bb7129ff} | 0 ...ebef05afc46d5019aef5b77589490ca7c871e99652 | 300 - ...4caa7debd07ba6a7eb223d2d53c1a57d8585b63de} | 0 ...6a611f7b6baed60b5b9d8553bd0808b44297079c78 | 58 - ...84b560302e98abe255ef7edeb581025e6d6f43394} | 0 ...6ce60d90081d65c00fee21bdbddb4be815e58eff60 | Bin 761 -> 0 bytes ...d44f5d8a96541821bf7208314603bee82d8e4b8def | Bin 1768 -> 0 bytes ...21bf40a939dd6ad8ea54e6697d3267067eb824d92b | 171 - ...f786b4268394232c26400e7ba5401ef20831a91c7} | 0 ...996f9784a24b260e7e7acf89266155429507be87a} | 0 ...3ec023f6fb859f59815243ba5406fe8ca04689068} | 0 ...28b874194aa3c8e3a103a047be5ab62fc67ab9df30 | Bin 0 -> 994 bytes ...5c83846d2a3e013363cae29ca950967b99f03de455 | 9 - ...1e94951546d38a2d7a1bbf926f654d40eae04b1d81 | 3260 ------- ...74f54eac3a516da14f4d5e2ac1faae245dce2e6dc} | 0 ...01d00f3caf4de99b41a3bad9c5d2ca30216a949cd2 | 11 - ...0c8ca3c0fc32e5e3ce948df9d2cd1b007f20d5e1e4 | Bin 19550 -> 0 bytes ...cdbf6505df1f28e0ad200bfae187bf30883770718c | 10 - ...aba88c039dcea355af488ac4d9fb78483af170fa12 | 175 - ...3c6cfcd6138df5348142e712702171f3879b051b46 | Bin 1495 -> 0 bytes ...c66aac9696bb262c9376f37d34d96f120c028c464} | 0 ...f77bed7e7d663b1a4ccaf5e90cde9adb29628db978 | 604 -- ...276a5047344b3b31546689040ff3f8a84392b64ac1 | Bin 13173 -> 0 bytes ...7af95533da7996985b106c98930560fc01e13d88a} | 270 +- ...3ea69832c650cd91477c99d99eb337cd22d6cdcfb3 | Bin 26414 -> 0 bytes ...97ccf8b8cbaf012713b03162e8f269c67396950c16 | 151 - ...dac64bf86a162921ecb250289a814a4213ded8f62b | Bin 1532 -> 0 bytes ...938949f814b9d1e3f489be03715ba3b8ab954a95f} | 0 ...a43c9ee3638062669b0d78ee7efd60d7808b88e53} | 0 ...d861f49dfccc96285adda54db2497cd2ab782d6790 | 648 -- ...8b0d174ae53bc55b606be129375796e6442e9093e2 | 334 - ...feab33c6a780299f98ea55aa9f4e4d25bfbad2cbcd | 13 - ...f61fbdd446ed2a6e9e4e3b3fd7f76a47cc28b53678 | 11 - ...7bd313d1870f0b975b7e2b6bd6da5fc77785e10351 | 13 - ...89ec0be5300834e22fefc44bc3f9cc864472145a7} | 0 ...9044efc26106e7a78673442af7648fcebd998c4760 | 66 - ...fb0a750ef5a51c33a9c047e2c31989febcd86b55a} | 0 ...62bb291a44d8e2d924470b0f144c977f1841b2a18e | 92 - ...8e73097c7ec219deae544e056f817ca5f1eee94dfa | 16 - ...743cb8f25143f70a52bb33b7fc01f479efafd67fcb | 1021 --- ...8e561624897c05ef88c5ff7ae4a5c4e6ba0a3b304b | 932 -- ...b48b13ae7db4e1945c8fde26e954e1d0d02bec9f03 | 46 - ...581300f924297e172d8a4eb0427daf42acfd68aeb7 | 96 - ...d277c8e779dd004d68796ca6f28a1eb105fcd233be | 15 - ...c6489a3864fb56e99468aeb63da75e05e8efceab1} | 0 ...bbcdd7d1606bbb70f7eef24a3dc8469380e66a6b1c | Bin 0 -> 6423 bytes ...4712d02313db51de934d1e288c1bfd67662ade104} | 0 ...978d58c9c0e4e0e562fdb455719e5961dd4274641} | 0 ...b92243ef5edd48bcd7f83b9fc3fa1b8b027d7454bf | 302 - ...a5896f903994aba3c695918db9ea7a94d69ccf6d4e | Bin 1898 -> 0 bytes ...2b2bd1c603852129b2f8b45af523df7ac893302ef1 | Bin 1839 -> 0 bytes ...61824f0693b5a11eaca8aabe8c9115a952571eee2e | 7 - ...0c4aa0d507fa2f3cf8d9e1f8eb195bca42d4e85656 | Bin 35508 -> 0 bytes ...2f2f53d7af7572343be9cd99d90e44ad759f3a1f6f | 8 - ...56e524f4bc8f5bb32c3ca891710cc944e2a067f77} | 0 ...7a430bad286a463bc9cd5bd168f6e42037b9b1e07} | 0 ...33641ba79ef9d9e249c5f58048157d69e6042e135e | 710 -- ...fdd32c8e0b239afa5fe5191db0c0d9c8f68253c80} | 0 ...dc4a2215ae477e8dbc15a4985d642488ae86e9c69c | 4851 ----------- ...9669e1f06d0014efec357c07475fedb0aca8d8d81} | 0 ...a30ee9fe5fbbec7618e71ac335a25db44b97206797 | Bin 0 -> 730 bytes ...e9b4676bb03b6396c1327c1870f54555d201ab6fae | 146 - ...5b8a6741286a5b73fe06d387e0381a030b8c5b4b01 | 608 -- ...851a57c10e96dd3c3e39169238d2e2a0a73f9bb1f} | 0 ...3bc28456ff05a922cbb558d075926996a26e4ec700 | Bin 9998 -> 0 bytes ...4dd9f9e28dd88e97d54429adeaf894865af575be24 | 387 - ...04d47eca298fa85b995a3268494fa0b4984c19d5dd | Bin 1284 -> 0 bytes ...636bd39b2c6cc4cac43bd87d749418bfc3ae2e505} | 4 +- ...f48202133fa9c3f823e30c459f3b05f5ed777ace74 | 7 - ...5c31ea4999a5a10a4081461691a1cd82f67bffb20a | 9 - ...598cb8e68268813b613fc4aba667b74d0bc58fb52} | 0 ...8333d47af6701bf0fa96d8513dfb09b3b292c45fde | Bin 3500 -> 0 bytes ...45b0537c0b6f3d16e13a0930ca7ed0906b4bd1ce2f | Bin 116 -> 0 bytes ...e8d8f30d89f52b7b2b5fe5272fae6def3dd71d9e17 | 82 - ...d77a3126324567079a851eb137d7309c502e17397} | 0 ...9f17978bfa7e897172d394fd45a5bb994c9c9b40af | 10 - ...b1f26eb8a799772d262eabb2fd054fd8e199fcb44} | 0 ...ab5c5f2c7dee2c451f354f6348fd6dcc59d321712} | 0 ...5bec94766a5b95011d70cc293389637f9ada5ccbc} | 0 ...99d1f84299e191926516fc629088604855aaf6d0bc | 10 - ...5b3e34ae64bde67cac8b9fe6b5013edc2e82b455c7 | 99 - ...9c87def51a28ae73bd00b9f3c8ff83877207471706 | Bin 5441 -> 0 bytes ...531c0ad99a9fa74615a5f7a807df3a4cd5d2212664 | 138 - ...4f970417a21e89b56e345f5039a956b3f67114fd1} | 0 ...f777a22f2e26a1702c5d1bc49014bbbda28943d1bd | 101 - ...32d79f3cf793c912a34793879ee14c48fd584d3280 | 1 - ...5bbb5635f6f336af773a53700c0b0014cbba93df5a | 103 - ...41c72e00f5e1123f89bfb9390deb33629dd573d912 | 204 - ...869fe80fc108194e29b84a3767eaa627448455df17 | 33 - ...e8decfc5c86b145fe0e2fa9c712ecf35b91264887a | Bin 14545 -> 0 bytes ...375649db27da760f38ce88ebc9df2967f076eea120 | Bin 12867 -> 0 bytes ...5936963107ac957c07ba232e997acb3b4fd27b9e88 | 213 - ...480b8eadd90860b49c56fb0f7590afc49aa17393da | Bin 9829 -> 0 bytes ...34bae3bbff792155ad737b1cfd79751dfbd587d44f | 13 - ...f62ae927c9b1095ce47f030040fe476e0971866a13 | 8 - ...a79af6740d410fb85d3a787dd9057ba7ec53b9539} | 0 ...3797a576857335a3824135fdabf1bc2c41d4453196 | 24 - ...63ce93b2b89e70927aa2e1616b72beba7e95067d26 | 687 -- ...8282aa270d8f5f2acd423064204a3e5f53bd0746fb | Bin 55493 -> 0 bytes ...d3865b454b3d3d2df13bb18fe63a7b99ea0a79051e | 155 - ...c9b6bcb3ff0d0abe76ee063479a76fe416f45b356b | Bin 0 -> 9598 bytes ...6e4cc2c621dd06d047755af01ce340013ab77532a0 | 43 - ...87008c71adbdac11f2c1f1fccafbceac536bc3d74} | 0 ...d684e6ad4d1832c1feb705151746957f7e7d2546c} | 0 ...dfea51f18e3e14fe4af4525757c01fc6fc1d68a328 | 105 - ...02c86db688bdca80d2ef3713fe0c739a7b781de52} | 0 ...5c8556fb5b92898fd85fa671c90260372ea1242fb7 | Bin 81 -> 0 bytes ...80f62449d075c18ef37b04e24f3722c46b0a1ab7d} | 0 ...1f64d25c6cb42d34ed9d0f276a35a81ced6e89f468 | Bin 11059 -> 0 bytes ...92323a4363513e281ec104f127a1750dc7513e18fa | Bin 24845 -> 0 bytes ...6b291df3c5c09439bcfc6c6bbe5d88bf90e0271e83 | 390 - ...82a4ad25882654d0b986785a901737dda1a60d5ecb | 7 - ...4de83e2922482ccb172c03865e000e2e1ea90c6a86 | 237 - ...1c896e97f27339e138573c6764b225210983dbdb2} | 0 ...fbd5a5cb76f72e6e96f069a5ca12afbc4f8ee640d4 | Bin 1360 -> 0 bytes ...d7084de0499295fe5a8c42da87bcfe4656a89eeb9} | 0 ...a4a84f6074b2935cf89990682111c12cde244fa1f5 | 497 -- ...67d9928e68da77677fded40c1041365032c445fbbe | 99 - ...4305e6833e2d18efadb0bfcd1a390baf9f4de4d3a1 | 13 - ...eccbfb54659cbc263cb54cbbad874dd7a6d364a016 | 10 - ...be0740d64239b2a7c1b2afbfb3b1fbaed0b6af4df2 | 123 - ...47f55057e1c686afde527057bcbe7d8c5c2ba0263} | 0 ...2765b55577f65eaf4692b594e79fca840fdfaaee0e | Bin 35668 -> 0 bytes ...b78d5ad07807f6b9344a86695b10b218a589be2be4 | 12 - ...784d926779f63c7412e8703b6160b2be950911f44} | 0 ...a961ec0349e509e931dddb56229ef921fb7a63e754 | 198 - ...052cf8093103cd5c0266d4c17dd96a7773b16128e} | 0 ...8ad22d66b0b19f223d29cf889cb5f7238fa863281b | Bin 11197 -> 0 bytes ...8b170a8e2c644db7cd75c205dba0b18f21c9e8f7b7 | 7467 ----------------- ...942d0a356730fc988cbf40daadba567acf0cf938fc | 9 - ...47f6ac371d5def12e0c083087e9596dd7b100a1db3 | 108 - ...80f25aa07214a3773faffc5fb20a987ec6e32f879} | 0 ...7b7463b5cdc38bcfc85774255add664036d5ce81bf | Bin 8362 -> 0 bytes ...6b13135dd8a068d0d78286fe8045265b13a5e82d8} | 0 ...59610ae6a63b7d321358aa1f7f02d8d97993e05489 | 1001 --- ...1178e6886746bcbf10caaa79bed33ea5a29e1c4374 | 10 - ...9d4dafadf523f877f85db4489aef9f84449dbe4a0} | 0 ...7c94525a9141e7ebc4f3eb2567ad0091e9f9ed2b96 | Bin 123 -> 0 bytes ...61f14f2623da2b6091b1a57f216d46cdf61a1f3631 | Bin 2377 -> 0 bytes ...efb7ed4943274d69c3446ffcf04ebbcb2ba695e2e} | 0 ...c56494a3700c1ce2f8c412639afb87714569a46e49 | Bin 2825 -> 0 bytes ...15db7bcfbf1eeb63937d9c66ee3541a364058e1425 | 155 - ...b0be7345c74d9005a24c5975c24fc5f663dd3adfcc | 9 - ...6f0add3820b272b42e4c2cf8646b210f5b675fbb1e | 1004 --- ...21c939c662163a11fafe019f82037cc8ee3b10a85} | 0 ...1e07d00d0ad324d98e0b10700328928faee3a76a8} | 0 ...9eae211be270bc15602ec39ca899abe412684e6045 | 10 - ...4b6979dbe218f14f722b2f6baf31e3387756a57398 | 19 - ...fcf474a4f44cb30afb46800dfa29b1d4660656c3a2 | 503 -- ...8f2b2214ae0619e23218fff89cec15f48f40d7617a | Bin 9374 -> 0 bytes ...d4ac0743a1f25a3b3a79c78e5474dfb452cb1c861} | 0 ...4b506e6ce179fff793d5c82e14e545d0c4852a9bae | 24 - ...83ecf93e840129171fa74efc5aea33a12d87c3fe62 | Bin 288 -> 0 bytes ...e209c1aee306e4c17aa622d2d4d46399514da51512 | 84 - ...600b4b1d008f89291dbe1ce8507b489ed73c6a197c | 10 - ...505244830a53b9b73f17f99ea1a08087cb49473be3 | Bin 76 -> 0 bytes ...953dfe4ce1d62f8529ec9fe361980e756b18e7334} | 0 ...85fdc2d0be557bf823d518815936158daa124e650e | 13 - ...ffeb7f2782821faa543fc462847888be59efd5617f | 227 - ...9bc545876f26f9afbcc106ba26df87b0e668444354 | 55 - ...38594bed722438e8b801286a1a316cca3ed54d8dba | 651 -- ...9d88371196e2b20f530fa658c8ef754a41f46bb911 | 571 -- ...cf9f28cf8fb33bdcff66048a94c1bc3238e8a5c7cf | 16 - ...7bf87e2dc1fdfb59562ad3d93824d2b47588110929 | 31 - ...e584caf95c2e3d3a7ace0421b8f7f7d1791af7da8e | Bin 56022 -> 0 bytes ...52d58efa0294bd712b246e940a29ad8c5e1b2fecb} | 0 ...1db4a4af349bb0478961750c28f442148d9c35a2ea | 31 - ...eea88d62457d7b85a601a29b4a0ccea62ce2e1f9b} | 15 +- ...76328d699050f981ed593563956c6dfe10d52b0e7} | 0 ...d0f476cdfa3286dd1752c8881fcbb22e34afbe5996 | Bin 327 -> 0 bytes ...ebd292be0ef67afeb87ee8a1e9f2f71b8a2e31b6a9 | 9 - ...2ade5d062ceca91f025bc7aab9edfb6478b29385ae | 9 - ...3690df3a74378f27f30142a052cfcc588b1a40ea5a | 313 - ...665396ea381aa4fa506eae95612b710de1968e9351 | 59 - ...9c9fd2f1b65d62e4ffaf986499342231052298575} | 0 ...b81a5d82ad8cb69c6c9fa452f44cdf96b827f00a20 | 5 - ...0c4d072c6cfdedd2afaac0ce4be2a45a639ede8156 | 238 - ...83a761f5d0eb361be592229b14fa5b2a7a4f90d1f4 | 147 - ...47bf22ef21d52b828433d9fccaf2bbac94a3125b58 | 537 -- ...f87248c5b86a29d33ad18913a89058b035e862bf04 | 778 -- ...1e6e892e0fdda445dfd8209d4591f50ee7fd906a1d | 396 - ...78ff85adef0d9f50b059ca9b41891bbd8a379a7ba} | 0 ...29a576ee3069ffa79ef2f5b556694e650216aede57 | 244 - ...2ca9b3ae4aea0e9d89fb8a4173e75d3b7194d578a9 | 223 - ...fb2ab4ea0378e50013b52ef41c3ffb925780cecf70 | 66 - ...707dc9756aa4dd8f80e5d2fd4b013f919efff453da | 17 - ...4d6b9bbc76cab6a3a936305874a52d54af4a4761ad | Bin 1709 -> 0 bytes ...00ae01fd262360401361a11dbffaae8fb5eeba26b} | 0 ...452c5d5360dce2803b75c4ceb223aa256804873a4f | Bin 5991 -> 0 bytes ...78ed2166891bb7641ad62ab7a923d14894c84277ed | 10 - ...dcedcbc1fd0f3ea1a979535047e743e3e62a0b3b0} | 0 ...7dc01f22a037eda722b824eecce4506272320029f} | 0 ...b2630629a908fbf4c9580e4ee283e7a3725f54cd6b | Bin 1200 -> 0 bytes ...926c0b70e4b56c69437bccb74bb2263e137a397ce} | 0 ...76e7a622c574bd6f61439271da705cf426300dcf55 | 46 - ...34e9d93569e8dcfc2a89432691673ec4a4da1cbef8 | 10 - ...e1bf04f03ee4d74ad988d01de57716049d726e4489 | Bin 737 -> 0 bytes ...f4a36e6b0747b1f8cb0410babfac9c42d2fdafc5f} | 0 ...7358c83091b8cd61c3eae9ddcc5e0c1ba8490b5b27 | 659 -- ...6714e883580a6a581969356e1178836e4bc9346ca0 | Bin 21061 -> 0 bytes ...ff341914cc171f31014885541f5db300075c9c5ccd | 65 - ...b37cf251aec41c0d98773bc363cee8472289b585e} | 0 ...3bcac29968ec44224507c3ca221f4953644553ee17 | Bin 1462 -> 0 bytes ...83073819477606d8ea797f852dbdee7cdd76da9a7} | 0 ...e1e8e22a0e0b18669f95834f8ff4edaa95018b83a} | 0 ...7941835de336366d513021894e8d2eacd430ea4b0} | 0 ...2bb29980b334f05aa81b03880429a48becf4068047 | 33 - ...1e1653dad1fdf0dc7f451e07ab6f749bd4a8ed8ffc | 54 - ...950e7286040263b84873ca817f187eaa8d4ca8dd81 | 284 - ...1271c383106c929e049d808b957adfc75ffea4404} | 0 ...60071e7afca2baed675d8b0f816b9e12809a76b33} | 0 ...e4d8ad4411018af7b3ed7f90b9186afe6b859ec4d6 | Bin 3234 -> 0 bytes ...86df5b7b6807739b5f02dd66336aecd7e928dcd0b3 | 11 - ...41501535af0bfcc170eccb89d086675276073a102b | 10 - ...c7c816414f970f89a19faae573b4559816d8e671c0 | Bin 3224 -> 0 bytes ...4cf070e34aac1e99d7679ba2f049b6ce0bd228013} | 0 ...dc11b676d8529e1977d41a696da9b0118bfac319c2 | 228 - ...2b5ee6eba17ccfb21c4848ed145e3698e88177449c | 828 -- ...bdfbcace941faf2d17ff7af012e0d53968a1a8862c | Bin 2018 -> 0 bytes ...bc3d84299b59e44ae68d5c674716689e9eb9ee03a0 | Bin 85 -> 0 bytes ...ec7c239680255524f9bd44a728623fb21a5677f666 | 371 - ...abd17ec259b49001488018181079ee9ebb5297d9b} | 0 ...c1560e23a689a2f15c0d94b852e8418d5d5d17fae} | 48 +- ...2bd78c2d56541faffad4e7c88620e8602c20a83af4 | Bin 1035 -> 0 bytes ...04ce8f35fcaf56e49aab563eb3650269c712809440 | 58 - ...b23001d8e3d906c8f82a4f02f48a77f6ddd8389dde | 796 -- ...f7f9d8f869efcabbbcf2437882ca0c3502eca1e566 | 1846 ---- ...f76ba9ba26776b818c35e5d966c0e1c244942defe6 | 110 - ...f833af4de2affbe25b30ba6ff187296edcbe5e7c2e | 592 -- ...57c45a95082b7f86a432be29652cc75cd71f304334 | Bin 14345 -> 0 bytes ...c63a945aef34c600ea91b7b0b4c7a9497b6e9aebd} | 0 ...5d68f36b272c11c1219d27bd2f0ca1d373bbb03c0f | Bin 5247 -> 0 bytes ...41bd4f72338abb0efdcd9170594380e1e8b706a0ae | 7 - ...28df8d64b5f228a2f4915d98723e7cef84844a53ac | 55 - ...53f93278ca67514be2b2ece7026e3e0b5438856412 | 49 - ...95f0d9fcb3b83387b2f2591e2b3c583e879433c054 | 11 - ...e694a156f9bbc133918472bb9021221d6b67e31f7} | 0 ...e1f9f0e0af5170a91ee6cfdbb10a4523490cb98b30 | 367 - ...2ccec4669af8c5fa9699f1b941090ae45d49881134 | Bin 0 -> 1723 bytes ...bcf8f16848b0fe41dfa23584f1c880cd07b48bbe3} | 0 ...2a8e40e0550a41b4880639d91cc4506fb07295ba8c | 155 - ...51a962b6a08fa4adb3ec308491ec7c825816895d1} | 0 ...36c83cf94c99ff4f34abe5553970e0842ae90e81bf | 932 -- ...b911611aa979b9362c1db02edbda4cc4a3e531fcb} | 0 ...465ad76efb0632562d1baf42718194cc92a5788ebd | 479 -- ...c2dac9f31f4846066c151905be6edffc31de881161 | 176 - ...226bc35f4378becbcca7a04e274ac357571d02c1c2 | Bin 35196 -> 0 bytes ...cbf1332d3ecb4d0697a8c5546ba74f89d53a82b79} | 0 ...ee7b007b1667410f1ecadadbfeb46ff460561df47} | 0 ...2aa49c9c3dd02e2c4ea6265308a41de1670625ccc} | 0 ...e6c743dd4927b17da4dda0ad09e209421e8950b9f3 | 12 - ...af3fbf2095f82391ae87ce1228a8dee248e52ecc40 | 522 -- ...ce5356485873f02c5d475473f3058e88290241817f | 87 - ...e7561a6bbcf844b6897c4cfce9462fc4e04c1b1583 | Bin 0 -> 72398 bytes ...b9a6bed3b41f760fde41381e465afa65fe1b936878 | 631 -- ...abb2daabc6bc792c4a1f9ba28ad0d5e10611b5653c | Bin 20387 -> 0 bytes ...539600a3a31de7cd16de13e20001aaf32a84f5b7c9 | Bin 20055 -> 0 bytes ...3db5887574de6044c0ea1d457166196aabd8c9983} | 0 ...76b964a7d4e6dfc121cef4dabe210044ec28e44f8} | 0 ...caca7009f0418ecb5851181bf11691ff6ccccef0e} | 0 ...e86eb88f70a53a23ee2ea00d988889bd067790fe8e | 18 - ...7594c2d13c43edcb241318d7834f585a0221650616 | Bin 1927 -> 0 bytes ...4a672bec0a185acf2a0cdcd1b9dcb806c0ce99f87e | 944 --- ...321d36c2270460619e79c178ad4beafdd4d1466b5} | 0 ...17f8d543cfb9bb2597470bbfcaece7aaee12b0a11} | 0 ...322c6c9655529671f607a367f32658287daa10c70} | 0 ...ab28fd55f78be7739d80ed6ef1fd17477c38563e1b | 34 - ...430f42d17f3db8c9dc35c48cb536a19af7eec985af | 141 - ...810e0cd60176fdaf2e9d863bda21915c02b3e48d3} | 0 ...5cc4f111e0e64fee6d2aabaca621f1d520bdaa4acb | 122 - ...13bf80ca6bf61e2ca1bdf3e1f079f651f072c8674c | Bin 10161 -> 0 bytes ...ea1a9d497a013c96bac28e683310ef280ca2ad259} | 0 ...7ad5d7ea0d2deefdd19d08c22303227a14b0bcd991 | 728 -- ...2c72312f80638770932dd323008da579858ffe6e0a | 11 - ...58cf56bf0d36b6044a00742988ba800915ea229e9} | 0 ...4d6c2ebb389068d8dc806e6fef6d58831c2a3c3cbd | 787 -- ...5dbdea549c20beb780620fd22b29b8152230ecced9 | 11 - ...b9e8e25914dfc1afe26d2df69c87d2ff58487b98a8 | Bin 2096 -> 0 bytes ...ba85612d27c54d948e569f0cc672e4165930defa6} | 0 ...3fabb1fee3fa66b8149c080f4ac64e9b1db06769b2 | Bin 7374 -> 0 bytes ...7117d493c2a99a13c0a5b9c2d6e0da63e07fc33b5} | 0 ...c6b551b4cc228b190e08402653aba6fdfd485bfce} | 0 ...646007b1601eaab8f5409ddf29dcff09e1a37fd26} | 0 ...90ca897405c346f0b845d3e802cc12e887b62c57c1 | 1142 --- ...b6f02b4539cc2a82886935406b025c81ef83d7f6e} | 0 ...4fd734f5b8348b53b135539b8ddfd8ff91a7c8cacf | Bin 16011 -> 0 bytes ...e44e4030043a1dd54e87b57029016e8d9abab0261f | Bin 1183 -> 0 bytes ...effd0e0aaa6fa9df87ecf64a2ebd21019c9dcc8c3d | Bin 1715 -> 0 bytes ...46633ebf8f54836fe9ed5c79c8d02a4361796deafd | 9 - ...1b59c08c3852026421afe61d0ed1fe4f9ac07b0ff5 | 105 - ...ba4adbf58461a2727affe7c98f00c1b26320b9e51} | 0 ...d241332e6eb14e7d77df242c955bcab26ad9f84b7} | 0 ...84f736bfbf3fd7220f4a82569d1236a5c1eef2a378 | Bin 9344 -> 0 bytes ...6f33aa494d51c846748dd988283d27a2a4085b6a15 | Bin 26540 -> 0 bytes ...8c4a6719d731fe0b135da52a308835b228134092dd | Bin 325 -> 0 bytes ...d44ddf59ef68c1e036fa26b5f1ba0ca9271caa1818 | 7 - ...593af33f20cab7e631679d4e45ad1f3de9bf5a675} | 0 ...52e5905314d28379bab017aadbab6a387114ad92e} | 0 ...87e3e0eddb618cd24cff60906e3c30f76f0a1b66e} | 0 ...d025f77aee946328b6b51712c04d47c36528c75e50 | Bin 1536 -> 0 bytes ...4c6448991e851d1e74d3d52bdbe9ca4768840decb1 | 2431 ------ ...642005af8cfe736090b51a3f5cdec47cec7c08433a | 25 - ...f70a44a1e7c37c5237434de6209e6222bf983a0737 | 16 - ...4f750d4abc3fe886d415105a3c9519538a9f43756f | 7 - ...a532177825bcec2e4498f9a3f05feb781104e9d007 | 11 - ...c99844edb968101b58c450c6c4970816dd3a948cac | 7 - ...089da47fe8491011245eb680403376916ebf47a127 | Bin 3433 -> 0 bytes ...4057e55bc3f4e724ff0aa34057746047c1bbd0af7a | 578 -- ...c969dce1e94fe4da39e1614588ef021da38833a7a} | 0 ...7f00ff55dca81825dc0da06d1c036e7d406e2999ae | 66 - ...d7e08e7ad20e05a583df05fe3b75a433be41accc27 | Bin 16526 -> 0 bytes ...b45f60fc36b378b7a29917de93a897ca30110943b6 | Bin 62407 -> 0 bytes ...95e8f183dcf710217eac98a5227b99bef912aa8b12 | 10 - ...9aaf5a561700173898c145e0aae0635a296f99898f | 8 - ...516b6ccabb3d5ae8d0dc51d839caa8d623b3c95ec3 | 15 - ...bb0a804bed7240e2c7b45d981cfd117c66c4dae55b | 226 - ...3e301855236d83e69331ec41d8aad46d491fd2929c | 8 - ...a3077bbae0558fcc761c89b7744470de74d9095e3d | Bin 848 -> 0 bytes ...37d5e700a3bf1c6fe51e5cb88d2cbfa329023133d9 | 262 - ...b12b9ea824a40af797a8445c1e9ecc0b27e706e06c | 68 - ...74851b8fe6c04c767fc43c9fdb399ade693be4002} | 0 ...bd513e6f95c51800ca96f93a926577e34558d94276 | 10 - ...4b93e080e643ffb1ad558f65130de13e98e0311ef} | 0 ...9ad3cf2e849981e9346f6ed885f0957bb7ec011d46 | 7 - ...401f8adda71c59cc978fda676a58a64fa41ba140f4 | 64 - ...893139c9a5a0f0dc0f9b7985bec9b2a6479bb35ef2 | Bin 50184 -> 0 bytes ...02ad7bc9b3722f76d115e0f8fcd1f6d1d3d4d2889} | 0 ...f280e80674cddc47789ad62e3c2fd6a6bb8fe12fc} | 0 ...80f806a3402734655a0e064b3cebda913ff8364070 | Bin 10667 -> 0 bytes ...71eb4b5c6f650b6452dfef54399351538445cc74c8 | 10 - ...bc02eb40b8c43bd39bb802488874dbf38b4771a639 | Bin 21151 -> 0 bytes ...8625a4faf8419bd2c71803576d0a824d6d7c71782f | 709 -- ...87fc9da90b62084b298a6fb48f7d3903494246ebf} | 0 ...b2a1149d58c062bfce137b4a7a0e2572a9104ac0c2 | 627 -- ...fcc716857c16c6fb694f824ffa291ce1b9baeae30} | 0 ...a1d99aae7242c38362aed2482e32807b0d613d7744 | 305 - ...84814a058e21ce2d4e8b1cf64cb4dc16f0db134f7c | 705 -- ...092445d75acd47dcc8545b8104866158f62c9bcee4 | Bin 0 -> 26547 bytes ...4b80f5375f88f5444e68fa45fe365b5e9cf3565ea8 | Bin 278 -> 0 bytes ...481f0087fa8846f205828549d76104b56cf040963d | 628 -- ...e4726e89d0b0d43413177120ef9760a1b0a9d015a2 | 16 - ...5c525f013d021eb5d729d117120f311cb86c50595d | 1122 --- ...1b191778a022ab54509ec059cca51424cdfdfa2c31 | Bin 6204 -> 0 bytes ...bc6ea8aee5b4d50f802c3e2315dc3ef45834b52ab6 | Bin 473 -> 0 bytes ...0024e145f3a2848529a85068445ea7f275b47077fb | Bin 4875 -> 0 bytes ...478a4653521c220e7d2953b9901c94cefbb9bddbe0 | 471 -- ...38572711192d433f702ad82db0dfecd4c6e55d1253 | 12 - ...d05ce947c92824c0e9dcb29a06f275a0dc9d229a2} | 0 ...f8662b89daf798f7fc6e697b2d7ad424db703a4024 | 64 - ...fa257db17282d28405b9ed255ffd4b73ddb368cce1 | 8 - ...a849a05616a028ee518c5c69e00842779188c8cee4 | 293 - ...9b6967f5f2cff28187cf25a0198ba0effe700c56df | 1099 --- ...18a965e9d4a2ca6bdeabcc4fc38319c064419be05} | 0 ...a963ab41373b5b65552c391da3134e365d0058b9fe | Bin 9222 -> 0 bytes ...106f78325f9684d81c138352006441011429d63c65 | Bin 285 -> 0 bytes ...9dc9e7a749db4637ad0085346729b055b5bb8a628a | Bin 1810 -> 0 bytes ...797cc180594efd976a8381ac2a72a66ad6752f35ef | 431 - ...4045aa92a3143be2f1cea2cfce8bc0fed9c489d315 | 195 - ...ed67f5253d9ac489f67f668b176f160693561a5f65 | Bin 131471 -> 0 bytes ...6c80398c713ade055a87588593ff14daf85ce5feb} | 0 ...c317e54f7f0ff41b9cf8faf7dc58dcadcc44e4cd6c | 2552 ------ ...05c8f9cb072311ba4833bfa2ab734e011f5cc2bb59 | 1041 --- ...0ab99011c6b64c9199c81e10aae99b1dcd3cfd7223 | 21 - ...08084fcb0ebd39757ca61f8a60ccb5a6665032aed8 | Bin 773 -> 0 bytes ...582b38428b851bb1ad03781d8d4e2611dfb7f5d03} | 0 ...f9d38718803ca850ec983499d3f171dc8ff50141a} | 0 ...b8fc4ac26164f75a15c9b98571612e2d1261dfb58} | 0 ...708e40079ceecee5f0c6e216f727b252fd746b9f30 | 727 -- ...0602aedbd6ffd74564a9a0efbdbf21dddeeb726506 | Bin 8190 -> 0 bytes ...b275e218c1d2d7c14b22321b16785cf50e3b05a05b | 11 - ...0f647573a446c834c2f28e0aca09516058a18a91ad | 7 - ...e35afaaa91ee6f63f7f253ce35e33aee271690221d | 10 - ...c9222c638532f17925dc05f0301fc327dccd15bae6 | Bin 214 -> 0 bytes ...1d78dd4c8f0ee62c037a2aac10bc840a8668459b12 | 30 - ...5bdbde5f4956da40f358a86818923e4c6bf461936} | 0 ...daacaab9278a1bccd650daea4e24583e94a13407f5 | 10 - ...d57f4c0b902b266928912cd9d08fcdb6fe4f499e09 | 184 - ...effcbdb6349e40e35c0ae9cf94cc0cd268fa16fa12 | 21 - ...f7e15b8db5ceacd857a4f85368632754ef0474b0d4 | Bin 6160 -> 0 bytes ...763df9747580bfe774f5ebf6d5acc89705399bad3e | Bin 4590 -> 0 bytes ...76ddfbcf1f6353dbe6e5dcd9f2800eb6b5195084fe | 449 - ...a4910e0d53e500c8964ee10524e4fef82986c8dd3} | 2 +- ...895f4b93d9575d696b9522f55342f493d2ab3707e4 | 198 - ...5f2147e27af3c27763e47dfec48f609896792689bc | Bin 1772 -> 0 bytes ...a450cfc4954805d45b16dfbba3617d9ce2b26061fa | 603 -- ...97918d8fb7b557041a46abe0b1f7409ee021ba4986 | 918 -- ...79273dd4303c499e7964efa4ae0ef4b1f6fe733b6a | Bin 1355 -> 0 bytes ...89727e0851ae47d6e39d2d8c45291efdfa08b82b7} | 0 ...692ff19ff195ff9700188f17297e19a6e864a79a3} | 0 ...4c22c79fd73d7e1d14e3b46d34a39c581f17f1e6ad | 144 - ...763cce85c8c220884f26113035192ce2526d39a23} | 0 ...f0f9d2fc23cdf0de0784d8275348b3eebf8fe17605 | Bin 12852 -> 0 bytes ...2c72d2e2bebf1371bc674b3e3405039095b841997e | 13 - ...64a0339192b26ce03b200d54a7c3c90611c958f78a | 15 - ...9c9b918284eecc950d22660fd248f0e9381ccd9e6c | 172 - ...7385b75fb92b002a4cd5cefad4e442ed452b70ad2e | Bin 25360 -> 0 bytes ...1d3ca8fe91bba8992f9a64e0d5d535b7b7c548c989 | Bin 46641 -> 0 bytes ...31c4ebd5e1940532f97de6b4dae6c828c29d9ea35a | Bin 0 -> 23856 bytes ...6eef595579f60e3dd1489ba60ac2770cb4db59e65} | 0 ...9124992e0d063089dee20c2be11a1b3d4e2a591ef4 | Bin 184 -> 0 bytes ...7fbb61e6094391f68c4d42f9a0f7cb4a82cc32fc36 | 77 - ...1bba843f4d4d41f19f84df14693d1f38d17df28154 | 7 - ...fcae3645b5cc377bc0924ec3c245e475153d148077 | 8 - ...6019477dfd1453a73215e2b2160f5e69696fef30f8 | 348 - ...3522d8525847fe5aa1351fabdf151cd4b3b33b609e | Bin 33328 -> 0 bytes ...3307fc5cc2827985ac7dee519599f08b3ba16ee734 | Bin 4145 -> 0 bytes ...49e19fa5bce4b6aa5c7f124c055a472c33d2870b8} | 0 ...42725355b15bd308323956312b7cf1123e6c12fd09 | Bin 77920 -> 0 bytes ...d6938b537f243a1fbebbc4b1cb0b51ea31a17a8f11 | 15 - ...81aaf1e06c1ea757dfccd3c76a1891ea5f31e621ec | 242 - ...acf09fca03c5a9287f4cf3f0a719dc88dea4e62bdc | 55 - ...4a1b744c968cfcf7ca549b63ac1e6c8346df10b016 | Bin 29136 -> 0 bytes ...133d6a4467ba2e132e561bc1ab86f013a83b4a9ea} | 0 ...c4c0829b7d5b282d8f0ef7c81b1916bf0bd82afaf4 | 129 - ...b5067f49a26fb2e18c2f6d001d5896640bd43c5024 | Bin 7911 -> 0 bytes ...0571547ab041d24a247d79ff95a36cc72b11234145 | Bin 85 -> 0 bytes ...6e98bbe45f1305f72f75528cf23aa6231fb6824028 | 9 - ...c0bc3f34d8229e6f470d54b89af83a2d5c384b47ad | Bin 526 -> 0 bytes ...b9995076e8db730d02af55b136156b9f35853cfad} | 0 ...a790d14702d8139ef590a8a1362e7bbbe4a2f8a1c6 | 13 - ...0d33b004a4a71909a6132bfa5425d47ab866ffe3a} | 0 ...3d61aedbceb80602c64a211859fe35061422a38ab4 | 239 - ...5688867a57dd83b66bbf37774cab27663a510f462d | Bin 5440 -> 0 bytes ...aee43d2a7f16400bcdf372b19a0dedf0072f36592d | Bin 76 -> 0 bytes ...3c8a0d1b05d32072a70b0ee1c7f957feef3bb47a8f | 12 - ...503a009702f8afe3b971b3d6675822d6e535fdfb57 | 954 --- ...f7c9060bfccb12ce25c7c165c21ed3cf959762fe01 | 64 - ...3547993ae2fd44bccc96ecf85ca1437536095c1a9} | 0 ...fdf1799b8b6e893dd32f10d34c1892e9fc312a2423 | 25 - ...7a27e90d796b645616e10a24f7222c5d92b791efc} | 0 ...856e5ff0b085d972f91a54b7a846b1bc206291b12} | 0 ...cbe47823ae49689365ea42091abaf1ef79561e3f70 | 239 - ...8844a59c85451538ee4b24f398081665093c1468eb | 20 - ...1795cb65129b2941b37c9081fc8ab995968b75b9f1 | 157 - ...634af78dcf760950ad16f742271751f0c1bdef4a86 | 10 - ...4b61321f51199af39da5b71a7fbf0d559318a6cfa} | 0 ...d51867da03b25aaa0fa0d9acc85180de8b0162bbdc | 125 - ...563cd59013477d8e5304837b325d1050173458d5f0 | 614 -- ...d58799891f77c6980942b77ed9360db1e23866e87} | 0 ...772d0aa587063cd1258e7ea28403daf7d980f556cd | 10 - ...bed3fffe9b1426f58c8c8dffdb3d62574db2e32bda | Bin 2306 -> 0 bytes ...ec697d36ff5a057dae8367357a66c91727e795d97} | 0 ...6f61d1c648a6e955f35a7bcaed93f6a846bd5b7c90 | Bin 4696 -> 0 bytes ...0db1bcfd5863c79c0e29a5de9b9e760f887814d033 | Bin 3233 -> 0 bytes ...713124bbe5b18967ea4185a0da0a7aec27367ea170 | 59 - ...20bfb65278cae7031ed045f0cb40a43865e9e22166 | 888 -- ...d36b5ae7ed9876ce270d50c38b614424d69a729d7e | 53 - ...4d84f05c30cb651dada3c5d6bce267871a1e7a6a16 | 1713 ---- ...3f2880fa3e7ec7f03c72d710feddaca4cd02d48b80 | 31 - ...055de9fd5ea8655e21fa2d3752ccb8a7121e68afc1 | Bin 479 -> 0 bytes ...10cd7b3073f75cf94a41d66eb6e2b9d814de2a08f6 | Bin 1483 -> 0 bytes ...5180665789c02ca4b8af65865ce8f736d4e3b70f85 | Bin 2840 -> 0 bytes ...567f5b80060e74ad25db4d79fa4cae387437d5542a | 97 - ...04bb1c0cec78837d39bbb2d0a501e010e2cda8e8a9 | 32 - ...be4b0d7dc30bb5f274db3cba7cd4f52ea926b36421 | Bin 130 -> 0 bytes ...6e32b9a92bb6c874af18897c991fb2f495ef02bcda | 53 - ...730c71bb22704f3949136d9d90a1a4c8cedff8fcf} | 0 ...9fd27e1d76e0cea4d78413d8717a02227551de4926 | 13 - ...7bd5d3459fad14969a8557df08eac92b654441414c | Bin 6641 -> 0 bytes ...83206fe93afd2f36c523a84f47ed7c5e1167773b83 | 10 - ...f11495ec432cdb5fb61e09888fd1b011d676dfa3e4 | 18 - ...98319106a18721f8131118816a4c7de610fa74d91d | Bin 1375 -> 0 bytes ...0a123a127fbbaae053fb602c547b52e914577990eb | Bin 82 -> 0 bytes ...7254612e055d703ede1a7742e4c1dce198f141668a | Bin 2423 -> 0 bytes ...90558de450e64e7406948d51ee417d853196d7bb22 | Bin 16464 -> 0 bytes ...d4965a1ce5cc5bd414f4fcb26f9a0b5800f7432c60 | 44 - ...d7fd589b993685b514259f29c899424edb1443dee} | 0 ...828b3238cfef50043e60556092305243dc6d0698e6 | Bin 16059 -> 0 bytes ...9ee10381b2c7f60f45b5dc9531224eb00557a6c0fe | Bin 763 -> 0 bytes ...a191ff54fbcafb013dffb592bd240e9c4c47cfee43 | Bin 9629 -> 0 bytes ...bb618726df6bb811e4f80d8fb11ce60b5ec9a680c9 | Bin 3619 -> 0 bytes ...8c86ae661f5f4bf4679e5706b672975fc04b40cd2c | 22 + ...7b9f31952376589c2a9b27891115fb5193c9a3a3f7 | Bin 14217 -> 0 bytes ...5bab13a5e7433b8a2acc86fd04111c1d1d8cdc6ed} | 0 ...3e7fa2cc6f9e229823bc372cc6bca41664b06df33f | 13 - ...868ffc0f48710f354e3731324a89b04b5b605e562} | 0 ...c815f46c5900085e836ff8f796e49e85ef18f3fa9a | Bin 1258 -> 0 bytes ...f138afec1cd27e0b9f6fb89f27c5b21db5dfef92c9 | Bin 960 -> 0 bytes ...73882af8743725ebf142ea09a98480d413ee3a22ea | Bin 2638 -> 0 bytes ...8322789cd2f1ec8f9867c802212ff20bf708cf4896 | Bin 698 -> 0 bytes ...13bc15f1b2e98ef426c7a61cddd9b7c2a245ef8ed9 | 376 - ...028fd3b69cf7c29863df18469f0f948889fc62c21e | 17 - ...02f202605dcbe0b559013deb6820cf9a4db031a80a | Bin 346 -> 0 bytes ...cdf3358022f6f2848cd2acdaa3c50cd42dc8167277 | 10 - ...c3b837eae98459d2c72dfaa08af6d9427718a54a21 | 97 - ...7b47e754a1e5369dd25fee995c3fb44c1dc855f7d9 | Bin 2318 -> 0 bytes ...d7fbedb7df6e2a883b96dae5c2892a035fd112f91e | Bin 1045 -> 0 bytes ...bf6737ef7aa8695ee3a24689e4553d09bd974e520b | 2890 ------- ...5e1ebe67c0d26b6d68ef43335294bd2a72cd9e8e7} | 0 ...929ddda79025a2c89412874feb0c2b2ad83915acb8 | Bin 288 -> 0 bytes ...1f99512ce788b38da12ca4f1ad68aab2595bbfb037 | 13 - ...29578527dfe7cd9524b048fee4af3768e6d44b7f5} | 0 ...653b2d1004453cd5c75d4499cd0ac1596d7b17ae03 | 456 - ...edb4eca8b103aab58c3ba9a6b3fbd601d034d90cae | 12 - ...5ff5f3b098021f6d707d52c7f0a7c854185add00df | 290 - ...35aed0e4c8713a7390808bd40c9093b395a91e12f} | 0 ...44261914da5cc2b4a2953a12a9efec5da157f7046a | 17 - ...174971280fb41f1157fd8e1607279197265184bb31 | 33 - ...3b32526d7362d33778b20d413ee83dab1c7e917501 | 6 - ...270a8b11e41892cf13faadb3bb93030dc62e23ec18 | Bin 51602 -> 0 bytes ...aa809fd0ea6bd658dffb251068f7b222fd81c32fe} | 0 ...dddba5afd1cccad5ea3aca847f96460542d4dc2cd} | 0 ...4a12826a879f18be01d860d2d1985fbdc0649749b} | 0 ...9a7738bbc7609845febabd59575bd14e7b499c8c49 | 1201 --- ...7e78ab8811c3dd4c75a41ed72c557ec4b7853b002} | 0 ...5a130e1c1ec4555ce875bc770c39bad5998ebdff0a | Bin 191 -> 0 bytes ...bd09acd139f5306a911b51fbc7b4f71c96cf585e4c | 10 - ...d74f4dfc9ab9ec714c529e66b42747522dae14c65} | 0 ...f0d4ffab2478af62c5b3d28c43e5048e0bc06c5172 | 4965 ----------- ...2ac7718240e8ec9d2bbda091d5f1c36f90d6faa8e0 | 537 -- ...8f7e343fbd4c7b6e540a5ec51a501c7c4a10e42df9 | 10 - ...7c498d3c279b582c2a6992eb0e9f006ea95601692} | 0 ...bd68be449109f66c44a810f40da526119d11834d87 | Bin 0 -> 137554 bytes ...33638653f77140d7b02de24f248031c6660ffaa3a3 | 91 - ...ecddda61fc9650387d26f69b6271934a2e15f77e4} | 263 +- ...a17dd712f499af08510650ef551c6e3373c4ad2ccd | Bin 8286 -> 0 bytes ...8517fd7c400733e7413f3d86d9b285deffbead6a4c | 38 - ...de14aae50f5c02c946cd1384a19877237be27393a8 | 59 - ...72d133bdae214e997d1cf3c9a3cf27fa9b7f5be7f4 | Bin 6210 -> 0 bytes ...dad65bea2d00226cb19ffd90f01369a293d5a4732e | 736 -- ...8f9f22640371bcfd10a38bc01bd17194cc676d5ed} | 0 ...a063e21e2fd72c647b303f586c675cdafb96ea7237 | Bin 1592 -> 0 bytes ...dc8adff8423db17dda6940dfbc002f0e30a1f7a023 | 10 - ...467144eb0ca410d0a6d3576781922ac6d144c1b20c | 318 - ...f301c720061356343b5d3ffa09c0ad2e99837340a7 | 118 - ...2d84ec4d4cbb4a77d3d4a6d8d6a3d54fc6f8ae2e8c | 31 - ...80ab39c994fb781ecb6349466492a3c7cdd887128} | 0 ...2a235720b2b46ff69e5ea5ced53f22a9589f299de9 | 589 -- ...5f3fa6339501f7a2e64e11a13e3243eac406883342 | 4007 --------- ...0903767bb80e48ad4d605a3fe833045da2f955ddb3 | Bin 11570 -> 0 bytes ...cc1660ea3db71b4e96b1d31548bd545bf849fbd839 | 83 - ...43bec37280003b522aefe6d7084cd286e6df9b1871 | 7 - ...62a9670b3e6d4f095703c428a09090b1babb730a9} | 0 ...4086966e71a8aec8d3b5ee15eb63efabf7f1e62e3d | 115 - ...14510bfcb312a7ba7d260c0014886d21dce94700e3 | Bin 639 -> 0 bytes ...969d16d662817a6beecc8959ab9e7dde08eae92b3} | 0 ...929e8f82152ebb7ef3370d98ae312611ba488bb02} | 0 ...3191b3761eaeef14ed9900e1bbe7f6c14d4b793c0b | 16 - ...ee1c17158929e228553d38744797b8005b601aa322 | Bin 889 -> 0 bytes ...1ce48e9ddaf2766b6c6b55ef921e0abc53096c06e} | 0 ...2365b535a6c6836500bb809ffbdde53ffb1f833fda | 162 - ...b2699d016ec275935f9a130257cd7ed6df392d2b4} | 0 ...95f6fee975afadf9e703088302fce06b6a6410b0ce | 273 - ...a60dd59ede576019185c62f40dc69170fe979bf3ae | Bin 13683 -> 0 bytes ...04d23a622d5b1baac4db0453b91e5c5f01ec354953 | 10 - ...0b8e168381a621e38e3755897edcbb1edde7cec3a8 | 749 -- ...8fc3a9b85693f622f3325ef4788f8b7e17b8d7d2d4 | 15 - ...305e7337cee7588bb1636af3a06c9881ddbbbc1b9} | 0 ...521d4c1ee1f22e62d7821df0d2659954efc358df08 | 1139 --- ...dada89ab98786cbd0a505540d1d98ee972ffa06af0 | 16 - ...f60f3e7eeb5eac489a080dd715f8ab245fa8d07a57 | 122 - ...b07b580a2e920d76f2eb4a65c2da21214271c78f3} | 0 ...7f00aecf30fbb8fbe79f8f57eebeb2f50fbb41a27} | 0 ...2d9d0e533e6c598b98e763608fecd11d306649d6e8 | 141 - ...679f4f4c5db19a09f9c0a71c6d3af13ca0046afb1c | 2092 ----- ...43d8edfb09dec0ba12270c633d76190981fcf6eaf5 | 58 - ...2d3391172efe413f938f85d680ac99400abdc21f19 | 598 -- ...3dc552ab8751f2df025fa5c6223dcbfe7ecb53163a | 522 -- ...1b4e55a1d081b3c548a5c7a60fc9879e1ffbf31577 | 8 - ...32353937fad4e99cdd88930e599e1a09aa8bbbe0ef | Bin 1696 -> 0 bytes ...9f623549d233bfb8eb4a87dc2c97e97228d609077} | 0 ...47f708b2d8c45212cffd8cdbf7bf35ac6c83238e85 | Bin 16248 -> 0 bytes ...a09c024f8004134f2bbf12c220c2968404dca27d3b | 2408 ------ ...226f3b0ecfcc7c4524af491db18882fc68b2c5bb8} | 0 ...91d6cd52bba8da8308677e3beb0bc651ba55ce651c | 13 - ...7559abe59dc4db15cd9b9323eebeaf119518e3636} | 0 ...c466c7fbb02d8e57ec209301c4b542ec08aa325312 | 15 - ...ff32f5c224e3ecb2d32351722b3db63756828de035 | 18 - ...9b72154c4e397520aae739f08b5f4bdfcc2c97ec06 | Bin 5882 -> 0 bytes ...ec7209c3946d83d4b903898e4a17822b350b598351 | Bin 16086 -> 0 bytes ...787025c5fd3e35fa38e00635f8301946dd19c049a7 | 792 -- ...2e5995b927fbac198b802acb988d6b90fe298e0c8} | 0 ...a8009ff886ed1b69b80f2bc88cd99cfbc04a2f9f4a | 18 - ...970d2ced3c780fb73942769c15b1a088eb8087c77a | 17 - ...9d425b308172cc3ca026eda19f47f6b4f4f25e9cab | Bin 81 -> 0 bytes ...528f43868c4b59d1c6dcef20e2f6f906c6ebb50144 | Bin 3811 -> 0 bytes ...af1d21c5f064fe0bebb5f2649f386f142978833081 | Bin 19576 -> 0 bytes ...e2bb81cae3c817e286c7600483a9867641b6babf17 | Bin 1758 -> 0 bytes ...0f74d7cce619003f8117ae36a4958a57e0f022180} | 0 ...38779d5d30627a3895132f0b650bd28d33aedf68e6 | 879 -- ...ea70843bca8da8b3a96b31e3a8799182fcde2ff0c} | 0 ...fcb1adc95b25fa4583fc0f4a899b3055f437cfe718 | 124 - ...3b14737f8eaad2ef9fcd88ebae457b0c943ba4ab06 | 15 - ...68bbd10a60615fffbaadad54e3fbc7b4c1a5b898ec | 211 - ...1cded2027ef5b2895003898a72d4b60fbcb78aa0f8 | 321 - ...725fdc9e7bd7c49dcaf69b7e8fac0532c2595036cb | 1954 ----- ...04f8d407dedcee4ade397d07cf98ec8a2eb5734c78 | 141 - ...42bab4dac0f0f3d4a3b63eab71122ded96e1d4168} | 0 ...526d439d4ea177d61506ea0180bdba21840903edc8 | 17 - ...99017f994f59522fc311edf7f81bea3f8f6d0e891} | 0 ...fd0046f50256d64e02659d725252458a10158773e1 | 315 - ...ac8a504d9062797ad1a026b25e30bc22a9b78b82ec | 16 - ...bd7d0004cbd269c95c040a7b5dbdcf2ff1fd00e0f3 | 113 - ...584bd4961eb138021df42a36a52c90ef2323834236 | 237 - ...a35b3885ffc717c6d5ef91556d36a3e1645072de8} | 0 ...c6ba637d0116a1f71ae211b8526f4644ae143fc074 | 10 - ...c5c6b6fa81f00c57a19cd4acd870e5809fc8af2bef | Bin 355 -> 0 bytes ...d7848b4b9d8c4ac1338eb3d5d74b485bc3c77e273} | 0 ...e0432bb61ed3c9d97742f78f9547542f77198d9ea} | 0 ...bb7adb7f5594fb6c527ac72dccb9ae5ec601ed685a | 1621 ---- ...1ced0bbef945a7810bc7e27227cae8daf4944c1513 | 2961 ------- ...0804045f275f4eb76dee0d23133495424849d69a5f | Bin 1975 -> 0 bytes ...5b364bb915e81606d474f82c40b611c25aa4ad5fc} | 0 ...54ae966baf2e5643e2ef098d9f85423da46f861cdf | 12 - ...3771747e40b3abdd9beeee40b798005cff1d3fc3b} | 0 ...b15e014e6cbd301a92fe67d3b653306c8cdfb7d24b | Bin 19548 -> 0 bytes ...cc8f6f7a45e17cf7f3d2e8525b4e3e008a4d854f49 | Bin 2798 -> 0 bytes ...dbe9a9b829dcc4a9d7cfc2f2ab7d769cb14f2b5a92 | 70 - ...da8d8d6a0f7c369dd69992dee6d79b0327e5afe2a0 | 25 - ...c7d1b4ab0f11727f50dec4e7b6f0ac3b103f8c193} | 0 ...d75c9255708d1d89457d377f0b1039dd4ea114384b | 25 - ...84ab56fb7cabcb5b02c4e33c7146489784c9cf0d43 | 442 - ...f9104b99765b0bbb326dcd0c599b85ea184882fa87 | 33 - ...58d3068edd6b4e8dd50754f6c346b1a51a39c64036 | Bin 5947 -> 0 bytes ...adf687f98c387ca43fae6f748f8618845542cdb77e | 14 - ...8bec1fbb1fd802ff350d7028152305d0fa7f575493 | 212 - ...23857c5ff11590b16682a614806d68df85ed97eab5 | 10 - ...12fa890b7845d860a0b6990e3c7748d327d864bb45 | 13 - ...d6e2718c5198acff625ba3f9fa84e2627faedd0330 | 18 - ...dcea320035d68e4b0ca4cbe65766e062cb5542fd2} | 0 ...a7558f806d6cb7499530bf34c859ea5e4b74c11e01 | 8 - ...46055fb0375793909d042236f3445cc839fbee73d1 | Bin 3442 -> 0 bytes ...e06aa7a31d2c1ff4510f36ddd002d1a4dbe6e6ed3} | 34 - .../page-config/config.json | 270 +- .../page-config/resource.json | 4 +- .../session-props/props.json | 15 +- .../session-props/resource.json | 4 +- .../autStand/Alarms/RealTime/resource.json | 6 +- .../autStand/Alarms/RealTime/thumbnail.png | Bin 131471 -> 137554 bytes .../views/autStand/Alarms/RealTime/view.json | 49 +- .../Docked_Views/Docked-West/resource.json | 4 +- .../Docked_Views/Docked-West/thumbnail.png | Bin 6296 -> 6423 bytes .../Docked_Views/Docked-West/view.json | 4 +- .../Docked_Views/Header/resource.json | 4 +- .../Docked_Views/Header/thumbnail.png | Bin 994 -> 994 bytes .../autStand/Equipment/Beacon/resource.json | 6 +- .../autStand/Equipment/Camera/resource.json | 6 +- .../CommandControlAlarms/resource.json | 17 + .../CommandControlAlarms/thumbnail.png | Bin 0 -> 1723 bytes .../CommandControlAlarms/view.json | 434 + .../CommandControlStatus/resource.json | 17 + .../CommandControlStatus/thumbnail.png | Bin 0 -> 730 bytes .../CommandControlStatus/view.json | 227 + .../ControllerStatus/resource.json | 17 + .../ControllerStatus/thumbnail.png | Bin 0 -> 9598 bytes .../ControllerStatus/view.json | 789 ++ .../autStand/Equipment/DPM/resource.json | 6 +- .../autStand/Equipment/EPC/resource.json | 6 +- .../autStand/Equipment/Encoder/resource.json | 6 +- .../autStand/Equipment/Field_IO/resource.json | 6 +- .../autStand/Equipment/JAM/resource.json | 17 + .../autStand/Equipment/JAM/thumbnail.png | Bin 0 -> 74 bytes .../views/autStand/Equipment/JAM/view.json | 76 + .../Equipment/JR_Button/resource.json | 6 +- .../autStand/Equipment/MCM/resource.json | 6 +- .../autStand/Equipment/Photoeye/resource.json | 6 +- .../Equipment/Photoeye_Long (1)/resource.json | 6 +- .../Equipment/Photoeye_Long/resource.json | 6 +- .../Equipment/ProxSwitch/resource.json | 4 +- .../Equipment/SS_Button/resource.json | 6 +- .../Equipment/Safety_IO/resource.json | 6 +- .../autStand/Equipment/Solenoid/resource.json | 4 +- .../autStand/Equipment/VFD/resource.json | 6 +- .../autStand/Overview/Home/resource.json | 17 + .../autStand/Overview/Home/thumbnail.png | Bin 0 -> 23856 bytes .../views/autStand/Overview/Home/view.json | 172 + .../autStand/Visualisation/home_page/code.py | 92 + .../Visualisation/home_page}/resource.json | 6 +- .../messaging/message_handler/code.py | 22 + .../messaging/message_handler/resource.json | 17 + .../navigation/additional_view/code.py | 20 + .../navigation/additional_view/resource.json | 17 + .../navigation/alarm_navigation/code.py | 79 + .../navigation/alarm_navigation/resource.json | 17 + .../navigation/amzl_navigation/code.py | 65 + .../navigation/amzl_navigation/resource.json | 17 + .../navigation/basic_navigation/code.py | 15 + .../navigation/basic_navigation/resource.json | 17 + .../navigation/navigate_to_page/code.py | 50 + .../navigation/navigate_to_page/resource.json | 17 + .../autStand/navigation/search/code.py | 44 + .../autStand/navigation/search/resource.json | 17 + .../autStand/navigation/show_alarms/code.py | 34 + .../navigation/show_alarms/resource.json | 17 + .../messaging/message_handler/code.py | 6 - conversion-report.txt | 4 + tags/tags.json | 245 + 735 files changed, 3355 insertions(+), 116018 deletions(-) delete mode 100644 .resources/00276b452ad88e8bbb3776f04e82811a0bfe7bd37604c3c6801a68eaeb19b32d delete mode 100644 .resources/009d94b374d84986a3bdf278351c3d259e8a3f3867a06a6c30df2e1f9f0700a6 delete mode 100644 .resources/00b62315c05b34f40ade876ea14f716ec1fb50e22fa0515db6e3366c20ae7068 delete mode 100644 .resources/00f60a83e2fe3bc807d2fd9fce69c178f7740266154654747a71aaa497ba1399 delete mode 100644 .resources/01164920447b55b29a41a69f28599e7251b87fab5ad055ad0fe3f82458c89b86 delete mode 100644 .resources/0134d978a570e3b54749547c91385dfed47ad2b86d44359c9a75c9764ac32668 delete mode 100644 .resources/0183e85e6ee68585657007ad841e997f309fbc2f404073daa7cccfd291c2a63f delete mode 100644 .resources/02187c1c19d6889a1a360304ce98b7c8c479edeb78b151dcd256052fa8c7f444 rename .resources/{90e1a7e8a2bdfd7b5a2da587caa0aced79e1efe6c17491d9956ec2e818c295a5 => 022e2093bdab7bdc66a1e958fd607022040a693a2a552ece5d1c753bdf6efd13} (100%) rename .resources/{500b626f5ed076b29e713901f08dcef0bd2dc7609e3f586cfcdb8ddc59e24194 => 027250ad8f63fb511f7d189b9cfcf40294346b4e165ef0a9fd4449710562b0f5} (95%) delete mode 100644 .resources/02cb668aaedf8c82084c2c51b4a4da3d8099ec4a38276319db7bfce4d1207e51 delete mode 100644 .resources/03260fae4aa83c88c44978e50a5f6f512675c18db9bf4f0dcebe40a6e39d8a05 rename .resources/{acca8218e1c400799179b2ed77fa77e6028e96edb15dcd0c0a5f3894543acb79 => 03e8f167273e32572bc6b9b46cb895a710fdef4aa2d825decbe09d894371fd5b} (100%) rename .resources/{ba97e729ade12f034567945816b0f5696db9e991f66cda6c47246f968e753a76 => 046e3cbac024588f2665518a4ab13f21fd8d861fe742ebe9681e4d59ba7f2cb0} (100%) delete mode 100644 .resources/048b9d6f6dae3a7848b1380a9692849f880d7aa72bae7ceaf2159ed28ed4b549 delete mode 100644 .resources/052504a30734263045a46059e7a132b114bbef7e4361f9503a999077ae692e55 delete mode 100644 .resources/0535b312c088817f276f0c3b5d1e34a042dcb46e4df16d53b62968f80df0de4e create mode 100644 .resources/0580527e460388079875e9625c1d4bb8aa80641c1678d39c1d7c7c7247b3e375 delete mode 100644 .resources/07dcc692063a0befd5eb0c59d53446731ffa7a17183cb086f9ac9982cfba8b66 delete mode 100644 .resources/0820d1217c0b9c6ab22fa3b5420467f7cc315cacd36068f6d65a039ffbe4b73b rename .resources/{705fffe572e94d3b66facd70cd810acb8d7c028f1cc8954608f093dd30d2e690 => 0865ef309d55fb20dd0a06260fa1b4daa12167e0c18aa2c4a0a789a25b1a08cd} (100%) delete mode 100644 .resources/09adb19400954bd09991f3348d362cf67c54399fc8c963ee70a55fcdfe22e31f rename .resources/{a93f5f936834a4fa049164f36d464962a64a35cd351c112aae33d773670b5fd0 => 0a2a5d834eba58171eedcde6f538a13ea764e239158dec673546c103eebf1c91} (100%) delete mode 100644 .resources/0a52710fcd592f57679c84e2600cc34b825c0271e61f9ce05fba4d6fe03d8754 rename .resources/{b16f9fceb3b0ad4ea2e2200b3a1afc1966b02e981ae8cd7f67717d6b8cdf650a => 0a5d74d24eb3e5eaf871e634c2c78b4276461102acb661148fb651017b7f4522} (100%) delete mode 100644 .resources/0a6feaac6d7eb35e3b375f89ae3a39d8fd3834c9a0320bdb5957c8446fd5abe8 delete mode 100644 .resources/0a861bbdc1d108aebaf6e7a81373a3e230a37c4f57871ef0dc93f8ddeb273bf4 delete mode 100644 .resources/0ad7bb1e58f29b464bca7868777571c670253aba153eed8bffdaae47b7ebcc8f delete mode 100644 .resources/0aea4824e5cd19abe3a17ab3099ac602fb60c1cd1cec739931d7bbb511312fc1 delete mode 100644 .resources/0b1d8660788bcc32b982c0ddfea2de4793f935610e6c548fb24be2e3fbfe0941 delete mode 100644 .resources/0b69a2600dea457666fc3df215032010eeadae6fec9009a7bcc3a854b45edf25 rename .resources/{71a8a7ea25c5ad61a2e06954e085c9b636c8fe821d36ff43f477264994679657 => 0b7c87852d3ac99223c6753079cae4b0f679ccade43f1cca1e608252f7ccbc8b} (100%) delete mode 100644 .resources/0c1c0eb0675a8ab2f17eb260cba242a705556a7e4499e22faf30bb53bb74808e rename .resources/{772966dae1d640456f6283a5d0100e07d832763b9c1d7120353a9b20f3d1cf88 => 0c38217e8a4aa370cead2b12d66517284d67801a6416308819de4602be8d2ba6} (98%) delete mode 100644 .resources/0d4ee3b7a19f8d643b9530956a1c2cbbb06a3816427bdb531284beff98a09acc delete mode 100644 .resources/0d51aa88cae4f132cdfb9f66c0a1478d0d803248f1b6d983393ce03dcb01a7ea delete mode 100644 .resources/0ddac48378f283681a639cb7d401f99f5ce5d2906c1af92b9d91ed64a3dbda40 delete mode 100644 .resources/0e574a657f2409006a0fc869305665e36f595223ea7ff96608daaa03368da2f2 delete mode 100644 .resources/0e9ab817a96b6ec0c8940f1861f7f1ac60656608b4362c7cb419c3d4f82ade1f delete mode 100644 .resources/0f09a1c681c1a4dddc3a6cabd6785bec04020561461a59aeda2db1a0baad3f1a delete mode 100644 .resources/0fe2fc7f40e4f17cdb0d420d7466c3bab885e672235ce78f561e4157a1439a58 delete mode 100644 .resources/1052c29ea79f8b882bb8881dbb23e42c14261bd32c0a9db27ed91812963bc1a5 delete mode 100644 .resources/10b767f01c3b4985afa06588039ab802c36de9b84402d48014958e672b1529b6 rename .resources/{411ba47f7042ca60dc04640cd9d96b9c43074ca411dcd67f1208435a6193b605 => 10d4f54146bdacd06dd03b13b3895d395b9a5ee0ad28910ab0b517249d7d0810} (100%) rename .resources/{7b4c67848614a1a726d471d09f3cb03e669a206fecb6500c2969085be84ef009 => 111ac37d5f683081824a80660f94042572ea4bceb532ff8e888e4fdccf14877a} (87%) delete mode 100644 .resources/11561e03dca08ddf7c4ef661297e67ac67227b56dbd5e73c67cecd48bcb96000 rename .resources/{03f8a92400972fcaf1792faf14630edc4299e78d81858b612471836a19d3ee4e => 11b4baeb7327b8b75bbd31bbc78b4d55f75d9c4c068f250388f79bfb35251b62} (99%) delete mode 100644 .resources/122c66324444d7ce62936fdbb2dfde57e592465e03d7773f8f89cb0a09ce7cce rename .resources/{f5c7d6d9dedd960c75c5f78f191911381d242b86230f57116236d3a87c671567 => 123d20f32f57a210b71500e29c63e382aac6ff17837e56e4065b13e5bb7129ff} (100%) delete mode 100644 .resources/137a0da36cfacc8c9a50f4ebef05afc46d5019aef5b77589490ca7c871e99652 rename .resources/{7da35e44cdfbe36b99db3f4e1405e216faf77fc25291f755bf14675f5f4e13cb => 141f15a57a877e2872b56d64caa7debd07ba6a7eb223d2d53c1a57d8585b63de} (100%) delete mode 100644 .resources/1465dfc35eeca4a3cb56056a611f7b6baed60b5b9d8553bd0808b44297079c78 rename .resources/{8a02920de72f09dc4937fa677e55e7c52abbe7fb22dd41c3b0beb4d319ae8531 => 149e9f9e33f22b629422fa384b560302e98abe255ef7edeb581025e6d6f43394} (100%) delete mode 100644 .resources/151e528248ba17ca0c9cd96ce60d90081d65c00fee21bdbddb4be815e58eff60 delete mode 100644 .resources/152199220149c5f31bb4f3d44f5d8a96541821bf7208314603bee82d8e4b8def delete mode 100644 .resources/1538919e673a761a99dc0521bf40a939dd6ad8ea54e6697d3267067eb824d92b rename .resources/{0b4c4105e4ff5eb8f0982516545b5f11c70fa3357e09775c9c238fc5beaae0fc => 155351763a5201544b69fb7f786b4268394232c26400e7ba5401ef20831a91c7} (100%) rename .resources/{4a58fc403e4309943c9f3c28fa2a84e50171fd18826ea87d9153d7dc5a158489 => 15b72720823fdf3b9923caf996f9784a24b260e7e7acf89266155429507be87a} (100%) rename .resources/{1c7fcc983f6b1a38968b96385c1e30ea14c542cebb8876cc04ff84b0bbd9277c => 15c1f59536b0c735f9231f33ec023f6fb859f59815243ba5406fe8ca04689068} (100%) create mode 100644 .resources/15d643f89303857476d01028b874194aa3c8e3a103a047be5ab62fc67ab9df30 delete mode 100644 .resources/1614efcbad61995bb509615c83846d2a3e013363cae29ca950967b99f03de455 delete mode 100644 .resources/167df3439ee0148e23fa671e94951546d38a2d7a1bbf926f654d40eae04b1d81 rename .resources/{ffc1c82b587805627e4782807179e800c9758638db415ac263026e41b787200e => 16c5f142e5d4dcf0b9aecf974f54eac3a516da14f4d5e2ac1faae245dce2e6dc} (100%) delete mode 100644 .resources/177a0272af923fa7e7fa7701d00f3caf4de99b41a3bad9c5d2ca30216a949cd2 delete mode 100644 .resources/177e0e6092ac44ad006bd80c8ca3c0fc32e5e3ce948df9d2cd1b007f20d5e1e4 delete mode 100644 .resources/17c1dba97b78de5118cd23cdbf6505df1f28e0ad200bfae187bf30883770718c delete mode 100644 .resources/1932d93db06dafb897e58aaba88c039dcea355af488ac4d9fb78483af170fa12 delete mode 100644 .resources/195eb53a0e2f257e2e188f3c6cfcd6138df5348142e712702171f3879b051b46 rename .resources/{97993fcee030bfded67e60df2fa2085c86a8607e863c3a135fe704a3200a975b => 196ac9b748b1c529d69ed63c66aac9696bb262c9376f37d34d96f120c028c464} (100%) delete mode 100644 .resources/19896732ef5bfec6b66c2bf77bed7e7d663b1a4ccaf5e90cde9adb29628db978 delete mode 100644 .resources/198f845103a434e6dba0e9276a5047344b3b31546689040ff3f8a84392b64ac1 rename .resources/{3a35acfa9e3e4d8e8c9da90224b6b3feef7430df525ad7611a2739f7674530f8 => 19a725216aca8eeb8198fec7af95533da7996985b106c98930560fc01e13d88a} (91%) delete mode 100644 .resources/19ba939e2f91ae90c461ec3ea69832c650cd91477c99d99eb337cd22d6cdcfb3 delete mode 100644 .resources/19d296ee653c0fab02d0b597ccf8b8cbaf012713b03162e8f269c67396950c16 delete mode 100644 .resources/1ad9c030b8179563f769ebdac64bf86a162921ecb250289a814a4213ded8f62b rename .resources/{92101ee2393bfc9d3e909dfddbe2a057141a3731e8bdad98cb6f7baca4e75710 => 1b05fe73f219f95148344b1938949f814b9d1e3f489be03715ba3b8ab954a95f} (100%) rename .resources/{6cb0fffe58e80c1293e231d874b1d075d97ed2e2cf69d9cfd1ea35e07c614bd3 => 1b072a1b2221b0c659d2787a43c9ee3638062669b0d78ee7efd60d7808b88e53} (100%) delete mode 100644 .resources/1b4d421c3b5a24cbe0caf0d861f49dfccc96285adda54db2497cd2ab782d6790 delete mode 100644 .resources/1b719cb3c5b45816ca926f8b0d174ae53bc55b606be129375796e6442e9093e2 delete mode 100644 .resources/1b81e69a531a3218a8a59cfeab33c6a780299f98ea55aa9f4e4d25bfbad2cbcd delete mode 100644 .resources/1bda805a1b67779c5c7e5ff61fbdd446ed2a6e9e4e3b3fd7f76a47cc28b53678 delete mode 100644 .resources/1bf63fad93f00737752de17bd313d1870f0b975b7e2b6bd6da5fc77785e10351 rename .resources/{4c63132939e26c872227bfe003dcce3ee9745229948bc9735cf2fd68699325c5 => 1c60f3c5bbacecf5a3a1bcd89ec0be5300834e22fefc44bc3f9cc864472145a7} (100%) delete mode 100644 .resources/1c7f99a2221fe67e8e5cd79044efc26106e7a78673442af7648fcebd998c4760 rename .resources/{91b085f2312338ac733eb7bfc6d50c01e264608a6c5ff984340c563d0bc9c050 => 1d49f77e3c8198613ec2ac1fb0a750ef5a51c33a9c047e2c31989febcd86b55a} (100%) delete mode 100644 .resources/1db38cccc2519d7b3f2c4e62bb291a44d8e2d924470b0f144c977f1841b2a18e delete mode 100644 .resources/1f2827309f2cb97b10972d8e73097c7ec219deae544e056f817ca5f1eee94dfa delete mode 100644 .resources/1fe0b11da4da6f0b055261743cb8f25143f70a52bb33b7fc01f479efafd67fcb delete mode 100644 .resources/20aa9c33506c4c8d78aeb28e561624897c05ef88c5ff7ae4a5c4e6ba0a3b304b delete mode 100644 .resources/20e0575fbafeaef7662e00b48b13ae7db4e1945c8fde26e954e1d0d02bec9f03 delete mode 100644 .resources/213125de096733342ed881581300f924297e172d8a4eb0427daf42acfd68aeb7 delete mode 100644 .resources/242d8618460f6fc43f9d69d277c8e779dd004d68796ca6f28a1eb105fcd233be rename .resources/{364193b15734cade964f967cf9872d66d9e546a2c32036bb3639957148106eee => 24804177d38652dd4ab36c1c6489a3864fb56e99468aeb63da75e05e8efceab1} (100%) create mode 100644 .resources/24f1b423bc1324e05dcae5bbcdd7d1606bbb70f7eef24a3dc8469380e66a6b1c rename .resources/{33e38e31c06ab47bda8719d20b1d255b2e694163998beb85dd9242013876ed2d => 25393b2524c7ce171ae6ced4712d02313db51de934d1e288c1bfd67662ade104} (100%) rename .resources/{f0015451dad4b527df7e0a07eb03ada2cabd04fd10678b6881f4721cdb9d3ce4 => 258841e007717ba9e8bc63b978d58c9c0e4e0e562fdb455719e5961dd4274641} (100%) delete mode 100644 .resources/25cdfaaca649208f832f55b92243ef5edd48bcd7f83b9fc3fa1b8b027d7454bf delete mode 100644 .resources/26063c4e08258204c1ec59a5896f903994aba3c695918db9ea7a94d69ccf6d4e delete mode 100644 .resources/260ed597d3f78ec26e781c2b2bd1c603852129b2f8b45af523df7ac893302ef1 delete mode 100644 .resources/262b06638f085a6151dddd61824f0693b5a11eaca8aabe8c9115a952571eee2e delete mode 100644 .resources/263b906fccd007b4b048570c4aa0d507fa2f3cf8d9e1f8eb195bca42d4e85656 delete mode 100644 .resources/2847f08b2b80dc258b1bb72f2f53d7af7572343be9cd99d90e44ad759f3a1f6f rename .resources/{74297a3640945253238a4943129c4c78538d2d9dae0646e20ff4146b95e11b2b => 288504aa8031dbc8b37e85c56e524f4bc8f5bb32c3ca891710cc944e2a067f77} (100%) rename .resources/{ebd6dbc53f5acdf82848c038a497ca536a40d9844d5913f7a637a04f0dc500c5 => 29d915f5155422f52578d867a430bad286a463bc9cd5bd168f6e42037b9b1e07} (100%) delete mode 100644 .resources/2a19a25a64c851effe6d5c33641ba79ef9d9e249c5f58048157d69e6042e135e rename .resources/{f889ee7cacc0779143df9fb9f00af37319993a742ddee41cb7b6367d781db68b => 2a19d90bffb40b76de91680fdd32c8e0b239afa5fe5191db0c0d9c8f68253c80} (100%) delete mode 100644 .resources/2b0b6c5efb309a94c5da52dc4a2215ae477e8dbc15a4985d642488ae86e9c69c rename .resources/{85dcaf293bb041ebc2d5db2fab6d173616dff992ff54c31497aa69e966211537 => 2b265ba03c10f492f1cf0b19669e1f06d0014efec357c07475fedb0aca8d8d81} (100%) create mode 100644 .resources/2b76e4e642e8d05db73b2aa30ee9fe5fbbec7618e71ac335a25db44b97206797 delete mode 100644 .resources/2b989e78f3ffd164532fece9b4676bb03b6396c1327c1870f54555d201ab6fae delete mode 100644 .resources/2c006c49770242336979445b8a6741286a5b73fe06d387e0381a030b8c5b4b01 rename .resources/{91901cd5c301d85a2a257aad204948142e304208e7d7ba52625bb7780b20f515 => 2c66b085abfedbe5599a8cd851a57c10e96dd3c3e39169238d2e2a0a73f9bb1f} (100%) delete mode 100644 .resources/2c89483c5f76190ab4d4163bc28456ff05a922cbb558d075926996a26e4ec700 delete mode 100644 .resources/2c94edf7061e5b297aa0714dd9f9e28dd88e97d54429adeaf894865af575be24 delete mode 100644 .resources/2c97e466a8cd44a288776604d47eca298fa85b995a3268494fa0b4984c19d5dd rename .resources/{36b7446ef4a44cd81917f233a17a61e25f376dc47fa490d72813ac6fe7b38749 => 2d3b2d494d25ce00f7667b5636bd39b2c6cc4cac43bd87d749418bfc3ae2e505} (98%) delete mode 100644 .resources/2dce4a096b81b40dd54456f48202133fa9c3f823e30c459f3b05f5ed777ace74 delete mode 100644 .resources/2e0a7027da14008fb36b845c31ea4999a5a10a4081461691a1cd82f67bffb20a rename .resources/{154b0e8bf79400d07bf8524ff3e12535110e08218c5b3f69c9e2fafd97d12613 => 2e2027674c9e7c06983b48a598cb8e68268813b613fc4aba667b74d0bc58fb52} (100%) delete mode 100644 .resources/2e50f8fb0336530aedd48f8333d47af6701bf0fa96d8513dfb09b3b292c45fde delete mode 100644 .resources/2e7e2b7993724d732f068745b0537c0b6f3d16e13a0930ca7ed0906b4bd1ce2f delete mode 100644 .resources/2e93b6b30c3e2c67ff6082e8d8f30d89f52b7b2b5fe5272fae6def3dd71d9e17 rename .resources/{adf0ac5013f5ac37a5a4bb60af029718db870daa7732b406a13d4af1ffc50803 => 2e9fe0fca4bcb81aec83741d77a3126324567079a851eb137d7309c502e17397} (100%) delete mode 100644 .resources/2ef5f763acb8d1bd35f2979f17978bfa7e897172d394fd45a5bb994c9c9b40af rename .resources/{033be0db13196638c2cb3de8676f9b35c9d8cc5db02df2c17b70df2176f8cb62 => 2efa273527bc1ae3a7ad206b1f26eb8a799772d262eabb2fd054fd8e199fcb44} (100%) rename .resources/{5593f2958a61a05067ab6e6526161ce569c98fd7b556d8bbe0a4e17315235df4 => 2f046feda9636f45396d96fab5c5f2c7dee2c451f354f6348fd6dcc59d321712} (100%) rename .resources/{1ee31a16d64ab499e7c22b9e8070a5ec8373e88ab5acf45acff62d1222161252 => 2f7ee065aeaf672ce5dcb815bec94766a5b95011d70cc293389637f9ada5ccbc} (100%) delete mode 100644 .resources/2f8afdf9d477ee8eb16e0199d1f84299e191926516fc629088604855aaf6d0bc delete mode 100644 .resources/2fc578154dc75587ee67175b3e34ae64bde67cac8b9fe6b5013edc2e82b455c7 delete mode 100644 .resources/30e60a1f29e5eb731f4b029c87def51a28ae73bd00b9f3c8ff83877207471706 delete mode 100644 .resources/31627bde69748a05969238531c0ad99a9fa74615a5f7a807df3a4cd5d2212664 rename .resources/{d8c26cb01561b9f42a3dccdcd86a75e41b9038c85964064d22def576b1cbe62e => 32a12f47da8a903a869a7954f970417a21e89b56e345f5039a956b3f67114fd1} (100%) delete mode 100644 .resources/3408f8ccafc66777c77e95f777a22f2e26a1702c5d1bc49014bbbda28943d1bd delete mode 100644 .resources/34c0afbdb63996e0afa6c932d79f3cf793c912a34793879ee14c48fd584d3280 delete mode 100644 .resources/352143f21df0e0e65f6f555bbb5635f6f336af773a53700c0b0014cbba93df5a delete mode 100644 .resources/3537ec6879c1de30431c1341c72e00f5e1123f89bfb9390deb33629dd573d912 delete mode 100644 .resources/35cffa072b17e425d62556869fe80fc108194e29b84a3767eaa627448455df17 delete mode 100644 .resources/3636db4cad4badec00cd68e8decfc5c86b145fe0e2fa9c712ecf35b91264887a delete mode 100644 .resources/36433042eba4acf126937b375649db27da760f38ce88ebc9df2967f076eea120 delete mode 100644 .resources/368edf2a78c2ad63c7f0175936963107ac957c07ba232e997acb3b4fd27b9e88 delete mode 100644 .resources/36d92f40c5c6eff7577a81480b8eadd90860b49c56fb0f7590afc49aa17393da delete mode 100644 .resources/37a7d1233edb09c145eca934bae3bbff792155ad737b1cfd79751dfbd587d44f delete mode 100644 .resources/384b6ee1f479f30c79bb5bf62ae927c9b1095ce47f030040fe476e0971866a13 rename .resources/{ea2fc76be191f3f727f8f8a9e30b50b7d108f4a176907fabfa78371057855fe9 => 3905c1f2dc97b1311376c59a79af6740d410fb85d3a787dd9057ba7ec53b9539} (100%) delete mode 100644 .resources/39894db65f3500383e10733797a576857335a3824135fdabf1bc2c41d4453196 delete mode 100644 .resources/398cca2ef669bfc5f34baf63ce93b2b89e70927aa2e1616b72beba7e95067d26 delete mode 100644 .resources/39b3032ecaffbea2fc48bc8282aa270d8f5f2acd423064204a3e5f53bd0746fb delete mode 100644 .resources/3a4fd0c68bd7045db81874d3865b454b3d3d2df13bb18fe63a7b99ea0a79051e create mode 100644 .resources/3a5269376a7f4a66814b74c9b6bcb3ff0d0abe76ee063479a76fe416f45b356b delete mode 100644 .resources/3acff1612db07039270c416e4cc2c621dd06d047755af01ce340013ab77532a0 rename .resources/{08f423dbd2a5d042bfc1ec54fb5d2d94014da4f6ff51cada1bf8a5a5f703c1c2 => 3ade38d44f73740826722fb87008c71adbdac11f2c1f1fccafbceac536bc3d74} (100%) rename .resources/{c5ab9ee61bf118667a9d5f0dd3140cfcb6910bfa45cfab6d8dad6cd232d4dfc2 => 3b72f56b56ec265caad23e9d684e6ad4d1832c1feb705151746957f7e7d2546c} (100%) delete mode 100644 .resources/3ba06b5147b3c343195af2dfea51f18e3e14fe4af4525757c01fc6fc1d68a328 rename .resources/{611241c949942b0947d48cc10a734acee7b1e4e5dbd70caf97cf96a2d410d2f6 => 3c9c4d12f3228f821e9df8902c86db688bdca80d2ef3713fe0c739a7b781de52} (100%) delete mode 100644 .resources/3cff4b44ffcadb301c9d675c8556fb5b92898fd85fa671c90260372ea1242fb7 rename .resources/{667720a493e52c5f439c2cd8bbc30f0674e31f76d35a0ba72c27e228ed6dc39a => 3d85d26f9949d17c2b9b17c80f62449d075c18ef37b04e24f3722c46b0a1ab7d} (100%) delete mode 100644 .resources/3e059e667f2e8524ec24a21f64d25c6cb42d34ed9d0f276a35a81ced6e89f468 delete mode 100644 .resources/3e656d39c0c4750acaf59892323a4363513e281ec104f127a1750dc7513e18fa delete mode 100644 .resources/3f0bdb77711bbb96a579e36b291df3c5c09439bcfc6c6bbe5d88bf90e0271e83 delete mode 100644 .resources/3f26209daf6701ddc1a20d82a4ad25882654d0b986785a901737dda1a60d5ecb delete mode 100644 .resources/3ff3629bce864627fc88714de83e2922482ccb172c03865e000e2e1ea90c6a86 rename .resources/{bd20af4c0366c26f97408e6ea0ae03adefa91dcabf623966ac64f9fce738b517 => 409f36066cc41b03036fd841c896e97f27339e138573c6764b225210983dbdb2} (100%) delete mode 100644 .resources/411226983512d9afc841b4fbd5a5cb76f72e6e96f069a5ca12afbc4f8ee640d4 rename .resources/{0c8d6468597c70598785fa9e88a35fefe11eb8940df242b1a89d985446a85293 => 4147487b97a00b3340d2e2dd7084de0499295fe5a8c42da87bcfe4656a89eeb9} (100%) delete mode 100644 .resources/41d630adf5d9b6a7de227ea4a84f6074b2935cf89990682111c12cde244fa1f5 delete mode 100644 .resources/41e4948cdb5cbf9d4cfe3c67d9928e68da77677fded40c1041365032c445fbbe delete mode 100644 .resources/42306e544640e2308599574305e6833e2d18efadb0bfcd1a390baf9f4de4d3a1 delete mode 100644 .resources/4316dc0dba99c7fa1cb9c0eccbfb54659cbc263cb54cbbad874dd7a6d364a016 delete mode 100644 .resources/4335092f698e1cfc4b7fd1be0740d64239b2a7c1b2afbfb3b1fbaed0b6af4df2 rename .resources/{dfa3eadc240ba19b08c88e72b63ac13bf9ab6347002353d5ca3697c11e9dcd4c => 43e7c6ec5e11ecaa814512947f55057e1c686afde527057bcbe7d8c5c2ba0263} (100%) delete mode 100644 .resources/43ea278e19f3e4b3d493d82765b55577f65eaf4692b594e79fca840fdfaaee0e delete mode 100644 .resources/440b9ad9ff3faa61f06af4b78d5ad07807f6b9344a86695b10b218a589be2be4 rename .resources/{f385374e676c4e422577ad1838ac8f328ec15b2f79fd33a01268df464a49620c => 44cf239ff315cadbe18e7ad784d926779f63c7412e8703b6160b2be950911f44} (100%) delete mode 100644 .resources/453c65f0b5d3cd65f58b96a961ec0349e509e931dddb56229ef921fb7a63e754 rename .resources/{5b585ea33fef589a2830aad1e057c82a073f79851e14671c67552a0f17908de2 => 456c8724ec959427d7bcafc052cf8093103cd5c0266d4c17dd96a7773b16128e} (100%) delete mode 100644 .resources/45a6d91eb77e7b648f4ce08ad22d66b0b19f223d29cf889cb5f7238fa863281b delete mode 100644 .resources/46644d07a912b1e90730d28b170a8e2c644db7cd75c205dba0b18f21c9e8f7b7 delete mode 100644 .resources/4694a97be7d4b2734be4d6942d0a356730fc988cbf40daadba567acf0cf938fc delete mode 100644 .resources/46e76e6eb817205795da4d47f6ac371d5def12e0c083087e9596dd7b100a1db3 rename .resources/{1f0fb39dc4c68df142462fb91320d574d11c0b6c73c92f81199f761551190e36 => 470ce79936502f2f945420f80f25aa07214a3773faffc5fb20a987ec6e32f879} (100%) delete mode 100644 .resources/4792b13a09d5055dbbc62c7b7463b5cdc38bcfc85774255add664036d5ce81bf rename .resources/{9ec6bdfae8e0b1a697f9647af06fbe850b39b628460da2aae2e78e488a8dabd0 => 47a074a79c8bad72e59d8dd6b13135dd8a068d0d78286fe8045265b13a5e82d8} (100%) delete mode 100644 .resources/47ae0c1270a89ae0282dbb59610ae6a63b7d321358aa1f7f02d8d97993e05489 delete mode 100644 .resources/47e98a03144926118cf8071178e6886746bcbf10caaa79bed33ea5a29e1c4374 rename .resources/{1a329c69292917258760e5a3280a8a1db07df5d45c404f47601338f8c508056e => 494cb3ac46fb59b87fdad459d4dafadf523f877f85db4489aef9f84449dbe4a0} (100%) delete mode 100644 .resources/49505662ccaaa240c24a887c94525a9141e7ebc4f3eb2567ad0091e9f9ed2b96 delete mode 100644 .resources/4a29f3458eef7f029d41ac61f14f2623da2b6091b1a57f216d46cdf61a1f3631 rename .resources/{c7533aa323183d002951ebd750919823e00c7413f2968c4fe8cbc8be50212faf => 4a7b0afbfc6dc0278b94d2cefb7ed4943274d69c3446ffcf04ebbcb2ba695e2e} (100%) delete mode 100644 .resources/4b25235af00bb225517aa3c56494a3700c1ce2f8c412639afb87714569a46e49 delete mode 100644 .resources/4c34cb9a8a0202a015be4c15db7bcfbf1eeb63937d9c66ee3541a364058e1425 delete mode 100644 .resources/4d9afac10bb3b45d5ee1c0b0be7345c74d9005a24c5975c24fc5f663dd3adfcc delete mode 100644 .resources/4df02f1fb7db08ddfcc4366f0add3820b272b42e4c2cf8646b210f5b675fbb1e rename .resources/{b7effdac67ca357786b1049a675a73e056b455b8e44629a848dd17242d861a12 => 4f3b7635e3ca327393d0f8d21c939c662163a11fafe019f82037cc8ee3b10a85} (100%) rename .resources/{83954b641123422402b827885a133b24e9490ed337d82b7c1a533fdea53566ca => 4fbb69ea85f006e7d0648f91e07d00d0ad324d98e0b10700328928faee3a76a8} (100%) delete mode 100644 .resources/4fbccd91efe628f5b313869eae211be270bc15602ec39ca899abe412684e6045 delete mode 100644 .resources/5030286bc0b81cebeb6f8e4b6979dbe218f14f722b2f6baf31e3387756a57398 delete mode 100644 .resources/5052d1850fc26f01d1a8a3fcf474a4f44cb30afb46800dfa29b1d4660656c3a2 delete mode 100644 .resources/50bf8b6daadad9fdfb5e808f2b2214ae0619e23218fff89cec15f48f40d7617a rename .resources/{8678466b26143106c96e56d1f9d68598ca1e3132051e8d5309985b969328376a => 50da77899551cab19d8f6e8d4ac0743a1f25a3b3a79c78e5474dfb452cb1c861} (100%) delete mode 100644 .resources/513b898cfdcc1f551c09434b506e6ce179fff793d5c82e14e545d0c4852a9bae delete mode 100644 .resources/5162186e11d45aae74139083ecf93e840129171fa74efc5aea33a12d87c3fe62 delete mode 100644 .resources/516b0625993a0b994ec11ce209c1aee306e4c17aa622d2d4d46399514da51512 delete mode 100644 .resources/523a4c1021c0fd72faccc6600b4b1d008f89291dbe1ce8507b489ed73c6a197c delete mode 100644 .resources/528692b263a2ec9227a864505244830a53b9b73f17f99ea1a08087cb49473be3 rename .resources/{fa497581698c2d52a3c50439f6250ad5435565a3c953b7946c90a7f46049c79d => 52c94ff315f93f8e443d975953dfe4ce1d62f8529ec9fe361980e756b18e7334} (100%) delete mode 100644 .resources/530ef3e7e77ec13d7430f285fdc2d0be557bf823d518815936158daa124e650e delete mode 100644 .resources/53ac1c3c0849f7161f19d3ffeb7f2782821faa543fc462847888be59efd5617f delete mode 100644 .resources/5484acd4ab5925be25ea889bc545876f26f9afbcc106ba26df87b0e668444354 delete mode 100644 .resources/54b5787a747e8fb977497d38594bed722438e8b801286a1a316cca3ed54d8dba delete mode 100644 .resources/54dabdc0ca1d0007c4b6d79d88371196e2b20f530fa658c8ef754a41f46bb911 delete mode 100644 .resources/54f62522b29cc0e8a97f99cf9f28cf8fb33bdcff66048a94c1bc3238e8a5c7cf delete mode 100644 .resources/5542fb404969e47ceb59807bf87e2dc1fdfb59562ad3d93824d2b47588110929 delete mode 100644 .resources/5673ab7b1b208867263287e584caf95c2e3d3a7ace0421b8f7f7d1791af7da8e rename .resources/{b6b7779ff87d95dd0bcb3dbdc43fd50133879b6ea74dd83228c9386be6cd97a8 => 56a71b625d7d2361556b62952d58efa0294bd712b246e940a29ad8c5e1b2fecb} (100%) delete mode 100644 .resources/56b546caca9f84304055491db4a4af349bb0478961750c28f442148d9c35a2ea rename .resources/{48a0c1796b779145f6c66a536abf210dd8743426723f42d2abf915167806fd80 => 56c5aee1c4f7eb2c70c1f1aeea88d62457d7b85a601a29b4a0ccea62ce2e1f9b} (93%) rename .resources/{f0db7ed1ae045b12a0f0b1ef1b0f1553e08488f015dc9582af9383e70dcc553d => 5716b142dadbff22362e6ac76328d699050f981ed593563956c6dfe10d52b0e7} (100%) delete mode 100644 .resources/5753827d660cca78b89fded0f476cdfa3286dd1752c8881fcbb22e34afbe5996 delete mode 100644 .resources/57b0e106892d44275973f2ebd292be0ef67afeb87ee8a1e9f2f71b8a2e31b6a9 delete mode 100644 .resources/57d4bd7bfe23e7a7c617912ade5d062ceca91f025bc7aab9edfb6478b29385ae delete mode 100644 .resources/57e6d007f37925a1bf38ea3690df3a74378f27f30142a052cfcc588b1a40ea5a delete mode 100644 .resources/58627d809b8a4e746edc45665396ea381aa4fa506eae95612b710de1968e9351 rename .resources/{fbe40679afdedeeefcad38682aa21984fb1904660a9d87b1a8660301101c3ab4 => 587110b5838c819f0d5ddc19c9fd2f1b65d62e4ffaf986499342231052298575} (100%) delete mode 100644 .resources/59651f404e3765e8c1a704b81a5d82ad8cb69c6c9fa452f44cdf96b827f00a20 delete mode 100644 .resources/5a3ecd2b354639d0994e2a0c4d072c6cfdedd2afaac0ce4be2a45a639ede8156 delete mode 100644 .resources/5a7075fdf894761d85786783a761f5d0eb361be592229b14fa5b2a7a4f90d1f4 delete mode 100644 .resources/5ad6cc2fd86e7d816eb86847bf22ef21d52b828433d9fccaf2bbac94a3125b58 delete mode 100644 .resources/5ae1acbc327b4321906f4ef87248c5b86a29d33ad18913a89058b035e862bf04 delete mode 100644 .resources/5b27154a0015a5986bd8341e6e892e0fdda445dfd8209d4591f50ee7fd906a1d rename .resources/{4f6bca8eddf41a2b6ea9d9932a69a67ae65213f746baca0fdf193f42ec63ffd1 => 5c0b8ba5d0b28ceec7ed23b78ff85adef0d9f50b059ca9b41891bbd8a379a7ba} (100%) delete mode 100644 .resources/5c75e6ead72c92569147b829a576ee3069ffa79ef2f5b556694e650216aede57 delete mode 100644 .resources/5cb8d90b138a33cf3b3a3d2ca9b3ae4aea0e9d89fb8a4173e75d3b7194d578a9 delete mode 100644 .resources/5cfe421d15665ff42d4de5fb2ab4ea0378e50013b52ef41c3ffb925780cecf70 delete mode 100644 .resources/5d5c7717adf6dbfe414d8b707dc9756aa4dd8f80e5d2fd4b013f919efff453da delete mode 100644 .resources/5de543a82de7778ef3062e4d6b9bbc76cab6a3a936305874a52d54af4a4761ad rename .resources/{2ab3d5b7f003202fc6d0fde6964798c50cf486f04c2500fe6769d4ed4dcbbc2a => 5e571f883de68a739937f6800ae01fd262360401361a11dbffaae8fb5eeba26b} (100%) delete mode 100644 .resources/5e95f3c99f8093e5cd6942452c5d5360dce2803b75c4ceb223aa256804873a4f delete mode 100644 .resources/5f2b11038b28a76bcafea278ed2166891bb7641ad62ab7a923d14894c84277ed rename .resources/{f9c5afe5a14f562a89d76521b1fb1cb4f895cf9988ede6782378d3ae01e202bf => 5f4a3cfe3af041d06788c85dcedcbc1fd0f3ea1a979535047e743e3e62a0b3b0} (100%) rename .resources/{cf9af51c92eacc793f514f8af4d62cc8a06475d5e93f89504fd4232b6e014fff => 5f9c5e26e223d4d2edf945b7dc01f22a037eda722b824eecce4506272320029f} (100%) delete mode 100644 .resources/5fac56eed1d202422e45b8b2630629a908fbf4c9580e4ee283e7a3725f54cd6b rename .resources/{f5ac0bff2c10b93ba14ec589523062f8cd845dd57d9b3f623cfa209fa5af7a75 => 5fb1e42bf5129aeccb4da26926c0b70e4b56c69437bccb74bb2263e137a397ce} (100%) delete mode 100644 .resources/5fca4923e398df49b95d8d76e7a622c574bd6f61439271da705cf426300dcf55 delete mode 100644 .resources/60be2844d44bf18b61512134e9d93569e8dcfc2a89432691673ec4a4da1cbef8 delete mode 100644 .resources/6157681d400022dce581cae1bf04f03ee4d74ad988d01de57716049d726e4489 rename .resources/{a79faa046a880e9c14ad02e5c366dc1b0379d5471778f2994bfe25390a44bb20 => 61e4e07b1f986477258d3c1f4a36e6b0747b1f8cb0410babfac9c42d2fdafc5f} (100%) delete mode 100644 .resources/6238d218991c5564bc32e27358c83091b8cd61c3eae9ddcc5e0c1ba8490b5b27 delete mode 100644 .resources/6275b2388dac0e11ba8c6c6714e883580a6a581969356e1178836e4bc9346ca0 delete mode 100644 .resources/62786b9ef025a8c72579a4ff341914cc171f31014885541f5db300075c9c5ccd rename .resources/{1bf5509ff9f56ef8e2ddd341055dc9b429a726ac1afe28787387ae507c9cc5f2 => 62cc6cdc2d7897d71feb063b37cf251aec41c0d98773bc363cee8472289b585e} (100%) delete mode 100644 .resources/62e6f2edbe4b8d40dced323bcac29968ec44224507c3ca221f4953644553ee17 rename .resources/{30b006a99b107309e6c4b4a134033ed8d3a5663a870c99b7b0e3c82fa85e3dee => 62efb1f48e586116d84848b83073819477606d8ea797f852dbdee7cdd76da9a7} (100%) rename .resources/{870e8f48f258149c5068cd4349152538c3dfe3da4208e609477938ec63bf0b6f => 6392d400ded08524b28549be1e8e22a0e0b18669f95834f8ff4edaa95018b83a} (100%) rename .resources/{74461b7a30648c4aafcee20130144f2e863ff6cde27f6ad424988a9abdde570f => 6472f4db9735d7db44ef8597941835de336366d513021894e8d2eacd430ea4b0} (100%) delete mode 100644 .resources/64f8eb3ba87fe70b25640f2bb29980b334f05aa81b03880429a48becf4068047 delete mode 100644 .resources/6547187772d7c4629b90421e1653dad1fdf0dc7f451e07ab6f749bd4a8ed8ffc delete mode 100644 .resources/65578b7f14acfd34a27330950e7286040263b84873ca817f187eaa8d4ca8dd81 rename .resources/{a6b3b9bd56dd1574d604643af47f4a3767101b7070115c07286415626941c776 => 65d5a60dc4ef39313bfabea1271c383106c929e049d808b957adfc75ffea4404} (100%) rename .resources/{8b6677220f15f17011d1ef7205b33438070aac7194a5239ebe4b330e6f619f6f => 662024dfbbdf6406ce36fd260071e7afca2baed675d8b0f816b9e12809a76b33} (100%) delete mode 100644 .resources/6679c190779588f2a19507e4d8ad4411018af7b3ed7f90b9186afe6b859ec4d6 delete mode 100644 .resources/66aac02fef23d2e59e7dcc86df5b7b6807739b5f02dd66336aecd7e928dcd0b3 delete mode 100644 .resources/676ca8e799840fcd849fdf41501535af0bfcc170eccb89d086675276073a102b delete mode 100644 .resources/6803fb95647d0a9e5d1f0bc7c816414f970f89a19faae573b4559816d8e671c0 rename .resources/{92b369398011257ba691fe170beb6192141a097ad71c6d64b5c55ea9192c10dd => 68fbbfc3906b8aed5d0342c4cf070e34aac1e99d7679ba2f049b6ce0bd228013} (100%) delete mode 100644 .resources/6921d042301c62671f4a67dc11b676d8529e1977d41a696da9b0118bfac319c2 delete mode 100644 .resources/692c0d4c8dfa9c195450f32b5ee6eba17ccfb21c4848ed145e3698e88177449c delete mode 100644 .resources/6935841d3c92cef0035a4cbdfbcace941faf2d17ff7af012e0d53968a1a8862c delete mode 100644 .resources/699ad7ebec961e8a22c65bbc3d84299b59e44ae68d5c674716689e9eb9ee03a0 delete mode 100644 .resources/6a0ca4a6a0e9c255e4277dec7c239680255524f9bd44a728623fb21a5677f666 rename .resources/{4497b6983deade8389dac3797943050d125d8fda589cf4fa76b04a729e1f9c68 => 6a520f6be09c6da25614280abd17ec259b49001488018181079ee9ebb5297d9b} (100%) rename .resources/{1c9b8b5ab6466f22c7c8871420ce8fc5cc227c168cbb71bd1196ac7530a52847 => 6a80714b9813116679556f6c1560e23a689a2f15c0d94b852e8418d5d5d17fae} (92%) delete mode 100644 .resources/6ab3d311e8d3e682b8f8ba2bd78c2d56541faffad4e7c88620e8602c20a83af4 delete mode 100644 .resources/6ac3181f1c02d5555461ef04ce8f35fcaf56e49aab563eb3650269c712809440 delete mode 100644 .resources/6bd560ed0fbeb46406021eb23001d8e3d906c8f82a4f02f48a77f6ddd8389dde delete mode 100644 .resources/6c2898e26509cbbeb0265cf7f9d8f869efcabbbcf2437882ca0c3502eca1e566 delete mode 100644 .resources/6cefd097cab5d8286aa4def76ba9ba26776b818c35e5d966c0e1c244942defe6 delete mode 100644 .resources/6d22e6e9cb94a81ac9ab85f833af4de2affbe25b30ba6ff187296edcbe5e7c2e delete mode 100644 .resources/6d43ab220b19bb5a8df35d57c45a95082b7f86a432be29652cc75cd71f304334 rename .resources/{768b4cda9f182f5770b7b86babe99d04bbe7015c0c1e05013beb7f6e70b6c9ba => 6d7c966d21cf910b09f83bfc63a945aef34c600ea91b7b0b4c7a9497b6e9aebd} (100%) delete mode 100644 .resources/6de0d0e0c6f25a87e8335b5d68f36b272c11c1219d27bd2f0ca1d373bbb03c0f delete mode 100644 .resources/6e38307648f6d8650579c641bd4f72338abb0efdcd9170594380e1e8b706a0ae delete mode 100644 .resources/6e569d26e8ac3bee9b8ff828df8d64b5f228a2f4915d98723e7cef84844a53ac delete mode 100644 .resources/6e95a1b03f0ee05e07a83853f93278ca67514be2b2ece7026e3e0b5438856412 delete mode 100644 .resources/6ea35a8c08e18a2553bc4395f0d9fcb3b83387b2f2591e2b3c583e879433c054 rename .resources/{648259e2fd7974cffc7e7d0b8eebcb0f4dc911a7f867c632bbe7b73500ca8e31 => 702746062984f96672b62f3e694a156f9bbc133918472bb9021221d6b67e31f7} (100%) delete mode 100644 .resources/7153d4bc20aae565e25d3be1f9f0e0af5170a91ee6cfdbb10a4523490cb98b30 create mode 100644 .resources/71e15d9fa793ad6b2c304b2ccec4669af8c5fa9699f1b941090ae45d49881134 rename .resources/{e7e157980a32bd960b0c5e812f4c2c77bf8e78639265490795b092ab5e5de0a9 => 71e2432c2cfda7e515eee9dbcf8f16848b0fe41dfa23584f1c880cd07b48bbe3} (100%) delete mode 100644 .resources/72ed10b3e0268bffd2066a2a8e40e0550a41b4880639d91cc4506fb07295ba8c rename .resources/{ca399c0ae3b2b938adf623a19239f31a14579a6222ef165bfebc18c8bacd44ad => 732b6bdd3fed349a0e95bfc51a962b6a08fa4adb3ec308491ec7c825816895d1} (100%) delete mode 100644 .resources/73627ab98c60fa64e1a95436c83cf94c99ff4f34abe5553970e0842ae90e81bf rename .resources/{a93aab344fb8bb644a9bd22e00f75bc4421285938326f1ede05ad1e9f5c0a0f7 => 736fbf69eff15401616cc65b911611aa979b9362c1db02edbda4cc4a3e531fcb} (100%) delete mode 100644 .resources/73993fb99e53b0b5ccc089465ad76efb0632562d1baf42718194cc92a5788ebd delete mode 100644 .resources/73e1047c2789162b916f5cc2dac9f31f4846066c151905be6edffc31de881161 delete mode 100644 .resources/748c7fc571a832b892511d226bc35f4378becbcca7a04e274ac357571d02c1c2 rename .resources/{532a380dd25ea4b0a449b61c0c076cd4db5dc47816b8c8122595ce987816c242 => 749d23499bb1b47d47712ebcbf1332d3ecb4d0697a8c5546ba74f89d53a82b79} (100%) rename .resources/{1090a14f4bf76c24852474be8fed57ffc2605130ae9620cbc82c0e2ebd5b12ca => 74f67461521183b28dea376ee7b007b1667410f1ecadadbfeb46ff460561df47} (100%) rename .resources/{1ee00106dfa7d921880d88035e6dde13ffa08e00a636a971ee8576348076acea => 74fe002c7e56e551a77ca9d2aa49c9c3dd02e2c4ea6265308a41de1670625ccc} (100%) delete mode 100644 .resources/7736678defdf4234a69c97e6c743dd4927b17da4dda0ad09e209421e8950b9f3 delete mode 100644 .resources/779f3cb4ffd8dd2f67be07af3fbf2095f82391ae87ce1228a8dee248e52ecc40 delete mode 100644 .resources/78026d4435652911b2c260ce5356485873f02c5d475473f3058e88290241817f create mode 100644 .resources/7845be9b07e34020885b58e7561a6bbcf844b6897c4cfce9462fc4e04c1b1583 delete mode 100644 .resources/785fa1dfd1f277c0b2ea55b9a6bed3b41f760fde41381e465afa65fe1b936878 delete mode 100644 .resources/787c2b88bdfe4be914ce79abb2daabc6bc792c4a1f9ba28ad0d5e10611b5653c delete mode 100644 .resources/78985459ef234f12ea5b29539600a3a31de7cd16de13e20001aaf32a84f5b7c9 rename .resources/{3607d10a318e68ff083d3f45cd28780380aa7ba1f70d881e51fd2811103f7b8d => 78e030b4b691b98a7565a843db5887574de6044c0ea1d457166196aabd8c9983} (100%) rename .resources/{ef4de5b26e3500a0117600375bfc01bcb6ea4aa3efa56fd21d5e2b96519f61f8 => 791324ccf4e1f6b0b34f1d276b964a7d4e6dfc121cef4dabe210044ec28e44f8} (100%) rename .resources/{a24941d630f7eca180271fd5eff09fb8f3ab48a521ca712ee841eb13802ff134 => 79f0abe197798d5f7bf7915caca7009f0418ecb5851181bf11691ff6ccccef0e} (100%) delete mode 100644 .resources/7a10fb9ccf924cc33c7d51e86eb88f70a53a23ee2ea00d988889bd067790fe8e delete mode 100644 .resources/7a25e1f739ebced2a733ec7594c2d13c43edcb241318d7834f585a0221650616 delete mode 100644 .resources/7a9e3cd1a83492963b6bf44a672bec0a185acf2a0cdcd1b9dcb806c0ce99f87e rename .resources/{4bb7a708f014976fe79a5ad3b6ebd28e929afc048116ba781b8c37e3c1ac542e => 7ac3a5f33d6b1c835edc451321d36c2270460619e79c178ad4beafdd4d1466b5} (100%) rename .resources/{ec46ffac3b3268d6c4e8b8acfca761c9a5084756255e83a70012f8ca5bf501fb => 7b7918a32768df3fc448db717f8d543cfb9bb2597470bbfcaece7aaee12b0a11} (100%) rename .resources/{f09b685f5c9f59662568053172aa79a2f29c5136df1d254d8d38a4c0e97ecf49 => 7bd29453975bfed24bc9e14322c6c9655529671f607a367f32658287daa10c70} (100%) delete mode 100644 .resources/7be40358447c1a8169c8c7ab28fd55f78be7739d80ed6ef1fd17477c38563e1b delete mode 100644 .resources/7c6c75b017bba3b1b4bc2b430f42d17f3db8c9dc35c48cb536a19af7eec985af rename .resources/{1227c867b49c2793120ae1ff87144eb52a53edff5a7cc1e5c2b274a47e2f7bf1 => 7da962572652174a006c57d810e0cd60176fdaf2e9d863bda21915c02b3e48d3} (100%) delete mode 100644 .resources/7fde3dfb2a36114aa94a185cc4f111e0e64fee6d2aabaca621f1d520bdaa4acb delete mode 100644 .resources/80150cb0c87a25674a7d3e13bf80ca6bf61e2ca1bdf3e1f079f651f072c8674c rename .resources/{0b9b5049a23018e9bfd77b785c3024961174539a9cca6e4885cda2a800b579b8 => 8064dac2dc13ea378cea3caea1a9d497a013c96bac28e683310ef280ca2ad259} (100%) delete mode 100644 .resources/81258d694c32c41d2bcdbd7ad5d7ea0d2deefdd19d08c22303227a14b0bcd991 delete mode 100644 .resources/812d385dc599f63df010182c72312f80638770932dd323008da579858ffe6e0a rename .resources/{c4709e622726af46127d81e07fd43d6cbb98af3f68665f6ea9a2a0fe6f5af9c9 => 82166b732b22267372415fe58cf56bf0d36b6044a00742988ba800915ea229e9} (100%) delete mode 100644 .resources/822cf5b011ce96fb68b9c34d6c2ebb389068d8dc806e6fef6d58831c2a3c3cbd delete mode 100644 .resources/823dd3df6ad06f3c40e24c5dbdea549c20beb780620fd22b29b8152230ecced9 delete mode 100644 .resources/82815b27440b0df7cb2fe9b9e8e25914dfc1afe26d2df69c87d2ff58487b98a8 rename .resources/{58097c2e651035d05ad6a6eb0351610696e59a3d8511dcb2668d3692a76d17dd => 8289d53f6973860f4eb7cc4ba85612d27c54d948e569f0cc672e4165930defa6} (100%) delete mode 100644 .resources/82e72e5e496b13bd0f1d6b3fabb1fee3fa66b8149c080f4ac64e9b1db06769b2 rename .resources/{2aa45c925d1540add4f97d03cfa422cc657e485c103308ebde93c5777cbc601b => 837beb65e7424f2c754583a7117d493c2a99a13c0a5b9c2d6e0da63e07fc33b5} (100%) rename .resources/{8b82600d78191710b68f8158ee71f445607dfdb887c5dcc5bbbead0ba6fcdce3 => 83b4657c8295a2443f713ccc6b551b4cc228b190e08402653aba6fdfd485bfce} (100%) rename .resources/{8244947656e8acf50d9b29843355f648631c00454c391597a1137dc7316bbcd9 => 83bf3cce4346b5d6e22e9bb646007b1601eaab8f5409ddf29dcff09e1a37fd26} (100%) delete mode 100644 .resources/83e82a468013cfc574b6be90ca897405c346f0b845d3e802cc12e887b62c57c1 rename .resources/{3632e060a65bfddd35694bf00d376e40c0c00ad0e44c4aba6b6e004253206646 => 8429ef232c42199e85ea750b6f02b4539cc2a82886935406b025c81ef83d7f6e} (100%) delete mode 100644 .resources/851f82225012db4f556cbf4fd734f5b8348b53b135539b8ddfd8ff91a7c8cacf delete mode 100644 .resources/8553640c597f96faefb40de44e4030043a1dd54e87b57029016e8d9abab0261f delete mode 100644 .resources/85aa2d5c3327a13387c080effd0e0aaa6fa9df87ecf64a2ebd21019c9dcc8c3d delete mode 100644 .resources/85c837a67a8a7c1456a80746633ebf8f54836fe9ed5c79c8d02a4361796deafd delete mode 100644 .resources/8630c2177b5a4b326ec33d1b59c08c3852026421afe61d0ed1fe4f9ac07b0ff5 rename .resources/{14affe727ae97148e81ec2fb5fcca26cc63be296456610bcaa2fe4f55e41fba0 => 865db9c8f73f22586f2c47cba4adbf58461a2727affe7c98f00c1b26320b9e51} (100%) rename .resources/{2c03f6b8eb69e732cac1df82798fa38774513410f65a0c2bb135d892bf702604 => 8702fb229ffbe7360ce2e54d241332e6eb14e7d77df242c955bcab26ad9f84b7} (100%) delete mode 100644 .resources/870f0edb8f5dbe3c4dc8d684f736bfbf3fd7220f4a82569d1236a5c1eef2a378 delete mode 100644 .resources/876a6785ab5250eb585fe56f33aa494d51c846748dd988283d27a2a4085b6a15 delete mode 100644 .resources/8886857da609b2f59d2dc58c4a6719d731fe0b135da52a308835b228134092dd delete mode 100644 .resources/88e68da036cc8aab6f9e41d44ddf59ef68c1e036fa26b5f1ba0ca9271caa1818 rename .resources/{002fd181e2877b84ff3c24ecb335a49e12f4c737511af7d53ce6ad7c871e7c63 => 893636a3101d99e74481180593af33f20cab7e631679d4e45ad1f3de9bf5a675} (100%) rename .resources/{3891073f41b98b0a7df5cc190fe43a417849e99b1bfc5582d541edfcaf61f7d8 => 893dc3573a4189ee14b686352e5905314d28379bab017aadbab6a387114ad92e} (100%) rename .resources/{1078a52b2f40e5f77975551afccec492cb020c4679b3e2fb01c8978ffe63b882 => 8a208fa315c527b7ba78c9c87e3e0eddb618cd24cff60906e3c30f76f0a1b66e} (100%) delete mode 100644 .resources/8a2958cf308a7d990963a0d025f77aee946328b6b51712c04d47c36528c75e50 delete mode 100644 .resources/8a5ab382e796684fab6bdf4c6448991e851d1e74d3d52bdbe9ca4768840decb1 delete mode 100644 .resources/8a658d068335d157e22079642005af8cfe736090b51a3f5cdec47cec7c08433a delete mode 100644 .resources/8aae3840073026d66066fbf70a44a1e7c37c5237434de6209e6222bf983a0737 delete mode 100644 .resources/8ab729fcd08d787f6a533d4f750d4abc3fe886d415105a3c9519538a9f43756f delete mode 100644 .resources/8b125a822c763a245002eea532177825bcec2e4498f9a3f05feb781104e9d007 delete mode 100644 .resources/8ba85138cd7c6a71c314fac99844edb968101b58c450c6c4970816dd3a948cac delete mode 100644 .resources/8bd60bb54965a6111dbefc089da47fe8491011245eb680403376916ebf47a127 delete mode 100644 .resources/8bea784f50bb4437c055984057e55bc3f4e724ff0aa34057746047c1bbd0af7a rename .resources/{39d32fe2ac87a4b44b2c6017ed039f9b497a2c933cc536ab3e50a60995a11a02 => 8c4fa4d2d27533a3b893366c969dce1e94fe4da39e1614588ef021da38833a7a} (100%) delete mode 100644 .resources/8cdb6d9bf5f22917271d647f00ff55dca81825dc0da06d1c036e7d406e2999ae delete mode 100644 .resources/8d01cda77df88c95698c41d7e08e7ad20e05a583df05fe3b75a433be41accc27 delete mode 100644 .resources/8d28df51a673a7c0a62b1fb45f60fc36b378b7a29917de93a897ca30110943b6 delete mode 100644 .resources/8d7c8e8040bacc6a0dc4af95e8f183dcf710217eac98a5227b99bef912aa8b12 delete mode 100644 .resources/8d97d23b3bce1a26352ea99aaf5a561700173898c145e0aae0635a296f99898f delete mode 100644 .resources/8dff6417a71477446a40b2516b6ccabb3d5ae8d0dc51d839caa8d623b3c95ec3 delete mode 100644 .resources/8ec1c8fbc6b5d117579c88bb0a804bed7240e2c7b45d981cfd117c66c4dae55b delete mode 100644 .resources/8effb167218f26e74a929f3e301855236d83e69331ec41d8aad46d491fd2929c delete mode 100644 .resources/8fb2113ee9d23c697336c0a3077bbae0558fcc761c89b7744470de74d9095e3d delete mode 100644 .resources/8ff4a6e970ede141cf3a2137d5e700a3bf1c6fe51e5cb88d2cbfa329023133d9 delete mode 100644 .resources/903530ae489ebea6761bebb12b9ea824a40af797a8445c1e9ecc0b27e706e06c rename .resources/{5f837255b7e9fb126a2e4c68a52398069696a6c0e8ead893380dd400723c823e => 9086cc4d9aeb4ff189179e274851b8fe6c04c767fc43c9fdb399ade693be4002} (100%) delete mode 100644 .resources/90dcbec4de8071d4c9eb6bbd513e6f95c51800ca96f93a926577e34558d94276 rename .resources/{79bfc5cb4706727a6607e4f365504dfa56c3f37453cd0d4e37157b45a75a8fbc => 91509f68f1cdfb3853d02174b93e080e643ffb1ad558f65130de13e98e0311ef} (100%) delete mode 100644 .resources/921ac5445c33c09c9c7f479ad3cf2e849981e9346f6ed885f0957bb7ec011d46 delete mode 100644 .resources/925a744fce42dae114b0db401f8adda71c59cc978fda676a58a64fa41ba140f4 delete mode 100644 .resources/9290002febffeda88778c0893139c9a5a0f0dc0f9b7985bec9b2a6479bb35ef2 rename .resources/{49555dadf99ea0675e21a7839fd3497b27b3c6a37dd6229f329ea14959ca5271 => 92ad66c43be2e728944ed6d02ad7bc9b3722f76d115e0f8fcd1f6d1d3d4d2889} (100%) rename .resources/{dc1926fae837c12ba22fa2e7029c5e4bc6a1ceb14926e118ba36c811c53469c5 => 92d8628a3fd0fe659e1559ff280e80674cddc47789ad62e3c2fd6a6bb8fe12fc} (100%) delete mode 100644 .resources/935a310f74086fd7c3548680f806a3402734655a0e064b3cebda913ff8364070 delete mode 100644 .resources/93beaffbfc1910f53620ad71eb4b5c6f650b6452dfef54399351538445cc74c8 delete mode 100644 .resources/93fce84c7f4d53b8a690b3bc02eb40b8c43bd39bb802488874dbf38b4771a639 delete mode 100644 .resources/9407afcdaea73c9e16ac478625a4faf8419bd2c71803576d0a824d6d7c71782f rename .resources/{7c802f29c4cf43370b1fa8ab9aa5d7deab38ad828a42a0f465b2edbaee0dd9ba => 949cc16ac75166d8838018687fc9da90b62084b298a6fb48f7d3903494246ebf} (100%) delete mode 100644 .resources/94cec8ae5398ec0042bb93b2a1149d58c062bfce137b4a7a0e2572a9104ac0c2 rename .resources/{9ed6362b1442637be978b156e8f734d6ff8dabccd5a874f2c589d17969645c6f => 955c0b1837d9ab08cdd32defcc716857c16c6fb694f824ffa291ce1b9baeae30} (100%) delete mode 100644 .resources/95655fc2b37b2ac79ac732a1d99aae7242c38362aed2482e32807b0d613d7744 delete mode 100644 .resources/959623a68e9df96fa0dfbc84814a058e21ce2d4e8b1cf64cb4dc16f0db134f7c create mode 100644 .resources/95f3bc87a9f9182e5fdfb6092445d75acd47dcc8545b8104866158f62c9bcee4 delete mode 100644 .resources/964888ee1b00527627e9634b80f5375f88f5444e68fa45fe365b5e9cf3565ea8 delete mode 100644 .resources/968d9ca07c41d80bc54d2b481f0087fa8846f205828549d76104b56cf040963d delete mode 100644 .resources/970e44b330610bfd6e2e52e4726e89d0b0d43413177120ef9760a1b0a9d015a2 delete mode 100644 .resources/9711bb102b302258e40c8b5c525f013d021eb5d729d117120f311cb86c50595d delete mode 100644 .resources/97586e8c8ebde3aa2d87c31b191778a022ab54509ec059cca51424cdfdfa2c31 delete mode 100644 .resources/984f655f871ede2bf498edbc6ea8aee5b4d50f802c3e2315dc3ef45834b52ab6 delete mode 100644 .resources/98849b6d71af7964add1f30024e145f3a2848529a85068445ea7f275b47077fb delete mode 100644 .resources/98ae8f1136beee40ff5186478a4653521c220e7d2953b9901c94cefbb9bddbe0 delete mode 100644 .resources/9900c4193e023ede2ddb7838572711192d433f702ad82db0dfecd4c6e55d1253 rename .resources/{5c9d6f1491a70d5e06938cc25d0f0a13961a8a10a14b4d8896eb8b789d7a8179 => 990716c5751d7de2a791929d05ce947c92824c0e9dcb29a06f275a0dc9d229a2} (100%) delete mode 100644 .resources/9a7e7f577e8c98d52d993df8662b89daf798f7fc6e697b2d7ad424db703a4024 delete mode 100644 .resources/9b524b5b232b4ccd4457a3fa257db17282d28405b9ed255ffd4b73ddb368cce1 delete mode 100644 .resources/9bedb8614d5dfe6720c1c5a849a05616a028ee518c5c69e00842779188c8cee4 delete mode 100644 .resources/9c1a31fd6cada9cdde75bb9b6967f5f2cff28187cf25a0198ba0effe700c56df rename .resources/{f87b74535a326fc3764cdc01b7d6ea9312ab318b45773cae5cdbdbab62d846b9 => 9c8e0cd533a7540160ffe2a18a965e9d4a2ca6bdeabcc4fc38319c064419be05} (100%) delete mode 100644 .resources/9cc58bd9d770e83b955a02a963ab41373b5b65552c391da3134e365d0058b9fe delete mode 100644 .resources/9d9f7b0e5dbc166d04324b106f78325f9684d81c138352006441011429d63c65 delete mode 100644 .resources/9e2485351974e4c29f14fe9dc9e7a749db4637ad0085346729b055b5bb8a628a delete mode 100644 .resources/9e3df2aa730257f851fb07797cc180594efd976a8381ac2a72a66ad6752f35ef delete mode 100644 .resources/9ea06676d3f8d2efa2a53e4045aa92a3143be2f1cea2cfce8bc0fed9c489d315 delete mode 100644 .resources/9ec91d33e2aaedbe2f7980ed67f5253d9ac489f67f668b176f160693561a5f65 rename .resources/{dc4b4a406e51483c83946e29c8b7a343558717a76128bf2b316dba8a41543ce8 => 9eeb895ea48869f1e4e33e76c80398c713ade055a87588593ff14daf85ce5feb} (100%) delete mode 100644 .resources/9f39f5c6d22831b84b8b46c317e54f7f0ff41b9cf8faf7dc58dcadcc44e4cd6c delete mode 100644 .resources/9f592bbcddeb01a59195eb05c8f9cb072311ba4833bfa2ab734e011f5cc2bb59 delete mode 100644 .resources/9f686b21b3c3558f9752ce0ab99011c6b64c9199c81e10aae99b1dcd3cfd7223 delete mode 100644 .resources/9f70f9beb67e8e8e64006008084fcb0ebd39757ca61f8a60ccb5a6665032aed8 rename .resources/{8ccdc8884916f59d58a99aef60518c90ea76b2007b38f64c9f9c577a89b74b2f => a0081bed5caff3ef2cf386f582b38428b851bb1ad03781d8d4e2611dfb7f5d03} (100%) rename .resources/{0b44a0f6ce6ce41270c4bafeb7397eb3aaf1d9dd1a4b5141f9ba87bf5e38c157 => a0b789bf4205be2aef2e3f7f9d38718803ca850ec983499d3f171dc8ff50141a} (100%) rename .resources/{6773c1d1b957fe7f23f9d3baa172de68cc254f27827092b6f6e0489fafbe023d => a0ee90507962fec74ed7448b8fc4ac26164f75a15c9b98571612e2d1261dfb58} (100%) delete mode 100644 .resources/a0ff27373536c0646b0e72708e40079ceecee5f0c6e216f727b252fd746b9f30 delete mode 100644 .resources/a1184ffe25705f9c43428c0602aedbd6ffd74564a9a0efbdbf21dddeeb726506 delete mode 100644 .resources/a1a4352a89bdcde329fc94b275e218c1d2d7c14b22321b16785cf50e3b05a05b delete mode 100644 .resources/a1b51a8c32c7769e3d97f70f647573a446c834c2f28e0aca09516058a18a91ad delete mode 100644 .resources/a1e8be2030fddebc5426d0e35afaaa91ee6f63f7f253ce35e33aee271690221d delete mode 100644 .resources/a1fffefe11434a3124aee8c9222c638532f17925dc05f0301fc327dccd15bae6 delete mode 100644 .resources/a21f24fdf2eaa8253c33351d78dd4c8f0ee62c037a2aac10bc840a8668459b12 rename .resources/{62d67877ebdb1f710b32289f56c86046f7d1deffa941da33bc8b6e3eddd035bb => a2ef9e61e9514ffa00d1b665bdbde5f4956da40f358a86818923e4c6bf461936} (100%) delete mode 100644 .resources/a333aa26b1ac4fd7e55d81daacaab9278a1bccd650daea4e24583e94a13407f5 delete mode 100644 .resources/a340fbefcdfbe4315d8460d57f4c0b902b266928912cd9d08fcdb6fe4f499e09 delete mode 100644 .resources/a35f45c34d064403027c8aeffcbdb6349e40e35c0ae9cf94cc0cd268fa16fa12 delete mode 100644 .resources/a36787ea0628bf174dc3acf7e15b8db5ceacd857a4f85368632754ef0474b0d4 delete mode 100644 .resources/a3fbbc2d93a5d50108091f763df9747580bfe774f5ebf6d5acc89705399bad3e delete mode 100644 .resources/a4228dd7d88a3746b03e7a76ddfbcf1f6353dbe6e5dcd9f2800eb6b5195084fe rename .resources/{26027126b3341b16c45be2ef3cd6ed6a334cbb775be58149e4bccb1ca1004292 => a436c889b87b0262d59d4aba4910e0d53e500c8964ee10524e4fef82986c8dd3} (99%) delete mode 100644 .resources/a478579423901ccc2c3902895f4b93d9575d696b9522f55342f493d2ab3707e4 delete mode 100644 .resources/a4e435b58a9b79dda2e5b35f2147e27af3c27763e47dfec48f609896792689bc delete mode 100644 .resources/a5e80fb840c2e1caff4ac1a450cfc4954805d45b16dfbba3617d9ce2b26061fa delete mode 100644 .resources/a63f1cbf4cbb7194d4145697918d8fb7b557041a46abe0b1f7409ee021ba4986 delete mode 100644 .resources/a67f3f91c7568cef5e92dd79273dd4303c499e7964efa4ae0ef4b1f6fe733b6a rename .resources/{54e82e8c1a192bf12138dd4a32e59247db29c69587c79b1d6fb7877d0a8ff05b => a6b4643d8d87b52d9fae01d89727e0851ae47d6e39d2d8c45291efdfa08b82b7} (100%) rename .resources/{6484b4866b75bbadd24112e9848d8c7f6488014c86bd4ced12d0a7ff2a2449b1 => a6daff138858d095279783c692ff19ff195ff9700188f17297e19a6e864a79a3} (100%) delete mode 100644 .resources/a709c9132e34af66ee12d24c22c79fd73d7e1d14e3b46d34a39c581f17f1e6ad rename .resources/{69c1be1f3a6ec9f3d166718834c217cc0e52688effa5e98637488c20b009cd2d => a7eea42db1f21a33202e4fb763cce85c8c220884f26113035192ce2526d39a23} (100%) delete mode 100644 .resources/a8b306300d8a6b9963a388f0f9d2fc23cdf0de0784d8275348b3eebf8fe17605 delete mode 100644 .resources/a8e9505be9862ee476fcb72c72d2e2bebf1371bc674b3e3405039095b841997e delete mode 100644 .resources/a959734c98c9e062d8a60264a0339192b26ce03b200d54a7c3c90611c958f78a delete mode 100644 .resources/aa1fdc1a0a1e3485757b199c9b918284eecc950d22660fd248f0e9381ccd9e6c delete mode 100644 .resources/aa524422831b26cefeaae97385b75fb92b002a4cd5cefad4e442ed452b70ad2e delete mode 100644 .resources/ab7e4b7ca537808fff70141d3ca8fe91bba8992f9a64e0d5d535b7b7c548c989 create mode 100644 .resources/ac602fa03c458cf97ee42a31c4ebd5e1940532f97de6b4dae6c828c29d9ea35a rename .resources/{500742c9d734b56b0eafd04525851c18f220b88f5d9967be1725140eb0b5e1cb => acb2e4c894714abe96e770e6eef595579f60e3dd1489ba60ac2770cb4db59e65} (100%) delete mode 100644 .resources/ad49e8b5c40bf14e4afb329124992e0d063089dee20c2be11a1b3d4e2a591ef4 delete mode 100644 .resources/adac1dcf931d343c8081e27fbb61e6094391f68c4d42f9a0f7cb4a82cc32fc36 delete mode 100644 .resources/add4257def95d9268242871bba843f4d4d41f19f84df14693d1f38d17df28154 delete mode 100644 .resources/adff2eb7578fcee434caf1fcae3645b5cc377bc0924ec3c245e475153d148077 delete mode 100644 .resources/ae21603727aba6cf831c7a6019477dfd1453a73215e2b2160f5e69696fef30f8 delete mode 100644 .resources/aee27262535f27960a779d3522d8525847fe5aa1351fabdf151cd4b3b33b609e delete mode 100644 .resources/afe180cdc9b2d3850b5adc3307fc5cc2827985ac7dee519599f08b3ba16ee734 rename .resources/{b05e424b600040f527f1f4faf4365823510f425c106cdf8cd85664ee66efce58 => b0b612af32dc9e46160dccc49e19fa5bce4b6aa5c7f124c055a472c33d2870b8} (100%) delete mode 100644 .resources/b0ec766c36f3aa7d9482d042725355b15bd308323956312b7cf1123e6c12fd09 delete mode 100644 .resources/b12f6eb5ea93bd6cedb4f4d6938b537f243a1fbebbc4b1cb0b51ea31a17a8f11 delete mode 100644 .resources/b1302c9f04901665cf2d7f81aaf1e06c1ea757dfccd3c76a1891ea5f31e621ec delete mode 100644 .resources/b130b12b9677b163f88e64acf09fca03c5a9287f4cf3f0a719dc88dea4e62bdc delete mode 100644 .resources/b1ba720c725448b02f9f0a4a1b744c968cfcf7ca549b63ac1e6c8346df10b016 rename .resources/{69f952e2a458384b65161b99532b2e867e9db8f9637776d2581fd59488b58243 => b2ffabea30d6b67caa02dcd133d6a4467ba2e132e561bc1ab86f013a83b4a9ea} (100%) delete mode 100644 .resources/b3be37eced60cb1d987d08c4c0829b7d5b282d8f0ef7c81b1916bf0bd82afaf4 delete mode 100644 .resources/b3c05c9e5bd7448b7b7bdbb5067f49a26fb2e18c2f6d001d5896640bd43c5024 delete mode 100644 .resources/b3d9d0cbed39ae319c4c240571547ab041d24a247d79ff95a36cc72b11234145 delete mode 100644 .resources/b4334986d7e62785fe409b6e98bbe45f1305f72f75528cf23aa6231fb6824028 delete mode 100644 .resources/b4390db141c87222ccbf8bc0bc3f34d8229e6f470d54b89af83a2d5c384b47ad rename .resources/{4ab64689bd96a59f97328ed73604de6bf61938ab1c1aa44d8923839f674d1bd6 => b46a0c71e566cb77aadddb2b9995076e8db730d02af55b136156b9f35853cfad} (100%) delete mode 100644 .resources/b4e54bbf96b43fdba708eaa790d14702d8139ef590a8a1362e7bbbe4a2f8a1c6 rename .resources/{3572488d730143b73a71b26411889becd1cc80c8fb295c4ab851cee60c8de002 => b5118d8e44feea797772dbf0d33b004a4a71909a6132bfa5425d47ab866ffe3a} (100%) delete mode 100644 .resources/b54a979b82bd844c690f183d61aedbceb80602c64a211859fe35061422a38ab4 delete mode 100644 .resources/b5602ec52bb7020064902e5688867a57dd83b66bbf37774cab27663a510f462d delete mode 100644 .resources/b5704641a582e509a0ca2baee43d2a7f16400bcdf372b19a0dedf0072f36592d delete mode 100644 .resources/b62b7855930ca01fc815f63c8a0d1b05d32072a70b0ee1c7f957feef3bb47a8f delete mode 100644 .resources/b679b4336a88a22aef08f8503a009702f8afe3b971b3d6675822d6e535fdfb57 delete mode 100644 .resources/b68ecc12c8bcc7c835d46ff7c9060bfccb12ce25c7c165c21ed3cf959762fe01 rename .resources/{9932252d75f9ea8acd906dec460ab4513e2cd9848f8b0bd899d430bfeb701150 => b6a8ada59b4d732e234860a3547993ae2fd44bccc96ecf85ca1437536095c1a9} (100%) delete mode 100644 .resources/b719dd10d18d4274535eecfdf1799b8b6e893dd32f10d34c1892e9fc312a2423 rename .resources/{81fc448db6ac3ad571961159a8cabedcc0f60e787bf0c4222501234405a0bd08 => b71aacbd05425d5154ebee97a27e90d796b645616e10a24f7222c5d92b791efc} (100%) rename .resources/{af489edafc42c58b1fa92a2d4a65f555d189d80a50c54b97a04f055326f83d5c => b74d16850344fb093cde87c856e5ff0b085d972f91a54b7a846b1bc206291b12} (100%) delete mode 100644 .resources/b81e685caf1bc4cefd98c8cbe47823ae49689365ea42091abaf1ef79561e3f70 delete mode 100644 .resources/b8295320130bee9a62cee48844a59c85451538ee4b24f398081665093c1468eb delete mode 100644 .resources/b87bb60b6166e4b7cfe9f41795cb65129b2941b37c9081fc8ab995968b75b9f1 delete mode 100644 .resources/b8e273d65d7b2edcd1fce8634af78dcf760950ad16f742271751f0c1bdef4a86 rename .resources/{3c5e8bf76a03c5c1629dc9c2cc777b2176b25efe01d4cb0129b0d0c9fc54895e => b93b2e7cdfc99f59cf271e64b61321f51199af39da5b71a7fbf0d559318a6cfa} (100%) delete mode 100644 .resources/b9491ad008f4784a6ace20d51867da03b25aaa0fa0d9acc85180de8b0162bbdc delete mode 100644 .resources/b9809960000f586390e03f563cd59013477d8e5304837b325d1050173458d5f0 rename .resources/{243fb60cb6bc3c2cb859d28e1e6e7fc020bd7c83136764ce0dc6c2c5359bcf5a => ba5eebc95094d07053272fcd58799891f77c6980942b77ed9360db1e23866e87} (100%) delete mode 100644 .resources/bb401585d8cf330f3e0349772d0aa587063cd1258e7ea28403daf7d980f556cd delete mode 100644 .resources/bba9bb60e62064a0629110bed3fffe9b1426f58c8c8dffdb3d62574db2e32bda rename .resources/{e551414d9d0cbba01af93f309ecffc943432bb87fbcba4f504931bf45db35b9d => bc64e061bd664c628e8ae3dec697d36ff5a057dae8367357a66c91727e795d97} (100%) delete mode 100644 .resources/bc7d4f982a00d965efb4756f61d1c648a6e955f35a7bcaed93f6a846bd5b7c90 delete mode 100644 .resources/bca766a6c005dbc3c71f630db1bcfd5863c79c0e29a5de9b9e760f887814d033 delete mode 100644 .resources/bd0128b3160e6064387669713124bbe5b18967ea4185a0da0a7aec27367ea170 delete mode 100644 .resources/bda1a15418f7119d7f62ad20bfb65278cae7031ed045f0cb40a43865e9e22166 delete mode 100644 .resources/be7ab715fc0046eeeb67dad36b5ae7ed9876ce270d50c38b614424d69a729d7e delete mode 100644 .resources/bedcf98867a3f8d5c663e84d84f05c30cb651dada3c5d6bce267871a1e7a6a16 delete mode 100644 .resources/c061c6d70b93aa5fe02e343f2880fa3e7ec7f03c72d710feddaca4cd02d48b80 delete mode 100644 .resources/c1cebae640234f3e871786055de9fd5ea8655e21fa2d3752ccb8a7121e68afc1 delete mode 100644 .resources/c20b9feeea449b97097c0610cd7b3073f75cf94a41d66eb6e2b9d814de2a08f6 delete mode 100644 .resources/c2a5e324e72e8f01b4ca8b5180665789c02ca4b8af65865ce8f736d4e3b70f85 delete mode 100644 .resources/c2a7a9607e62b1b3373e62567f5b80060e74ad25db4d79fa4cae387437d5542a delete mode 100644 .resources/c32250f74576afafdfd0fe04bb1c0cec78837d39bbb2d0a501e010e2cda8e8a9 delete mode 100644 .resources/c39b20634a9a773040ac8cbe4b0d7dc30bb5f274db3cba7cd4f52ea926b36421 delete mode 100644 .resources/c47415ecd4c1a5321ffcf56e32b9a92bb6c874af18897c991fb2f495ef02bcda rename .resources/{b16260a61181ced8f2fca658f051884364533458dd9c710dca47df8296618cd9 => c4758c342b37e991630b661730c71bb22704f3949136d9d90a1a4c8cedff8fcf} (100%) delete mode 100644 .resources/c51d050c1ab687073628319fd27e1d76e0cea4d78413d8717a02227551de4926 delete mode 100644 .resources/c53272c05ad01489e894cb7bd5d3459fad14969a8557df08eac92b654441414c delete mode 100644 .resources/c54c723d5ed04b0037291a83206fe93afd2f36c523a84f47ed7c5e1167773b83 delete mode 100644 .resources/c59827e64f3213e6e814cef11495ec432cdb5fb61e09888fd1b011d676dfa3e4 delete mode 100644 .resources/c5a6419678f97e45b9e39398319106a18721f8131118816a4c7de610fa74d91d delete mode 100644 .resources/c5e617eaa2448f7f501a590a123a127fbbaae053fb602c547b52e914577990eb delete mode 100644 .resources/c62668d44e75ade4e72b317254612e055d703ede1a7742e4c1dce198f141668a delete mode 100644 .resources/c6ac9672e900b1a22c8a6f90558de450e64e7406948d51ee417d853196d7bb22 delete mode 100644 .resources/c7b2974411b37c2fdb08a1d4965a1ce5cc5bd414f4fcb26f9a0b5800f7432c60 rename .resources/{c49c57e562baab42c83af24f25e8a771f6f0e187beb6734a646a38488d49b3b4 => c7e00d2e728d61fa138b747d7fd589b993685b514259f29c899424edb1443dee} (100%) delete mode 100644 .resources/c81143922af44033e07fb9828b3238cfef50043e60556092305243dc6d0698e6 delete mode 100644 .resources/c8147308b4fcc021f718409ee10381b2c7f60f45b5dc9531224eb00557a6c0fe delete mode 100644 .resources/c891e70141e8d17433c414a191ff54fbcafb013dffb592bd240e9c4c47cfee43 delete mode 100644 .resources/c912ddf3466bd1f7fd5030bb618726df6bb811e4f80d8fb11ce60b5ec9a680c9 create mode 100644 .resources/c942cb7c173500718da21c8c86ae661f5f4bf4679e5706b672975fc04b40cd2c delete mode 100644 .resources/c949e642ce19bf1209efdc7b9f31952376589c2a9b27891115fb5193c9a3a3f7 rename .resources/{9dc7616c10f37df5a633bbccd60f3163293f18b507bd72cc45674b77ec6de77b => c9a3baa6a4064a87c37d70c5bab13a5e7433b8a2acc86fd04111c1d1d8cdc6ed} (100%) delete mode 100644 .resources/c9af5d6925884af9cad8b23e7fa2cc6f9e229823bc372cc6bca41664b06df33f rename .resources/{3af67ca819944e3e7a9f9b7f4d1fec787319cec5bc1a7ec7e87c8613bdf8eb1e => c9b4cc358e856d6844dab3c868ffc0f48710f354e3731324a89b04b5b605e562} (100%) delete mode 100644 .resources/ca207309c3ba2610bb281bc815f46c5900085e836ff8f796e49e85ef18f3fa9a delete mode 100644 .resources/ca7b38d95f10f1af6d8693f138afec1cd27e0b9f6fb89f27c5b21db5dfef92c9 delete mode 100644 .resources/ca943b61e06a2ffc98ce7773882af8743725ebf142ea09a98480d413ee3a22ea delete mode 100644 .resources/cbf4b8d1104224dc6716438322789cd2f1ec8f9867c802212ff20bf708cf4896 delete mode 100644 .resources/cc7329eaf82d448507526213bc15f1b2e98ef426c7a61cddd9b7c2a245ef8ed9 delete mode 100644 .resources/cc85358d88bb39fad11bd8028fd3b69cf7c29863df18469f0f948889fc62c21e delete mode 100644 .resources/cc902416fcc9db4098151902f202605dcbe0b559013deb6820cf9a4db031a80a delete mode 100644 .resources/ccc6f9b294ac59fdb28946cdf3358022f6f2848cd2acdaa3c50cd42dc8167277 delete mode 100644 .resources/cd54699264603e57bd5a1ac3b837eae98459d2c72dfaa08af6d9427718a54a21 delete mode 100644 .resources/cd8eecd5e83ed3087af07e7b47e754a1e5369dd25fee995c3fb44c1dc855f7d9 delete mode 100644 .resources/ce18d353ccf2463ed50d0dd7fbedb7df6e2a883b96dae5c2892a035fd112f91e delete mode 100644 .resources/ce4053da2155689921a3c5bf6737ef7aa8695ee3a24689e4553d09bd974e520b rename .resources/{8c7dcb2445dd83693e5aaf9c83690ec7e47729e1ae81b629a3c2112830f73862 => ce4805237d7ff601f16ed425e1ebe67c0d26b6d68ef43335294bd2a72cd9e8e7} (100%) delete mode 100644 .resources/ce635f1329ec1b7e0fa461929ddda79025a2c89412874feb0c2b2ad83915acb8 delete mode 100644 .resources/cf117b7337748c76d36e991f99512ce788b38da12ca4f1ad68aab2595bbfb037 rename .resources/{597e5098483864d18105a97e0cdba0be5310cf2041f863cc9faa171a5a33ed07 => cf41240ab7f63238698a3f729578527dfe7cd9524b048fee4af3768e6d44b7f5} (100%) delete mode 100644 .resources/cf443c6fe268ac08eff032653b2d1004453cd5c75d4499cd0ac1596d7b17ae03 delete mode 100644 .resources/cf8e2b726ecbae6e3ddf0fedb4eca8b103aab58c3ba9a6b3fbd601d034d90cae delete mode 100644 .resources/d00a9f8e3031ee79159e765ff5f3b098021f6d707d52c7f0a7c854185add00df rename .resources/{4a83e680aecb09d62c19c57e8da57b62de9c9ca2df316de9bce0e369d5b23b9c => d0aa0258f84c1fcdafab92135aed0e4c8713a7390808bd40c9093b395a91e12f} (100%) delete mode 100644 .resources/d0f0bbb6744ee0396ea0fe44261914da5cc2b4a2953a12a9efec5da157f7046a delete mode 100644 .resources/d1ff434e26635864d529e0174971280fb41f1157fd8e1607279197265184bb31 delete mode 100644 .resources/d247b5d9f44351033ff9e93b32526d7362d33778b20d413ee83dab1c7e917501 delete mode 100644 .resources/d260209b656425b9097bca270a8b11e41892cf13faadb3bb93030dc62e23ec18 rename .resources/{af6de1935602aab215e2335c2402356f14d64d58cc877dc989c4fabd0108a96e => d2d9a887c376d96a741c3c8aa809fd0ea6bd658dffb251068f7b222fd81c32fe} (100%) rename .resources/{66b40c8fca4cab46884bad6d27eb79197b893e419b937336ac07f9df9c083009 => d32b424e246993d01e8782edddba5afd1cccad5ea3aca847f96460542d4dc2cd} (100%) rename .resources/{8f25d51d3cfaa7230d865ece5f0cb5af462731ecb35535b808f295804b0edba0 => d36bf2995ee6214c509a5274a12826a879f18be01d860d2d1985fbdc0649749b} (100%) delete mode 100644 .resources/d3b8d41929d5d74a2029719a7738bbc7609845febabd59575bd14e7b499c8c49 rename .resources/{394444649fb5a5c29409b9125b4c8741bb106665933fed43a5c4502f1aee82c4 => d421518f25d0da8b74a79977e78ab8811c3dd4c75a41ed72c557ec4b7853b002} (100%) delete mode 100644 .resources/d46df332271d9da12133545a130e1c1ec4555ce875bc770c39bad5998ebdff0a delete mode 100644 .resources/d569be9868ebf12be906bcbd09acd139f5306a911b51fbc7b4f71c96cf585e4c rename .resources/{d470d6c9110119773b029c97085c557db6f028bd64e7a5f8f1a369111531317e => d607eb79f6e0f86de655f59d74f4dfc9ab9ec714c529e66b42747522dae14c65} (100%) delete mode 100644 .resources/d63c5c6b1c30a53451aec9f0d4ffab2478af62c5b3d28c43e5048e0bc06c5172 delete mode 100644 .resources/d6818d9faf4cf364054adb2ac7718240e8ec9d2bbda091d5f1c36f90d6faa8e0 delete mode 100644 .resources/d6a3d933a21c8a951bd3468f7e343fbd4c7b6e540a5ec51a501c7c4a10e42df9 rename .resources/{2fc48f07b6658ccdc7b0fcc48c38c91c3a7004a0a1ba3ab627a0f20b7775e90d => d701eebe34bef2ab3c209817c498d3c279b582c2a6992eb0e9f006ea95601692} (100%) create mode 100644 .resources/d73c0268e0dfa30b14dbb0bd68be449109f66c44a810f40da526119d11834d87 delete mode 100644 .resources/d7768bfba4a178f052e84033638653f77140d7b02de24f248031c6660ffaa3a3 rename .resources/{bc5ac750c4d0435098e33452376dcb5a0dd7095ef3ac9df501e1792e49b97b78 => d791e64e6d2eaf5b86e3bacecddda61fc9650387d26f69b6271934a2e15f77e4} (73%) delete mode 100644 .resources/d7aa5056dbace986564dd1a17dd712f499af08510650ef551c6e3373c4ad2ccd delete mode 100644 .resources/d7da1dfb17b8d0c6bd52978517fd7c400733e7413f3d86d9b285deffbead6a4c delete mode 100644 .resources/d81077da2465942993d9ccde14aae50f5c02c946cd1384a19877237be27393a8 delete mode 100644 .resources/d9063706dbfd2e6961314972d133bdae214e997d1cf3c9a3cf27fa9b7f5be7f4 delete mode 100644 .resources/d9a5dceae78ad1a17958fedad65bea2d00226cb19ffd90f01369a293d5a4732e rename .resources/{c0a3588e3d91b277b958e6d3ed34d0f3cc3fbeb1e804647e6cf4c00ed4719fd8 => d9ea188cac6650a3fdef6048f9f22640371bcfd10a38bc01bd17194cc676d5ed} (100%) delete mode 100644 .resources/db2bae71266ae040beaf67a063e21e2fd72c647b303f586c675cdafb96ea7237 delete mode 100644 .resources/db84bd1ddedcd4fb585b8ddc8adff8423db17dda6940dfbc002f0e30a1f7a023 delete mode 100644 .resources/db86c3ce59603def9aacd5467144eb0ca410d0a6d3576781922ac6d144c1b20c delete mode 100644 .resources/db94318a836cecb6984ddef301c720061356343b5d3ffa09c0ad2e99837340a7 delete mode 100644 .resources/dbcb4cd64af26986092e022d84ec4d4cbb4a77d3d4a6d8d6a3d54fc6f8ae2e8c rename .resources/{1bf11d5130b809ad48ce136649ea0c65656ac4c2c3f68928bba420ff3e952d8e => dc0d397115a442292eb4b6380ab39c994fb781ecb6349466492a3c7cdd887128} (100%) delete mode 100644 .resources/dcfd7baa90e4797ec49f642a235720b2b46ff69e5ea5ced53f22a9589f299de9 delete mode 100644 .resources/dd62dc9eb577f36976d4055f3fa6339501f7a2e64e11a13e3243eac406883342 delete mode 100644 .resources/dd70f90e89f5f750b9a50a0903767bb80e48ad4d605a3fe833045da2f955ddb3 delete mode 100644 .resources/de07c47d2146a7ef173415cc1660ea3db71b4e96b1d31548bd545bf849fbd839 delete mode 100644 .resources/de35832ecb711a1a5e5c7e43bec37280003b522aefe6d7084cd286e6df9b1871 rename .resources/{ca0bad04d689664be9650e1b3bfe4620eb87f71bc45c876d93a4db63e4be5871 => de845d4c7c80aa215b1b42262a9670b3e6d4f095703c428a09090b1babb730a9} (100%) delete mode 100644 .resources/de9a5df82c998659330b194086966e71a8aec8d3b5ee15eb63efabf7f1e62e3d delete mode 100644 .resources/deaac3e05b7bbc553a524c14510bfcb312a7ba7d260c0014886d21dce94700e3 rename .resources/{3cc55dfd2a911105e94fea01de42a4e5b40bf6fef6231d354d943f7ebc932f67 => deacf40f90961a646f400ef969d16d662817a6beecc8959ab9e7dde08eae92b3} (100%) rename .resources/{280daa6fa6cd045a59c264635d3b7542e4f28dd30a1b27960bad83c6f3b7c544 => decaa699610c428e28207ba929e8f82152ebb7ef3370d98ae312611ba488bb02} (100%) delete mode 100644 .resources/df2236708d68bd1a4bffe53191b3761eaeef14ed9900e1bbe7f6c14d4b793c0b delete mode 100644 .resources/e0b66c9c8b12617e9c8236ee1c17158929e228553d38744797b8005b601aa322 rename .resources/{d2dc346773a16e2c26e05a568e622067496fab331223c276fc70b72d96382244 => e0bb5dd5d606df0684dd6eb1ce48e9ddaf2766b6c6b55ef921e0abc53096c06e} (100%) delete mode 100644 .resources/e11d9e80d1cc076cd4ebfa2365b535a6c6836500bb809ffbdde53ffb1f833fda rename .resources/{33ddce01a1204d72f90dc9e1d348b6d0d4a5b042d2f7318824525ea5d94f94f7 => e133d1ff4464bf5b2b38856b2699d016ec275935f9a130257cd7ed6df392d2b4} (100%) delete mode 100644 .resources/e1749d7049a1ae1484031795f6fee975afadf9e703088302fce06b6a6410b0ce delete mode 100644 .resources/e174e60b417ccfe0d8b5d8a60dd59ede576019185c62f40dc69170fe979bf3ae delete mode 100644 .resources/e19c24a98cdfbdbe5e5ce504d23a622d5b1baac4db0453b91e5c5f01ec354953 delete mode 100644 .resources/e1d6062c4a1e3de3c50ae60b8e168381a621e38e3755897edcbb1edde7cec3a8 delete mode 100644 .resources/e23f65aad95813156a73a18fc3a9b85693f622f3325ef4788f8b7e17b8d7d2d4 rename .resources/{fd6601c47a30471ba2749c80e53a896612229ccbda22b94dfebad182175b75d8 => e246565daba914c40b60943305e7337cee7588bb1636af3a06c9881ddbbbc1b9} (100%) delete mode 100644 .resources/e2787748ab2f09a9bcb1e5521d4c1ee1f22e62d7821df0d2659954efc358df08 delete mode 100644 .resources/e29d99a8c7e2397327a38bdada89ab98786cbd0a505540d1d98ee972ffa06af0 delete mode 100644 .resources/e2fd061190d68a84e494c6f60f3e7eeb5eac489a080dd715f8ab245fa8d07a57 rename .resources/{972248b5dd2d4febff56d5cc34a1bdc7cb3190bbafa41d5cbe70603133a8ebe3 => e3dc86ef0551571092f68dcb07b580a2e920d76f2eb4a65c2da21214271c78f3} (100%) rename .resources/{9872c047d9f5ffa504f1d8f5ce42e3974842769e02d8708c3f6948bbf7a8496a => e441f58e15efc9e6e0f14df7f00aecf30fbb8fbe79f8f57eebeb2f50fbb41a27} (100%) delete mode 100644 .resources/e4b9c81542dd310ee1bfd92d9d0e533e6c598b98e763608fecd11d306649d6e8 delete mode 100644 .resources/e535664bb2c9fdb9049b78679f4f4c5db19a09f9c0a71c6d3af13ca0046afb1c delete mode 100644 .resources/e5d598d5aee81f2a0e2b5843d8edfb09dec0ba12270c633d76190981fcf6eaf5 delete mode 100644 .resources/e615a82de65aa13c96e5552d3391172efe413f938f85d680ac99400abdc21f19 delete mode 100644 .resources/e6278c0cc1890c4d2541353dc552ab8751f2df025fa5c6223dcbfe7ecb53163a delete mode 100644 .resources/e94e656c118cf2c1c674391b4e55a1d081b3c548a5c7a60fc9879e1ffbf31577 delete mode 100644 .resources/e9b7c739b418729e95f27932353937fad4e99cdd88930e599e1a09aa8bbbe0ef rename .resources/{3a27a594f0345bbe305d971350f2c7d95cc9705a795228977190b04e0b17c578 => e9be2ba3a0373604e3d83469f623549d233bfb8eb4a87dc2c97e97228d609077} (100%) delete mode 100644 .resources/e9eaa96d3f223fe201633647f708b2d8c45212cffd8cdbf7bf35ac6c83238e85 delete mode 100644 .resources/ea2faeec8c3166aa056464a09c024f8004134f2bbf12c220c2968404dca27d3b rename .resources/{96a1801931cad432e167fac98c387052f5c057f8d5f917cae9fe68189f192f49 => eaa3d05e3ff5a8d8c657f04226f3b0ecfcc7c4524af491db18882fc68b2c5bb8} (100%) delete mode 100644 .resources/eafccd145ef43cfe1f363391d6cd52bba8da8308677e3beb0bc651ba55ce651c rename .resources/{7cba7247275f7746b1ad72e84e3b81f353349e8fa849d6d0a21246e2601dc81b => eb16ae78ce028548bf9309a7559abe59dc4db15cd9b9323eebeaf119518e3636} (100%) delete mode 100644 .resources/eb4ed778e53465d9c5790dc466c7fbb02d8e57ec209301c4b542ec08aa325312 delete mode 100644 .resources/ebbcdd1f207d68aa705801ff32f5c224e3ecb2d32351722b3db63756828de035 delete mode 100644 .resources/ebfd8679a074fffe0db2849b72154c4e397520aae739f08b5f4bdfcc2c97ec06 delete mode 100644 .resources/ebffce45f2dc3c07b2815aec7209c3946d83d4b903898e4a17822b350b598351 delete mode 100644 .resources/ec4d8bf88e1e12f072121f787025c5fd3e35fa38e00635f8301946dd19c049a7 rename .resources/{f735130e0bc86f3d4814146bfb7e6fcfe02601a96c7c4bd990fa057d37fa8ae2 => ec75ffb9addc73f3c3309612e5995b927fbac198b802acb988d6b90fe298e0c8} (100%) delete mode 100644 .resources/ed43e944cbad385324a90fa8009ff886ed1b69b80f2bc88cd99cfbc04a2f9f4a delete mode 100644 .resources/edae20d1aa03d374c36928970d2ced3c780fb73942769c15b1a088eb8087c77a delete mode 100644 .resources/edcdc0a389ac70f49a9aee9d425b308172cc3ca026eda19f47f6b4f4f25e9cab delete mode 100644 .resources/edde09662a430eca373870528f43868c4b59d1c6dcef20e2f6f906c6ebb50144 delete mode 100644 .resources/edf3e0cacab2da391972d7af1d21c5f064fe0bebb5f2649f386f142978833081 delete mode 100644 .resources/ee036193cf51abbd36872be2bb81cae3c817e286c7600483a9867641b6babf17 rename .resources/{b61eea47fe9e013f2a0458cc320c22e3e6476a5152aa267d2dc1b3cf2d51f7d2 => ee5d0c01379cd4762efc1e00f74d7cce619003f8117ae36a4958a57e0f022180} (100%) delete mode 100644 .resources/ee72435225fc39f0d1017338779d5d30627a3895132f0b650bd28d33aedf68e6 rename .resources/{ceb1bd53ebf03f508b238269c4d0cd6fb5e7e5791cecbc0d9193b59d4f89cb40 => eeb4790e24903137b5325eaea70843bca8da8b3a96b31e3a8799182fcde2ff0c} (100%) delete mode 100644 .resources/eee9e72ded7f967144f636fcb1adc95b25fa4583fc0f4a899b3055f437cfe718 delete mode 100644 .resources/f0469537e04facb5ac7e013b14737f8eaad2ef9fcd88ebae457b0c943ba4ab06 delete mode 100644 .resources/f0b285a16f8e35a2d05c4a68bbd10a60615fffbaadad54e3fbc7b4c1a5b898ec delete mode 100644 .resources/f0c8349105016514c382121cded2027ef5b2895003898a72d4b60fbcb78aa0f8 delete mode 100644 .resources/f110f762603a90e6a03a3c725fdc9e7bd7c49dcaf69b7e8fac0532c2595036cb delete mode 100644 .resources/f153ec2da3260155b2098104f8d407dedcee4ade397d07cf98ec8a2eb5734c78 rename .resources/{33582f883d9ee999e79dbb8f179580aafd1e2cc18d61d576a42949c0adaf471c => f15a02d910493be1aac6c9542bab4dac0f0f3d4a3b63eab71122ded96e1d4168} (100%) delete mode 100644 .resources/f19576fbea3b986cca89ed526d439d4ea177d61506ea0180bdba21840903edc8 rename .resources/{b7e89706cd7a028c7a608af9391877f7e908120f8609c0e593ea731d0bab3a66 => f1ff8e33a5500c7b5a35d7c99017f994f59522fc311edf7f81bea3f8f6d0e891} (100%) delete mode 100644 .resources/f2221b92ca9c8668ac53e5fd0046f50256d64e02659d725252458a10158773e1 delete mode 100644 .resources/f28f2bff7f79debb6866c7ac8a504d9062797ad1a026b25e30bc22a9b78b82ec delete mode 100644 .resources/f2d39668e63e1fe07a66c0bd7d0004cbd269c95c040a7b5dbdcf2ff1fd00e0f3 delete mode 100644 .resources/f3357decc249c75133c28d584bd4961eb138021df42a36a52c90ef2323834236 rename .resources/{3f7c6fe18e205174ab91875e1a2c6ff245c62fc9519092acc7a1bbb6980b3a0f => f3558835c5f3f85ecb17f6ba35b3885ffc717c6d5ef91556d36a3e1645072de8} (100%) delete mode 100644 .resources/f40812aa47b32848a1c88ec6ba637d0116a1f71ae211b8526f4644ae143fc074 delete mode 100644 .resources/f62eaa10fa30b4cb58ff69c5c6b6fa81f00c57a19cd4acd870e5809fc8af2bef rename .resources/{c94989174290bda69b34244f35bee5b7e72003edcee3cf8aa5946f00568406b9 => f69ee52e3aee3ab6bb10378d7848b4b9d8c4ac1338eb3d5d74b485bc3c77e273} (100%) rename .resources/{83dfbaabbb8ed9a901910e53f71967b254f2e785c1c1bad6dfc806198cb6f8f9 => f755f6110cbbd4e7ec796dce0432bb61ed3c9d97742f78f9547542f77198d9ea} (100%) delete mode 100644 .resources/f7700c0d5fb86d1e281a55bb7adb7f5594fb6c527ac72dccb9ae5ec601ed685a delete mode 100644 .resources/f7962ba99b917f06579ed51ced0bbef945a7810bc7e27227cae8daf4944c1513 delete mode 100644 .resources/f7f96eac4b23626432ba950804045f275f4eb76dee0d23133495424849d69a5f rename .resources/{5797aa4146c55af16036bf03ebcb7556e019ac6f94541aac279bd28468da89d6 => f86043fbc0c250ed4cdc8ed5b364bb915e81606d474f82c40b611c25aa4ad5fc} (100%) delete mode 100644 .resources/f8a5f91e4ab378e9716b7354ae966baf2e5643e2ef098d9f85423da46f861cdf rename .resources/{b1d239481690f9e0d2199262c71542e039d829d38b3d4e02a4e1fda70d73a9a2 => f91a4fcd0ab7693c84cbeec3771747e40b3abdd9beeee40b798005cff1d3fc3b} (100%) delete mode 100644 .resources/f929e4738ce19a55423375b15e014e6cbd301a92fe67d3b653306c8cdfb7d24b delete mode 100644 .resources/f95833f03a342ffa31e1bfcc8f6f7a45e17cf7f3d2e8525b4e3e008a4d854f49 delete mode 100644 .resources/fa516100659fcd4302d31edbe9a9b829dcc4a9d7cfc2f2ab7d769cb14f2b5a92 delete mode 100644 .resources/fa85f2473dd3558db1ce7dda8d8d6a0f7c369dd69992dee6d79b0327e5afe2a0 rename .resources/{2a711c941e7a9ea16078056cab7f5dfd799cb659b8e5f9cc7e9d90584694ced9 => fa89c8c44a09ae4119e2406c7d1b4ab0f11727f50dec4e7b6f0ac3b103f8c193} (100%) delete mode 100644 .resources/fb380889a45114a5ff76b9d75c9255708d1d89457d377f0b1039dd4ea114384b delete mode 100644 .resources/fb61ceb65047a6e2c52dc684ab56fb7cabcb5b02c4e33c7146489784c9cf0d43 delete mode 100644 .resources/fb75bad99ff5f3834a3adbf9104b99765b0bbb326dcd0c599b85ea184882fa87 delete mode 100644 .resources/fbcf89df10bdb135fb207958d3068edd6b4e8dd50754f6c346b1a51a39c64036 delete mode 100644 .resources/fc3f311f5701943248eff8adf687f98c387ca43fae6f748f8618845542cdb77e delete mode 100644 .resources/fc960a3a3202639dab6e378bec1fbb1fd802ff350d7028152305d0fa7f575493 delete mode 100644 .resources/fcab600744f0a0c3acbfc523857c5ff11590b16682a614806d68df85ed97eab5 delete mode 100644 .resources/fcf519d6901ddd163d058712fa890b7845d860a0b6990e3c7748d327d864bb45 delete mode 100644 .resources/fd3ae4997258e7f63a6dded6e2718c5198acff625ba3f9fa84e2627faedd0330 rename .resources/{e92456636d4f08e578ae36ac2bde05e70eafb0efad2e59794c198629775b2086 => fe111f66eb94fe652408b60dcea320035d68e4b0ca4cbe65766e062cb5542fd2} (100%) delete mode 100644 .resources/ff29003faa4bfbb0fb900aa7558f806d6cb7499530bf34c859ea5e4b74c11e01 delete mode 100644 .resources/ff71ca0591f979b4591dd546055fb0375793909d042236f3445cc839fbee73d1 rename .resources/{cd51892683b06d0bb9406e1049274d78203531f422235cdc6bccb7a90f11792b => ff9819a93565aa1d3e2efebe06aa7a31d2c1ff4510f36ddd002d1a4dbe6e6ed3} (97%) create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlAlarms/resource.json create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlAlarms/thumbnail.png create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlAlarms/view.json create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlStatus/resource.json create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlStatus/thumbnail.png create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlStatus/view.json create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/ControllerStatus/resource.json create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/ControllerStatus/thumbnail.png create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/ControllerStatus/view.json create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/JAM/resource.json create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/JAM/thumbnail.png create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/JAM/view.json create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Overview/Home/resource.json create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Overview/Home/thumbnail.png create mode 100644 BNA8/com.inductiveautomation.perspective/views/autStand/Overview/Home/view.json create mode 100644 BNA8/ignition/script-python/autStand/Visualisation/home_page/code.py rename BNA8/ignition/script-python/{messaging/message_handler => autStand/Visualisation/home_page}/resource.json (52%) create mode 100644 BNA8/ignition/script-python/autStand/messaging/message_handler/code.py create mode 100644 BNA8/ignition/script-python/autStand/messaging/message_handler/resource.json create mode 100644 BNA8/ignition/script-python/autStand/navigation/additional_view/code.py create mode 100644 BNA8/ignition/script-python/autStand/navigation/additional_view/resource.json create mode 100644 BNA8/ignition/script-python/autStand/navigation/alarm_navigation/code.py create mode 100644 BNA8/ignition/script-python/autStand/navigation/alarm_navigation/resource.json create mode 100644 BNA8/ignition/script-python/autStand/navigation/amzl_navigation/code.py create mode 100644 BNA8/ignition/script-python/autStand/navigation/amzl_navigation/resource.json create mode 100644 BNA8/ignition/script-python/autStand/navigation/basic_navigation/code.py create mode 100644 BNA8/ignition/script-python/autStand/navigation/basic_navigation/resource.json create mode 100644 BNA8/ignition/script-python/autStand/navigation/navigate_to_page/code.py create mode 100644 BNA8/ignition/script-python/autStand/navigation/navigate_to_page/resource.json create mode 100644 BNA8/ignition/script-python/autStand/navigation/search/code.py create mode 100644 BNA8/ignition/script-python/autStand/navigation/search/resource.json create mode 100644 BNA8/ignition/script-python/autStand/navigation/show_alarms/code.py create mode 100644 BNA8/ignition/script-python/autStand/navigation/show_alarms/resource.json delete mode 100644 BNA8/ignition/script-python/messaging/message_handler/code.py create mode 100644 tags/tags.json diff --git a/.resources/00276b452ad88e8bbb3776f04e82811a0bfe7bd37604c3c6801a68eaeb19b32d b/.resources/00276b452ad88e8bbb3776f04e82811a0bfe7bd37604c3c6801a68eaeb19b32d deleted file mode 100644 index 9c7166956e5cfdb70e225c8eb8eca65ec2d475b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6144 zcmV+b82{&qP)Cazg$GNHTQ?{-0_2XI1k#+aP0b5rM5)xEc>x_)>0IOdgQ zwVLG3dlKUpB_<^$nwz=(;#zWYa&&a`#*G^vJb1uyoG6Ndp@C7URCn&&c_n%CUgwB} z*)wO%v9z3HZszujYgSfP@4fe4e0==l$B>Z;q$JY}VEIqY z29}0qI-EUww#mA=ncIZg^B`veK9HEmL>XRZ&6@Q*ZU9|uY2>F(n>J&{3}z7h%$YOi z&!5lk^E|tl+soGQ=*Cwz^8c*%oXDA|4;b-kXJ=<&VZm;~ni1AU-jo@|PoF-0>eQ(a zo;!CgdLJJjS65f&S6H&Kv01-}eXV0F~r%y|zQs}<^`s;GJeA~8d;Gyp1!PEhA#mWp0XPqOOyak|>e;hr;Tvn$u2m=$*RNmSuweu419eA7$H2fq zZ*OlT2Y-Kmq_$_S@XYNcX}~DpiwFJgyYITXx`3h`J9g;x`mC%hpyJf2Q@eNXwzs!0 zDJcQ?Hf`Dz5fO3x`0<8@hM=Gzh7j~{jAhG~A^z6Z)@EmCySuxCsi~>)^74Wk03^?e zoC)~=%L6i*Y;bT8M?pFC!3Q58A;9OZUAwko#flp@ZlJco62d(E1b2f2+`M@c=?Pcm zI1a9lpP;3sW#!71&CSg?>!+W7nvs!l>C&amn>WM1p^mHKH)81pP6GcPeOPn*xi#hk z05k$$Utb@>KR|Zt)-8lW4D0LbuU@?hoB<37;i!tS3fLqkC(oNV4?V)}y?gf(5)uG2 zq!B>q#EBD4O-&sg9e^1y3YeZ{u%gb>M-0Je>%fJ2YZ*gU3|`}e~WPM$o8$=uxBsHi9)3Y7(7JbK^{ffcb5SprT{ zR8)j|0r&=ZfKfOP1gfj60Vh`dKPPe~C+$8c72#i&6)ftG&G)D#&QKA$&SAGV=EA+q-t{x_kF7Dmk2B&fk9z zAXkn)sk!|O8}osXkPyU5Bmq=G>FMdf4^RPY96NTbw6qj(2e>OME0F*|>2d$_>EM%J9d==RwYdd|=LqL%(Zi*cd|; zKj5)FcpQsWO6*Uc>}2>}!6dBXS3nP*ed!~qVToBYe%-Szpom|}@|ph1Yi=)X0|4;! zcvHMSdOSTI9g_@BKrMp@z+*%O#LxpO=z%4CNu$z6HG!f7rWp1t41c4a^W4apkPpl@ zG|Q2{%g!aefCHF{nQrmS$blU=8!E1+`an{0(!6=|t?}OrA?x|rYyQ}IGyM!{zJbQh z|2P69=2}_JoG}BvjkWby0i)QnAqO_6O|?i$Onj;j#Ky$@`OP=}@aF%${yn{ECNupY zz47K7pt1AMK!5!6n}2%i&*;Z4JwLrM>8;=W{;@XZ7`9I%uHq)m)^1oe%D6&yM*SX7x+@xkQ)3|iPO{Q}7%L_~afx&RB%*#Xd9>GWL zyjrqXe){MkH?9v@IV`l0Bq)6%YTcyA+=6Od1CL6Aj-q!77$!CYG95DBbl$i+%otYL za9o?FLsL5v6Z@n%BKCJOWA-)E3#1yCK)I85wr^s#Uy|I#w?-lz{k|?^p7_TSQg;{K_c@7_RwY5hX#`@9eg+FcWWmXQB)!P$TmtKy{D@(Sko?}} zh<%S>QiQ=_86Vn?sSNX@J>E<&hDP#0YMyVB%FgY?LLbBX8s6Gtq>cb=TmlSyFikRD z#=DOUX=X&ll!pLx+3Uj&Q#V#9Mj7XTVX%#|0HlFN(1kp340#}H<-JD_Rpa}>0^8{U znXTDn^6awa^p#B>!SdL2d337WO(ypWmAeMX17qb`rSjB#xqGl20U$n8o?ayP43oP` zUeo=CXRPGTf&nS||FOxe5$o-?`nZ@#`R8sd0CCjpSc}yBH z(85ewArW|Nm$aOCuW-4eA1Nj-Cjs{mI>3@Vl7Uw03L4_5Y-=;USZeeLJ?$1)7`U`B zq4;!aZev!NJZF_WE<^4TM6c%LPmdlDBM(lX2LMr)YCD#X0PsJHi} z_k}=cA^{1n9~4I_ki;bLgWleU00u?Kc!$%buz)34fbK$XLK*`wkmC{3StR_nVz<}3#dxY<(u32<0}40 zlj=|-Cy|0w9~|b}2RY{eRcgL!LzU{NLWR|Wb$rhiRYI03A(KDVqFP_Yxdwq$>vlqy zbMoi>qExZzs=PHk*QLr|&!71a>b%ga+Om&>d$`H?lWJAbCfdR!kgrqo-IrD6+f?zH zJp6F?G1aPVym(f%s*g?%RlTrxUMPVowG?&&5|uUI4Cdf~}J_hn3CNl5&tQ^} z(|=RFs*;f46(-aw)km5M34yVE$_n+)BSP0Db-hTa03_lv_~cwjs*`dAI814Ux=|xE zwZRlGi|3c*sdpU}datUNmkS*i)Y+wExw&2FyCHC0=wVYh(hS`42(NxoIISA_$0hJg zUfI2ePw@et{LQh4TRUM0(yl>jM?aD464hsf%n~7^NGRJXUVk7IZ4&DQvGby^=eXE$ zL8uo+Wv6(8$BbAnYH(cW`bTRt=b)mNNYw!`nse7ltnIw0=n&fng~M`j;FeIbMQ!gR zq^}gkvyfMNhl9j}4FZ0wgAEW68#JP-n|l0|kX*Y%#KC+c#illz6wiwAld`RvPrfFV z*mSbs8%evH=>?L?C$if+q|`s9>}dO$zN~as#^5|Pw<+XkHnfL!bVlCIQWsUX^(iMnIx~=6Sp1^FMg~p z+#r;16TjBOh)}#)bNeyLL$Yv#c=;1?M~!&?Ho;@(5pnf)$P1VO_G+5cE`dNlPAm9D zaV|l<|Huc5D`R&xcObya;syU`!825|{g9@0K-1E%QFRO9$>RE5nvM&=x0qHa$l^68 z)f!-WX@L;3SR-$Rn3$R`xCRMPshY!bAuLJ2t{x#`$_h^08>l?XKaXh?{Jy~?-@!wn+Fe=LK3?&BN$?mSwQY%2AMT1K@l@x zm?X4Z0*CEG*wiM5*d1cb8VI_OXJ-JzjF{=g68V5vNLkqOGTE{oXFuLmN-v1#z+>TQ zKzJ|qOn6f^gZd(^kWvIzlG27}TTsLWra@p#dE*S=h(ZI|K)Psn z)z=UKjq(_d;*A!J!?E(?ZfX>ms1G)P>kaP zmM$*q|MUlO%Ddd;N$U6BHj|kqM3bp+obq1Xl=tgjabSgdW|ZPs3#LnB?J%Alz*NjsW|X>_ekwA)tntZAmqyL}C}Qek z&5o5BJ3mSb!?|<+mX>zssXpN3Bv@GJZEe4`v>ci{cgWFk$i`;K)^^CriFou27Y0+=b{km>19_kjfq1ZQVtioX>UXtT4)Xk6S-RMha^u;t^U&CAm+ zTSjNHvC%GGtj)?|C(x#)X)`lPg^@&}O-vkecc+a3SwBB*ax&TR^d!r$$$lox1O{qj zV#px0oSd*ayftj5q>z2w1Qxu!v`dzdih~0Vpk2C@EaT^f<)ozVFKMQqgz$VJA@nZ! z`P#xl?V?4578a_2U2pH9pdf-Ncs!Y-Aw;qO$08#$!dwW747=c2;0p;E^6;S7_w^l) zkBEA}53>gE0uvfK)c^Ibx`PL`8#jU>m6{qlpRKJnK3;$Q zI$hq{8hF(|dZfR36E30e?9_kt6^2^oT2@xNqepd0C7sOLT6gG>{^3Kc>Q0{2mX_+j z_(K1ezu*|!@NoUTdzdE&*u9%9eDjUAyd1x^{>c-vjQbm0X!P5d=>-sgHFvJ=$Ppk% zcjk=l+&SH*O%w!kb19;Qh3PL})^&8y+oh&zb8_gV+}w!AD&p5jv7k*)hssby1mP_r zf_MbJlob8r$GVCN-Hshvgl2dbBoh*}(a~ffFKkcZOdvn(1Lfs_^4}5@b-lg1mKGh)6F}iuHa2w0k3Yt3vA1sLPMsi-CjhAr9t_3D zYvbZ@f9;MPQ(LDy>uE|TU~p*cJ*q~nl}%> z6tE7DB5R$Ux)Ud~n>OjMUDIvetZQq77Mu!B2mvh7@z$(?W&Qc{_{GgW@RJeq0mQGn zcPSO5rz7g?2M2*m-RaZ1J$v+8t^U?6U41yX%^o^q+o;gg{2Bt7!;%zypj{O9(lC9+6jn=MJI&@@0zAUwx%J zew>gtQ6HE#O;b{WV|{nyhOWOKIS8QCH8u`SnKCqWs!pNMb$1gFLlOyHudz{^kpZ8f zLMSXu*U*4_5*95jA*|iMpY8^9PM@ybx>bMa5^5*%0R;8)=XJ-9QK||IB!7V8!p)#4 zmFk+Cae3qclBurN;yjNZlT#HH;coQfe)bt055Kr>U|{I2x5)C18$Ys6BBHhyRSM;Sy?fDXD=Lry^k09iL*a1$J~Dt#qk&5d&6$H5fnsZI zEl>_cARA=@iUlMJsv3ZtPd?GEUk?PrK1@+rzGMl>V-+O{R+ld)#Gg9{z>o)i`6VhS z7zY%8Odgmzm1>~}558sP+N@c04aD!PEXq?@`syoy5}84N@gkuRcjI}KH#BqU5|R!a zmv(Y-feTT|4kM^i=FQXY+NHm8MGFMqxq}c+!M>zqXvPf6VsJKA$v8Nml%k|jR|f&g zGq^DB(A70GbEbB~2HX=Uhr81x5=%qFkcEY|s)~v(vk&})#PY!5!}P3%Jb+3VrGXBQ z{`u#61hs(yO4`6lTN^3`iu8qrD4tpTg7eTjBH@4YjZQ8nAAma{(xLuAApm@%#)hef z522-7wTddPUAwf!#Z-qw{{DT`KU6R6-_QJqs%!Wd;Qs+~ZC~lm Sy*^0*0000CTk15Gq7H%2db=D5IgbC#X9%w8e%44J+^Gf=&}H-(#IRk`^$M@Z7BKCQDS4 z(XpDd00c0yHdJikUGn{&pj7DQ3}Z-reSN3~f-Ci!y7BdMsZNZlQds#F!I!n8)T7)=Njhd{d zvtji=5wB2e`=#D_=c8#h*dDo}S3(dnwy-)x?ifUt310>;58}y4 zt!o3vj>^xWW#K1-8wB%BR4G|ImlKyT2~(W@=$H_SeHjuFCGT7ePSjje zn3*3y?obDO;=yHU@!==W9Ubhk{R=Vy3%%OxzXNWExj62bN~FQIGA9q$f|?HG2uK) zkL}|GQUt@P)Q}Ejli$ICW7$|qnsDof)b3+{F|#q^78gfjoe~^Pmg9blro@fYI~r5A zR$a7i70;*=H)>+D)3RHpG1ad9W!ekeyP4?sHgbV>e1T{ZpOsz?Wl}iN;CC;Ee8z{;jPDq1F1Vb(vevU#W2c;9LLr-@FSCu<##nem=bsFFH|{yB zE_Mk=BH0?neM+IXf)Wf2sP?PP!q&&NT03POQU^=zcNexZXOAdMY;9!LgIVF#0`Hts z6|Nes*oi7FJGR#@TVAL;Js8;0%EZRU;gs;r24u*q)!6>1>QSfmT_eIReyog?ln>10 zSy#(iVuECsQnsa!d0===Q*D5^>*!Rk)I7QjzS&Y&Fj;Kdz0xzc)K?iwa*|Ww=C>KU zFd_~%Y~nFZS5$06v2p`1PR;W0-Z|Q-X*#mt<`z7nrZpW7`J)f*lsb4B7w~n-wHbOb+EVmR@X_{dX!;nrk1w5L238j z`e($c{j0Q4QLGrA?dULGsq!Ny$t$ zYjmxRin4O4nW28EyrEqqZAG|kC;{p9A+F+!@8JZgsRVrIekvQcix-L8qC5Pgd(SkD zMB6w%9P5}X7vw6F7_V0<$$0I%N{m7OfbAR<%5MKdhp~0Flr8j*^YY&t}!uTVu|$h8;WeWvlW zX*OnCNm+E#qi~yH%`bMeh1~79Z`JRvS3u{JewF)~#H6M8{ZH{gP^*+V0d@HAz z-6xKHAN2x-yfysr%#fe?XashWC~vL2T%CRXMo9m=o}Q1S&rZ`5Sd7fg*LQ9jm4?(h z`>YT=3kihH<+PWo##gMFCrk2E2X$rFXtWWS zj+Qh@Y3a?a+>^ubk2G6}kz$Kd_o^{N*!}oD4z)FxU^Z)J$VVah@MZIKmE&p z!mQ&tA1$lrytik}>GA~OY~Z_2WAVIGb;^v%9@CcL! zT$x9(4Za@Xi3n25?kl%r!q3>{tyRSF>2GDrG=B%DdtMUpR0QMgIA4sQ9g9Tmxk{M$ zYwDO_QWT#be_2ZX3fBS>4Oo zz&iV1EK~2N=%nij9VFO-Y&x8L3CsW^k!*vc_%wU2a+fVpV9X&GZyVegKRi6Vw&pc0 zM(>mXyy0-H5af|0yvIc!#sFg$L-5wrNI0qApkRRU4bMBzU;l48JR4$?@OZbNcY#F$ zVUUxpgk721Zt0j4767{fYv$VShP}eep2_l0dHeH(86ct#GA<_|;?q3;j${Do6R#24 z^b8@j`k36gNcj3Hr-s{Ax)*L&cOl6;SxPCG{64ZyXZHtDX=OX1p6ac=w4H!EQBWLkkS|wX;RZB# z&o$ApP{Ts@kn0+oOG``pN$QvW#$=oPMfImUsOI)hPf|S7WU5Z0F}$-?wz zH^$Sv+gXMqR&@3}JJP)>!=OMTBzLJk3FzMe>8jQ=&o= zR*=>%5>4pr>eiRYB>ly?36vK;tNJ%U$nOKUx8B`k=H3zckW`{=QfgtaZ(hlB5VuDi z>cobRy9Y60Su?>|8^ohR6E~vEE~An;HVDkQH7b|Y=zv0O5Y2}nh`gZL9?dTucL9eo z$x>G#_`bf+&{Ej;%Fv%be=O`?qXw4SYnL+;1+xWln0#45cH^{8&WUlF)+O(Wtn*4d zWsYjzftCMm5h~ox1E1a;+Rt#S5lo$(2#6Pi#eU}q*nuSjLJ#lHR<~O!T5?g ztI_*j^-5LlID0=?uogq$Bw&I`@Nox-c*4vkh8Q%LVEEj#;)h>`EjR1sok>vCPZeD} znD_XU*QENDmjHLs;bdvIV4;N#MhHWWkSbIGch%1Z`&$elTgS&~G~4}l1Z&7ih5WN} zWGfEV|K=W0QfQJha2%j~CB$ac?juqW56|23;GaxahKU(6-+S$mav9BE|J3(4cN;oVT=p>!)P!{a#`;JEk;B}?^528EOvtb1G1b2W}z)(PN?WbZX&j7W? z?asQO3B$!|8^((Rt*xz8YPlxT`0Q^MRgmR>^kyM{@03^}1fR~uEukdb>}KtmDNTXQ z`-EVekluCz(M+qn*ZT+-w)Pm&p17zu`^ZnZKxG%b2zb?fdNK^bwMH&YVGcKVHLsl`C&)33a%Pve z#Nt7zA6F`GcCUm!tmyQ~@^$)+0>T?=NfJrWVq*{g^A*?c;D!HE@NTKHp>DDv=dIF{ z+Xe3>A1NscI6tu8@%LYa)oe7&3&A(L34<;#Ud-Z>ggIh0xUY8M+Rs_3`yuiM zKR>Gozw-lX;ytfJN4q}wA}@dSiK@k;$t!Hq0~MwjvIBvQ-))Jn%@82{Ro!d73-IihfNL*#T;;ujYX?$g*9jYC9 z`jnm^;>^s<#>OvbsYR>)Q(*|+eaoTdneHlWCs>4iqrl*J+8ALvvF?k>(j=`^;9};@ zjuhOw2g%f#aq?gMr(_@rPoASGLI%6ueLCm%XJuzU92yI)$Qur6xRrK@xf`iN4cM5v z4meCwyw&^n@87<@zNMuf{jR_#dBc^B=H7S6>U>R_!tY>XDXlT5P)+GWwfqjWzU;cgN;*=7&iLB|9grFrFA(A`i^{7L{j(%xCt!Q#_ z4NmBA85l#xn-!Z?5IoB)K_JjQz^f-BJoo-Dz(8|`0+37WLd8Qx=EWm`|B#37cJ=^e zQVhw}HuG6C^Qr=XzIe}S$63_2CB9`yle3~{Aq)0z?)Lz{as!%IjYsj*aPGmdAE4Ix zDgQ*O@*b6}*W{1Sg&&K_i65DHm46hrvw}{|_f86Vh)L4F0jH~N-tfG|10lQBW!=Ae z(}^#loQGClmAG?YV;sb0zS!ATgP$qqu7AG4o*8QMQ1YQ}$%c96e2VeFd~uBr@jf6W zS?aAc!zTnwQ`v&csL3Rpx_LJO0i-GFLhUul2A* zDqR_)2Fqm)qxJN!kD9Mi6Ed@a6mwd#xpu$JxX*G|I& zDyfx@KEWA!oo@I7cTeP%kxV)6#uIzMx)3hrbdzhqtQY2G8Ly-^|9fDz$BVHe887_1 zz)a3_ZW&IDZ&jM~ri%FF{!^?pGmwb(|6Q*lyD@6#yR(f>Ur#{vh!hzrguJ^n*M1t5SdImrHiN)0a0U7 z%svvW{nDz)mmJFM*_JnSBo+;5;nSxyU4#ql36LH*GWHP+SSiRjjQGGT(w<`U_-wR1(aK<$tkV03;h#&#)!u zRkv3?n&#v&AVJ1Iyi@Rkbp844u`W`zv)fC~E?Df4MBqSpzlo2U^!; z^zALNHUt&h2iIp)qDdxHArDiJs8jfPj|unM^i zJ@*bu05i13s!83VG0igfmNi&TYE=CI7>6#5>6(byv4Q1ssMf71e6Opu^6w z^6WQXTyuL?yW_9mkzl@V;PSmHI#jus#oVPb%7_=jP1825_^0UXM!{~S3fbJT8qH0xapIF=2D3td4{`7ab zD47jTl4Mx=NM!`z4{J_jV}8rbp?G^=0bTD6+~79Oc(TKQqBHCcFUteI_A%+1*p%Su zaQ~1Zf@c*ZCRp@g{Gz`>B)SkclKcjx%KL7v# diff --git a/.resources/00f60a83e2fe3bc807d2fd9fce69c178f7740266154654747a71aaa497ba1399 b/.resources/00f60a83e2fe3bc807d2fd9fce69c178f7740266154654747a71aaa497ba1399 deleted file mode 100644 index 2f848daf..00000000 --- a/.resources/00f60a83e2fe3bc807d2fd9fce69c178f7740266154654747a71aaa497ba1399 +++ /dev/null @@ -1,17 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "transparent", - "borderBottomColor": "var(--neutral-30)", - "borderBottomStyle": "solid", - "borderBottomWidth": "1px", - "color": "var(--neutral-80)", - "fontSize": "12px", - "fontWeight": "bold", - "paddingLeft": "6px", - "paddingRight": "6px", - "textTransform": "uppercase", - "fill": "var(--neutral-70)" - } - } -} \ No newline at end of file diff --git a/.resources/01164920447b55b29a41a69f28599e7251b87fab5ad055ad0fe3f82458c89b86 b/.resources/01164920447b55b29a41a69f28599e7251b87fab5ad055ad0fe3f82458c89b86 deleted file mode 100644 index c7fbb93786ab5d9dbaebd64e8ccb13e782c0e8ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5893 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 diff --git a/.resources/0535b312c088817f276f0c3b5d1e34a042dcb46e4df16d53b62968f80df0de4e b/.resources/0535b312c088817f276f0c3b5d1e34a042dcb46e4df16d53b62968f80df0de4e deleted file mode 100644 index 88cc7f33..00000000 --- a/.resources/0535b312c088817f276f0c3b5d1e34a042dcb46e4df16d53b62968f80df0de4e +++ /dev/null @@ -1,7 +0,0 @@ -{ - "base": { - "style": { - "borderStyle": "none" - } - } -} \ No newline at end of file diff --git a/.resources/0580527e460388079875e9625c1d4bb8aa80641c1678d39c1d7c7c7247b3e375 b/.resources/0580527e460388079875e9625c1d4bb8aa80641c1678d39c1d7c7c7247b3e375 new file mode 100644 index 00000000..fbd880bb --- /dev/null +++ b/.resources/0580527e460388079875e9625c1d4bb8aa80641c1678d39c1d7c7c7247b3e375 @@ -0,0 +1,172 @@ +{ + "custom": { + "activityLogger": { + "alt_pageid": "card_view" + }, + "pageid": "card_view" + }, + "params": {}, + "propConfig": { + "custom.activityLogger": { + "persistent": true + }, + "custom.activityLogger.pageid": { + "binding": { + "config": { + "expression": "{page.props.path}" + }, + "transforms": [ + { + "code": "\tif value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n\t\treturn self.custom.activityLogger.alt_pageid.lower()\n\telse:\n\t\treturn value[1:].lower()", + "type": "script" + } + ], + "type": "expr" + } + } + }, + "props": { + "defaultSize": { + "height": 1080, + "width": 1920 + } + }, + "root": { + "children": [ + { + "meta": { + "name": "FlexRepeater" + }, + "position": { + "basis": "1080px" + }, + "props": { + "alignContent": "flex-start", + "alignItems": "flex-start", + "elementPosition": { + "grow": 0, + "shrink": 0 + }, + "instances": [ + { + "Counts": { + "Diag": 0, + "High": 0, + "Low": 0, + "Medium": 0 + }, + "area": "Bypass", + "instancePosition": {}, + "instanceStyle": { + "classes": "", + "margin": "5px" + }, + "subarea": "", + "tagProps": [ + "MCM01", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + }, + { + "Counts": { + "Diag": 0, + "High": 0, + "Low": 0, + "Medium": 0 + }, + "area": "Fluid Inbound Merges 1-4", + "instancePosition": {}, + "instanceStyle": { + "classes": "", + "margin": "5px" + }, + "subarea": "", + "tagProps": [ + "MCM02", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + } + ], + "path": "autStand/Equipment/Controller-Views/ControllerStatus", + "style": { + "overflow": "visible" + }, + "wrap": "wrap" + }, + "type": "ia.display.flex-repeater" + } + ], + "custom": { + "Devices": [ + [ + "MCM01", + "Fluid Inbound Merges 1-4" + ], + [ + "MCM02", + "Fluid Inbound Merges 5-7" + ] + ], + "count": "value", + "delay": 2000, + "run_update": true + }, + "events": { + "system": { + "onStartup": [ + { + "config": { + "script": "\tautStand.Visualisation.home_page.create_home_page(self)" + }, + "scope": "G", + "type": "script" + }, + { + "config": { + "script": "\twhid \u003d self.session.custom.fc\n\tsession_id \u003d self.session.props.id\n\tpage_id \u003d self.view.params.page_name\n\tCommands.analytics.send_page_details(whid, session_id, page_id)" + }, + "scope": "G", + "type": "script" + } + ] + } + }, + "meta": { + "name": "root" + }, + "propConfig": { + "custom.update": { + "binding": { + "config": { + "expression": "now({this.custom.delay})" + }, + "type": "expr" + }, + "onChange": { + "enabled": false, + "script": "\n if (self.session.custom.fc \u003d\u003d \u0027\u0027) or (self.session.custom.fc is None):\n \tself.getChild(\"FlexRepeater\").props.instances \u003d []\n \treturn\n \n if self.custom.run_update:\n \tautStand.Visualisation.home_page.update_home_status(self)" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/.resources/07dcc692063a0befd5eb0c59d53446731ffa7a17183cb086f9ac9982cfba8b66 b/.resources/07dcc692063a0befd5eb0c59d53446731ffa7a17183cb086f9ac9982cfba8b66 deleted file mode 100644 index abab03ca..00000000 --- a/.resources/07dcc692063a0befd5eb0c59d53446731ffa7a17183cb086f9ac9982cfba8b66 +++ /dev/null @@ -1,8 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "transparent", - "margin": "1px" - } - } -} \ No newline at end of file diff --git a/.resources/0820d1217c0b9c6ab22fa3b5420467f7cc315cacd36068f6d65a039ffbe4b73b b/.resources/0820d1217c0b9c6ab22fa3b5420467f7cc315cacd36068f6d65a039ffbe4b73b deleted file mode 100644 index 49fef2179b1bead11a0c8018496f1bcce6b23a06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12874 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�b{6OIfJ)r)ZTN+R9F zkp$=<%*{G}xH#`EoH+gt+9M=)X;G zMs7<7p5C8~rELGl59f(fyzF_8*118+wQn9y#gaAAc=}X{xF#%FE(Xy_ZEP zzr2i(A67Z4d_Kq|Z&cDt@1{}H&YW$lOKe$ICOK3^J*uWq*w~4Lnhxa9Y(An~{k-B5 zRP)9Z8q=~9%aXMswiZhwEsBda zQlv<2_Bc)xr%2k2<0;y-Nt{d{`r3!ikLX99P$X#*2puebPqi@^fOXzqT`Sl9K1~?lZixvC=A2kDI9~I&1N-I^7%XrKvSVmh(@E5Byk)!XUgpC zEC#WJh@EDkXomFhU4 z6pO_U9XbRGE?l^9=FFMi-d@;)I54>V)Yxej@WyZz4j>$SJ|Fynhdn(#@a_Eh^H_YE zraL=3Q>hdd87y>ncVD@3<<6ZuAnWSYt6<^a!Gq9Y1|8Y4eF}=Z!U96z;>C-%ZrwV2 z_AH_ui+tk5i9jH5;J^Vmh8O`IWV0ZaE|+U%Wd#&~EI8lQ)dgNaANnl`gyOES01rn; zN3r1j{r!jwaDf!KeEBjKnPu7G;bAz5ei+NLjNAcDh!^BeC={Y73Uq)J5QIQz9{pWq z7g&G;So!_?_hWB!I-T${olawGIC=6U_B=Rw`0(L#=gwiZ1wlamA3b{X^y$;ru3f{* zBQ(fU{3{ZP{J+Km1PPCw9|r+^Kt^B-Ajjmw!h$G@XyPnDUd+$W7tL@$2*6=-M&e(1 ziY7WS2s)cbe<#^_7Btm3FLknvs1`~kL&1ugWdd5|ict#GDwV2vuxf^0g43`vIEn>Da_TT=0#^FwN~+|-P#XT;S%W+Qq=JOSPt*8wQDPuDx@zTpmXD_}wP zdS=oBSBJ=_0G?yHB$H(MSf=Wg*P?@?%J25-zx{=F;Fq@HS9-_K*`dM2bO3;YCOTWp ztb#F}e6oY-A0#YzL@`Yu2qM4>0>|-eDuvUFU7#n@f9Cf7SoS&j@{%AGgo0`dWc(Jz zTt1!608r30JM95RmJ7UIQM*2^v+#`wrtmzEa~p>rX6XfjBlXF@b9W?o@q!eYh`s91aHp0ryTQxGV&NK~Mn8n>TOT!GhYk=Q~-T6EP+g7D_H@Ez&n6hQsMx z?#*G|QR*yU*}(z{I>bLnM|8N|?n0q3IXQXb#tj(5`I(s+hbh)>4QYYratcG;+?oZl zH8Nmffe+>GdJ0c&JLmWWV;o>s2w?&44VVHhu3x_n3P1-~KvEzzz{1eb5PI-Fk|d#t zjIeW#k!=$FAObxej|YhWw~-Wh6LLCW6WKi$zR8Hk zHf02|9a{i=CZ{9lKxj-&O=0mViXtgMjBR7#tr@{E#t{|?j|&g&*d4Lj-QC?-fB1$; z1+yq{I-P?90}hJn>+L0Zt9 zO*%bZYHHf$ayJ@dgT$_B2MgbNQr1~8z7Z1^_E}stiLYzK`r!u!73MW3xlEgxMe%>Y)M03W*7N5<%cyM>|vmdEH`~K6Yx4gWP zVp)r8ghttt1*8AXs>!GwW3OvR%WqRnFz+@mm&>3a^U?SI<{nwTx0+&@wD{(=%0j&L zHdSYVj?FuSM;vxX?-W<636g|}unBBVy0^OekGTKu-akBj{+!Lptu|Idl6kG9cJ1Bz z`vUp6fO~Z!$w$S?jEvfGI6potdnRSKLv~Ntgo2AoglMV!Kwo~$gc+Pltu|I-n#u(I z%m_tT*!L1OSGx^jLRR2l-8sAS|cJF@I^>_GOPd9SK9EGo=<77 z#tIvhvOyK>0>+;%KAX{>dGu#cjOpxyg6UpN7GL_xFWQuR#vKUL)i3GF8eMr(2V-Cz zzjWy_UHS`t7pm*Y+Lv~NDX-DxF90a5PpwCF9j^TkE_|3-BHC+d00000NkvXXu0mjf DUz^y~ diff --git a/.resources/0a861bbdc1d108aebaf6e7a81373a3e230a37c4f57871ef0dc93f8ddeb273bf4 b/.resources/0a861bbdc1d108aebaf6e7a81373a3e230a37c4f57871ef0dc93f8ddeb273bf4 deleted file mode 100644 index 37f829cd..00000000 --- a/.resources/0a861bbdc1d108aebaf6e7a81373a3e230a37c4f57871ef0dc93f8ddeb273bf4 +++ /dev/null @@ -1,17 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "var(--error)", - "borderTopLeftRadius": "4px", - "borderTopRightRadius": "4px", - "borderBottomLeftRadius": "4px", - "borderBottomRightRadius": "4px", - "color": "var(--neutral-10)", - "fontSize": "12px", - "fontWeight": "bold", - "lineHeight": "16px", - "padding": "2px", - "textAlign": "center" - } - } -} \ No newline at end of file diff --git a/.resources/0ad7bb1e58f29b464bca7868777571c670253aba153eed8bffdaae47b7ebcc8f b/.resources/0ad7bb1e58f29b464bca7868777571c670253aba153eed8bffdaae47b7ebcc8f deleted file mode 100644 index 91294589..00000000 --- a/.resources/0ad7bb1e58f29b464bca7868777571c670253aba153eed8bffdaae47b7ebcc8f +++ /dev/null @@ -1,732 +0,0 @@ -{ - "custom": { - "FillColour": "value", - "alarm_message": null, - "covert_mode": true, - "disconnected": false, - "display_icon": true, - "error": false, - "isMatch": 0, - "plc": "value", - "priority": 0, - "priority_string": "No active alarms", - "running": false, - "running_status": 0, - "searchId": "PLC01", - "show_error": false, - "show_running": true, - "state": 5, - "state_string": "Unknown" - }, - "params": { - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.FillColour": { - "persistent": true - }, - "custom.alarm_message": { - "persistent": true - }, - "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} || {session.custom.alarm_filter.show_running},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\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": { - "binding": { - "config": { - "expression": "{view.custom.running_status} \u003d 3" - }, - "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.show_error": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\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\tFalse)", - "type": "expression" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.show_running": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\r\n\t\t1, False,\r\n\t\t2, False,\r\n\t\t{session.custom.alarm_filter.show_running}\r\n\t\t)", - "type": "expression" - } - ], - "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.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": "Spiral" - }, - "position": { - "height": 0.005, - "width": 0.005, - "x": 0.0225, - "y": 0.0277 - }, - "props": { - "params": { - "tagProps": [ - "", - "", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "path": "Symbol-Views/Equipment-Views/Spiral" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Spiral_Symbol" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "props.elements[1].elements[0].fill.paint": { - "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,if({view.custom.running},{session.custom.colours.state5},{session.custom.colours.state0}),\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)", - "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": "defs2", - "name": "defs2", - "type": "defs" - }, - { - "elements": [ - { - "cx": "6.6145835", - "cy": "6.6145835", - "fill": {}, - "id": "path234", - "name": "path234", - "r": "6.303678", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.23" - }, - "type": "circle" - }, - { - "cx": "6.6145835", - "cy": "6.6145835", - "fill": { - "paint": "transparent" - }, - "id": "path234-7", - "name": "path234-7", - "r": "3.313657", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.221" - }, - "type": "circle" - }, - { - "d": "M 6.6188113,9.8749524 6.6103553,3.3542142", - "fill": { - "paint": "transparent" - }, - "id": "path3429", - "name": "path3429", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.218" - }, - "type": "path" - }, - { - "d": "M 4.978764,9.47052 8.23181,3.819167", - "fill": { - "paint": "transparent" - }, - "id": "path3429-8", - "name": "path3429-8", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.218" - }, - "type": "path" - }, - { - "d": "M 3.818909,8.2200703 9.461806,4.9523781", - "fill": { - "paint": "transparent" - }, - "id": "path3429-8-2", - "name": "path3429-8-2", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.218" - }, - "type": "path" - }, - { - "d": "M 3.3168328,6.6175189 9.837571,6.6090589", - "fill": { - "paint": "transparent" - }, - "id": "path3429-8-2-6", - "name": "path3429-8-2-6", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.218" - }, - "type": "path" - }, - { - "d": "M 3.7180036,4.9712623 6.8282074,6.7528116", - "fill": { - "paint": "transparent" - }, - "id": "path3429-8-2-6-5", - "name": "path3429-8-2-6-5", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.219869" - }, - "type": "path" - }, - { - "d": "M 4.9523763,3.7647768 8.2200718,9.4076712", - "fill": { - "paint": "transparent" - }, - "id": "path3429-8-2-6-5-5", - "name": "path3429-8-2-6-5-5", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.218" - }, - "type": "path" - }, - { - "cx": "6.6145835", - "cy": "6.6145835", - "fill": { - "opacity": "1", - "paint": "#fefefe" - }, - "id": "path234-7-0", - "name": "path234-7-0", - "r": "0.26523831", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.218" - }, - "type": "circle" - } - ], - "id": "layer1", - "name": "layer1", - "type": "group" - } - ], - "style": {}, - "viewBox": "0 0 13.229166 13.229167" - }, - "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" - } - }, - "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/0aea4824e5cd19abe3a17ab3099ac602fb60c1cd1cec739931d7bbb511312fc1 b/.resources/0aea4824e5cd19abe3a17ab3099ac602fb60c1cd1cec739931d7bbb511312fc1 deleted file mode 100644 index fb1801e0..00000000 --- a/.resources/0aea4824e5cd19abe3a17ab3099ac602fb60c1cd1cec739931d7bbb511312fc1 +++ /dev/null @@ -1,7 +0,0 @@ -{ - "base": { - "style": { - "color": "#808080" - } - } -} \ No newline at end of file diff --git a/.resources/0b1d8660788bcc32b982c0ddfea2de4793f935610e6c548fb24be2e3fbfe0941 b/.resources/0b1d8660788bcc32b982c0ddfea2de4793f935610e6c548fb24be2e3fbfe0941 deleted file mode 100644 index c38ccd02..00000000 --- a/.resources/0b1d8660788bcc32b982c0ddfea2de4793f935610e6c548fb24be2e3fbfe0941 +++ /dev/null @@ -1,33 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "var(--neutral-10)", - "borderColor": "var(--warning)", - "borderStyle": "solid", - "borderWidth": "1px", - "boxShadow": "none", - "color": "var(--warning)", - "fontWeight": "normal", - "margin": "5px", - "textTransform": "uppercase", - "fill": "var(--warning)" - } - }, - "variants": [ - { - "pseudo": "hover", - "animation": { - "duration": "0.2s", - "direction": "normal", - "iterationCount": "1", - "timingFunction": "ease", - "keyframes": { - "0%": {}, - "100%": { - "backgroundColor": "var(--neutral-20)" - } - } - } - } - ] -} \ No newline at end of file diff --git a/.resources/0b69a2600dea457666fc3df215032010eeadae6fec9009a7bcc3a854b45edf25 b/.resources/0b69a2600dea457666fc3df215032010eeadae6fec9009a7bcc3a854b45edf25 deleted file mode 100644 index dcdc17ce9e7c5621b4edb9edbf11556787bb94e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmV-V1F-ywP)xoYh0009PNklscH{?>O>g%d6o4)T`FKP>Iw~b98hLQl?1_vB&0m8a50b+=`d+Zs{*e33A z(`LJi)R$EP50ySy=gfV6GiQ#uZK=JP?W}+5->=wPWwKQwnR-w%q255sf8IK0booQ8r(J<1PojfI0SHz zwS0^pSggHmxQ$~At+yHW*Uvk{Qg$jWj|MTrIe%klvwJQY|lF@Z$ z0XYoQ22ikp!1(53X5yd(S=S{&w{NvyhcGN=5%y!pYva31Z)#T`E+mZ}MWxZygk4b= zGQInC1Fp@km@~I**D$QHNp0#N>^PneDG*v>+oR6awM{S?PO!~9P=^I0KuZ?5$i|S% znKKw8!sh0}+$#uoFQtZfId*yp8ULhOKW&d-=Y4(j`K)zZYnj-V_QgozuxGH@WO!Vv zw}*sSMCRTD_Dqe`SwOVmq;7t0(e8^iw^XNgo_3`Aj05EL`gSMDpP1xD?^jo%3$^ zRXCMz_Qod2(U9{`!-=*&Jxm89#D%>=LygB0hjK*_4?ovyFTy+JmOjH2{X3La5V##@ zA-wirt(10QLsn5iihIoBGQ{mzqT?OH0O=&3!bKE5xXqmjnP4u*8DLx7D&vU-t zTN)F!%h7(VJpjOQcVzf}04(qTz?y8Wp-AEOv-JQt5O;@fJ3u))C6f|A7=jfYV{PPA zGI?QsJ_ldAxAY#hIzpe0s-03 z(2xwR<0nqg6#aC%q&}MdMSax90d1+XH($UE?Eltnuc~nrVQgvR!(#UW^b+T%d+bfsLhet*dtOgxw(_PeNxtff%1RQy=D%4OsJ1zB$khHZ16gz+= z@7Wq-ODaJnh!mqas*rY1(7kyT1msMb1+Wcw24U+M5FxP@SXtr)io(z^V0FU|tkWlo zTbi3K!R9fuyvyo(+ zI{}JrYGk>iwD#QTig+%uBbcH5rXiM7;n!t4bz0l!s+bkwkglkN4^<*Ip}J}s0Qtdx zs6gq$8jOGE;+&MUxbRy0dn|$G6Wdt6rwX-keMUidUzsa(g~Q~*w46uR{qdn7^isK=WGlT`AN3^kfiy(&9N7!Cux zGUfN;SKsZZO-EU=%h)U8Z9{R(!C0cdH!a1%V_~YTO+V3d&PHKgG?rzFJ*pwXyh-I< zaqk5uCwd)OC8SMFP4zLI21+bIoHhAbntW{LQ5u8Liv7i1S?&#rzTE6xu9U>=M^jJR zgWCg2$-V+I1lX6Udxe3B`(povedT|5=6%ZBC-yy;_gwy#uXlMEF5Q?giNr1KMw1YL zhwCFGPso`HbMG}(jx~sL*}yQL)-{uKGfE1Ni_Iw*-vQ}ob_fGi>IIUhH`5jryV$hC z<0EVEpnLFhv5s4Ki~ev_=8@-e&JyhTG(yrfG{mp$kiDrUymhP1*9Q2uuE7(DcK;7e z3M#2f?ysQHab`+QF!j{23e^@!i8U{}#4W9@0ilNHl}&f`c>jT55WI6v(-&;&I~-?t4d zh8AS;|g^+{0Me>O1QoYl5;bcCo!+Wh5( zON+%AmQ&+eAOx+h69&+n6TFT@c+f~6F8=RSmHDUjYn z^+k;AOd?`S>fCn5a*pO-_pFa*BLEMPDy%ttUQ$C^jn||I6w~)By%i?ItO9y=vKj8X z5GDTVHli2OR8&t%TUIjtq> zX{hK{zfF=klbL`1Os2wrVoaHVzs~Tu6@Q`L}Q(hA#nf zIjA;yh5=-S=qFRxv2>J5qMi|j;G;*eRO%;0|Eh`NLn1pq7*MBN`E`2!kZwK_e;Gsw zx{sBsi}C|Q*>&E#0pL#@A;qq32cU;TE&{iCabCKwzDX&QE5d7VlYho3aD1<90k8lWy9vf7h5Ee?_E1Ny=wJ-XR=5-v)@fkg$Qhxm=l_}74 k_3P8(*^S;x#^Q}W0m@z^WK#m~N&o-=07*qoM6N<$f?0;>0ssI2 diff --git a/.resources/0d51aa88cae4f132cdfb9f66c0a1478d0d803248f1b6d983393ce03dcb01a7ea b/.resources/0d51aa88cae4f132cdfb9f66c0a1478d0d803248f1b6d983393ce03dcb01a7ea deleted file mode 100644 index 4f1fc260..00000000 --- a/.resources/0d51aa88cae4f132cdfb9f66c0a1478d0d803248f1b6d983393ce03dcb01a7ea +++ /dev/null @@ -1,519 +0,0 @@ -{ - "custom": { - "alarm_message": null, - "covert_mode": true, - "disconnected": true, - "display_icon": true, - "plc": "System", - "priority": 0, - "priority_string": "No Active Alarms", - "running": false, - "searchId": "PLC01", - "state": 0, - "state_string": "Off(Inactive)" - }, - "params": { - "angle": 0, - "directionLeft": false, - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "System/MCM01/Conveyor/UL1_3_VFD1", - "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, True,\r\n\t\t1, True,\r\n\t\t2, {session.custom.alarm_filter.show_running},\r\n\t\t3, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\r\n\t\t4, True,\r\n\t\t5, True,\r\n\t\t6, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\r\n\t\t7, True,\r\n\t\t8, True,\r\n\t\t9, True,\r\n\t\t13, True,\r\n\t\t14, True,\r\n\t\t61, True,\r\n 131, True,\t\r\n\t\tFalse )", - "type": "expression" - } - ], - "type": "property" - }, - "persistent": true - }, - "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.display_icon": { - "binding": { - "config": { - "expression": "{this.custom.covert_mode} \u003e 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": 0, - "output": 0 - }, - { - "input": 1, - "output": 0 - }, - { - "input": 2, - "output": 0 - }, - { - "input": 3, - "output": 4 - }, - { - "input": 4, - "output": 1 - }, - { - "input": 5, - "output": 3 - }, - { - "input": 6, - "output": 4 - }, - { - "input": 7, - "output": 1 - }, - { - "input": 8, - "output": 1 - }, - { - "input": 9, - "output": 1 - }, - { - "input": 13, - "output": 1 - }, - { - "input": 14, - "output": 2 - }, - { - "input": 61, - "output": 4 - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.priority_string": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "fallback": "Unknown", - "inputType": "scalar", - "mappings": [ - { - "input": 0, - "output": "No Active Alarms" - }, - { - "input": 1, - "output": "No Active Alarms" - }, - { - "input": 2, - "output": "No Active Alarms" - }, - { - "input": 3, - "output": "Diagnostic" - }, - { - "input": 4, - "output": "High" - }, - { - "input": 5, - "output": "Low" - }, - { - "input": 6, - "output": "Diagnostic" - }, - { - "input": 7, - "output": "High" - }, - { - "input": 8, - "output": "High" - }, - { - "input": 9, - "output": "High" - }, - { - "input": 13, - "output": "High" - }, - { - "input": 14, - "output": "Medium" - }, - { - "input": 61, - "output": "Diagnostic" - }, - { - "input": 131, - "output": "Medium" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.running": { - "binding": { - "config": { - "expression": "{view.custom.state} \u003d 1" - }, - "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},{view.params.forceFaultStatus},0)", - "type": "expression" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.state_string": { - "binding": { - "config": { - "expression": "case({view.custom.state},\r\n0, \"Off(Inactive)\",\r\n1, \"Enabled, Not Running\",\r\n2, \"Running\",\r\n3, \"Energy Management\",\r\n4, \"Jammed\",\r\n5, \"Full\",\r\n6, \"Maintenance Mode / Conveyor Stopped In Maintenance Mode\",\r\n7, \"Communication Fault\",\r\n8, \"VFD Fault\",\r\n9, \"E-Stop\",\r\n13,\"Encoder_Fault\",\r\n14,\"Stopped\",\r\n61,\"Conveyor Running In Maintenance Mode\",\r\n131, \"Disconnected\",\r\n\"Unknown\")" - }, - "type": "expr" - }, - "persistent": true - }, - "params.angle": { - "paramDirection": "input", - "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": 20, - "width": 29 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "RunningStatus" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "if(({view.custom.display_icon} || ({view.custom.show_running} \u0026\u0026 !{view.custom.show_error})) \u0026\u0026 !{view.params.directionLeft}, True, False)" - }, - "type": "expr" - } - }, - "props.elements[0].fill.paint": { - "binding": { - "config": { - "expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14, 61, 131,\r\n \"#c2c2c2\", \"#c9fcc0\", \"#00ff11\", \"#00ffd0\", \"#ff8c00\",\r\n \"#0008ff\", \"#946446\", \"#ff0000\", \"#ff0000\", \"#ff0000\", \"#ff8c00\", \"#c2c2c2\", \"#B45C5C\", \"#c2c2c2\",\r\n \"#fff700\"\r\n )\r\n)\r\n" - }, - "type": "expr" - } - }, - "props.style.transform": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Direction" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"\")", - "type": "expression" - }, - { - "fallback": "", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "scaleX(-1)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "elements": [ - { - "d": "M 0 0 L 40 0 L 40 0 L 70 30 L 40 60 L 40 60 L 0 60 L 30 30 Z", - "fill": {}, - "name": "path", - "stroke": { - "paint": "#4c4c4c", - "width": "2" - }, - "type": "path" - } - ], - "style": { - "overflow": "hidden" - }, - "viewBox": "-1.5 -1.5 73 63" - }, - "type": "ia.shapes.svg" - } - ], - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tsystem.perspective.openDock(\u0027Docked-East-VFD\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/High" - }, - { - "input": 2, - "output": "Alarms-Styles/Medium" - }, - { - "input": 3, - "output": "Alarms-Styles/Low" - }, - { - "input": 4, - "output": "Alarms-Styles/Diagnostic" - } - ], - "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": "view.custom.display_icon" - }, - "type": "property" - } - }, - "props.style.borderStyle": { - "binding": { - "config": { - "path": "view.custom.disconnected" - }, - "enabled": false, - "transforms": [ - { - "fallback": "", - "inputType": "scalar", - "mappings": [ - { - "input": true, - "output": "solid" - }, - { - "input": false, - "output": "none" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "justify": "center", - "style": { - "borderColor": "#FF0000", - "borderStyle": "none", - "borderWidth": "2px", - "cursor": "pointer" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/0ddac48378f283681a639cb7d401f99f5ce5d2906c1af92b9d91ed64a3dbda40 b/.resources/0ddac48378f283681a639cb7d401f99f5ce5d2906c1af92b9d91ed64a3dbda40 deleted file mode 100644 index 2c04f42c..00000000 --- a/.resources/0ddac48378f283681a639cb7d401f99f5ce5d2906c1af92b9d91ed64a3dbda40 +++ /dev/null @@ -1,32 +0,0 @@ -def build_row(**kwargs): - """ - Args: - Any number of arguments using kwargs key = value format. - Key StyleClass is used for adding formatting to the row. - StyleClass = {classes:value} - Returns: - A python dict with style formatting for perspective tables.. - - Raises: - KeyError: Raises an exception. - """ - row = {} - column ={} - for key,value in kwargs.items(): - if key != "StyleClass": - column[key]={"value":value} - row["value"]=column - style_class = kwargs.get("StyleClass") - row["style"] = style_class - return row - -def build_row_with_view(**kwargs): - row = {} - column ={} - for key,value in kwargs.items(): - if key != "StyleClass": - column[key]= value - row["value"]=column - style_class = kwargs.get("StyleClass") - row["style"] = style_class - return row diff --git a/.resources/0e574a657f2409006a0fc869305665e36f595223ea7ff96608daaa03368da2f2 b/.resources/0e574a657f2409006a0fc869305665e36f595223ea7ff96608daaa03368da2f2 deleted file mode 100644 index 4e758880..00000000 --- a/.resources/0e574a657f2409006a0fc869305665e36f595223ea7ff96608daaa03368da2f2 +++ /dev/null @@ -1,656 +0,0 @@ -{ - "custom": { - "FillColour": "value", - "alarm_message": null, - "covert_mode": true, - "disconnected": false, - "display_icon": true, - "error": false, - "isMatch": 0, - "plc": "value", - "priority": 0, - "priority_string": "No active alarms", - "running": false, - "running_status": 0, - "searchId": "value", - "show_error": false, - "show_running": true, - "state": 5, - "state_string": "Unknown" - }, - "params": { - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.FillColour": { - "persistent": true - }, - "custom.alarm_message": { - "persistent": true - }, - "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} || {session.custom.alarm_filter.show_running},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\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": { - "binding": { - "config": { - "expression": "{view.custom.running_status} \u003d 3" - }, - "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.show_error": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\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\tFalse)", - "type": "expression" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.show_running": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\r\n\t\t1, False,\r\n\t\t2, False,\r\n\t\t{session.custom.alarm_filter.show_running}\r\n\t\t)", - "type": "expression" - } - ], - "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.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": "PPI" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "props.elements[1].elements[0].fill.paint": { - "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" - }, - { - "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": "defs1", - "name": "defs1", - "type": "defs" - }, - { - "elements": [ - { - "cx": "6.6145835", - "cy": "6.6145835", - "fill": {}, - "id": "path1", - "name": "path1", - "r": "6.019948", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.264583" - }, - "type": "circle" - }, - { - "d": "m 2.1166666,8.5242134 h 3.175", - "fill": { - "paint": "transparent" - }, - "id": "path2", - "name": "path2", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.264583" - }, - "type": "path" - }, - { - "d": "M 7.9374999,8.5242134 H 11.112492", - "fill": { - "paint": "transparent" - }, - "id": "path3", - "name": "path3", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.264583" - }, - "type": "path" - }, - { - "d": "M 5.1593748,4.183724 V 8.4170573", - "fill": { - "paint": "transparent" - }, - "id": "path5", - "name": "path5", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.264583" - }, - "type": "path" - }, - { - "d": "m 8.2020833,4.1405926 h -3.175", - "fill": { - "paint": "transparent" - }, - "id": "path6", - "name": "path6", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.264583" - }, - "type": "path" - }, - { - "d": "M 8.0697914,4.183724 V 8.4170573", - "fill": { - "paint": "transparent" - }, - "id": "path7", - "name": "path7", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.264583" - }, - "type": "path" - } - ], - "id": "layer1", - "name": "layer1", - "type": "group" - } - ], - "style": {}, - "viewBox": "0 0 13.229166 13.229167" - }, - "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" - } - }, - "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/0e9ab817a96b6ec0c8940f1861f7f1ac60656608b4362c7cb419c3d4f82ade1f b/.resources/0e9ab817a96b6ec0c8940f1861f7f1ac60656608b4362c7cb419c3d4f82ade1f deleted file mode 100644 index d00b2add..00000000 --- a/.resources/0e9ab817a96b6ec0c8940f1861f7f1ac60656608b4362c7cb419c3d4f82ade1f +++ /dev/null @@ -1,447 +0,0 @@ -{ - "custom": {}, - "params": { - "tagProps": [ - "", - "", - "PLC", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 148, - "width": 362 - } - }, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Spacer1" - }, - "position": { - "basis": "20px" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50px" - }, - "props": { - "text": "NAME" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Spacer" - }, - "position": { - "basis": "100px" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "DeviceName" - }, - "position": { - "basis": "205px" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "/root.custom.name" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Name" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Spacer1" - }, - "position": { - "basis": "20px" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50px" - }, - "props": { - "text": "PRIORITY" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Spacer" - }, - "position": { - "basis": "100px" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Priority" - }, - "position": { - "basis": "205px" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "expression": "{/root.custom.priority}" - }, - "transforms": [ - { - "fallback": "Alarms-Styles/NoAlarm", - "inputType": "scalar", - "mappings": [ - { - "input": 4, - "output": "Alarms-Styles/Critical" - }, - { - "input": 3, - "output": "Alarms-Styles/High" - }, - { - "input": 2, - "output": "Alarms-Styles/Medium" - }, - { - "input": 1, - "output": "Alarms-Styles/Low" - }, - { - "input": 0, - "output": "Alarms-Styles/Diagnostic" - } - ], - "outputType": "style-list", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "path": "/root.custom.priority" - }, - "transforms": [ - { - "fallback": "", - "inputType": "scalar", - "mappings": [ - { - "input": 4, - "output": "Critical" - }, - { - "input": 3, - "output": "High" - }, - { - "input": 2, - "output": "Medium" - }, - { - "input": 1, - "output": "Low" - }, - { - "input": 0, - "output": "Warning" - }, - { - "input": 5, - "output": "No active alarms" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "textAlign": "left" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Priority" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Spacer1" - }, - "position": { - "basis": "20px" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50px" - }, - "props": { - "text": "TIMESTAMP" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Spacer" - }, - "position": { - "basis": "100px" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "DeviceName" - }, - "position": { - "basis": "205px" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "/root.custom.timestamp" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "EventTime" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Spacer1" - }, - "position": { - "basis": "20px" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50px" - }, - "props": { - "text": "DURATION" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Spacer" - }, - "position": { - "basis": "91px" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Spacer_0" - }, - "position": { - "basis": "199px" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "/root.custom.duration" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "EventTime_0" - }, - "position": { - "basis": "40px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "custom": { - "delay": 2000, - "duration": "", - "enable": true, - "name": "", - "priority": "", - "timestamp": "" - }, - "meta": { - "name": "root" - }, - "propConfig": { - "custom.active_bit": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "1": "{view.params.tagProps[1]}" - }, - "tagPath": "{0}/Alarms/{1}.IsActive" - }, - "type": "tag" - } - }, - "custom.shelved_bit": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "1": "{view.params.tagProps[1]}" - }, - "tagPath": "{0}/Alarms/{1}.IsShelved" - }, - "type": "tag" - } - }, - "custom.update": { - "binding": { - "config": { - "expression": "now({this.custom.delay})" - }, - "type": "expr" - }, - "onChange": { - "enabled": null, - "script": "\tif self.custom.enable:\n\t\t\n\t\timport time\n\t\t\n\t\tdef convert(millis):\n\t\t\tmillis \u003d int(millis)\n\t\t\tseconds\u003d(millis/1000)%60\n\t\t\tseconds \u003d int(seconds)\n\t\t\tminutes\u003d(millis/(1000*60))%60\n\t\t\tminutes \u003d int(minutes)\n\t\t\thours\u003d(millis/(1000*60*60))\n\t\t\treturn(\"%d:%d:%d\" % (hours, minutes, seconds))\n\t\t\n\t\tdef update_custom_properties(name, timestamp, duration, priority):\n\t\t\tself.custom.name \u003d name\n\t\t\tself.custom.timestamp \u003d timestamp\n\t\t\tself.custom.duration \u003d duration\n\t\t\tself.custom.priority \u003d priority\n\t\t\n\t\tdef get_alarms():\n\t\t\talarm_dict \u003d system.tag.readBlocking(\"System/ActiveAlarms\")\n\t\t\talarms_decoded \u003d system.util.jsonDecode(alarm_dict[0].value)\n\t\t\treturn alarms_decoded\n\t\t\t\n\t\tdef get_tag_config():\n\t\t\tname \u003d\"\"\n\t\t\tpath \u003d self.view.params.tagProps[0]\n\t\t\tif system.tag.exists(path) and path !\u003d \"\":\n\t\t\t\ttag_config \u003d system.tag.getConfiguration(path)[0]\n\t\t\t\talarms \u003d tag_config.get(\"alarms\")\n\t\t\t\tfor alarm in alarms:\n\t\t\t\t\tif alarm.get(\"name\") \u003d\u003d self.view.params.tagProps[1]:\n\t\t\t\t\t\tname \u003d alarm.get(\"AdditionalInfo\")\n\t\t\t\t\t\tbreak\n\t\t\t\ttimestamp \u003d \"N/A\"\n\t\t\t\tduration \u003d \"N/A\"\n\t\t\t\tpriority \u003d 5\n\t\t\t\tupdate_custom_properties(name, timestamp, duration, priority)\n\t\t\t\t\t\n\t\tdef get_active_alarm():\n\t\t\ttagPath \u003d self.view.params.tagProps[0]\n\t\t\tprops_alarm_name \u003d str(self.view.params.tagProps[1])\n\t\t\ttag_display_path \u003d tagPath + \"/\" + props_alarm_name\n\t\t\talarms \u003d get_alarms()\n\t\t\tfor i in alarms:\n\t\t\t\tdisplaypath \u003d alarms[i].get(\"DisplayPath\")\n\t\t\t\talarm_name \u003d alarms[i].get(\"Name\")\n\t\t\t\tsystem.perspective.print(displaypath)\n\t\t\t\tif tag_display_path \u003d\u003d displaypath:\n\t\t\t\t\tname \u003d alarms[i].get(\"AddInfo\")\n\t\t\t\t\ttimestamp \u003d alarms[i].get(\"TimeStamp\")\n\t\t\t\t\tduration \u003d alarms[i].get(\"Duration\")\n\t\t\t\t\tduration \u003d convert(duration)\n\t\t\t\t\tpriority \u003d alarms[i].get(\"Priority\")\n\t\t\t\t\tupdate_custom_properties(name, timestamp, duration, priority)\n\t\t\t\t\tbreak\n\t\t\t\t\t\n\t\tif self.custom.active_bit and not self.custom.shelved_bit:\n\t\t\tget_active_alarm()\n\t\t\t\n\t\telse:\n\t\t\talarms \u003d get_tag_config()" - } - } - }, - "props": { - "direction": "column", - "style": { - "borderRadius": "10x", - "borderStyle": "solid", - "classes": "PopUp-Styles/Information-Device" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/0f09a1c681c1a4dddc3a6cabd6785bec04020561461a59aeda2db1a0baad3f1a b/.resources/0f09a1c681c1a4dddc3a6cabd6785bec04020561461a59aeda2db1a0baad3f1a deleted file mode 100644 index 7eb98ea7..00000000 --- a/.resources/0f09a1c681c1a4dddc3a6cabd6785bec04020561461a59aeda2db1a0baad3f1a +++ /dev/null @@ -1,773 +0,0 @@ -{ - "custom": { - "api_region_name": "na", - "bucket_options": [ - { - "label": "Image Files", - "value": "na-ignition-image-repo" - }, - { - "label": "Source Files", - "value": "na-ignition-image-source" - } - ], - "default_query_params": { - "bucket": null, - "object_key": null, - "site": null, - "view": null - }, - "destination_view_suffix": null, - "object_key": null, - "stage_config": { - "account_id": "925510716640", - "endpoint": "https://scada-s3-management.narme-scada.rme.amazon.dev/", - "lambda_name": "RMESDScadaS3ManagementFlaskLambda-prod", - "region": "us-east-2", - "repo_bucket": "na-ignition-image-repo", - "s3_region": "us-east-1", - "source_bucket": "na-ignition-image-source" - }, - "view_options_by_site_and_bucket": [], - "view_suffix": null, - "whid_options": [] - }, - "params": { - "query_params": { - "bucket": null, - "object_key": null, - "site": null, - "view": null - } - }, - "propConfig": { - "custom.api_region_name": { - "binding": { - "config": { - "path": "session.custom.aws.prefix" - }, - "type": "property" - }, - "persistent": true - }, - "custom.bucket_options": { - "binding": { - "config": { - "path": "view.custom.stage_config" - }, - "transforms": [ - { - "code": "\treturn [{\u0027value\u0027: value.repo_bucket, \u0027label\u0027: \u0027Image Files\u0027},\n\t\t\t{\u0027value\u0027: value.source_bucket, \u0027label\u0027: \u0027Source Files\u0027}]", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.default_query_params": { - "persistent": true - }, - "custom.object_key": { - "binding": { - "config": { - "path": "view.params.query_params" - }, - "transforms": [ - { - "code": "\tstage_config \u003d self.custom.stage_config\n\tbucket \u003d self.params.query_params.bucket\n\tsite \u003d self.params.query_params.site\n\tview \u003d self.params.query_params.view\n\tif bucket and site and view:\n\t\tif bucket \u003d\u003d stage_config.repo_bucket:\n\t\t\tsuffix \u003d \u0027.svg\u0027\n\t\t\tsubfolder \u003d \u0027images\u0027\n\t\telse:\n\t\t\tsuffix \u003d \u0027.drawio\u0027\n\t\t\tsubfolder \u003d \u0027source\u0027\n\t\treturn \"SCADA/%s/%s/%s%s\" % (site, subfolder, view, suffix)\n\telse:\n\t\treturn None\n", - "type": "script" - } - ], - "type": "property" - }, - "onChange": { - "enabled": null, - "script": "\td \u003d self.params.query_params\n\tif getattr(currentValue, \u0027value\u0027, None):\n\t\tself.params.query_params.object_key \u003d currentValue.value\n\t" - }, - "persistent": true - }, - "custom.stage_config": { - "binding": { - "config": { - "expression": "{view.custom.api_region_name}" - }, - "transforms": [ - { - "code": "\treturn AWS.s3.STAGE_CONFIG[\u0027prod\u0027][value]", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.view_options_by_site_and_bucket": { - "binding": { - "config": { - "expression": "{view.params.query_params.site}+{view.params.query_params.bucket}" - }, - "transforms": [ - { - "code": "\tbucket \u003d self.params.query_params.bucket\n\tsite \u003d self.params.query_params.site\n\tif bucket and site:\n\t\tfrom AWS.s3 import S3Manager\n\t\tfrom helper.helper import sanitize_tree\n\t\tfrom pprint import pformat\n\t\t\n\t\tapi_stage \u003d \u0027prod\u0027\n\t\tusername \u003d self.session.props.auth.user.userName\n\t\tapi_region_name \u003d self.view.custom.api_region_name\n\t\t\n\t\ts3m \u003d S3Manager(api_stage, api_region_name, username)\n\t\tsuffix \u003d self.custom.view_suffix\n\t\tfiles \u003d sanitize_tree(s3m.fetch_object_list_by_site_and_bucket(site, bucket))\n\t\treturn [{\u0027value\u0027: x[\u0027Filename\u0027].replace(suffix,\u0027\u0027), \n\t\t\t\t\u0027label\u0027: x[\u0027Filename\u0027].replace(suffix,\u0027\u0027)} for x in files]\n\treturn []", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.view_suffix": { - "binding": { - "config": { - "path": "view.params.query_params.bucket" - }, - "transforms": [ - { - "code": "\tif value:\n\t\tstage_config \u003d self.custom.stage_config\n\t\tif value \u003d\u003d stage_config.get(\u0027repo_bucket\u0027, None):\n\t\t\treturn \".svg\"\n\t\tif value \u003d\u003d stage_config.get(\"source_bucket\", None):\n\t\t\treturn \".drawio\"\n\treturn value", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.whid_options": { - "binding": { - "config": { - "path": "view.params.query_params.bucket" - }, - "transforms": [ - { - "code": "\tif value:\n\t\tfrom AWS.s3 import S3Manager\n\t\t\n\t\tapi_stage \u003d \u0027prod\u0027\n\t\tusername \u003d self.session.props.auth.user.userName\n\t\tapi_region_name \u003d self.custom.api_region_name\n\t\t\n\t\ts3m \u003d S3Manager(\u0027prod\u0027, api_region_name, username)\n\t\t\n\t\treturn [{\u0027value\u0027: x, \u0027label\u0027: x} for x in s3m.fetch_site_list(value)]\n\treturn []", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "params.query_params": { - "onChange": { - "enabled": null, - "script": "\tif not missedEvents and origin in (\u0027Binding\u0027, \u0027Script\u0027, \u0027BindingWriteback\u0027):\n\t\tpayload \u003d currentValue.value\n\t\tsystem.perspective.sendMessage(\u0027list_versions_query_params_changed\u0027, payload, scope\u003d\u0027session\u0027)\n\t\t" - }, - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 600 - } - }, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "shrink": 0 - }, - "props": { - "style": { - "borderStyle": "none", - "classes": "Framework/Card/Title_transparent" - }, - "text": "Select Query Params" - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t# reset query params to default values \n\t# (stored in `view.custom.default_query_params`)\n\tself.view.params.query_params \u003d self.view.custom.default_query_params" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button", - "tooltip": { - "enabled": true, - "location": "bottom-right", - "text": "Clear Selections" - } - }, - "position": { - "shrink": 0 - }, - "props": { - "image": { - "icon": { - "path": "material/clear_all" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t# refresh version table query via message handler\n\tsystem.perspective.sendMessage(\u0027refresh_version_table_data\u0027, scope\u003d\u0027session\u0027)\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Refresh Button", - "tooltip": { - "enabled": true, - "location": "bottom-right", - "text": "Refresh Data" - } - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.bucket})\r\n\u0026\u0026!isNull({view.params.query_params.site})\r\n\u0026\u0026!isNull({view.params.query_params.view})\r\n\u0026\u0026!isNull({view.params.query_params.object_key})" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/refresh" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "grow": 1 - }, - "props": { - "justify": "flex-end" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer Header" - }, - "position": { - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Title_transparent", - "marginBottom": "2px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Bucket" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "540px", - "grow": 1 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": "view.custom.bucket_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.bucket" - }, - "type": "property" - } - } - }, - "props": { - "dropdownOptionStyle": { - "overflowWrap": "break-word", - "whiteSpace": "normal" - }, - "showClearIcon": true - }, - "type": "ia.input.dropdown" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.bucket \u003d None\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.bucket})\r\n\u0026\u0026{view.params.query_params.bucket}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Bucket" - }, - "position": { - "basis": "100%", - "grow": 1 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "shrink": 0 - }, - "props": { - "justify": "center" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Site" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "540px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.bucket})\r\n\u0026\u0026len({view.params.query_params.bucket})\u003e0" - }, - "type": "expr" - } - }, - "props.options": { - "binding": { - "config": { - "path": "view.custom.whid_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.site" - }, - "type": "property" - } - } - }, - "props": { - "dropdownOptionStyle": { - "overflowWrap": "break-word", - "whiteSpace": "normal" - }, - "showClearIcon": true - }, - "type": "ia.input.dropdown" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.site \u003d None\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.site})\r\n\u0026\u0026{view.params.query_params.site}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Site" - }, - "position": { - "basis": "100%", - "grow": 1 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_2" - }, - "position": { - "shrink": 0 - }, - "props": { - "justify": "center" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "View" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "540px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.bucket})\r\n\u0026\u0026len({view.params.query_params.bucket})\u003e0\r\n\u0026\u0026!isNull({view.params.query_params.site})\r\n\u0026\u0026len({view.params.query_params.site})\u003e0" - }, - "type": "expr" - } - }, - "props.options": { - "binding": { - "config": { - "path": "view.custom.view_options_by_site_and_bucket" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.view" - }, - "type": "property" - } - } - }, - "props": { - "dropdownOptionStyle": { - "overflowWrap": "break-word", - "whiteSpace": "normal" - }, - "showClearIcon": true - }, - "type": "ia.input.dropdown" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.view \u003d None\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.view})\r\n\u0026\u0026{view.params.query_params.view}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "View" - }, - "position": { - "basis": "100%", - "grow": 1 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_3" - }, - "position": { - "shrink": 0 - }, - "props": { - "justify": "center" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Object Key" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.query_params.object_key" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Framework/Card/Value", - "textAlign": "left" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Object Key" - }, - "position": { - "basis": "100%", - "grow": 1 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_4" - }, - "position": { - "shrink": 0 - }, - "props": { - "justify": "center" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/0fe2fc7f40e4f17cdb0d420d7466c3bab885e672235ce78f561e4157a1439a58 b/.resources/0fe2fc7f40e4f17cdb0d420d7466c3bab885e672235ce78f561e4157a1439a58 deleted file mode 100644 index 3077f84b..00000000 --- a/.resources/0fe2fc7f40e4f17cdb0d420d7466c3bab885e672235ce78f561e4157a1439a58 +++ /dev/null @@ -1,1281 +0,0 @@ -{ - "custom": {}, - "params": { - "alarm_states": [ - "Shelved", - "Active", - "Not Active" - ], - "length_of_table_data": 0, - "show_filter": false, - "show_severity_column": true, - "show_state_column": true, - "table_type": "value", - "tagProps": [ - "" - ] - }, - "propConfig": { - "params.alarm_states": { - "paramDirection": "input", - "persistent": true - }, - "params.length_of_table_data": { - "binding": { - "config": { - "expression": "len({/root/Table.props.data})" - }, - "type": "expr" - }, - "paramDirection": "output", - "persistent": true - }, - "params.show_filter": { - "paramDirection": "input", - "persistent": true - }, - "params.show_severity_column": { - "paramDirection": "input", - "persistent": true - }, - "params.show_state_column": { - "paramDirection": "input", - "persistent": true - }, - "params.table_type": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 1080, - "width": 1920 - } - }, - "root": { - "children": [ - { - "custom": { - "alarms_to_shelve": {}, - "alarms_to_unshelve": {}, - "delay": 2000, - "run_export": false, - "run_update": true, - "severity_filters": [ - "off", - "off", - "off", - "off", - "off" - ], - "shelve_alarms": false, - "shelve_duration": "", - "unshelve_alarms": false - }, - "events": { - "component": { - "onRowClick": [ - { - "config": { - "script": "\n\talarm_id \u003d event.value.Alarm_id\n\tsource_id \u003d event.value.SourceId\n\tif self.props.data[event.row].value.Shelve.value \u003d\u003d True:\n\t\tself.props.data[event.row].value.Shelve.value \u003d False\n\t\tkey \u003d alarms.alarm_tables.create_shelve_key(source_id, alarm_id)\n\t\tself.custom.alarms_to_shelve.pop(key, \"no key found\")\n\telse:\n\t\tself.props.data[event.row].value.Shelve.value \u003d True\n\t\tkey \u003d alarms.alarm_tables.create_shelve_key(source_id, alarm_id)\n\t\tself.custom.alarms_to_shelve[key] \u003d event.value.Alarm_id" - }, - "scope": "G", - "type": "script" - }, - { - "config": { - "script": "\tif self.view.params.table_type \u003d\u003d \"Shelved\":\n\t\talarm_id \u003d event.value.Alarm_id\n\t\tsource_id \u003d event.value.SourceId\n\t\t\n\t\tif self.props.data[event.row].value.Unshelve.value \u003d\u003d True:\n\t\t\tself.props.data[event.row].value.Unshelve.value \u003d False\n\t\t\tkey \u003d alarms.alarm_tables.create_shelve_key(source_id, alarm_id)\n\t\t\tself.custom.alarms_to_unshelve.pop(key, \"no key found\")\n\t\telse:\n\t\t\tself.props.data[event.row].value.Unshelve.value \u003d True\n\t\t\tkey \u003d alarms.alarm_tables.create_shelve_key(source_id, alarm_id)\n\t\t\tself.custom.alarms_to_unshelve[key] \u003d event.value.Alarm_id" - }, - "scope": "G", - "type": "script" - } - ], - "onRowDoubleClick": { - "config": { - "script": "\trow \u003d event.value\n\tsource_id \u003d row.get(\"SourceId\")\n\tsource_id \u003d source_id.replace(\" \",\"\")\n\tconfig.project_config.source_id_lookup(self, source_id)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Table" - }, - "position": { - "basis": "1080px" - }, - "propConfig": { - "custom.device": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "type": "property" - } - }, - "custom.run_export": { - "onChange": { - "enabled": null, - "script": "\trun_export \u003d self.custom.run_export\n\tif run_export:\n\t\tdata \u003d self.props.data\n\t\trow_data \u003d []\n\t\tfor i,j in enumerate(data):\n\t\t\tvalue \u003d j[\"value\"]\n\t\t\tif i \u003d\u003d 0:\n\t\t\t\theader \u003d [item for item in value] \t\n\t\t\trow \u003d [value[item][\"value\"] for item in value]\n\t\t\tif not isinstance(row[3], int):\n\t\t\t\trow[3] \u003d 0\t\t\t\n\t\t\trow_data.append(row) \n\t\t\n\t\talarms_data \u003d system.dataset.toDataSet(header,row_data)\n\t\thtml_data \u003d system.dataset.dataSetToHTML(1, alarms_data, \"RealTimeAlarms\")\n\t\tsystem.perspective.download(\"myExport.html\",html_data)\n\t\tself.custom.run_export \u003d False" - } - }, - "custom.severity_filters[0]": { - "access": "PRIVATE" - }, - "custom.shelve_alarms": { - "onChange": { - "enabled": null, - "script": "\tif self.custom.shelve_alarms:\n\t\tsource_ids_to_shelve \u003d []\n\t\tids_to_shelve \u003d [] \n\t\tfor k,v in self.custom.alarms_to_shelve.items():\n\t\t\tsource_id, alarm_id \u003d alarms.alarm_tables.unformat_shelve_key(k)\n\t\t\tsource_ids_to_shelve .append(source_id)\n\t\t\tids_to_shelve.append(alarm_id)\n\t\twhid \u003d self.session.custom.fc\n\t\tduration \u003d self.custom.shelve_duration\n\t\tCommands.shelve_alarms.send_shelve_request(whid, source_ids_to_shelve, \"shelve\", duration, ids_to_shelve)\n\t\tself.custom.alarms_to_shelve \u003d {}\n\t\tself.custom.shelve_alarms \u003d False\n\t\t \t" - } - }, - "custom.unshelve_alarms": { - "onChange": { - "enabled": null, - "script": "\tif self.custom.unshelve_alarms:\n\t\tsource_ids_to_shelve \u003d []\n\t\tids_to_shelve \u003d [] \n\t\tfor k,v in self.custom.alarms_to_unshelve.items():\n\t\t\tsource_id, alarm_id \u003d alarms.alarm_tables.unformat_shelve_key(k)\n\t\t\tsource_ids_to_shelve .append(source_id)\n\t\t\tids_to_shelve.append(alarm_id)\n\t\twhid \u003d self.session.custom.fc\n\t\tduration \u003d 0\n\t\tCommands.shelve_alarms.send_shelve_request(whid, source_ids_to_shelve, \"unshelve\", duration, ids_to_shelve)\n\t\tself.custom.alarms_to_unshelve \u003d {}\n\t\tself.custom.unshelve_alarms \u003d False" - } - }, - "custom.update": { - "binding": { - "config": { - "expression": "if({this.custom.run_update},\r\nnow({this.custom.delay}), False)" - }, - "type": "expr" - }, - "onChange": { - "enabled": null, - "script": "\n\tno_filter \u003d False\n\tseverity_filters \u003d self.custom.severity_filters\n\talarm_states \u003d self.view.params.alarm_states\n\ttable_type \u003d self.view.params.table_type\n\twhid \u003d self.session.custom.fc\n\talarms_to_shelve \u003d self.custom.alarms_to_shelve\n\tprovider \u003d \"[%s_SCADA_TAG_PROVIDER]\" % (whid)\n\tif (severity_filters[0] \u003d\u003d \"off\" and severity_filters[1] \u003d\u003d \"off\" \n\tand severity_filters[2] \u003d\u003d \"off\" and severity_filters[3] \u003d\u003d \"off\" \n\tand severity_filters[4] \u003d\u003d \"off\"):\n\t no_filter \u003d True\n\t\n\tif system.tag.exists(provider + \"System/aws_data\"):\n\t\ttags_to_read \u003d system.tag.readBlocking([provider + \"System/aws_data\", \n\t\t\t\t\t\t\t\t\t\t\t\tprovider + \"Configuration/DetailedViews\"])\n\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\tdetailed_view_decoded \u003d system.util.jsonDecode(tags_to_read[1].value)\n\t\tif self.view.params.table_type \u003d\u003d \"Docked-East\":\n\t\t\tdevice_list \u003d [self.custom.device] \n\t\telse:\n\t\t\tdevice_list \u003d detailed_view_decoded.get(self.custom.device,[])\n\t\tif len(decode_alarm_data) \u003e 0:\n\t\t\talt_colour \u003d self.session.custom.colours.colour_impaired\n\t\t\talarms_data \u003d alarms.alarm_tables.get_alarm_table(self, decode_alarm_data, \n\t\t\tseverity_filters, no_filter, device_list, alarm_states, alt_colour,\n\t\t\ttable_type)\t\t\n\t\t\tif len(alarms_data)\u003e0:\n\t\t\t\tself.props.data \u003d alarms_data\n\t\t\telse:\n\t\t\t\tself.props.data \u003d []\n\t\telse:\n\t\t\tself.props.data \u003d []\n\telse:\n\t\tself.props.data \u003d []" - } - }, - "props.columns[2].visible": { - "binding": { - "config": { - "expression": "if({view.params.table_type} \u003d \"Shelved\", False, True)" - }, - "type": "expr" - } - }, - "props.columns[3].visible": { - "binding": { - "config": { - "expression": "if({view.params.table_type} \u003d \"Shelved\", False, True)" - }, - "type": "expr" - } - }, - "props.columns[4].visible": { - "binding": { - "config": { - "expression": "if({view.params.table_type} \u003d \"Shelved\", False, True)" - }, - "type": "expr" - } - }, - "props.columns[5].visible": { - "binding": { - "config": { - "path": "view.params.show_severity_column" - }, - "type": "property" - } - }, - "props.columns[6].visible": { - "binding": { - "config": { - "expression": "if({view.params.table_type} \u003d \"Shelved\", True, False)" - }, - "type": "expr" - } - }, - "props.columns[7].visible": { - "binding": { - "config": { - "expression": "if({view.params.table_type} \u003d \"Shelved\", False, True)" - }, - "type": "expr" - } - }, - "props.columns[8].visible": { - "binding": { - "config": { - "expression": "if({view.params.table_type} \u003d \"Shelved\", True, False)" - }, - "type": "expr" - } - }, - "props.filter.enabled": { - "binding": { - "config": { - "path": "view.params.show_filter" - }, - "type": "property" - } - }, - "props.selection.data": { - "onChange": { - "enabled": null, - "script": "\tpayload \u003d self.props.selection.data\n\tsystem.perspective.sendMessage(\"alarms-to-shelve\", payload \u003d payload, scope \u003d \"page\")" - } - } - }, - "props": { - "cells": { - "style": { - "marginLeft": 5, - "marginRight": 5, - "overflowWrap": "normal", - "wordWrap": "normal" - } - }, - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "SourceId", - "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", - "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": "Message", - "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", - "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": "Timestamp", - "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", - "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": "", - "width": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "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": "left", - "style": { - "classes": "" - }, - "title": "" - }, - "justify": "auto", - "number": "value", - "numberFormat": "00:00:00", - "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": "", - "width": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "State", - "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", - "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": "", - "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": "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": "", - "width": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY HH:mm:ss", - "editable": false, - "field": "Expiration", - "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", - "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": "", - "width": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": true, - "field": "Shelve", - "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": "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": true, - "style": { - "classes": "" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "width": 100 - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": true, - "field": "Unshelve", - "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": "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": true, - "style": { - "classes": "" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "width": 100 - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Alarm_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": "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": false, - "width": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Type", - "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": "" - } - ], - "emptyMessage": { - "noData": { - "icon": { - "color": "#000000" - } - } - }, - "filter": {}, - "headerStyle": { - "classes": "Background-Styles/Controller" - }, - "selection": { - "mode": "multiple interval" - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "severity-filters", - "pageScope": true, - "script": "\n\tcritical \u003d payload.get(\"critical\")\n\tif critical \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[5] \u003d 5\n\tif critical \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[5] \u003d \"off\"\n\t\n\thigh \u003d payload.get(\"high\")\n\tif high \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[4] \u003d 4\n\tif high \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[4] \u003d \"off\"\n\t\n\tmedium \u003d payload.get(\"medium\")\n\tif medium \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[3] \u003d 3\n\tif medium \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[3] \u003d \"off\"\n\t\n\tlow \u003d payload.get(\"low\")\n\tif low \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[2] \u003d 2\n\tif low \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[2] \u003d \"off\"\n\t\n\tdiagnostic \u003d payload.get(\"diagnostic\")\n\tif diagnostic \u003d\u003d \"true\":\n\t\tself.custom.severity_filters[1] \u003d 1\n\tif diagnostic \u003d\u003d \"false\":\n\t\tself.custom.severity_filters[1] \u003d \"off\"", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "update-table", - "pageScope": true, - "script": "\t# implement your handler here\n\tupdate \u003d payload[\"update\"]\n\tself.custom.run_update \u003d update", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "run-alarm-export", - "pageScope": true, - "script": "\t# implement your handler here\n\tif self.view.params.table_type \u003d\u003d \"Realtime\":\n\t\texport \u003d payload[\"export\"]\n\t\tself.custom.run_export \u003d export", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "reset-filters", - "pageScope": true, - "script": "\tbackground \u003d \"false\"\n\tseverity \u003d payload[\"reset\"]\n\tseverity_filters \u003d self.custom.severity_filters\n\tseverity_filters[0] \u003d \"off\"\n\tseverity_filters[1] \u003d \"off\"\n\tseverity_filters[2] \u003d \"off\"\n\tseverity_filters[3] \u003d \"off\"\n\tseverity_filters[4] \u003d \"off\"\n\tself.custom.alarms_to_shelve \u003d {}", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "shelve-alarms", - "pageScope": true, - "script": "\tduration \u003d payload[\"duration\"]\n\tself.custom.shelve_duration \u003d duration\n\tself.custom.shelve_alarms \u003d True", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "unshelve-alarms", - "pageScope": true, - "script": "\tself.custom.unshelve_alarms \u003d True", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.display.table" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/1052c29ea79f8b882bb8881dbb23e42c14261bd32c0a9db27ed91812963bc1a5 b/.resources/1052c29ea79f8b882bb8881dbb23e42c14261bd32c0a9db27ed91812963bc1a5 deleted file mode 100644 index 3c9cec367ff1afbf91d55952c5c7b52e2cf6a3b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1949 zcmV;O2V(e%P)zc7#|^MO^gX*8cl?d7)>z^ zsTvZrEh?3in1H4&v{ovmKq-A}+ikmj(9(8y`((SjeH_n!?%eL|u-h)QPV&!A&&=HW zoAbJNDtx{^g1lZI4Gj%aO?@j}u5BZ?Z-^SY`>3&}e^RdA0c!CMM%b)s=4(xSkKI0# zXGOe#uHJsCztcxm?Y+jieIVFwb$F<*%XiQ9nLH~126;SQ8XO#;Y6dK2z-I3dIT^5? zZ-N><160}8OQ%a}jdNv(oIH68ztFiWjZ|FQVVuJ@8_x=O4FX&saF-ffZB$w3CeOei zb$Wc%SR^pi&_e1Y)1#8m2;i zqj4V49|%z(IQ#Mkf^^qELc^@k*w`eDI_~uJlCzI z&7J~*0F8`{(8R>VB#h7Jqq4Fx%E-u|9Xof>#uqlyk|&o?(ql<9XWkqVRo(wTAfN!J z4v)t}Sy@@M?X_*ReC2WyLd4czZQLl$UWFEr+kAJ{00CtMD=8_VJ$v_1%F>hw2u*0@ z5Ds!Au~s-pU#F9{LnCd!Mxu_F7j$_v(&pPeMmxAPL%?7#NPfS660D%0fVRJ}o%95K z63PHtz%U!wwwG;Rv;JWH%c^BLS#>NouYp*C(B;uc(~I0jJ3w_k2p~L$UmVrd)wFx} z?g(!IOkcxLpYY#jSk)#BpsHBcSmmrM=C839&QgexYd8Rzo}NzgADM4J=|VTa#0H-5 zI}@Vb1hT?hHC17eT9jv6Br2pXmy0%S+7#h2@id=jv1)`28zxpzR+wm-DIoGqc`h$6 zj}|5`G{6!>0%?zPk{=S%V*pd$vO`RznE(O~!jYMo8R@lkeEuh^!GtOk63{9YQoARu zHU;S9eu$MM+Z7)m!0?Nvo0gU)bIqZXu5kgp!vo)7-4qfIMF3Fb9XyF&{EY%Z9>NAM zE4W*x?Yc0Fgg1#;i?P+gE@nDF<+<_kaoV?U-((?Z4i0HL1~n(bq!(GwvsMV1i)&d= znSZ~_`pmRl5b~t}{jq5~&%#z4yIE`)3(K8!w6tT&HUlu#d=DNxXuu^p5=ooSaG64S zOBDbnED{nBP>%|k1}UsntPfaknYQ1B^cV{16^jku0oZC|H(OEHO2@DD7~7s$9#jQ! z?AS3`3_2IXJcc_Zr048K0577)b+Xb}I_n(E&1zxoG;IYe7ptB1wrR^3_ZMQ-O3t1= zOPa>Zlfyw;g6TQHp%Cm<2w`=AXWkRiGe3)PINvmFM_DJ$YcH`Jtg|BiB0*SD5OsBR zv}n;H15np>nR63Sozd zCIDjMFNExG2pwL|+Vk+jC>(%)$XX-h_6z@xh_&6qcLR?6{QNN7Gv?sah1D+HkLT11 zp=?MKgkQY~pqqsZHM|}(#Ac(0_fk_+C7{lL-wT;L@r2f{SnDp@5TG&ck3y!xi$Z!f zW|4&WqrGuY%F1{ zR@P||-E&Iz?beafb}IEvP-w89QkE?>Zqirl_ku(d;Ls+J2H4$v#rj;x_1Z4jkBD$n zj^;hczTNuvY8O@Trlq?4G9^BgXna%~%h7b<#Whs;8P>D5NoFE@h;y5U=o;@we>nb) zaf6Y6UyATYj~xtx$0}KctS8KYt(AxnCJMO$z~A;?JCq&JS|q3H2MoYNA03c@jyUoU zc6b=yA{Z1vY63eztX#88y@0*V{M0Z&72E<}-?~KtCOhP}0X!6|#Q+d5fG@dd)wo#5 zEk7o_A4tdw*y-Uu*gQ;y+y^(TT`d7uIl>=6(E!yow2Woupa4`5SRIOmT*~lYg(UM@ jG)QHeE99#6si6M=)E+oG*Qd9l00000NkvXXu0mjf$$pm8 diff --git a/.resources/10b767f01c3b4985afa06588039ab802c36de9b84402d48014958e672b1529b6 b/.resources/10b767f01c3b4985afa06588039ab802c36de9b84402d48014958e672b1529b6 deleted file mode 100644 index 9cc31d78..00000000 --- a/.resources/10b767f01c3b4985afa06588039ab802c36de9b84402d48014958e672b1529b6 +++ /dev/null @@ -1,7 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#EEEEEE" - } - } -} \ No newline at end of file diff --git a/.resources/411ba47f7042ca60dc04640cd9d96b9c43074ca411dcd67f1208435a6193b605 b/.resources/10d4f54146bdacd06dd03b13b3895d395b9a5ee0ad28910ab0b517249d7d0810 similarity index 100% rename from .resources/411ba47f7042ca60dc04640cd9d96b9c43074ca411dcd67f1208435a6193b605 rename to .resources/10d4f54146bdacd06dd03b13b3895d395b9a5ee0ad28910ab0b517249d7d0810 diff --git a/.resources/7b4c67848614a1a726d471d09f3cb03e669a206fecb6500c2969085be84ef009 b/.resources/111ac37d5f683081824a80660f94042572ea4bceb532ff8e888e4fdccf14877a similarity index 87% rename from .resources/7b4c67848614a1a726d471d09f3cb03e669a206fecb6500c2969085be84ef009 rename to .resources/111ac37d5f683081824a80660f94042572ea4bceb532ff8e888e4fdccf14877a index 2a047953..e8b68b17 100644 --- a/.resources/7b4c67848614a1a726d471d09f3cb03e669a206fecb6500c2969085be84ef009 +++ b/.resources/111ac37d5f683081824a80660f94042572ea4bceb532ff8e888e4fdccf14877a @@ -4,26 +4,56 @@ "$": [ "ds", 192, - 1751989861336 + 1755595218713 ], "$columns": [ { "data": [ - null + "MCM01", + "MCM01", + "MCM01", + "MCM02", + "MCM03", + "MCM04", + "MCM04", + "MCM05", + "MCM06", + "MCM07", + "MCM07" ], "name": "Location", "type": "String" }, { "data": [ - "Low" + "Diagnostic", + "High", + "Medium", + "Diagnostic", + "Diagnostic", + "Diagnostic", + "High", + "Diagnostic", + "Diagnostic", + "Diagnostic", + "High" ], "name": "Priority", "type": "String" }, { "data": [ - 1 + 3, + 5, + 2, + 2, + 1, + 2, + 5, + 1, + 1, + 2, + 3 ], "name": "Count", "type": "Long" @@ -56,7 +86,7 @@ "enabled": true, "rate": "1" }, - "queryPath": "GetActiveAlarmsByLocationAndPriority" + "queryPath": "Alarms-autStand/GetActiveAlarmsByLocationAndPriority" }, "type": "query" }, diff --git a/.resources/11561e03dca08ddf7c4ef661297e67ac67227b56dbd5e73c67cecd48bcb96000 b/.resources/11561e03dca08ddf7c4ef661297e67ac67227b56dbd5e73c67cecd48bcb96000 deleted file mode 100644 index c4431bb87839fad9c9ae8a91dc78633a2672ec11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10791 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 diff --git a/.resources/152199220149c5f31bb4f3d44f5d8a96541821bf7208314603bee82d8e4b8def b/.resources/152199220149c5f31bb4f3d44f5d8a96541821bf7208314603bee82d8e4b8def deleted file mode 100644 index 6abef4ed0509676dd73a802a0bb216d375e37676..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1768 zcmVP)v6o7vV8Xz=DqhS-7)Z_y3D60K1&$s)s!;p)@0Z5LM(OD2kS9-`$kV4!<>AAJ^6J$qId$rk-MhMt z0GvE|Qs&H=BY{9bGBY#f-o1O;=gyrwx|jzK9;iD24(#sTyJgFkE%N&H>!2aR0s@BF z`JrgTh7EG$$PooVxj`|Z{l`jJ&fw%7pn>SCPcI?=p+ngBHOm*y#0hEJy>8t)%>?egCQ|?{ z&#@|!Dcc$f&bGX{xmi}MSRtD?Z`O3fea6u`g)yWc`f#!&CnswTWhMN2_`0w819T3WkrmiGiS-zzLEl;g*b>qK5FGPtIu zCMhp3mqUjR>G4HdR#v9b&NctNgl8sw{PFd#*G{GWC#amKJ>qZ ztbrwM{s5M<3S!TmJ<`z7pdGxN*3t+q*LJ~z1$u&P-@aXo0p~ON zrlqB6KxJfP=rus}qyOyLvn44hX^IsC)MEVl`}@_&{kGNs@f85$;^K6I7cX9@Pce>m z@#4jrZf@Vc9V`mW@94`I7FShOrPuf_{pde`{(KD_<_Q8?nL||J6J+p60GY%p5F*ne zlnDSNvYEu9)1sF#jK$};28@36XWTSE3dNC;5go`uO~|{!`~cZHu1z7W0h%sz6&uSK z#-f937C=Axdjev;j~_p3A;5~fd~YUz+(YcRiwUr=uTRs9U-ZTT$U#powfx9<3=k9G z&6_u+rlv+6{eM}ot*uQL%o$B>*V@`DFJHdY^F3-nl+@SP`=*y@0f|PcZq8ZDZ;KW! z3cim-4M<_Y0nT>J1dz#=ELo!Y%)lsAQ&Lib*W^f26tEEk()r4jD|$+}p`rz30s|uf z-?(u@_40ZH4v^4$zlbxqYlB6CUy+Eb(us2NGB$ZB~g=nu{>4K(xppf`SRtmY}qmu{&O!>g%lAW zAAE4^P=!J$KqjZyvtO0c8eFFMJLtJs#UAB-lKK?=b7I*9~O{m zns*V7BR-Y+ZAB-if1C|K+w5z<;p1sh63`^gcZMh`Jx{r$z6U{L|7f} zKw-c;2;0KS5&lOi*57nkKsgVL;Cr!IkuBu2SEx@Ohy@c?MOZb9VsUoQPtZ&2{OHL& zbhwY(DW5*<^^h%kWP*kX+<{_3e}V&$qM{=8L93!HvYqox0kqE_ zLqkJqMFykH4d;YJIbZ}$e0;nXzKn5CWB@jffW+tc!sWJ_Q~m*^quQ8t#=7SK0000< KMNUMnLSTaKnP*P` diff --git a/.resources/1538919e673a761a99dc0521bf40a939dd6ad8ea54e6697d3267067eb824d92b b/.resources/1538919e673a761a99dc0521bf40a939dd6ad8ea54e6697d3267067eb824d92b deleted file mode 100644 index 00dc9bbc..00000000 --- a/.resources/1538919e673a761a99dc0521bf40a939dd6ad8ea54e6697d3267067eb824d92b +++ /dev/null @@ -1,171 +0,0 @@ -{ - "custom": { - "filter_list": [ - { - "color": "#8B008B", - "filter_id": 5, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "text": "CP30" - }, - { - "color": "#8B008B", - "filter_id": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "text": "CP71" - }, - { - "color": "#8B008B", - "filter_id": 4, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - }, - "text": "CP72" - } - ] - }, - "params": { - "filters": [ - { - "color": "#8B008B", - "column": "controller", - "group": 0, - "id": 3, - "text": "CP71" - }, - { - "color": "#8B008B", - "column": "controller", - "group": 0, - "id": 4, - "text": "CP72" - }, - { - "color": "#8B008B", - "column": "controller", - "group": 0, - "id": 5, - "text": "CP30" - } - ], - "group_name": "value" - }, - "propConfig": { - "custom.filter_list": { - "binding": { - "config": { - "path": "view.params.filters" - }, - "transforms": [ - { - "code": "\tinstances \u003d []\n\tfor filter in value:\n\t\tinstance \u003d {\"instanceStyle\": {\n\t\t \t\t\t\"classes\": \"\"},\n\t\t \t\t\t \"instancePosition\": {}}\n\t \tinstance[\u0027text\u0027] \u003d filter.text\n\t \tinstance[\u0027color\u0027] \u003d filter.color\n\t \tinstance[\u0027filter_id\u0027] \u003d filter.id\n\t \tinstances.append(instance)\n\t\n\treturn sorted(instances, key\u003dlambda d: d[\u0027text\u0027])", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "params.filters": { - "paramDirection": "input", - "persistent": true - }, - "params.group_name": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 178, - "width": 214 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Title" - }, - "position": { - "basis": "32px" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "UPPER({view.params.group_name})" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "borderBottomStyle": "solid", - "borderBottomWidth": 1, - "classes": "Title/Text", - "fontSize": 13, - "marginLeft": "10%", - "marginRight": "10%", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Filters" - }, - "position": { - "basis": "138px", - "shrink": 0 - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "path": "view.params.filters" - }, - "transforms": [ - { - "code": "\treturn sorted(value, key\u003dlambda d: d[\u0027text\u0027])", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "alignContent": "flex-start", - "direction": "column", - "path": "Objects/PowerTable/FilterMenuItem", - "style": { - "marginBottom": 5, - "marginLeft": "12%", - "marginRight": "12%" - }, - "useDefaultViewWidth": false - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "overflow": "visible" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/0b4c4105e4ff5eb8f0982516545b5f11c70fa3357e09775c9c238fc5beaae0fc b/.resources/155351763a5201544b69fb7f786b4268394232c26400e7ba5401ef20831a91c7 similarity index 100% rename from .resources/0b4c4105e4ff5eb8f0982516545b5f11c70fa3357e09775c9c238fc5beaae0fc rename to .resources/155351763a5201544b69fb7f786b4268394232c26400e7ba5401ef20831a91c7 diff --git a/.resources/4a58fc403e4309943c9f3c28fa2a84e50171fd18826ea87d9153d7dc5a158489 b/.resources/15b72720823fdf3b9923caf996f9784a24b260e7e7acf89266155429507be87a similarity index 100% rename from .resources/4a58fc403e4309943c9f3c28fa2a84e50171fd18826ea87d9153d7dc5a158489 rename to .resources/15b72720823fdf3b9923caf996f9784a24b260e7e7acf89266155429507be87a diff --git a/.resources/1c7fcc983f6b1a38968b96385c1e30ea14c542cebb8876cc04ff84b0bbd9277c b/.resources/15c1f59536b0c735f9231f33ec023f6fb859f59815243ba5406fe8ca04689068 similarity index 100% rename from .resources/1c7fcc983f6b1a38968b96385c1e30ea14c542cebb8876cc04ff84b0bbd9277c rename to .resources/15c1f59536b0c735f9231f33ec023f6fb859f59815243ba5406fe8ca04689068 diff --git a/.resources/15d643f89303857476d01028b874194aa3c8e3a103a047be5ab62fc67ab9df30 b/.resources/15d643f89303857476d01028b874194aa3c8e3a103a047be5ab62fc67ab9df30 new file mode 100644 index 0000000000000000000000000000000000000000..a016191ea3604e682f378d7de52767ac9dcd50be GIT binary patch literal 994 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 E03#@s!T=>$R9Rwvbg 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 z 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 V0u*x-#Q)&D_#_RIDwi}2_&@%|X<`5X diff --git a/.resources/19d296ee653c0fab02d0b597ccf8b8cbaf012713b03162e8f269c67396950c16 b/.resources/19d296ee653c0fab02d0b597ccf8b8cbaf012713b03162e8f269c67396950c16 deleted file mode 100644 index 763521de..00000000 --- a/.resources/19d296ee653c0fab02d0b597ccf8b8cbaf012713b03162e8f269c67396950c16 +++ /dev/null @@ -1,151 +0,0 @@ -{ - "custom": {}, - "params": { - "address": "test", - "params": {}, - "path": "", - "system": {}, - "title": "Card Title", - "useDefaultHeight": false, - "useDefaultWidth": false - }, - "propConfig": { - "params.address": { - "paramDirection": "input", - "persistent": true - }, - "params.params": { - "paramDirection": "input", - "persistent": true - }, - "params.path": { - "paramDirection": "input", - "persistent": true - }, - "params.system": { - "paramDirection": "input", - "persistent": true - }, - "params.title": { - "paramDirection": "input", - "persistent": true - }, - "params.useDefaultHeight": { - "paramDirection": "input", - "persistent": true - }, - "params.useDefaultWidth": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 339, - "width": 369 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "20px", - "shrink": 0 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.title" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Framework/Card/Title" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "EmbeddedView" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "props.params": { - "binding": { - "config": { - "path": "view.params.params" - }, - "type": "property" - } - }, - "props.params.address": { - "binding": { - "config": { - "path": "view.params.address" - }, - "type": "property" - } - }, - "props.params.system": { - "binding": { - "config": { - "path": "view.params.system" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "path": "view.params.path" - }, - "type": "property" - } - }, - "props.useDefaultViewHeight": { - "binding": { - "config": { - "path": "view.params.useDefaultHeight" - }, - "type": "property" - } - }, - "props.useDefaultViewWidth": { - "binding": { - "config": { - "path": "view.params.useDefaultWidth" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Framework/Card/Embedded" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "Framework/Card/Card" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/1ad9c030b8179563f769ebdac64bf86a162921ecb250289a814a4213ded8f62b b/.resources/1ad9c030b8179563f769ebdac64bf86a162921ecb250289a814a4213ded8f62b deleted file mode 100644 index 01020b01ca974071291e68cf65576037e4de11f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1532 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 literal 0 HcmV?d00001 diff --git a/.resources/33e38e31c06ab47bda8719d20b1d255b2e694163998beb85dd9242013876ed2d b/.resources/25393b2524c7ce171ae6ced4712d02313db51de934d1e288c1bfd67662ade104 similarity index 100% rename from .resources/33e38e31c06ab47bda8719d20b1d255b2e694163998beb85dd9242013876ed2d rename to .resources/25393b2524c7ce171ae6ced4712d02313db51de934d1e288c1bfd67662ade104 diff --git a/.resources/f0015451dad4b527df7e0a07eb03ada2cabd04fd10678b6881f4721cdb9d3ce4 b/.resources/258841e007717ba9e8bc63b978d58c9c0e4e0e562fdb455719e5961dd4274641 similarity index 100% rename from .resources/f0015451dad4b527df7e0a07eb03ada2cabd04fd10678b6881f4721cdb9d3ce4 rename to .resources/258841e007717ba9e8bc63b978d58c9c0e4e0e562fdb455719e5961dd4274641 diff --git a/.resources/25cdfaaca649208f832f55b92243ef5edd48bcd7f83b9fc3fa1b8b027d7454bf b/.resources/25cdfaaca649208f832f55b92243ef5edd48bcd7f83b9fc3fa1b8b027d7454bf deleted file mode 100644 index 56654e5b..00000000 --- a/.resources/25cdfaaca649208f832f55b92243ef5edd48bcd7f83b9fc3fa1b8b027d7454bf +++ /dev/null @@ -1,302 +0,0 @@ -from datetime import datetime -import Queue -import copy - -"""Global variables required so we can use different event timer scripts to perform -the writing of tag values seperateley from the reading of messages on the web socket. -State tags messages are queued into the global_queue, where they are read on a different -thread by the Update class and writen to tags. All alarms are written to global_alarms. -The alarms are then read by the Visualisation.status class where they are transformed into -an alarm state and written to tags. """ - -global_alarms = {} -global_states = set([]) -global_queue = Queue.Queue(maxsize=100000) -global_first_connect = False - - -class A2C_MessageHandler(): - """ - Handles the incoming A2C messages. Stores values in memory as dictionaries - and then writes them to tags. - - Instance Attributes: - self.alarms: Holds the current active alarm data(dict). - self.state: Holds the current active state data(dict). - self.update_state: Flag, set when state data is available to write(bool) - self.update_alarms: Flag, set when alarm data is available to write(bool) - self.whid: Warehouse id for the site(str) - self.tag_provider: Tag provider to write tag values to(str) - self.A2C_MESSAGE_TYPES: Holds a reference to the methods called - for different message types(dict) - - Returns: - NA. - - Raises: - KeyError: NA. - """ - def __init__(self, whid): - global global_alarms - global global_first_connect - global_first_connect = False - global_alarms = {} - self.whid = whid - self.tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (self.whid) - self.logger = system.util.getLogger("%s-Web-Socket-Message-Handler" % (self.whid)) - tag_to_read = "%sSystem/wbsckt_logging" % (self.tag_provider) - self.check_logger_active = system.tag.readBlocking([tag_to_read])[0].value - self.A2C_MESSAGE_TYPES = { - "SCADAMetricsInterface.StateChange": self.handle_state_message, -# "SCADAMetricsInterface.Event": self.handle_alarm_message, - "CloudMetricsInterface.Event": self.handle_alarm_message, - "ScadaCloud.Download": self.handle_download_message, - "ScadaCloud.Connection": self.handle_cloud_connection} - - def message_logger(self, message): - if self.check_logger_active: - self.logger.info(message) - - def message_lookup(self, message_type, message): - try: - self.A2C_MESSAGE_TYPES[message_type](message) - except KeyError as e: - self.message_logger("Message type not found:" - + str(message)) - - def handle_message(self, message): - heartbeat_message = message.get("action") - message_type = message.get("payload", {}).get("payloadType") - format = message.get("payload", {}).get("format") - if message_type == "ScadaCloud.Batch": - messages = message.get("payload", {}).get("messages",[]) - for i in messages: - message_type = i.get("payload", {}).get("payloadType") - self.message_lookup(message_type, i) - elif message_type !="ScadaCloud.Batch" and not heartbeat_message: - self.message_lookup(message_type, message) - else: - self.message_logger("Heartbeat:" + str(message)) - tag_to_write = "%sSystem/wbsckt_heartbeat_interval" % (self.tag_provider) - current_time = system.date.now() - system.tag.writeAsync([tag_to_write], [current_time]) - - - def handle_alarm_message(self, message): - global global_alarms - header = message.get("header",{}) - payload = message.get("payload",{}) - source = header.get("sourceId") - alarm_message = payload.get("message") - alarm_type = payload.get("type") - timestamp = payload.get("timestamp") - priority = payload.get("priority") - alarm_id = payload.get("id") - shelve_expiry = payload.get("shelveExpiryEpoch",0) - state = payload.get("state") - if (isinstance(source, unicode) and isinstance(alarm_message, unicode) - and isinstance(alarm_type, int)and isinstance(timestamp, long) - and isinstance(priority, int) and isinstance(shelve_expiry, int) - and isinstance(state, int)) and isinstance(alarm_id, int): - scada_alarm_message = {"sourceId": source, - "message": alarm_message, - "type": alarm_type, - "timestamp": timestamp, - "priority": priority, - "id": alarm_id, - "shelveExpiryEpoch": shelve_expiry, - "state": state} - alarm_id = "%s/alarm/%s" % (source, alarm_id) - if state == 0: - removed_value = global_alarms.pop(alarm_id, "No key found") - self.message_logger("Value removed from aws_data: " - + str(removed_value) + ":" + str(alarm_id)) - else: - global_alarms[alarm_id] = scada_alarm_message - self.message_logger("Value added to aws_data: " - + str(scada_alarm_message)) - else: - self.message_logger("Incorrect type value in message fields: " - + str(message)) - - def handle_state_message(self, message): - global global_queue - header = message.get("header",{}) - payload = message.get("payload",{}) - source_id = header.get("sourceId") - state = payload.get("currentMachineState") - time_stamp = payload.get("timestamp") - if isinstance(source_id, unicode) and isinstance(state, int): - scada_state_message = {"timestamp": time_stamp, - "state":state} - global_queue.put([source_id, state]) - self.message_logger("State message written to queue: " - + str({source_id:scada_state_message})) - else: - self.message_logger("Incorrect type value in message fields: " - + str(message)) - - def handle_download_message(self, message): - url = message.get("payload", {}).get("downloadUrl", None) - session_id = message.get("payload", {}).get("sessionId", None) - download = {} - payload = {"session_id":session_id, "url": url} - download["data"] = [payload] - tag_to_write = "%sSystem/download" % (self.tag_provider) - json_payload = system.util.jsonEncode(download) - system.tag.writeAsync([tag_to_write], [json_payload]) - self.message_logger("Download message received: " - + str(message)) - def handle_cloud_connection(self, message): - global global_alarms - UNKNOWN = 3 - ACTIVE = 1 - header = message.get("header",{}) - payload = message.get("payload",{}) - component_type = payload.get("componentType") - timestamp = header.get("timestamp", 0) - event_type = payload.get("eventType") - component_id = payload.get("componentId") - scada_alarm_message = create_disconnect_message(component_id, timestamp, 1) - if event_type == "DISCONNECT": - self.message_logger(str(scada_alarm_message)) -# #Call disconnect routine with a value 3 which is an unknown state. - self.alarms_disconnect(component_id, UNKNOWN, scada_alarm_message) - if event_type == "CONNECT": - #Call disconnect routine with a value 1 which is an active state. - self.alarms_disconnect(component_id, ACTIVE, scada_alarm_message) - if event_type == "SYNC" and component_type == "PLC": - alarm_id = "%s/alarm/%s" % (component_id, message) - for k,v in global_alarms.items(): - if k.startswith(component_id): - global_alarms.pop(alarm_id, "No key found") - - def alarms_disconnect(self, component_id, value, message): - global global_alarms - #Set alarms in the global_alarms to an unknown state. - #If component id == "DATABRIDGE" set all alarms to unknown - SITE_DISCONNECTS = ["DATABRIDGE", self.whid] - if component_id in SITE_DISCONNECTS: - site_disconnect = True - source_id = "" - else: - source_id = component_id - site_disconnect = False - for k,v in global_alarms.items(): - device_name = k.split("/")[0] - if k.startswith(source_id) and device_name not in SITE_DISCONNECTS: - global_alarms[k]["state"] = value - alarm_id = "%s/alarm/%s" % (component_id, "Device disconnected") - #Set the alarms to true for device disconnects - if site_disconnect: - data_bridge_disconnect(self.whid, value, message, component_id) - else: - tag_path = "%s%s/DCN" % (self.tag_provider, source_id) - if value == 3: - create_disconnect_tags(self.whid, source_id) - global_alarms[alarm_id] = message - system.tag.writeBlocking([tag_path], [1]) - else: - global_alarms.pop(alarm_id, "No key found") - system.tag.writeBlocking([tag_path], [0]) - -def create_disconnect_message(component_id, timestamp, state): - alarm_message = {"sourceId": component_id, - "message": "Device disconnected", - "type": 0, - "timestamp":timestamp, - "priority": 4, - "shelveExpiryEpoch": 0, - "state": state} - return alarm_message - -def data_bridge_disconnect(whid, value, message, component_id): - global global_alarms - device_list = get_device_list(whid) - time_stamp = message.get("timestamp") - tags_to_write = [] - values_to_write = [] - if value == 3: - disconnect = True - else: - disconnect = False - for i in device_list: - create_disconnect_tags(whid, i) - alarm_id = "%s/alarm/%s" % (i, "Device disconnected") - tag_path = "[%s_SCADA_TAG_PROVIDER]%s/DCN" % (whid, i) - device_message = create_disconnect_message(i, time_stamp, 3) - tags_to_write.append(tag_path) - if disconnect: - global_alarms[alarm_id] = device_message - values_to_write.append(1) - else: - global_alarms.pop(alarm_id, "No key found") - values_to_write.append(0) - alarm_id = "%s/alarm/%s" % (component_id, "Device disconnected") - if disconnect: - global_alarms[alarm_id] = message - else: - global_alarms.pop(alarm_id, "No key found") - system.tag.writeAsync(tags_to_write, values_to_write) - -def get_device_list(whid): - provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) - tag_path = "%sConfiguration/DetailedViews" % (provider) - tags_to_read = system.tag.readBlocking([tag_path]) - devices = system.util.jsonDecode(tags_to_read[0].value) - device_list = [] - for k,v in devices.items(): - for i in v: - device_list.append(i) - return device_list - -def create_disconnect_tags(whid, component_id): - logger_name = "%s-Create-Disconnect-Tags" % (whid) - logger = system.util.getLogger(logger_name) - base = "[%s_SCADA_TAG_PROVIDER]%s" % (whid, component_id) - if not system.tag.exists(base + "/DCN"): - tag = {"name": "DCN", - "valueSource": "memory", - "dataType": "Boolean", - "value": True} - create_tag = system.tag.configure(base, tag) - if not create_tag[0].isGood(): - logger.warn("Failed to create tag: " + str(source_id)) - -class Update(): - def __init__(self): - tags_to_read = system.tag.readBlocking(["Configuration/FC"]) - self.fc = tags_to_read[0].value - self.tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (self.fc) - self.tags_to_write = [] - self.values_to_write = [] - self.logger = system.util.getLogger("%s-Global variable reader" - % (self.fc)) - def read_messages_from_queue(self): - size = global_queue.qsize() - self.logger.info("Queue size: " + str(size)) - for i in range(0, size): - message = global_queue.get() - source_id ="%s%s/STATE" % (self.tag_provider, message[0]) - create_tags_in_place(source_id, message[1], self.logger) - self.tags_to_write.append(source_id) - self.values_to_write.append(message[1]) - - def write_tags(self): - alarm_path = "%sSystem/aws_data" % ( self.tag_provider) - alarm_data = system.util.jsonEncode(global_alarms) - self.tags_to_write.append(alarm_path) - self.values_to_write.append(alarm_data) - system.tag.writeBlocking(self.tags_to_write, self.values_to_write) - self.logger.info("State messages written: " + str(len(self.values_to_write))) - -def create_tags_in_place(source_id, value, logger): - base = source_id.replace("/STATE", "") - if not system.tag.exists(source_id): - tag = {"name": "STATE", - "valueSource": "memory", - "dataType": "Int1", - "value": value} - create_tag = system.tag.configure(base, tag) - if not create_tag[0].isGood(): - logger.warn("Failed to create tag: " + str(source_id)) \ No newline at end of file diff --git a/.resources/26063c4e08258204c1ec59a5896f903994aba3c695918db9ea7a94d69ccf6d4e b/.resources/26063c4e08258204c1ec59a5896f903994aba3c695918db9ea7a94d69ccf6d4e deleted file mode 100644 index e111302abfbc22ad5467330b0aca50c0241c8fdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1898 zcmV-w2bK7VP)HW-Dt8$u8o^LV!oa4FTQnlcBAXAbl}U(zIkunXWsi=JEoeN zT2Ky04V=yfJbYAvzY3qiT;s&!>ROao>-;LU)#HhyA)rmKa_wH3*2mZ$%~(^ofTgxN zJgTb2{bx40Ha>`L4=i>Ry{HMgAI(@3!6>`kfrf^9{Hp<8*8s~MP84f^kF-uyiM<|o zpW1NzTA^I4cB)vL{E7BL=kiOCS7?!Iwta}PCaxMqIJf&H9+y7F-6AvW^$mD#ufYpP zt*E-T4rR}+IGcB0u2nn5evXC)T)g=Rw+budI?}QB`g&NbcE3#AQl-ab&v3b*1PAX_ zy-LL-efNr;2#DkFg z_U%Itu7(b(PoF-RF=GZ+uU?HUTee7_?Cfmp-MbgNckjl|ojb98`*xUqf2sw_*RhHr zAgBCgRDc9hM@~)-1`i(Whw9R$3nosSh*hgr2>_w??Ae2D+qMa$($=k8MQk?}Y3YSg zo`JNy(kkJA9v2Cqf~%~o#GE;E{9v6rb;9JylaY~;;fErCf+0v-GMTj;$P~mV&p?`f z*(~9J-WD#P$Kw(4$j!|an<7|zd_2aFACL6(bnM^1A3JvJ2n#9zP;y}uTTC#Xc@RXc zTIbH4v2^KDSut+s`+@}kM(QMLP zGLsxFeLG-VaIILjZRJGV5(3f|d5>o*Ha1qy0|yQa3D~u3*I+Ou{tsZO&1$xw zr~=uyty;Lrsgg%L=3W+Z^h2ItM2hiTKMNp3bOEGHo#?N0`16Y)*y3^e#? z0K?kicZC^ccZUugk^xL#OO`ANT8U@?nRSA|!U1%-J@EN_sI9FP59EN6BS(r;=;5LP zHUzvkvz22IOSqbylwQHA5keHY#`IfoWm=&S{oI7`}1bNz_Q6~Q54_R($ z{~^4-X4q^t^zPkTCP+<9m0-+m(ZfXp$Y-%mRDFZQ&k-TZE&jpL4z8A3y^R|;1~|rt z0%W}y1g6yH7W>>{f1^f?l8%!mP4Wk1BV4qAqeqXH3TViXArijy3h5-5s#xE(;K9Q} zbm-6l?c2AP>_J-$wR({PQhXj?J|!hZ9B{;l5djJbc;R_#b-XbnQyxrjGA4PWA^{A0 zi}ir~WN}qXb)Lq0^#5XjbecJHraz?_!9E0FSaDEg5`HVW`4T9(TY#9@IN9Q~v^1$y z+S=Yo0VzIn`t<1-H*TCn38R8?F+b$+Tglm+Bl1v&n0IY&q=0G#hYuevl@7%|dIgnR znRyks=L6P#`?WkYIXU^A+xtF%?4u$9$8cwol9JwRsZsiJ>sFCjK7rk6@F8_nige)e z8@DBt!U5z8F;ua?+7$+VraJbCi;I)9UIAOokB6r#y*O25#h0JAW)GI{oH!alrH&mt zipj8KQ{wN0goL2Je(9aWVs+q@#fzT`%JEs3MC}b?#X;T{|K0~MBI&~n0nb*oVAqA) z_$V$GAAgb{UztJ`2S)u*fOh%pnsNH7-0a#t37a-;YBT?a3#hL7g^Pc-=Fgvx1q&9) kdC{UpQnj$o41&}2AHR(6BIE|oZ2$lO07*qoM6N<$f_L$%0ssI2 diff --git a/.resources/260ed597d3f78ec26e781c2b2bd1c603852129b2f8b45af523df7ac893302ef1 b/.resources/260ed597d3f78ec26e781c2b2bd1c603852129b2f8b45af523df7ac893302ef1 deleted file mode 100644 index 41bcc9fe877fe5acdbc30a935b1d1ab9164b97dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1839 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 literal 0 HcmV?d00001 diff --git a/.resources/2b989e78f3ffd164532fece9b4676bb03b6396c1327c1870f54555d201ab6fae b/.resources/2b989e78f3ffd164532fece9b4676bb03b6396c1327c1870f54555d201ab6fae deleted file mode 100644 index 71794c5e..00000000 --- a/.resources/2b989e78f3ffd164532fece9b4676bb03b6396c1327c1870f54555d201ab6fae +++ /dev/null @@ -1,146 +0,0 @@ -{ - "custom": {}, - "params": { - "page_id": "value", - "text": "enter text" - }, - "propConfig": { - "params.page_id": { - "paramDirection": "input", - "persistent": true - }, - "params.text": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 48, - "width": 136 - } - }, - "root": { - "children": [ - { - "custom": { - "PLC": "none" - }, - "meta": { - "name": "text_label" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "custom.text": { - "binding": { - "config": { - "path": "view.params.text" - }, - "type": "property" - } - }, - "props.elements[1].elements[0].text": { - "binding": { - "config": { - "path": "this.custom.text" - }, - "type": "property" - } - } - }, - "props": { - "elements": [ - { - "name": "defs", - "type": "defs" - }, - { - "elements": [ - { - "fill": { - "paint": "#000000" - }, - "name": "tspan", - "stroke": { - "paint": "#020202", - "width": ".165" - }, - "text-anchor": "middle", - "type": "tspan", - "x": 5.7088058, - "y": 6.8615942 - } - ], - "fill": { - "paint": "#000000" - }, - "fontSize": "4.4316px", - "name": "text", - "stroke": { - "linecap": "round", - "linejoin": "round", - "paint": "#020202", - "width": ".165" - }, - "style": { - "paintOrder": "stroke fill markers" - }, - "transform": "scale(.99694 1.0031)", - "type": "text", - "x": "3.7088058", - "y": "6.8615942" - } - ], - "style": { - "backgroundColor": "#FFFFFF", - "borderBottomLeftRadius": "5px", - "borderBottomRightRadius": "5px", - "borderStyle": "solid", - "borderTopLeftRadius": "5px", - "borderTopRightRadius": "5px", - "borderWidth": "1px" - }, - "viewBox": "0 0 10.583 10.583" - }, - "type": "ia.shapes.svg" - } - ], - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tsystem.perspective.navigate(\"/\" + self.view.params.page_id)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "root", - "tooltip": { - "enabled": true - } - }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "path": "view.params.page_id" - }, - "type": "property" - } - } - }, - "props": { - "mode": "percent", - "style": { - "cursor": "pointer" - } - }, - "type": "ia.container.coord" - } -} \ No newline at end of file diff --git a/.resources/2c006c49770242336979445b8a6741286a5b73fe06d387e0381a030b8c5b4b01 b/.resources/2c006c49770242336979445b8a6741286a5b73fe06d387e0381a030b8c5b4b01 deleted file mode 100644 index f97593a6..00000000 --- a/.resources/2c006c49770242336979445b8a6741286a5b73fe06d387e0381a030b8c5b4b01 +++ /dev/null @@ -1,608 +0,0 @@ -{ - "custom": { - "alarm_message": null, - "covert_mode": true, - "disconnected": false, - "display_icon": true, - "error": false, - "isMatch": 0, - "plc": "value", - "priority": 0, - "priority_string": "No active alarms", - "running": false, - "running_status": 0, - "searchId": "PLC01", - "show_error": false, - "show_running": true, - "state": 5, - "state_string": "Unknown" - }, - "params": { - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.alarm_message": { - "persistent": true - }, - "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} || {session.custom.alarm_filter.show_running},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\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": { - "binding": { - "config": { - "expression": "{view.custom.running_status} \u003d 3" - }, - "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.show_error": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\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\tFalse)", - "type": "expression" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.show_running": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\r\n\t\t1, False,\r\n\t\t2, False,\r\n\t\t{session.custom.alarm_filter.show_running}\r\n\t\t)", - "type": "expression" - } - ], - "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.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": "AUS" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "props.elements[1].elements[0].elements[0].fill.paint": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "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": "defs2", - "name": "defs2", - "type": "defs" - }, - { - "elements": [ - { - "elements": [ - { - "cx": "69.035934", - "cy": "129.08073", - "fill": {}, - "id": "path509", - "name": "path509", - "rx": "9.5693493", - "ry": "9.4979048", - "stroke": { - "dasharray": "none", - "linejoin": "round", - "paint": "#000000", - "width": 1 - }, - "style": { - "paintOrder": "stroke fill markers" - }, - "type": "ellipse" - }, - { - "d": "m 64.008851,131.72656 2.143125,-5.29166 h 0.833438 l 2.129896,5.29166 h -0.833438 l -0.502708,-1.30968 h -2.434167 l -0.502708,1.30968 z m 1.600729,-1.9976 h 1.905 l -0.926041,-2.4474 h -0.05292 z m 4.590521,1.9976 v -0.82021 l 3.082396,-3.78354 h -2.844271 v -0.68791 h 3.598334 v 0.83343 l -3.055938,3.77032 h 3.082396 v 0.68791 z m -2.169583,-6.6675 1.27,-1.27 1.27,1.27 z m 1.27,9.31334 -1.27,-1.27 h 2.54 z", - "id": "path6803", - "name": "path6803", - "stroke": { - "width": "0.264583" - }, - "type": "path" - } - ], - "id": "g2552", - "name": "g2552", - "stroke": { - "dasharray": "none", - "width": 1 - }, - "type": "group" - } - ], - "id": "layer1", - "name": "layer1", - "transform": "translate(-58.814035,-118.93028)", - "type": "group" - } - ], - "style": {}, - "viewBox": "0 0 20.443798 20.300909" - }, - "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" - } - }, - "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/91901cd5c301d85a2a257aad204948142e304208e7d7ba52625bb7780b20f515 b/.resources/2c66b085abfedbe5599a8cd851a57c10e96dd3c3e39169238d2e2a0a73f9bb1f similarity index 100% rename from .resources/91901cd5c301d85a2a257aad204948142e304208e7d7ba52625bb7780b20f515 rename to .resources/2c66b085abfedbe5599a8cd851a57c10e96dd3c3e39169238d2e2a0a73f9bb1f diff --git a/.resources/2c89483c5f76190ab4d4163bc28456ff05a922cbb558d075926996a26e4ec700 b/.resources/2c89483c5f76190ab4d4163bc28456ff05a922cbb558d075926996a26e4ec700 deleted file mode 100644 index 2e434b862bd5141cb39cbbba3c0ac9ebccdf2187..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9998 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 aCH@x}&dBjYz3jv*Cs$v;fF3YghS8Uq_x z+??6De{eD>9Lso-!1x~szCZuI{^A8k<^v|5-{0TA_w{r6-Cu=HFfc6Kl6U0SLyKoX PV;DSL{an^LB{Ts5t%)kt diff --git a/.resources/2e93b6b30c3e2c67ff6082e8d8f30d89f52b7b2b5fe5272fae6def3dd71d9e17 b/.resources/2e93b6b30c3e2c67ff6082e8d8f30d89f52b7b2b5fe5272fae6def3dd71d9e17 deleted file mode 100644 index 343918d4..00000000 --- a/.resources/2e93b6b30c3e2c67ff6082e8d8f30d89f52b7b2b5fe5272fae6def3dd71d9e17 +++ /dev/null @@ -1,82 +0,0 @@ -def latencyCalc(): - import json - import system - from java.lang import Exception as JException, Thread - import time - - whid = system.tag.readBlocking(["Configuration/FC"])[0].value - aws_data,first_pass = system.tag.readBlocking(['[%s_SCADA_TAG_PROVIDER]Latency/aws_data_copy'% whid,'[%s_SCADA_TAG_PROVIDER]Latency/first_pass'% whid]) - json_data = json.loads(aws_data.value) - first_pass = first_pass.value - ids = [] - - # in instances where aws_data tag has been reset - if not json_data: - system.tag.writeBlocking(['[%s_SCADA_TAG_PROVIDER]Latency/first_pass.value'% whid], [1]) - return - - #### check if this is the first time running. if it is, set the values in prev_key to get this kicked off and then set the flag tag to False. - if first_pass: - if not json_data: - return - for key in json_data: - ids.append(str(key)) - system.tag.writeBlocking(["[%s_SCADA_TAG_PROVIDER]Latency/prev_key"% whid,"[%s_SCADA_TAG_PROVIDER]Latency/first_pass"% whid],[ids,0]) - return - - # get a list of names that are new and can be used to calculate latency. - # added try except in here in case there is a time when new prev keys are present during first pass or a reset of the tag accidentely. - try: - prev_ids = set(system.util.jsonDecode(system.tag.readBlocking(['[%s_SCADA_TAG_PROVIDER]Latency/prev_key'% whid])[0].value)) - except: - system.tag.writeBlocking(['[%s_SCADA_TAG_PROVIDER]Latency/first_pass.value'% whid], 1) - return - to_be_processed = [] - new_to_be_processed = {} - for key in json_data: - if key not in prev_ids: - to_be_processed.append(str(key)) - - if to_be_processed: - new_to_be_processed = {key: json_data[key] for key in to_be_processed if key in json_data} - - #### This class will read the aws_data tag and calculate the latency of all the tags provided(newly added tags). - class TimestampLatencyCollector: - - def __init__(self): - self.latencies = [] - - def process_dict(self, data_dict): - import system - current_time_ms = system.date.toMillis(system.date.now()) # Current time in milliseconds - - for key, value in data_dict.items(): - timestamp_ms = data_dict[key]['timestamp'] - # Calculate latency in milliseconds - latency_ms = current_time_ms - timestamp_ms - self.latencies.append(latency_ms) - - if new_to_be_processed: - last_alarm_change = '[%s_SCADA_TAG_PROVIDER]Latency/last_alarm_change_ts.value'% whid - - # Create an instance of the TimestampLatencyCollector - collector = TimestampLatencyCollector() - - # Process the nested dictionary - collector.process_dict(new_to_be_processed) - - #read in circular buffer of latencies - circular_buffer_tag_path = '[%s_SCADA_TAG_PROVIDER]Latency/rolling_latency.value'% whid - circular_buffer = system.tag.readBlocking([circular_buffer_tag_path])[0].value - - for latency in collector.latencies: - circular_buffer.append(str(latency)) - - # keep only the last 30 entries. - circular_buffer = circular_buffer[-30:] - system.tag.writeBlocking([circular_buffer_tag_path,last_alarm_change], [circular_buffer,system.date.now()]) - - persistence = [] - for key in json_data: - persistence.append(str(key)) - system.tag.writeBlocking(["[%s_SCADA_TAG_PROVIDER]Latency/prev_key"% whid],[persistence]) \ No newline at end of file diff --git a/.resources/adf0ac5013f5ac37a5a4bb60af029718db870daa7732b406a13d4af1ffc50803 b/.resources/2e9fe0fca4bcb81aec83741d77a3126324567079a851eb137d7309c502e17397 similarity index 100% rename from .resources/adf0ac5013f5ac37a5a4bb60af029718db870daa7732b406a13d4af1ffc50803 rename to .resources/2e9fe0fca4bcb81aec83741d77a3126324567079a851eb137d7309c502e17397 diff --git a/.resources/2ef5f763acb8d1bd35f2979f17978bfa7e897172d394fd45a5bb994c9c9b40af b/.resources/2ef5f763acb8d1bd35f2979f17978bfa7e897172d394fd45a5bb994c9c9b40af deleted file mode 100644 index 55e6395c..00000000 --- a/.resources/2ef5f763acb8d1bd35f2979f17978bfa7e897172d394fd45a5bb994c9c9b40af +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "color": "var(--neutral-80)", - "fontSize": "min(2.0vw, 36px)", - "fontWeight": "bold", - "textAlign": "center" - } - } -} \ No newline at end of file diff --git a/.resources/033be0db13196638c2cb3de8676f9b35c9d8cc5db02df2c17b70df2176f8cb62 b/.resources/2efa273527bc1ae3a7ad206b1f26eb8a799772d262eabb2fd054fd8e199fcb44 similarity index 100% rename from .resources/033be0db13196638c2cb3de8676f9b35c9d8cc5db02df2c17b70df2176f8cb62 rename to .resources/2efa273527bc1ae3a7ad206b1f26eb8a799772d262eabb2fd054fd8e199fcb44 diff --git a/.resources/5593f2958a61a05067ab6e6526161ce569c98fd7b556d8bbe0a4e17315235df4 b/.resources/2f046feda9636f45396d96fab5c5f2c7dee2c451f354f6348fd6dcc59d321712 similarity index 100% rename from .resources/5593f2958a61a05067ab6e6526161ce569c98fd7b556d8bbe0a4e17315235df4 rename to .resources/2f046feda9636f45396d96fab5c5f2c7dee2c451f354f6348fd6dcc59d321712 diff --git a/.resources/1ee31a16d64ab499e7c22b9e8070a5ec8373e88ab5acf45acff62d1222161252 b/.resources/2f7ee065aeaf672ce5dcb815bec94766a5b95011d70cc293389637f9ada5ccbc similarity index 100% rename from .resources/1ee31a16d64ab499e7c22b9e8070a5ec8373e88ab5acf45acff62d1222161252 rename to .resources/2f7ee065aeaf672ce5dcb815bec94766a5b95011d70cc293389637f9ada5ccbc diff --git a/.resources/2f8afdf9d477ee8eb16e0199d1f84299e191926516fc629088604855aaf6d0bc b/.resources/2f8afdf9d477ee8eb16e0199d1f84299e191926516fc629088604855aaf6d0bc deleted file mode 100644 index 39fd9386..00000000 --- a/.resources/2f8afdf9d477ee8eb16e0199d1f84299e191926516fc629088604855aaf6d0bc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "fontFamily": "Arial", - "fontSize": "10px", - "fontWeight": "bold", - "textAlign": "left" - } - } -} \ No newline at end of file diff --git a/.resources/2fc578154dc75587ee67175b3e34ae64bde67cac8b9fe6b5013edc2e82b455c7 b/.resources/2fc578154dc75587ee67175b3e34ae64bde67cac8b9fe6b5013edc2e82b455c7 deleted file mode 100644 index b5cf61ac..00000000 --- a/.resources/2fc578154dc75587ee67175b3e34ae64bde67cac8b9fe6b5013edc2e82b455c7 +++ /dev/null @@ -1,99 +0,0 @@ -{ - "custom": {}, - "params": { - "styleClass": "", - "text": "" - }, - "propConfig": { - "params.styleClass": { - "paramDirection": "input", - "persistent": true - }, - "params.stylePath": { - "paramDirection": "input", - "persistent": true - }, - "params.text": { - "binding": { - "config": { - "expression": "{view.params.text}" - }, - "type": "expr" - }, - "paramDirection": "inout", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 40, - "width": 210 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "TextInput" - }, - "position": { - "basis": "10px", - "grow": 1 - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "expression": "{view.params.styleClass}" - }, - "transforms": [ - { - "fallback": "Input/Label/Valid_Entry", - "inputType": "scalar", - "mappings": [ - { - "input": 0, - "output": "Input/Label/Invalid_Entry" - }, - { - "input": 1, - "output": "Input/Label/Valid_Entry" - } - ], - "outputType": "style-list", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "path": "view.params.text" - }, - "type": "property" - } - } - }, - "props": { - "placeholder": "Enter Value", - "resize": "both", - "style": {} - }, - "type": "ia.input.text-area" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "justify": "center", - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/30e60a1f29e5eb731f4b029c87def51a28ae73bd00b9f3c8ff83877207471706 b/.resources/30e60a1f29e5eb731f4b029c87def51a28ae73bd00b9f3c8ff83877207471706 deleted file mode 100644 index 1d8f5b71396d4e54329b9e1dbb7e6731bd289500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5441 zcmd^@i8tHX`^Q78N(WP_T1JeDQBqp1rPNYei4e7h5UOekQ?wE))>ds%TiT&b8~a*I zYHiWbqSZ2}kVL7d+G39qDoDPW-<swtt03dxBVs7Ge$8%+DJIsmA?OETgii@9q&~b5^ zdF{XvwZMB~?*z9PCb&B$msPiL*F#d|!Qma(E$<$z#hIGE0gEb%2uSLXRY0IO#NC)W zh5Dp^jq13p1A{juD$K0JBy5@*e)CtdEyvbcKTP+SLw z^QXK20Hf75|6{AE>2yz~g5K?!M$~X%P*6jCee92^xMAGA(Y79ms$n5W{uBa%Mq`2 zXwvx4-uUPK-BCWK%Sh3Pu zO?gkTGmW`FhV6{^TjukgYN7D$E(o~l8I_5vX+BZ1;nBioOGY_7p}H7}Hj+hA$X`}b zpM7%|uAH#=68bGqvYT9%la&!ymA1;g1j8HE9GIiRy^xIo_ApomaDBwluK%&7Sp=}j zP~K_GQ2qQLP_T^x=Em0QMAX+ecd;1xe5`c}BIVJlh~0?TL}mHXbhf=dewz1m;c^2- z!;Yx$+|V~Lz+J2&HC}J*8*_`%(a9M-Eokf0d0(V;e&Ett^hy(*v$-HOSKyBl_x{y8 z0O3l&dv28GdU85W8!B^+vyB=fhRbaG`umZu@2qDjnl(;)YcgYP&1R_sfqAlsSH|IH z`ILR{Qa5?1q4lMzqp0%)GgrxEAeJd*XRtn^(H{>JTQ`@*)4yin2Oq^s+X|t z;RwKUv3qyOoqF@nitCbx-*~=!2ukG57MLV3qSnaLU>BxV>>7C+mT$B__cVmN+%UL# zKi4bPO}Bk#PL8;mBreZcc{$m>zcubp#L#>)4a)`t`xjDIR#vdRG20WmQCrK~lW|@l z`apge4;u5L2cGE-8tqnRFl4-u-J z(W-AvzhA&z$)_?<0i@U8aa-#{mI~Ax_4V~y52IFF{QGj$TODiYN|>6GagNTH&@M4u z#+~W%{8;^nRgZKhv*EM=LloO1hE2`$#G;hvGDt9ET&4wG*3pm}11XIR)qcdC@I z1TcCGRi1wG!W`e1ve}rG7ddy*7m>EouRHmgO>>`&*+$lY#mwhT*-$0&bjBsE=p-lzBuF)Fq&n8lrrG$ZE$FD+Y=ER^MiE7;%O_(Cs$CvKuwPQv0jx2OCyQ7XUqg^<}Uw{ESQNf?&=O!DgR+!%WP zsk_mjQKzGanAFEncnY%Hucml~oPCt@kLyG^w%9&(8KdRN#u1Jkz$bfeb@9>2EW?kcy`Z62vJt ziSIR9nMIB;JqxgTu7#}WVMn@l*!~~Lkho5TuLO;TXHUSvq+0uloN1VK%Je7w6r5Zn3w-ppa zz16_rVE~2=MRnr@?$hTq+V zv2YpON(ZpU1pP5BlM%<1^^o|K#Xd%Uq|t=dA4yC+zWBsHuM!$!>pn;^rMi8(@!*o3 z!<9{yY^+ZlKQxp+0s=>3{>ZsEKz*Ld$XF<@t-}n)3mj-n)^9}%!s*(F(;ZaIkfDo3 z_L(EsW%+mi*S865Q7rMoz(unIlwUXP^Qp=S8g%xD2TTdu=G~Ao5i#o!d*_oilE?!| z7X~LHCTpObg=WctJ?wU+J+3E}=8BfCN&Ahs$Oa(K2Aq-21(GxaFD4ukqx^}<%+n72 z`i8a9G#c^+Eod`2`D&q~Mvoa)v-T?7t0y7cMR=5t#9j7MIg#p&hkZx*5Xy6sw~%3< z#-)_UhOwcK z{3?7LEh{_&KV&KLK}gBcjx=0nbxF{}*wqhO)J9heb`~Fn23CI5jnUX!^)s=YbU98nHzr3USw${t@`%i}QJ5S$ug5pL% zID^TCR7Ro@O@#w}`5@qPS4hfru=;Y@@ytVVj0omi>}3M?^a`o>fhRc84VBwg`?Hve z5;o;sO`_}gw|q^XBn=(sX!5<)k?H9UhG$bTXu&p$2V1OVv?s}Fa{Rv# z%gr(5qrhQjdU=o0;)&s%tMj~2JN@22A8?(ma$_Xo#3i{kZ7&%{JC9f@r`*?eHU?@2 zMJ{|?j*h<5&pI{b{lwiXW?UifhIuY(UdFaT-EaIJ)5CNkB>Bm+FD;-}#>praFXcs_ z_p!Q|Ofi)&Qov7aM`U7hVxN$GNhi21-JYl5>_ATt!Iyv+ee~HY-aY2L(LWzm*EG+uCAM*8#x4VR(M%SS2C?f*iuQXM< zTS9WQte~Kvv9a;>YlBOdqS`>}9iW)l!og;@mfNMZcO^lnp(2Y`>*xGYQE?g!PBTB%>Y?^-%i0>+ zcWMcKtY+uN)OWXzJ?=^O@3tF5kF>zH)u7m{H#&>ijAzPL4lo$Z$HylohRhhDj*K|L z;c(1z^Kx8oFJbX{C;mhAvprHyH3zT0Q??UeP59$Cm!rm3*W{1~D)m}_!r3_l2M0r; z(6F#DN5_X_BcCdP$Pp@CS6ipLs)CDkTaVy*TzL9FUzxvr*;f6KtP*8tPGeJ3Q*(1L zbL3ty!5uM%(0xSJ`IAe&v5KSU{r*w6-_ns%tyMSo!$dI7AzTuqdiE@dOpfs>*8x$+ zXtbgBx}x@-UFq!Vz52-inbZEyJe04?0;N>me#I)-Cu(=jR^B;XZf-7j@NC5gzyGG< z<^u%~OT|}3G8JS+DT5W-GGSfg^^uMk$EDZK(nmzW^9{7j^^KMQNev`6?>NURKez%r*p-sC>O#g%|aMti4Q*tv5rxKSjj`iEI_L4bdVwj zgpzrOe}ufcW42l018qhbeFlkCDni;$=alGGsns6=H~gJlb9@%=Af&giFO8>nu@$w( z9DQ9`T-%}^f$XQ?#|-}arxP8wx-$6L@&33nTX7IB{ zQEriQ*KGvw6yr_N+}))>3v3~1ZZ&D2&OhL9R{6)}$M#%?Oq#A8m{DY_yE(Y^ z!&1QgCeAvmM0Ij5`cd2Mo9l~3)HkbYXU;^cb*xOdEJS6+)b*&Ssax8x0&k)$+r#bCHmAa19I$ zl=M(;($diyp*!=j>*DeoR5GjedHn}Yg&OTBepu8#ytkEirjp-46&BXDx3|~U*7Dn( ziRXvH&75D#U5?=QM!m3mpqryF*k=KRr%&aIWzqcy0fsj8%eJ<*BKQ$mY3^;+y}HX6 z0GsFjrf$0ZO`>TbprBltyR?##k+B6+v;({luF%W20-4~yb&CoC3@w}ZcxL%eXs*Wy z#^)7&T{eIKUiAEb;Kn~)`2R{6|C6F-uR=I+kF{cddcQj>%YPaLKrCS9wWinZ{Ray` Bp<@65 diff --git a/.resources/31627bde69748a05969238531c0ad99a9fa74615a5f7a807df3a4cd5d2212664 b/.resources/31627bde69748a05969238531c0ad99a9fa74615a5f7a807df3a4cd5d2212664 deleted file mode 100644 index 9a95243e..00000000 --- a/.resources/31627bde69748a05969238531c0ad99a9fa74615a5f7a807df3a4cd5d2212664 +++ /dev/null @@ -1,138 +0,0 @@ -{ - "custom": {}, - "params": { - "Message": { - "acceptPB": "value", - "cancelPB": "value", - "iconPath": "value", - "labelText": "value", - "okFunc": "value" - } - }, - "propConfig": { - "params.Message": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 251, - "width": 299 - } - }, - "root": { - "children": [ - { - "custom": { - "iD": "value" - }, - "meta": { - "name": "Button", - "visible": false - }, - "position": { - "height": 34, - "width": 80, - "x": 22, - "y": 203 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.Message.acceptPB" - }, - "type": "property" - } - } - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Button_0" - }, - "position": { - "height": 34, - "width": 80, - "x": 177, - "y": 203 - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "expression": "if({this.props.text} \u003d \"hide\",false, true)" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "path": "view.params.Message.cancelPB" - }, - "type": "property" - } - } - }, - "props": { - "primary": false - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label" - }, - "position": { - "height": 146, - "width": 251, - "x": 22, - "y": 40 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.Message.labelText" - }, - "type": "property" - } - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Icon" - }, - "position": { - "height": 30, - "width": 30, - "x": 132.5, - "y": 10 - }, - "propConfig": { - "props.path": { - "binding": { - "config": { - "path": "view.params.Message.iconPath" - }, - "type": "property" - } - } - }, - "props": { - "color": "#EE5B5B" - }, - "type": "ia.display.icon" - } - ], - "meta": { - "name": "root" - }, - "type": "ia.container.coord" - } -} \ No newline at end of file diff --git a/.resources/d8c26cb01561b9f42a3dccdcd86a75e41b9038c85964064d22def576b1cbe62e b/.resources/32a12f47da8a903a869a7954f970417a21e89b56e345f5039a956b3f67114fd1 similarity index 100% rename from .resources/d8c26cb01561b9f42a3dccdcd86a75e41b9038c85964064d22def576b1cbe62e rename to .resources/32a12f47da8a903a869a7954f970417a21e89b56e345f5039a956b3f67114fd1 diff --git a/.resources/3408f8ccafc66777c77e95f777a22f2e26a1702c5d1bc49014bbbda28943d1bd b/.resources/3408f8ccafc66777c77e95f777a22f2e26a1702c5d1bc49014bbbda28943d1bd deleted file mode 100644 index d311f3b2..00000000 --- a/.resources/3408f8ccafc66777c77e95f777a22f2e26a1702c5d1bc49014bbbda28943d1bd +++ /dev/null @@ -1,101 +0,0 @@ -import datetime -import hashlib -import hmac - -import boto3 - -try: - from urllib.parse import quote_plus -except ImportError: - from urllib import quote_plus - - -def sign(key, msg): - return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest() - - -def getSignatureKey(key, dateStamp, regionName, serviceName): - kDate = sign(("AWS4" + key).encode("utf-8"), dateStamp) - kRegion = sign(kDate, regionName) - kService = sign(kRegion, serviceName) - kSigning = sign(kService, "aws4_request") - return kSigning - - -def build_querystring(access_key, session_key, algorithm, amz_date, credential_scope): - query_strings = { - "X-Amz-Algorithm": algorithm, - "X-Amz-Credential": quote_plus(access_key + "/" + credential_scope), - "X-Amz-Date": amz_date, - #"X-Amz-Security-Token": quote_plus(session_key), - "X-Amz-SignedHeaders": "host", - } - keys = list(query_strings.keys()) - keys.sort() - query = [] - for key in keys: - query.append("{}={}".format(key, query_strings[key])) - - canonical_query_string = "&".join( - query - #["{}={}".format(key, value) for key, value in query_strings.items()] - ) - return canonical_query_string - - -def make_websocket_connection(api_id, region, stage, credentials): - method = "GET" - service = "execute-api" - host = "{}.{}.{}.amazonaws.com".format(api_id, service, region) - canonical_uri = "/{}".format(stage) - access_key = credentials["AccessKey"] - secret_key = credentials["SecretKey"] - session_key = credentials["SessionKey"] - now = datetime.datetime.utcnow() - - amz_date = now.strftime("%Y%m%dT%H%M%SZ") - datestamp = now.strftime("%Y%m%d") - canonical_headers = "host:" + host + "\n" - signed_headers = "host" - algorithm = "AWS4-HMAC-SHA256" - credential_scope = "/".join([datestamp, region, service, "aws4_request"]) - - canonical_querystring = build_querystring( - access_key, session_key, algorithm, amz_date, credential_scope - ) - payload_hash = hashlib.sha256(("").encode("utf-8")).hexdigest() - canonical_request = "\n".join( - [ - method, - canonical_uri, - "", - #canonical_querystring, - canonical_headers, - signed_headers, - payload_hash, - ] - ) - string_to_sign = "\n".join( - [ - algorithm, - amz_date, - credential_scope, - hashlib.sha256(canonical_request.encode("utf-8")).hexdigest(), - ] - ) - signing_key = getSignatureKey(secret_key, datestamp, region, service) - signature = hmac.new( - signing_key, string_to_sign.encode("utf-8"), hashlib.sha256 - ).hexdigest() - canonical_querystring += "&X-Amz-Signature=" + signature - request_url = "wss://{}/{}".format(host, stage) - auth_header = algorithm + " Credential=" + access_key + "/" + credential_scope + ", SignedHeaders=" + signed_headers + ", Signature=" + signature - #print('-H "Authorization":"' + auth_header +'" -H "X-Amz-Date":"' + amz_date + '" -H "X-Amz-Security-Token":"' + session_key + '" ') - request_headers = { - "Authorization":auth_header, - "X-Amz-Date": amz_date, - "X-Amz-Security-Token": session_key - } - return request_url, request_headers - - diff --git a/.resources/34c0afbdb63996e0afa6c932d79f3cf793c912a34793879ee14c48fd584d3280 b/.resources/34c0afbdb63996e0afa6c932d79f3cf793c912a34793879ee14c48fd584d3280 deleted file mode 100644 index 1d0b230b..00000000 --- a/.resources/34c0afbdb63996e0afa6c932d79f3cf793c912a34793879ee14c48fd584d3280 +++ /dev/null @@ -1 +0,0 @@ -{"onStartup":"\ttags_to_read = system.tag.readBlocking([\"Configuration/FC\", \"Configuration/aws\"])\n\tsession.custom.fc = tags_to_read[0].value\n\taws = system.util.jsonDecode( tags_to_read[1].value)\n\tprefix = aws.get(\"prefix\")\n\tregion = aws.get(\"region\")\n\tsession.custom.aws.prefix = prefix\n\tsession.custom.aws.region = region\n\tsession.custom.covert = False\n\tsession.custom.download_url = None\n\tsession.custom.alarm_filter.show_map = False\n\tsession.custom.alarm_filter.magnificaiton = \"x2\"","onShutdown":"#\tsystem.perspective.logout()","onBarcodeDataReceived":"\t","onBluetoothReceived":"\t","onAccelerometerDataReceived":"\t","onNdefDataReceived":"\t"} \ No newline at end of file diff --git a/.resources/352143f21df0e0e65f6f555bbb5635f6f336af773a53700c0b0014cbba93df5a b/.resources/352143f21df0e0e65f6f555bbb5635f6f336af773a53700c0b0014cbba93df5a deleted file mode 100644 index eed4f353..00000000 --- a/.resources/352143f21df0e0e65f6f555bbb5635f6f336af773a53700c0b0014cbba93df5a +++ /dev/null @@ -1,103 +0,0 @@ -from urllib2_aws4auth import aws_urlopen, Request -from urllib2 import HTTPError -from urllib import urlencode -import json -import system -import boto3 -from pprint import pformat - -REGION ='us-west-2' - - -def openSession(): - CREDS = boto3.Session().get_credentials() - AWS_ACCESS_KEY_ID = CREDS.access_key - AWS_SECRET_ACCESS_KEY = CREDS.secret_key - TOKEN = CREDS.token - CREDSRETURN = {'AccessKeyId':AWS_ACCESS_KEY_ID, - 'SecretAccessKey':AWS_SECRET_ACCESS_KEY, - 'SessionToken':TOKEN} -# OPENER = aws_urlopen( -# AWS_ACCESS_KEY_ID, -# AWS_SECRET_ACCESS_KEY, -# REGION, -# SERVICE, -# session_token=TOKEN, -# verify=False) -# return OPENER - - return CREDSRETURN - - -def DynamoWriter(payload): - import json - from pprint import pformat - import boto3 - from datetime import datetime - from decimal import Decimal - import time - - LOGGER = system.util.getLogger('notify_to_dynamodb_log') - roleArn = 'arn:aws:iam::533266954132:role/ignition_to_aws_scada_notify' - # Get STAGE variable - - STAGE = 'alpha' - # Make sure STAGE is valid. no gamma stage configured - if STAGE not in ['alpha', 'beta', 'gamma', 'prod']: - STAGE = 'beta' - if STAGE == 'gamma': - STAGE = 'beta' - - STAGE_CONFIG = { - 'alpha':{ - 'region' : 'us-west-2', - 'roleArn' : roleArn, - 'tableName' : 'NotificationsEntries' - }, - 'beta': { - 'region':'us-west-2', - 'roleArn': roleArn, - 'tableName' : 'NotificationsEntries' - - }, - 'prod': { - 'region':'us-west-2', - 'roleArn': roleArn, - 'tableName' : 'NotificationsEntries' - } - } - - - # create sts session to get credentials from EC2 - sts_client = boto3.client('sts') - region_name = STAGE_CONFIG.get(STAGE, 'beta').get('region', 'us-west-2') - - assume_role_response = sts_client.assume_role( - RoleArn = STAGE_CONFIG.get(STAGE, 'alpha').get('roleArn',roleArn), - RoleSessionName = 'AssumeRole' - ) -# arn:aws:iam::905418448057:role/ignition_to_aws_scada_notify - temp_credentials = assume_role_response['Credentials'] - - # create session using the temp creds - b3_session = boto3.Session( - aws_access_key_id = temp_credentials['AccessKeyId'], - aws_secret_access_key = temp_credentials['SecretAccessKey'], - aws_session_token = temp_credentials['SessionToken'], - region_name = 'us-west-2', - ) - - # create a dynamodb session - dynamodb = b3_session.resource('dynamodb') - table = dynamodb.Table(STAGE_CONFIG.get(STAGE, 'beta').get('tableName', 'NotificationsEntries')) - - - # write data directly to dynamodb table - try: - response = table.put_item(TableName='NotificationsEntries',Item= payload) -# system.perspective.print(response) - system.perspective.print('Write to NotificationsEntries DynamoDB Table Successful') - except Exception as e: - system.perspective.print('Write to NotificationsEntries DynamoDB Table NOT Successful') - system.perspective.print(str(e)) - LOGGER.error(str(e)) \ No newline at end of file diff --git a/.resources/3537ec6879c1de30431c1341c72e00f5e1123f89bfb9390deb33629dd573d912 b/.resources/3537ec6879c1de30431c1341c72e00f5e1123f89bfb9390deb33629dd573d912 deleted file mode 100644 index 855523dc..00000000 --- a/.resources/3537ec6879c1de30431c1341c72e00f5e1123f89bfb9390deb33629dd573d912 +++ /dev/null @@ -1,204 +0,0 @@ -{ - "custom": {}, - "params": { - "Name": "", - "Path": "", - "forceFault": null, - "forceRunning": null - }, - "propConfig": { - "params.Name": { - "binding": { - "config": { - "path": "view.params.Path" - }, - "transforms": [ - { - "code": "\tstring \u003d value \n\tparts \u003d string.split(\"/\")\n\td \u003d parts[-1]\n\treturn d\n\treturn value", - "type": "script" - } - ], - "type": "property" - }, - "paramDirection": "inout", - "persistent": true - }, - "params.Path": { - "paramDirection": "inout", - "persistent": true - }, - "params.forceFault": { - "paramDirection": "inout", - "persistent": true - }, - "params.forceRunning": { - "paramDirection": "inout", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 44, - "width": 357 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "EmbeddedView" - }, - "position": { - "basis": 35 - }, - "propConfig": { - "props.params.forceFaultStatus": { - "binding": { - "config": { - "path": "view.params.forceFault" - }, - "type": "property" - } - }, - "props.params.forceRunningStatus": { - "binding": { - "config": { - "path": "view.params.forceRunning" - }, - "type": "property" - } - }, - "props.params.tagProps[0]": { - "binding": { - "config": { - "path": "view.params.Name" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "path": "view.params.Path" - }, - "type": "property" - } - } - }, - "props": { - "params": { - "directionLeft": false, - "tagProps": [ - null, - "", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "style": { - "overflow": "hidden", - "pointerEvents": "None" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "88px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden", - "paddingLeft": 5 - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50px", - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.Name" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 5 - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "45px", - "shrink": 0 - }, - "props": { - "style": { - "backgroundColor": "#3B3B3B", - "borderColor": "#CAC3C3", - "borderStyle": "solid", - "borderWidth": 1, - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/35cffa072b17e425d62556869fe80fc108194e29b84a3767eaa627448455df17 b/.resources/35cffa072b17e425d62556869fe80fc108194e29b84a3767eaa627448455df17 deleted file mode 100644 index 14f8f714..00000000 --- a/.resources/35cffa072b17e425d62556869fe80fc108194e29b84a3767eaa627448455df17 +++ /dev/null @@ -1,33 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "var(--neutral-10)", - "borderColor": "var(--success)", - "borderStyle": "solid", - "borderWidth": "1px", - "boxShadow": "none", - "color": "var(--success)", - "fontWeight": "normal", - "margin": "5px", - "textTransform": "uppercase", - "fill": "var(--success)" - } - }, - "variants": [ - { - "pseudo": "hover", - "animation": { - "duration": "0.2s", - "direction": "normal", - "iterationCount": "1", - "timingFunction": "ease", - "keyframes": { - "0%": {}, - "100%": { - "backgroundColor": "var(--neutral-20)" - } - } - } - } - ] -} \ No newline at end of file diff --git a/.resources/3636db4cad4badec00cd68e8decfc5c86b145fe0e2fa9c712ecf35b91264887a b/.resources/3636db4cad4badec00cd68e8decfc5c86b145fe0e2fa9c712ecf35b91264887a deleted file mode 100644 index 6e9e003aa4def61cf4535a8fab5d852f2324f27e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14545 zcmbWeWmH^Ew=Nn&g1fuB6B1m4Lm+r?*WebsfdGv=1eXpF0tAQP1ZmtFx1fz{&_DwX z+~$41bN1Qyjy>)e=U1<;Q8jDUQ?s6$vR1T)nj$s^1;(>y&#;x1a_#gZ#4HB}ytPsM3guS?nvJhrPZn zfIl^LM=rm{agN?jy*ayS815MJHq%N6ftbAc1s40hdHx-+S?lv;-t?i1jP3ZdsJ(o9 zEcs{kmb#Qj*4Z9EKaCjkfb*Tk?J2%m{xBXWexE8oaaUcvEkVqnQ@QjgzKIQ?>v5dT zTBRqmK(=6eacAH)lA85$H)M%e*a#(;!>M<_kVRU{oe+m~#-cA=@m~e=EN+CXN$Ts; zHU!d&>rOltb;0vZmu>pr|7dqcf`hrXx;N=@W99{79@Rg;AN1|9)2`6Z4y~-mQNshh zpVKzrxJyWL7W8U9p6#VUZ7=@#mSx$o(YaYOZTsyfY#-`-7DN+qSH1R>$)b^D4xiQ&u!sK zFko*|G4YpzxTag1?b32KX%Bu=Wf%@lg4?Ip8xywoW?^AL!Bm%PMpq|ZSJV26DyFEi zerGFg%Q()%4d$i~@;@abgLOdc-|yzH$P7$)7aR8*1h}olb+v!bT^C+LLMxJRKk?l? z1WD7sqm=+Bhqh*5fIw80l@xPxbI*(4F;0zM+}pW-&Qn8uxkQ_0I1gWJPPCMoZRA~4 zH;vTY`cT#|X77-Otx_M7mxuhxf%&fDvzpz!ZiT8i&Xso!boAlR(&PYw2&x^Z*ddP zOceT2t1w`EKErQvh4Vs)?Gu3kgPQEFda#XN_O#Q}GeuP=EK5sEe8DMFiiY@R-+u8O z?x9#itK_wBUi{x0mM9u$99Mt4Neg4UDXId*LnGS2Wu4_PD$;>#%}x;g!>R`7P0+dM zUoR1|tH{{&*bY#+*oHyN`ZFIE7i!tq&+BgKBq2d+4$U`_HRJqlwCmqUgUinou0%_Z zsqlwJ?pkEaXS0s14n0eCPd$YRQd!ic0Xk&4KN}|wjvh7Om5J`3zVgoC@SstWM#7qf zd-(h5(oIqeknd_K#~V#F9U2U=FtLaS7K~X~C}hQR3(RG%Ffj-ZEwK+REf@VTPeUr- z^$m-GhlY^eQF1GU_t7ypeJdRYQ05^SpeNe<%4


h!2}O+*lugbZ2Pg#1=9@i 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 diff --git a/.resources/36433042eba4acf126937b375649db27da760f38ce88ebc9df2967f076eea120 b/.resources/36433042eba4acf126937b375649db27da760f38ce88ebc9df2967f076eea120 deleted file mode 100644 index 783e7ff4a62fad2eab9fe2d4a79dc131cd9385a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12867 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 G3H~4SCn;V4 diff --git a/.resources/368edf2a78c2ad63c7f0175936963107ac957c07ba232e997acb3b4fd27b9e88 b/.resources/368edf2a78c2ad63c7f0175936963107ac957c07ba232e997acb3b4fd27b9e88 deleted file mode 100644 index 7fe9f011..00000000 --- a/.resources/368edf2a78c2ad63c7f0175936963107ac957c07ba232e997acb3b4fd27b9e88 +++ /dev/null @@ -1,213 +0,0 @@ -{ - "custom": { - "expanded": true - }, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\tself.custom.expanded \u003d self.params.open_expanded\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "params": { - "open_expanded": true, - "params": {}, - "path": "Diagnostics/Embedded/System", - "title": "Card Title", - "useDefaultHeight": false, - "useDefaultWidth": false - }, - "propConfig": { - "custom.expanded": { - "persistent": true - }, - "params.address": { - "paramDirection": "input", - "persistent": true - }, - "params.open_expanded": { - "paramDirection": "input", - "persistent": true - }, - "params.params": { - "paramDirection": "input", - "persistent": true - }, - "params.path": { - "paramDirection": "input", - "persistent": true - }, - "params.system": { - "paramDirection": "input", - "persistent": true - }, - "params.title": { - "paramDirection": "input", - "persistent": true - }, - "params.useDefaultHeight": { - "paramDirection": "input", - "persistent": true - }, - "params.useDefaultWidth": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 339, - "width": 369 - } - }, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.title" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Framework/Card/Title" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.custom.expanded \u003d not self.view.custom.expanded" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "propConfig": { - "props.image.icon.path": { - "binding": { - "config": { - "expression": "if({view.custom.expanded}, \u0027material/expand_less\u0027, \u0027material/expand_more\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": {} - }, - "primary": false, - "style": { - "backgroundColor": "transparent", - "borderStyle": "none" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "24px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "EmbeddedView" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.custom.expanded" - }, - "type": "property" - } - }, - "props.params": { - "binding": { - "config": { - "path": "view.params.params" - }, - "overlayOptOut": true, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "path": "view.params.path" - }, - "overlayOptOut": true, - "type": "property" - } - }, - "props.useDefaultViewHeight": { - "binding": { - "config": { - "path": "view.params.useDefaultHeight" - }, - "type": "property" - } - }, - "props.useDefaultViewWidth": { - "binding": { - "config": { - "path": "view.params.useDefaultWidth" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Framework/Card/Embedded" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "Framework/Card/Card" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/36d92f40c5c6eff7577a81480b8eadd90860b49c56fb0f7590afc49aa17393da b/.resources/36d92f40c5c6eff7577a81480b8eadd90860b49c56fb0f7590afc49aa17393da deleted file mode 100644 index 109f5a6cca01211780a69b2e58c00ea576342318..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9829 zcmV-rCYsraP)f+0FVPP`vK8E0SL`j{yzZBL^4Nb zwoEXad=^8xQ8&+^^;(VTMs1ow>$4i?8wlW~z~P)t9NYS3gFb>0EM zod!)73+OdjCO?o(ffT(aX8_=#KrR6ca|xhl0f$NNW&tw+=IAwfHvsu&y~|?2aSqpH zEw&iWn?PUkJbjuum`gh~Zwc$$z52Wt;p5z35{K ze6JII!f>zH<=^RqTa*OYs}+8#Q)*hYcf8o_52*rgGCt|GurHGhYS z58&@={!X=kBeB>J%Xbyg`z9EsIBb>wVj{p1t9%~?j#}kEnWQhv zxm`B-kA6V$y;1s#g4=CVd`E%fHpO0pAWp)6=@Xis(h#TjrWA9S{j(tFZ zPt}4CRQwCE%oeraBb9()Gy)W!rPyjbZkCd?SYi&CWpL~$9Haigv0o`L(4Tz+`~d)e zejtt!f4-+~oU##rkf;kb`7O-jinyJDa}{fXKNzU;4;F=9t;X$dFsjF^m`52w zs$N~MiHTHcN=(`>X(|3^6&_jz?#~*dlCRce8niI_Nu}_8v*JF3B3Z@6>$IEo(pxnu z^uR`gGFhYCX;s{+Rz0s2#Ok!qYQ(rvY=`&{D!dc4@O%nMoL>8_PK1nIw8`^zsxrND zrBP*3tDa)`2|DdgttgX`Wf?SY>!njQs;_N~Qmy&3T71Q>*!~|_c-t86a-#}adX?b= z^POIt!o*C~Ym-$9om%y)RWVtsHZh9Zb(-mF<{?HfNvGYem*~~1T%-1@|GD@Cwuw_f}=hP-1BYNU@S_@7&uojTF$D&fag)hinDpOnHAvCN+|k`EXjTHi*s z_+8q{|Fa4Y?+^OHI|?!}d`%zLGkAPy2S+!<=yR(P5jGj1E0CE$`CNVGGUJSu#2Z zH>=1D@iD1D0mYEQ^UrwiBES||ms$FrBKkBt;~~=4m?ISEvBn%G02%ELk%^9b&OhUE z&)ejf@jhUp@v!bUkcke!uLdzY(f!;9>|-Z7JDKq)KoUhqJH>Z85k|XS3>-Rkv{UT$ zk9LZ$wL&`DDKO)GMkYE1X1wiWqEmdO5zx_2u~Q@XLQR0bs|7%Eq-INo*|3oj{?#bo zY*DUZgs&Rq?^_rEubC9@S(w!d;TtB!y8syBn-MPodOX1no$nPn=Q<%en9!MfdC&^m47wJ?`4D^T9q#uk{Hj71TFbI_@ky6ED zl;Qz^upeNQJOv|CDg_Kf00zJS%yrC4C7%KU79h;z)J*^!r#uocGdBTP9=?L%GvpL@ z{#A@pqEhjxC14&1aCCZo;`s4J85wzLY5DW#=h1Zyke24k%kw#%PKU$mbOQDk6}j>p z{@v-!OPj}XvZt;E(maKQ?t%h#dHMi%em;fsarS1X{D9BpB1)l%RZVxl8ID}XJaYEN zQyi5_b^GnNcP?7g(bl%0z5TkiaKVC>y1J&Cn)a3!|6W_$-rU?w_onLV&d$yoPxYS# zLu+GWYePeGeSHhN8XACM;l+y=-*~G3Y(r&bN1wWD48Y#pylBy)8&9!|qtR%lOq$eC zQBhq|Qd3%bnbao>g#LE%gJ6*(NtGgS5eVO_m-xn>f+)XPqC}g<7ud^t*feP zYijC1AaJCrs=m6qfi6hXvHBfT7zTAh@XgcLO+cuh^$ zt=5*7hN>!<4(a~AvJxS$r#qx~badQ!s{bq)8f$BjmW;HtJ7>=>_IQvnBnplpH0|x} z5J(nP?T6_v&cZmTVAWk?0F7yTTicBq+2zktV`U{o)RvXqxT<`<`l_lMU239xYjbl= zNy&|;*j3^2v^O+4ZVU~Yl)b#?u} z$Z$(zBT;&TOV|;qKhpaz&k{_GijG!mG^jN6p*v>Ij0g+ka5(c)Qyc2)WMXl|m@!%D z>9y6>F%pTzWWw*fl$3=X9jM9w&@AB=6&4hP1_#3phG8m8N;C{J?3P=K-EJjH(aK`I$p&%K#d{ScKkU@ho=gk|$;b_(B zgt$25u$pGcuk;3&fFW7>1HBwIo2Ay)CiJ4lMv|+6I~s3g<@GK#H1wAuveew)sjgiJ z7%W47t12&7GtAhC2#dv1T~=1=@t{52amO7^&CMvq=;-LYyu7N4ilG4k3d{$5etLR3 zss;rQ16Xy}XQ{rv4F=cOgMsL}cIV*YPMJ87Jbz71X!eMD{|X{ve(vfw0ixd#M@A~um(XT&mY}uSh%>j z4X+2y*o_N5qq^|IKpfettFhxHt)qKQd3ig%qD@%TL)LkMfzi#)Xca6Qc4RLT6HrkR zYyylbXrpIuy2x3SbbWmlHPXK$xG)=qr&KbD;}Yu2%ODHb8+WL$@OmqKzMHJ#VkEGJ z_5fJM?zIDUwCS6iEiT4h<@1&m71mc()|8jA2U}@Tk%MIf13zzawogKt(}^5Z6&GJM zmBPpeCw@}Wtdz9Y_QmaO9gWpB9c}H6)wS)dZT`KodeP#}_LkQ6mbM#LM_WfzO>J|1 zLmN6xT|--AGxpX-+&{86)z&RuwD{&{Tie?fE~#s1X<4wOslKVTu?a_78k%r~h^nmz zX5oTGH$O}D)|FRuw6-@?*LJkF(Y?K)ss?*wO&zEBu8qzGtMl4cDfQaOh*8neqa!1N zqas87d-y0WcMO+z^Tp$Z6P~f)47tf35zOO)=ekqj*u_$QcGJ?Fre%c-@3l{y97Xs; zuQ@(83Lp7W@?ipqa0 z@Ey)AI1KqX4k1{1&cj)G2OvDR@KB~>KZ}QoJm)bghu{IgJjxIJQ5SpmyUr%vGueZDxyQAm?Jb|(-Vj}#6KV2jQ z^{yQNs>=PQmXGo9FDxDLBm08zl3Wev;>c^}pjE3&C)goOYL- zfkYOA805Q7k4sz^%}of8F!1=3W~F>k=sB0~f+yz+JzzdvTGi_+J_{jOxkbl{ycdeR zr(Hfo_q3<9H_vsF%0C2t{JKke5MZb8Op)(Go|6OuT40~I{9;D#?r83WDbt=Q@|{b~ z*cBO-kUZ!0lFG})mA%g5i{Nw=9WQYAK#sfQg0JGTucEim+e1R&Jr5zM5sq3#vs8FC zujnWe0)KJ~kFcI#IS8_glw8SWh0+l^S~X|hhasWN*r?d_obQt7yqh%R#gzG9;K;2Fyf-!DOTf2Hc@z#zoboty6?jgiW$v1B#~VpA zUYIp^^Q^faPD_4m_MM+(I)0uq?O9|GiQ>|hDeXaW z5hN&!h_q$od@hrx3xty=PI+MP;2|SN3F0TLiRLDTgvJaX9-cJg&xP)TAtAER(abHk zgr>~ju3&OThiONLspqD?Gj77lkt2nO3!}=Lm+|+&z^JI`_>hp8Ovf$+0$ye1{~8z+ ztus^v1x05$_BslG88m3fq@<_hOit)%<*;F4lan4EpLh@a3=WYg)kOgT!$*f{0s;bg z{KTO{M=I40SMhm{XUUqnCwH_y{IjpNtH61}Rl?pMQlsp}aFP4nh5Ms5R1O{-Fmj{_ zHqA}@FlqV|5bY>B5I1hs@Zn=hs(RI0Uu2ZsVrz_wj>GSaJN}kD=gokjBW|7eP&6-5 zrE$e3EQLz~(aeccHl?I(fhpirX`I>lKNNXR7I@CxHf7V0fMJP~9~nG&sKwTv?>bDg z^!TKt2XS^pU?ii;Oc=i+FenP8n>gvAQNbcq-H5>GsnZ^tob(t%iEha$YF}3KUptyM z{9Ihy?eg{%dj0pO?_PD`GQd4=`4y$wiCa`aYUvOx9-p`-AYg>M^pZ7p(XioRp0Zwz zzI1G))og2kW8Sjfgj?56O8Rp^K+vrdH;zwSJ9XOQGiJRI8{f$nOdUQV0uGyPty+Eg z(4nIcc(h|&S1x~2U=S}VIss7&k1%HEeK%ytu=ol01O{=TC1R|dQRO6zUmhGPEvf7s zf7=Em-&Ncj5~`S$^49Ii&xMB@NE1hv>Yv=vyy>T+@&nn9BeVsRsvCH(&>oz=%W@_g z7Z(+no&PI-ZLysQVOHLL+#Glk91=5Z_!!)i^z84Eir^6W@Zn*p>04wmDJZ<)VClG9 z*BLEMqk<)4Bjfmj$unpF6~X56ZW}d9JaNhs?vl&1Q$B*g8M9w6t?o@t-w7Cr8ayZf z`3Vk@hK!no(X3tMbv`~V`MG%+ zpXa$w6?)Jfew;Yw>>O>@zt5cg2Cm}mGhfbg9?U7&H!b`ou)_(k3`h!AbQgr7WF zWf!x^%Zqz>y1;{1zlSoPLZ8JWLEoS5d>47#`sAN2^qhB>z=tjlX}3h_pP(P#Lu(?=d= zbOjcJry4unW~Y}tnMbPlt<-2I4cM0Pz6QaE?f#6XBS+;5aT5LCvyvbr<_>7;mt*sBIk8( z$#-6Ide6B^E@6(Mujg5IVQ_MnTyo!t_x0g@*WoV=!26L{&g<~*o{a3nshNl7XCEyh z^T8zu9Ke6BpZ|J%aUb4$9sVMWCqt?CJSV-Z+PCrJ($2r9JKjyX^X=IwZ%m*0;`HQ~ zW+cBfZRU%~cf67^?`^EvDX#-RgW>_qn(fEmF_++3eu{t9kDv3}HT-k@cmUI9yf{7O zwb~a>FMFeB>AUB$TK1&OeS6m2tNhRlv3~y9uMCs}Ggy4`?3V}H3A0mD-%d$=3wTb+ z@=d;tugtAz9ugeF`S*Q8Uf*}3xA!uZd``jj#Q){zUc9#UiT7Inyt#7K`tl_!%a*Ld z?pnB_q|?8bFI@#BT`R9$1nFGh=Pd2K27euY>5`RB@Q{6F<&qWoo$Fruwf9PI?~&eK z@8g>*JC~I$y&G&$UD~G?{C}jBHL|#m6MOjprJPyb=K7X~&z@Ou{K09x8?2Wei0|DP zw|9y8%(~d`ms(D)v*Y*j1An-_?lhfRYsY?io&EC0xGN9DUD^rHnANzHu z`Rx5*g> zd19>{7M@-g3u^}&$%&Hcil*zYtTP?C0)}J$kpF=jc7wE(&aGH5^=N+19E*w%XPWEi2XC zE7T`es88NwJi40b1!wmf>*2etpS9`_tN^D0@{iK9kbH4{Y`@;41Y`Yeg$3I8FDLtn zHGWPkjzDQ~&az&(-wsW1=G0o-FLzl!Y0@9L+q$F8@XcZqLEdYF(EioEhHzs2e3$v{ z8qG_^%*y%Vr=0Rbt1Raph}+tzeYaYTr1e{Ka*gfVPSciVJBLe8%idwp_a3cH&+;$X|3AkRk*LVLrUd`elcaWNgLN11E^vc4QB+M8==@F}RQ> zL15^J07>|;gZJ3hWk^aVMfX1BFQnthd8=X1ViVGMetqomd+kX656egqk}|t57O6n3 z_C5$s`xoto-HVK8?z01r5dW~uk`)*6tXmG3rfWwd+~?>in89)$p&3ICko?^Xjqnyc z93EqKCtEJuZ`-xdxUEJ1<1#ZM!3K5rLesH(Y`-pt^#;TPd1GV0YXRZ>iJJA4OA#=5 z(BC_V+d;#IluV9Zn<;IZ$v?Kvo?#D;+S^{`;k- zuGQA>mzYu9I~N#9au%Bq+V7W`b}ceKRv;fbWY8;Rs{JdibIoDC+ag<&`L{B`&w82L zlp#phuz*4D*J`3dhWZjCy|+cd#5XF{*vlqIrJBRSM-F|VnB;j?nrI>uJXIa)7&jII zT@%L6GK~JXNhb~;RxvsH84nW~e9H&*+K>@LmZb>OtYgZiaCa{<{jk)Gl0!good6){ zJ3EXVk;9saE_9b;={|XDTj9mY|$_h@1z(S$FRjCdb zGWfUU=H5rg>G(l;nsuRpL*B2` z-j^kb3?5oAJ`zRS`}p|#b7Uij5Ba!WJI5F%ix{3_3d2pdOGa+Uk?vYxP)3h<+M|dL z8G3Gg9Grnw2sEz1DSFj$s}XVBE_j8)GkIoN4y+)R_R~@`+YGw<+5mfVP*mG#ia>=L z)FG02e6&pj!sNS51;uJDm^fr)xtW$dS%Aj;_0%3*?JF1|>Sn7`8rFCXE>W zeWx+-mceCHqQO};m5WP-d%>ED9AHOT!8UT2;Lr^zlIHQzc08GAG@2Dc?i z9om-6M_RsWH{h=SxWx3FSCJqah3qX(5kf+`EqwoS^Y@*m6mwXdbY$mT;l)ky>oO%I zQQ1-y8*cK3T$x!IG}jdN(^B#t;%t8t#@@5e{_`@6-=%LmiAyK1ZPxvZP1g?U3~nT9 z?*!%SCgHJ@&h}tD78)0BBi^O27Mi+A%*=RUfd{92>~JiTFlc;C@X3405u)o}a;H(- z=!dxah&rU;yJy>rR(0GfeSvc z`C(n^cOF{%UqJT7=(@*-vIZx8UMxUD{l2B9r(JTqUB4{DTteC=1hTIxcC=vjX@-^E z^yRrKjbN+?SCHy}Uer|=efn?o=QypV{j5vwS(dLCk*0k7j|T+^f{6#nrPAYS{ezJL z#-V4Tg|IH+ATV$MQAcu)_dWB#|GtXwkddOr@6t^dbRqVvUhuOn-E_fzykMMYg}G#o z_2Av+?zPBx95Q~>1ri?Cp8I3JTWUT-i{VBdcERp%mYC12C!^Pe4Sr6He;4WON9Mpj zf#)|69&mymr*0J0&w1uPzg{xV{jqA0F!*sy)>x~KvGN1$f{_WLk@2FD31SKegW~Cq zUjhq*Ox(aYVUU?m_5_LF5B1!8^vRjMvqXs?ncw8vOVCF45ehJ3LhpIAbvB2Z&%WeKe@)^aJRP--ZkRJX)f zNY2LA$v9@U)jUP7_Xw4#d{sK%S|`P_H%ir60w#s0bqKAsQe6R|sx$pmTZ2@U!6(#w zp|wVeok`_uvIW+9O0Abd4yd|9p#@Zjkhznm$rS=m7-}WTG(y$8M3x$fhEj=~dUDWG zEn(*IfiZYQfYmv$fe$&*h-I#nzzjn5i2*|+sCp-*HcHLqVvr!5V=>tD@mfuRz*H*6 zVK@*oool3Lw0S}(mft~)GZu^WPLZWbBAdnqr>RV=EfDI8gz{O$ID=OVBg_>N#SFf! zT4pJg8J!Y+fml9^Yw(J|faAszv1~dQZh%wg6v9$n=Fm97nhnb9nFp7FuhFoe*VjlEEaLMd8^@i8{EXnlI4g z2x41g2A2o{LuL?cZLSaiVyv3ahY|J`8O|UokTQTOP^Iw!*qf!YoN#4XI6ozrKRZN` z9c3tz=p151&fpTqHpLj-WY^`0wOJyKLtrQrYjZ{F`9hOdVsDf&`H_Zdo;F*o$rkDJ zB{&Ovl=JwOQfX{MjLC;Y$xt2e2il2VP*eHlGO?vrV)TkpATUy$E#R0?cvJQEcH|K? zz$bp!Np(&U>`-S4NTtJPz#07q|PQ8Csb5vra+OxMP}an`i zJzIBgnS0kHRau0lGD@8;kjxHO6-4VRc(Tk0{>%_*Mi}v}imR{W@n;3g=0r+zLLYp8 zb@QgG(USrgN3^OuTvHKctC2wwKRF~Oe+=V`U^1hXsRE=CWd@}dT8Cgj{>@eJpV*Ha za;!$1E>^4elKdhMdN-*wWRN7iNQAVa(#V-|T8B=`2vGe za=z!nlOH~ux@6kH!w0tS*%q6lcdyUXxdq9MiAgmHiG{ZL%Vrd=O3%CJPDMe)ROhXC zET7<6lbyP7+Spmc?s{l(^<%Dy)z*v^Gu*4Q=2TA8SMyPp;CFPUW;V~A+GbPca;?=; zn1_pIHK6 z?}6Re>(`e@O&@73kFnNC;0fD@{B@WwRMRTOwe0J7KA|#A0C!1KqLoJa33?H&LxhS{ zT2>#GRvM|pLJ{qUgsRHs$2G~1o;-Z$#6hS(bnJJtOSbHVwo8{UNm9Ze`|CpwymQa; z7dtLrzAR6RI)1Wy`Cr;MzP)GE9vgG-#PcD6`b<@lDb)7h-a|zB~?78c| z7XEVJ=g#Mv;v1ODS1#9X@^X_$Y37q=VDdxddWhLaF805^ z^ZS}-_En=&aQrW$=VlJ^!8p>W%5s* zI=SSDwkO_x==t}aR;KevQ9V}t@~3~f`{hMXzWeCmu0zlTWZk;5^40E>XHM??Wyh7? zD=kk|aA%LyN#$iPnKNTq{OqNPbC*qo9XV~OiPfgLOC}{2Tc?(c%UU)Yl3nZ5$JMFte{S{O zecx<&bu~Q9S#+l$d9=|j`S)}@QnXmS+e6e&F5Vffizj!Ekxq-!lt#-OVT>b^$&QlD zjF1h^^bs)n$LyrcjqBf(r8TBCZ~3Y?F+< zyp1uWWo3&%WnW%Zn!sF4#vh|s0xG(taBiq*UZ^ZH9C=XAf3c#^9#9+?0o)@x=wl3P?7qQFjo{uvKd>LgR#z!}eab;cw0gLo4w zQw0bUe8c*~8Lyt0G+@Tl+l=FNrV@$0Mvi8Z(9Wpt6xnLzu?-5NTWTqb(WHwlB{Ex8 zjHM(du0;WAY`xrGD>r$i<`Nm9mc>{rFd9QEp~f{UY*j=Q7O2)r%+xVBjw7JPw<^Gi zgC-B5+NxvB#WH)H+*TQ*N)%Yyb($z)0Rx$q@)%>0RGTS= z878+ZzD2<*8n;Mk^2#h_GEQ7wCKUobJAN z!sTVf;GnUffq;PEB*cXkfq;N}0mn}Wi>#da$~m`E;%8;VqkiF9E@wyjnh!GRwd3`E}Xa0+gD?o_LUJUxLjT~Gq_U5V0yKany$;S61A z-mjaT6waIpaK>G}C%98;?tA7lGuYD$SmyuEpiBN` z2^vuZ0}&XD&o`}!opA(_gvP+a^7MGN5cQ%<)D;6<Aaob~wI!%18BO#;V1Ogbjt@6JAN6Hv=uWHWL3gf?y=tMr9LbWHh-f{{pc`W$Ze1Q;uh z|4iIg_s{^1aA32TKishE5s5aNOk=cOWuU8-Ij!ROXKErnGxY=AF{tzLPj*-od7c_$ zmV8>$Fq>R9i(S9hPpL%K9qR0SsUp|+`z?u5iC|u`)(SK8^~@O59TW6@u&w=MIvbnA zfn<!CY`#dh%j4;K3tP+%;B4(EOlH%u1X69M%hkX4 zhhy1Xu6TcJH>TBjq0RtrK^&-d#omhb!Z>t!eK6M^rO!Q;`K&gZU6-V}6PT_2cK{k+a-#NqGp zWV+f%7t#MhgZ8T)xXbkhuY9AyOwQU65Y4i=yj}Wz0f5a8bZK?kQCd*Ihn;+0_d?aG zwa->+^j4~M>XL^dP&YbU?EsfwTZKxk`VT(i=XP%(S97$d9=M3<8c!8UYOCG(;%FjO z2sFgvU^rTxMf2l+g1*iqkxZt4T>g!8rLAY&4-3-~;291_GEp4g-;Tq=0b1*2O611~ zyni)>pv^!3&mn(0U3KXPb!V7SN9i? zdiqQ5C)2o(E<4@c7$DlRu=uQU*_^>cZQdVj<ovbx#s0))UIF9=Ml zLZX&-AVf==^`(yX@NteDJxd;8sNdGt5ZeFDn^>U7mS?t!J;3IZQFyboYq^5^KyKj* zh1R}BUEpW+ob^TiVqSjetH7F#Yam$mVd=hLK2M;vtBO%^`)<<{uhHihg2L6fk=w@> ztoltpN5|bl+FSBzV!b1WISb$bV~@zQRJhZ?lUTg9rlJqJH$7ylb-V2FC8Tvv0qD+h zU^tG0`&FBV#u6m@Pw1ZVzFELd==1uGUANapsX12rfmwk6iF{Es#j$D6EHsv&KMu4g7Ms&TRf^Gn-9scDgg0f~Yy2Y)C!A!)Y~JYh)$PE2c7~bay=h zNQ7Rap2W!FKdI>|O0qf}jRz#F=lkOsC_3ZeRk1#Ud1kbOc>PW|GvN103#Ssr#_!oB z+D5}seSW;|_k-IxW)dDp#g|pyOkINQxwW`NX2n@@dlMx+MRlFYkAFb*t803`Ij!I* zuDCrODF8cty+7XLxOb#wl99R6W2)OldcDia=BjnA>_KS zERTaisq=&lT##3Q!gZgUmZs2aU|0ITYr+C|aa&ue%|1 zw0on05I6u0um!g)FhwoE_qtu5<_A~TY7x2?3^VZfet!a#aiqP`WFlp!4Hz7`7K_bV z{o#0u)*;)*uVrkl^501e2anTq5;&wkZss4mVlRM>eLP=1?2qun-Il_%JuY@V!m#fk zZ?L%EAN~cX20ot;AZTNC$0lId8|ne71mJAf(^-Eu9@qDjn4H0xGhXMuhUhKRz)Sn{ z`=befJoz4tqngS{*Qz{c!{c!PDwn}<}9D!EgF$cN5OXACe$yt9jJzc>#vo$*2>4r4W!vH zlg0c$qmh_9HzJ#!Ipawa!_%b-^j|=-fc&WQ8}<&Q04>kkYO+#`V*!Ss=yks=C{);M znBlcrDo0JMllWCdIIq2c9z8&RIgrL^1OVY7vpEOB3lz)g?}6vbb#_8RK$stle84WC zKIm}12;n5822>ChfcOf9#SF;4TCF<(q&-DT+BiDBE{jBc7#=|E+U@s1h8K@>qrAUu zkp{%fdEX9^rD6S8EEmlINV3yo!~+sO&p*sMm)E-%9HTp5C=}#rERkHGmERvE?Vnxu z8$^i%K->X}2<|m__i@ux0^jU5S0EBr-{-mZH4tF{Pt1gL=RmouiU2@IuiiL(tsCHK z0S*@Zk+W3)$BPw&7MQsbF8~OmP#*V3sd|cLSL;pUBI!&fAqe=kf7=)sGudqRDK$gb z3gc$fiWwN^$hP6ABJu=j%fq5Y6S$nu!FaU+Wf91cF^aYj?Rq5gVvF6*_t%GzrH6+H zpx8F(3qvG!3##KsH8MEXj~ev?6h9Oi?M{?ctX9iWdwkAyxThHozBB~6@%1~V_33FA z;T+-Nx1snxKxinK((?9MVmP9cCIBn=5jcQJYs(djpzqr}p3WiQuzJ1M^RW=7)0rWW zIm~AXq@nj^rYx7rueQ533@>J}s3CyBB-&d6?y*}J=4Q?d`&AH_8k8(-2my=1KUS_% zfx#yk;HXfpOgU)|0PU`eG4GT?-+)KKj>?lxS%(6TQs|DmU~Y$nr6zaMuOO)R7mfbM zlA0c&Vw!?9IZ}8+DzzHCa=Z>0A}}tu8-oW-C--z`m&4I`2pqPdv_W5~LZLcZFD^>A z&)0jN%|vbqolk^;ZQ>_2i528D(M1?oalT+M^y)ak5<{oFblLczbY`>VDlPOa^Uc<~ zmK`6hGDT7rV06#*MvGI}CAZ(CgKYWA-*Q67s93?;W|to;=?X5Fs|tmp zaEsUo?NX_9)T)(0LW8Zc*_^9RwtJs~w8*H?Q8LEtqud8Wq6{2;0ga6;X&_v`tt%lW z_XRQvjv`R0vDTfg4zg5?#t6suiwj2|PG-!C1q{=T($@JtZ-w$eA#Dkx0hO_-2~=cy z-7A>cp}#XyC(s|^j0|?&QBdYnfZ>RX#9}dvl^V!=K(nVqs&(DrZc|62T5>b66hifU zMf$gZ9t?u@7+D!)w>AMoUTcfEGOsrx>IhFW$nc=t{-sXqcq3POR}|NE483E=j0rSC z*&kun`*BXJ@(mn7DsW6~lDg7B*07*I^LQb{5H)xqT5BpQm`+~3+sl2jx~h(U6(1%? zS#;c|;jH`P1dpTv(187-n!sJKEp`-zPFs~R6(iZ}xanqA0y3P;P*<TP#8zu}JyxBNqL8cSS%e=y7eG$GF`R~RMluL(vvKMZw5GAD?u zeniABm2=E)BRo2^`9AqIyq*kQRb+Nl+;1SU` zf%=U8d(MVh8U+C)AkpL|e9|*%jG*a(Fk!F6sSI)$sthGZLUirsqMW)!JWh7e*1!`u z788!JoRcP&hs=Q1NV%|6B9RP35|%;~`N{7Uz*&O5IXs@~{Yum8&s(lLB5{)kemThG zveFqWP|$Tfr;`;5X=xzWI$-_bTf%&8tKHsQX$)Xteb4?-l2SeLk(49*2U+u6&T+>4 z!^{l&jBpq-+)C#IxRMN!@{uCD$O}+dr@^#)`8Y=-bj)ZWlg792fFP#aMfz2H-y092 z5;C)jNvYp&eoRP)aBFZjwU4_woFgY{tSRQ46(n@@BzT@(pX8Etw7L*&|zpC7}R6j13^EdUlWX1 ztGOKpieI_gzB6O6I1B{^r(Ux*FMX}IsCKw!Bl1JD@+Z4}fhda6XIQIy0d=4pg+7B_ zdLWh=taRLA^rm~@517FA7c#R?2)xoolt&?g{ONGvi!i9az&W8qmOUJpOq>%Q5KJ z8$8S3zzJ#T_IkU&Sg9dK3L_e2=wP<|6axdr`HhsL*!}SSLHW;r}?ExhtR0J2f z2J%j?(D#J;1$OLbZiMC5-*XS!#jYaoPOTSV>*BTK`iS0{==$i!s0D%Lx1Pqvr!kDg zK>#VfW5s1^k0A8O0sqGQhND3_eyc^V2g};+<}gt1>j>SJ>(6($D%|=uC+lO7Bj=E?2%^Jmf-`E;yn>WDqrkm-0)&OKrrnl>rD% zIu)9N;hGI}m&`G5)Z`Z{;!VqjE7#RJug=$;f=o)mH6B0PJS?+zgK{-;28K+MPKc>v z7~1KBOOSkj&0Vu*xBrge-Cb-Ps3!RT^^r_^?kPGX-i0Z*XhDdKRfOeC_0l(*dG8&j zH#~yS>^IvVvST^IVzorsZc6>HZ2_zvrlSl_lkr81h2qIi)BVOWIytFhW1r~H77`I( zDI#;U6`n23{-|yO8{2!JJ-=2>tz908@z8{NozAuY$!0VpxYi=g-+l-0a@xR44 zVT$b-ox@z=E}1W0caAV`38`qcO|5Yt8;;c?rQDM|IhOU`;>&dO=5ci?M7RfsR&7@( zcz-fnszxpIYO*h)rqiQSzH^9|OpR1krBi%!FmSaw3P!H)R#gm!J>pB$J4U?7{)}XG zG)4R3S0fee)UPbqTjgikY^uQwIZF+LsWv^qI^;QbPd3MWHK$DXXV z200UdsuA%E9Ib|<%Vo%&KCvW=`?4l*L9`=}S7Kb|t^wgi{(4tkuw!#sVTjT*!%>hO zpQ(*NU~W*?Y=Z4i2L|@-{BFRUotU-W--1OrzRa?E++34!IPpzr+3eahx$esKX^}7D z8Y54Cm<2~NLY{ke-(~9vR%|=W!>P{I zz_)z_(_%LABkjVIDU17+&iMB$Jb3IM`^O~6B`t0WRVGjhgtMCBB!EEo8PMExObK)pjD zw`G(|Ap`uIU2zh>1p_s4_q(WbkzCzjq+Q-N_JRW)&jqamGW#U@4jBV6?~PX087U zwneqWaJw|v>la@xU!}2oVd0Ob$Lm=uJk`6)=x=af#OfZjN8rYyJ}<$f$Ybe{r<~1S z*6vSeluT*xuZ%U=cOk|Dt&C2dkik$e?~WXcN$##`jNCu}V9~iNmbAqlC!rLIcXzoo zP<`_)lD`|e9gmB6wz?##K)5)+YYVoCf(&-*>h<+#MUbGY85-MlcGVw?A`fRtXiY(d z-|s1^?s^0%VNQwU#FvtA6;U$@Wfp^L37QiZ-2*ikk6pgX{iHYUuVrnk657A&{ZPxG zVfWvefx3ADcKoHf^e0$d_C5=~z9U*qXLs2ha?5s}n|W6Ug30(L%g|^wcr+@1+%A>v zclLIVar?0U1XS_DZMR`(vC*$q`7$)Q)Oy$GSH%W6YeE9NmDR=Ic4k@YHK2b0-`8gp zxRe17qXvamRSd230r>%o(0q+IsYj^Z_Sb$kO+OQ_FM&01L=L>=8oGE19<2(CW`$tY z)vb0%t&iy`V8{y069Mk|Rk13Y8(X`ZjosSIegXbTv89R12_J)IgJ9KBzV>8SzwW$T zk0{hcbmZ2m1zNWoi`$*7^~b)}D0jCByN~%K*my`3OQ%S*Z{Z{WGPX=M{k;zm-1vO( zwyRh)0Ov!#)iDR;pli2Nr76<69c$ZPT<@Mo_en+vTZU&~dU_qfmIYHmX1XAy?v3sl z1tdAV-usm8{#)zIYzg?$C1L-Y;>PIUU_Viv_6ASGXHj*9YH4%8 z)1ReEoz`M)f19=&ELGq*qB{rbp;iq(A`LUGi^A=}gXM;d<;HfQA@TNhak4h$RVj0X8|JQaGxmQfi zFWYTQSg?TXo?pimdE@CLuPzQ#yCtB3LcpwmSXpU{b$D?l!~Uzu)Q zt<$gWIfhTI!33Z~k%0c94HE2o&b^4Y@eKH53vtnc*iYIZyWT)}g2m%&yWr~J87jvO z2bN>I_S7gkQ6f^oCsTtxu12_6CwF?bARjE6-+3g6$_u+>i~4?NdO8|Dn<#%8StB?i z7c43b8=Zs1>CDz>D|Nd4HJewLKcOacLRTi+7UE%fyBc>A9Fq&bg%EV!0*A|v)b2v; zbfRlMzBxO!ksp~V#L5SKL|Nf7orS>ThLO=G-%{%JplW^;GF!!!KQJQ5j25(P4Q;cD zsM*c-_%=Jcbdis_Q{ErjB8Y4jKHbQfpTO!UAA&c$?fVa6qtfy8vuHL!CEun)=*lD5 zb_@OqkIc&h0dA`cy?m3!=}fZJ`DOO=MhLwo2#pS*XbE1Y4bO5`HTH%BL$j7a2& z@lZvop!FB%=ybAAV1Gy$6{ssNn)nGlM&(A!QY+s+hfC#B$%WZf%zcZV8bOou3ZE~w z1cO6NNs9CqWu`W7xl$+ZI#hmWWoX)WLZ=(u((93YrYAue&X9sR`HdW^8PPml&VhHN zYhELdC~%E#s_D47ggte@y^moxG?5ns%?${Rt~8_5oV`jNcZ`K5$01j$gBOE@0r z5SMEh)*GTSUVE0ut9tnXmjIACkAlDw6(Nc*qm_((P4haQ9zT68)U`m7qm zR;8WWg_1oZ(A3w`IXRQI4ZiE|--`8A3+~(457uUC?Wq?ontJ*^) zE?R?=L#Km}V6dKK)ScM_cFkPf(CJMGBVJlt751=pt6kF1Vm z?R%7t1L!rUM6Q?u8702pd;H)9QZnoq&DuHQu3jT!5eZwjwnihC;917`H4T+mW02tA4A zbaZ-f=w(=R>ZD#zqHeS55;}F~Sk^86d&SuUYSkC<9WMi1FQGL*7`C6`R7sVXbP7_^ zJ%5=$&wB0GAolNH)3F3)6IY8W2FRy_jkmwqeZmGRAQ=jps2U)c{l?|r-sWPb$zXe-*ImSS|f zX?WbxzYPcthtmgFNUqL;%qaEL>i3r3Hi9c&krSqalTh(+k)Ag>Rx31^u}M)L+H9j@ z@-cfHm^!TnnSV#jDLxgDT8dKtiH5)v^-;&yXeHWrkC*i(&M%2a+amgi6;7#)xa2`u zYo~U&RX^;FA5A-pzu*&nkBtZtjCa;j$@hpH{U{b8Mv4Y}7X^kVTtXkF z-G-OmBJ2#G8-kmN<5V_7}g1!e#7_~|bq@)^-%niw#AvG&Kvs0=L14T5{!vR{)0 z3qM*EOzyUamqVkKBJqJE#DyiIbh_bQJ!}pqy2ibyqlx7EPhB5GTt#00l$YmH2uoI? z4{Ls(eIy&}AH;}f&XA;(OpC_kMA4|DrN3p5mrO;nTp+DA>8%u&h-A3Lc(GC3zs-)W z)5aH;5Q)i(qE$uV@R6>@Z!cvM(YA|<%Em0(lJ-g*VN0&MxlAXBk95Z`uAe6fFn)Ua zi{G8c*TaF&-9p71F3qKiKc&Ruehgv>yDr3x&M(DNuROZl7{nVO6GiidUviMl_S(1ORT(`UZLHs^&}=p7>V=PIgt8wZz}XZ;lUN!)f-*V*Md5*`yj zn}z&cApP`KVs0(60GvuB(<#Ds9dWCkdcD)CQM}3A12;aq&_NRykm9X90u2K5y)NgJMR4hoPZ+wmqE!O3mh|@umrOL(W;@Z4Q6|lck z`HzA^EAvB#`B(-fm&ccOy(&vr^=Ke#E<&`=JbAmVRim}gUD3(!a4@e+o~(5Gb#imaS&4|tU8W|~X7`|Guqdj%I& zu*Qu!E=|XHTmHrmki}Gfp=agq-dCs5z_odCZ?q0PJ9zUJPl@zD!)+jA8 z$CtQf<9Bs${wtQ>?owflH+!1I2`CqvnH~x3PPzP)?GS}f-5%7!TrRP7TD1!U8}dft z@^JdpYCy2ARJ&QUGkUN#ky1YZX z63x0O9lN-XIzLgnlJ0f$$92av+bI+lsMXh~m4~PmRa)*-7FG;dA0?oo?c;kAQZ+ZE zDh^P~ijjTmvACe##Gf_0AeS(T$5ath#cMJg&}x9>fc&*ewWJalw!X`af2RO4tEt)0+kwp=p#(|=%tlU5up*e|H;-WqZl9! z-3Q3-pC5)=QKgojB$rc9R*|94S_B?Z){-t%684f0G@8AgyJ`;d80xk8DJ@QdW@>v| zMQaTYg2c!)0=bjjZWd*kE;*!UQ8fC=j|;?qbE}>?<7nGD8B4}ZDu;&mnd1mJwjHZ_ zXq(G;$h=biiIi&^y3=5=7CC%y(|p@L03zblkNY!9&uxq+hMxw7Lr)wSg<;9ctD2jRlQ` z%dg38Ycw-w@I1_s;f8V7haPMn3 zASxWpX1(NpFT;~Qj>3%=SJ0uV=;wJoX7FC5d_d;2vJW7VSUcbXE!J?PIRclM_~ItV zXl9a7!`sHvZ^#^(erz48;~mXdXLM$%Lq4W9)zxypl`TjCSWK=>u38JX)UKtr21!T@?-SxuPdPH`nG?>t z=n{|lrtV(6Tu+bf3oJ>5PQDSe04YDa6rIfXqHH)7)S=pkZvi3tI+Nm+LphV-Nc(-3qORRZWQVs+(E%5?wOI%oW2=lobK$}^14(yQ z6H-U5!^U`C7uomouNIT~)(zx=DnnZ_<5Lj ztwaYKl;gO$epA%FW2Ws-IF@f5N;MT++xo23u+2ueCk7ha%n`+Id^ zcSXx>G5sxC&3*Tq>WU1P=K#6K%|DC7Gut@#acF{WHuDn|8@z!eLFVEzc(T$z9dSEX zo~hOCJS}9is-eZ*ImKJSzA|c7_`b(*xHTzX%kx{N4tMnh&!sWxct%>~R?9oDU%Hev zlFWAd)-|7@jQl&QY<=geD<7u$_C_>cV(v;O?$KP9pm7$6NwHa%&OeGmA6}(@zOn84 zr4^>_-OyM}eNLRQOW&_}SMoz#x^jRsn=lnV?yc;GL7Xi?fOZ)I@cc6( z)H_!fPPL@*`FBU0fdEMWmrn_lQispq3VpDkTz7;c! zPzs|PHOl1N%3M!I5jWE`4~HJorSRYG7zTE;S~mU2scmHSb|W~arGWbd9+D4lBs(^= z9)IP@Z@X3DaK=|ytOIXe>DPapum;qEx@F;q(5wR0irL0Qc42FkBHONfZb~PfPaEf- z{dslUN$yNso57u9j!o3*ri}7wmFrc(Y)j=VOKMbRnXJ8_*;|)iUfcP|b4DedAHeA) zf-0=*0V<6e8IN1gH@8rBJBZP@$Fwy!ziJ%$41k{si^a=+cVPc1oLG@~k$;U>GPapY zHK00WUHq`DCutqgubCrf`mN_hnt#bRkNw(|dfo_+{r4%P#jbEi0ZRRK&so%_12j{HwW#fuj zkn5M2-HFf5u?>`1PkaH6KLM?J@dBmmjeE(AXQa=qr4NacR&&1Vew6EJtLsV5@9w_~ z8{WMgKfM)mOl%#1esZZE^F3v&Q)r}9=|orvs$?VXMF10OCopt7S4upaPWx_n`Zwn3 zFgo!NhTrN zA&=W(bS5H~a$tbM!-y7BVWgVJ3B6~_jk&Epn%Dxy_fW;YNIJy!6$!HVw<^ zO_%>ttA5?;AsyXq7tlIA+|7Mef2m*+a=S_dyr1zqM^oT&?BR9NW2Utzy9AarU#Hj` z`tEWi*q?W5UNdX^{AJV6v06L~pQ2KI4v;HIb6G_Y5Jyd92DO@#8UDo)s9M{r%;UbF z&3(WF?P22~8AGrA41z$42@4oFEFGfFhfo=w-J<;^VH{7Q(cH6HE4u3iG7huA8MND; z8&vGYwg2ZWum3r*YzaTI+^ekF;i01~fVMYYRIy$Cl_2id?ILsxVR^ItQmvi(z1s~Q zxSjq$1i}1>21ijoEj`ULEuQI=us86Fsf&4aVx<$lD;S$BC*98-WF*)9{!9rD`eJ6# z{<`4Y$m=fow_c}mZBbbv`BMGcdODZ)k#)}!!^zxG2JOD5MN7s&pIBK=h{?!Ysg0+J z93wtEe0~WNV|*AH1OuO&^8FO78L!$gT|Jdh$yD)0vxg^wlv=+1s@vY!AS_L9WCHUD z!veR@K3pz=D8bA}>?l}NPB~1mqcH@bKq+)#P^OCJcsur zcMVxjm{Dldk8^ox7mCLArT{bDxndKD3~NsP=rRF;#NtV;FeITcAuw(cMH7SoJ^b3% z+q1lH=f^V<*7}>4Htf;LiiT^mNk{>N264q(dKScr<^o4&y>n2dP9F^OfCFyoL%2f6C0De%(@H#x>e*m=^vS~*P z+i(>80=($q3@K?wS7@0x(ldB|=X0Uv!02{sQ4`VvPy{Xd>lM~4^gP<@N@asIED~TQ z<%&oNi+mu$v`t^d$mA$!_97sNZ5MO)lFgE?MzvzTm(5EqAdpelkeV$__AQ;Rf*GeF zI-38XP{Fn=KT3g?`*b`YrimWNmu2V-v0DnPgwD&Pib@VHG((Kxp{gh@+x(3odBBG7 z<))=~$I4*#2qWnf{d&cBZeCiFZZX8!#wI2w(U=yVo_tsP8sV?rBEl57Gfo7wQhxzd z#xfobY;uX+BE{rv+1>8Z>8yo!^jTETL<4Uxm_E^WPETqwi)eTGOE9cZ^6UL-k@dZ1 z;SrVe`L%g6?DW?PsF>7i8^x*5{tS0-OL8A{DB{*2&HgD6{PlJbwZm{-GEDaiJPz^^ zzteIwyo@mohEgZDHMs5s!bO+s0vLf?fa4ZhdDL8Qte zfWDF3xBTEn9la@k9qo_8q}7^AZvk1w9}9B`7|hRy2#7#@t!?IjorDKL)GWSPeD;mG%ZXPU8en3R9!bisdzW!c!Tk?tC_Ab!P9Y%#PSE1G zXmRZ45;avq+)6hrPc-OVq}8S0<{!=(QNn@|WZ2{Mi2#4w5q^yZ%lFd^qIm2wCBR*z zqvln4NZs^-e)SsCX#sAAlPoZuN5sU(l}_u4v(?H_5N?tu-kPhc7Uq&z(wYkM{18Q45AN+2N~`>YDfsL$t6TBKENd|os^>>PF&a) z+GpaggU({v_^`WiuVAxS^ra%a8wMe$-W})do5QGTN=REv2eZvFEqZ z&?lVvHF@tWIN$@;Ylq7)j{QfeB_=zC?jXhantaQ^$512if!DmUlc=0lvrL3x0vzdq zv};ngQdB#gro>ZV(VXd?`mPF8 z;B$hLa@z`{7y(8NgHg{v>e|YGqjUW^hUNRUONT1-i~A^z@IW~E2RIKl1?-nhHT}Cq z_9nAn+R-!Lwq#*Xh0R>A6CL)#R#&N694elQ+qK5uAaUQ#+Y4|=MVbY$M;yao47eQ)Igv(Ul-$=Vxi9&PQyTm|+ z=ddL}rc6ZYF6m-S60z@@NO3}(yyVHS`MYaNh@M_m8Y!G=h;5tY#m_=2jzLii_KRm} zQoeU6Uw#VO7C*2eedj7`^rV?`6`_}O3k~`z$o>Pb@+g3ATgM08YT}vN{6z>HxQZ6W z7CCU6}#I6m%C+eFxRKV6bGa7#y2JjpqK;pRstv+k4e>n5cnHMG{ZQD2(>KqFch-{qXo#LE9gIQ; z&1Y#@h3RM4=-5^o8zuV&ccsIUF2aG1e_v8MMd;lxvOQatarCEHg8uto0Up&wWEPEW{~rYY1j)#G2z*t(D7y$QFfi zkI$e&IoHiB8dr@$ZdNWfttG?6@)nIVp#}9w6$4aI=*fS{Qa++L)T|CQ!~kTwzw%s3 zc#*irSLCw4A-LngwhlY6%F89zAeRq!t}(^lNfnMjJFsOv?t>nFh`HE~z4J_AQJs%( zU@s@xq4Cv%F+H8yIGAEoOWv6HYE1<1B8A@l*xsE}k={#B%o-mu=;NsQJRr*}*03d+ zx2Z4fY~&l_6%e-(2oYca7$wm_bbR&7ZQDTb!+qC1Z8?hdp>0cYV?RR6A zQlIX}WnR9=wpUEx=y1$%9Ea|B(U-6#d${2;i-5E=U7ShBb9>4Re(q|1o@0Gq5Plx;zbE*FOMDD8Z+dzgGXQ|Nq0B z|L~;7oTf`p0fFFA0&h}QN z0p2mq%iC=_&Hunm;*Hi3_gD3;guz`kN5Y)cC|ui3_b9g`Iox}>GGEMUh7i+^iZzk2 zUTnSr(Vj0$hcvjMK_@ij%iiT}YnXH6T9?9+ovTGEZ&WU{;o$}KO$*L2GY;t)yQs~L zsF|E>Dwu%slWFgAAKU!XMe?N9-lbWk*W#QzWET z!&jzw@b|^44h&~Y$tpVN#_`#Ta&J5I3>!>IM|3Forn}9CUZuVJUDx&5wRF&)pYeQH zS@>8(lYB3DB{IH_Oh@K*jKhKg-pkJJI^_9x+*-yscVkOhbYM#KF@~yb=i9#TS(Z8< zC|R=v$CS-taxeL?eq+mmZAW*la|f@CoYX6%kTrRIB)CZjuT4W6&&T9%4n!H}x*GsJ zV1g;RFR+i*S~1h&DbnjT+vLRrH+YiAs@2#yeZNF#7;2>kNx@}br8lT&exJ}T<;))I zIOAQ=lR77?M48&YtZW<(<2rBmexq-HBXWggY!KOEH#~IMyO52ONxLIIQ^}>3iEhgv zg8}9(n0QW0n$*|A4SpMYumQ9k7NLBzhky4j@7u(+A$If@oM{~1TXcgFhC-wZy&XBG zG>+n?NHumWOs|8oJNe9u$q&TK>YaY#=!r?Ypl}*J3Sh#Sy?c!XHZPcg z8elSM(<$kRQ3=%BVkb*ymsl-!AB(kP@F}5UxyTbBz$_P)Z1OcLA@}uO6E7*9T%^gb zL0HNcsAyy+xd$bT%Q%Gvk1u6d{cD^Q=XzEllrHEWV>%8Kge4HRl*o;uQ09}3 zP=lT8-`@-)@2lm0B!LcjbYWvxVRtfq#F;dOhP+3{F$S$|qyWk%_#AL_daTgC%rIB;>C@}b-;Xyy+FLBtC+%MaJo18L=_xpEc zGDwxHd<)$yXP=hKU{PThK-V=NPsq>P{p)8X?1Qb;Fsm^n&b9`}^21|O7%kRh@3`R1 z3{EMSth0A1a&mxAE?raH^5&F>D3WYYAM{7y8qHX+{!xf<_jeBUj0ffleQATa45)m;jITSQ znJL=z$0s@bG#P4UcM$y2ZL6MS2@C+9OSY;j{k8Ez1^@frB8RnHw#kZ5(lfPk-v3d{ zl_Z67dck^0$CU?tdV2aJm$$?ySY-2WMz@|sflnuCMaxfEjLwcPfzVo0PvwB#0!wh5 z2Yh^3LiG=Y`!$=q*+8a?BGf8Tqf3PEiH}U8odP>@!%bN}JF=NXj|T$s0_J6OCX>B< zhf!{TIuqQdlux$H6_?=NWg0>buZlQ2d;e)nZiIm#F^N-L`oXgfy3lU3DUCJe10<<9 zV!d)tHc@yS=Zhnr`jL8A<;059WrELKMx+`FP*ex_!QN%@q!I(%V`(H8rSEIdsy|P# zCX!8oh)$Ll!@LN!$$Q(xNn2z9{Mq1zK)>Jn>)9(uwKPw+ zY_of{B{R5M-kdp2)>cm7Uz1XtOvDDt zRHu=;zhA%q=|CEjDp;QitVwndClf@W4{RcI{vIQVcDh6D8y+fVLQnJYGhyq`r#qC5 z)Q2n^Yv`Re9-a>+EOh3EVN%xWR&_zfA0hJZPl9SNAu~rN|K+pgM3|l79RGO#^u>ha zhGJG583645B^FUTt5gOdN~IMD(dqU4e*h3c@4gKv>H{*^JLZpFE+z)E3lkL?d&hXO zR`ZvM*Z3~@r;6mVTrz;61m~76WE}d)WKTPYF?J0FZ_rNm;j_W=ZE>Cu7#^oDRu5yQ zOLLJKTeiYVd<9e+BY^DTf1vEk*1F%gstR-LHIp~0%}j}9ymwzRiQ^Cc(1V%ASTTV? zCkC{jJMe8GM*)B3#@J62nGtyH>~_j-0v1$04Xgf^-3r`*p8MhKs6)>qRk>E{E3ulK}XL4eFhj6s- z9s9wkqzh+v^pxgRCRk((DZ$-C330tybyCQ>5)+Kal;4H&#%XHig4<{LxL`Mi1IHgh zWEq>gj0BDa5qM%~5DD0%aCY-!VK~0~LC)HpcsM%@?u9oJ&Mw`}Oh^Sx$ME4KLLrkh z)(t5_b)gfo(Q0O+#Vb|Fgi2)#XE(-$vx9!j97f;%Z2>W6dd3e`IJ=KDZEV}4YDHXh z1(rDPq^b)BSgEnv!FKF((cb=}m@2R)V-{paXZ=J87$VpuRBbL6xIvP#EJO9;^{kO33?BshNRtQLHKE-CS5sz3~|stj$z zc7E7ggd(cR&1wfji5VF*M*PAAO`RvUVuJW&on%o*@j(AjSTRuO9po`SP(@3fRLFO!xSmSmv6KvQfy+Yz~QEPk@i!q#%&Ef1&j6q|?U-S)?z$e05;i>?R zh4)7c(9%Qh*Aiq8xL7K6>?3axZKtNi24;F@MTN_QY~vO%-TL9|&{fYZ15rG`)2Z_{ zK#c5(vvLJc*Y00xUSSP^WSYqBKP-XAh;WzbbI5pk3{Xpbs72I~RjiD9-zCg*f(Pp7 z&xeV9=v`O$t3CY1m|~%jgmqh780l%=e}7ME`^88X&aR5;qx*0iwZ%h1%|Q$ohw-x3 z1WANn%l|w2DFgZG&|9_-k;XWn0%Xrc4Mrna=#WuxMR8ppV*$nlrvVNEHO896;ut>C z5sbTWOEH|#eJH{0C1FO9SQxZwlN^G%OBMSOuECv0ZpAFjvtBq|IJ>`mz#yYY6@EK2 zL%Mr`$n1)xGk-hPg|mYo=2BE^;R=l(PjLGli3M}@s41F(sR`(qOQv*tUsSP?rd-^6 zkV3q;1!EWqH9?96BP-lu?)|?0Yhjg^X3W?aad?UOqa(bGj(uefftANmZGrXiqP25j5jrAiMUr(22B1j-_y1+6YuXE)GxW=r5SwSP<8k)?s#3QITlRD(B-K>jZIV>nd!Gv&j zK(TzS@WBXT`!EZ$7RjT6U>J@1+xr;|A0x%tGE6`t-FaQiuS_0HA(+}NyJQ4W%oQ8- z_5!6w#+Y?@3WpS93gfU9%zyaoC_DIISa8l@B`m;vTZAXf1@@HbhYAQ`Y8^d-Ms(>f zg6p+aOhtO3GG-k+&Jb{?@Ip+9aJl@~+F6|~pt1{RSHOj{LqnLT4;|BtjZ*#Ph2iYV z$vhQwn-cQ5Ee^&2ZD?>&#r(YsdNJq1N#!o9Y5d6(!D>J8+FN*k-%LLD-*72zdrD$B zySy%bd#Za;nAdFqDQe;D++GI@S7q%Kk8cx6iT_34+s$b%oLx%7_M;T{r-RUprrB#v z#rtv-V?np!ses$qp}VzI?!!yDZF0)oOIGE4@i>GT!`Zoiiz}QE&JGE_bVZ8^{0rOk zlj^wRvoiZ~n%f*>k26<| zpvX)?7S5pY3Z*v<4b!{K7)Unaq=IWn;o06KNNB&Qw@{yFiGjgE2HUE`i0} z_6B1?UWa5U=gb*HEu5V!LtI?V)ywNRn;wr3X+2uw;#b1%%&g9_jr7stHKL{KMbqj; zt2B+)ZyT-GMxWJMMAPf4FtxTa7kuTS6g6u{9o*4UuEegX;MfqWrblY4g4LR;iF-M36nU5HmKBE&(*ZM z>25eylA)dK$gwUA#yENYb-Lq-eJxf!TBBvOVSAO7s41~Ybp!EPnXOr{)N?r|Z?TJX z$9J+W;@3V&&uYf6Z8(W7$3~jaj(^L?!8&@zlseIp@n^YJvR16|l5vLWRwns;GeEs^ zcB<|0(Re+h`32S7aO}b#Y-;>j{~`uL9NWa20xhAP^cS)6SzpHVc%gC7u6>1i4)z!I zmXVYSLM3X3_)M+!?30qL%CR;xl_&FWE0;{NGMSS(mUAt1;q3m~ z-~Ijn`1}9z-~R3&k~x`^Ihm9BC3CK^^Jdq7KjmCXnX`o|o-0@(nUgu0lR24RGAo>2 zi#!Fr;mvT<*XXpdTS= zGu+jC-h`UjHKI)9r5bnQXxoK-`j1%6*Z?!PnN2x?RR3BWPrOciFB}()7uNLgj14U= zFG3>`E4BQ*Iy^(;g$?Ee z75;_n|E+Nag|o}N)387#x0lLAjww*5--i|W%IAORjhh!+nqfdtLcJz6?8Ga zEILkN3x(rPm3lr79v7wSKYP&Xr@QTAI!Ej_toilrI^A_t$i-XZsS>qf|K4Zx*oLyi zF0wmYM^Iu1*i+oTSM6MLv5pKe?PYTV)NWZ9gh}AIyS9h4fcpnszh*WOZyW0%ph&_w z(X@nccEwycyJGIY!nn3L^vPWAVF z#{=aVw$`BS>$J_MnMuuIIoGK9bDI4%uh*h$bly_M@9^)Xxfm0l57PmFML&2oTgBqY z6{xJ?**0dXnbe}&lVBgpoDT` zZGIO_P@(qT$PrINj|~0odrRO(P1Vth);(f}4nV0xADyr0HbA2oIYp;0Af9o_khxHJ zi&yI00W~}JRn4ybW3lEkclSCOsL`LVr|BpNEcV0ML1*WF3N-|Dbp7>oMcx`cEw&Mz z{6T3Qg`B-eHEl0+w&paq-Mw5xNgA@+u)RuP^t|uI_d2b0265VaRcO*lP%Bth13g%> zwhF0<5F#73TkCqN8FV+R~Cg}sJK{(BA6R_JFqnCI~|dVZ5^+m)2?7k7sxr)dJlJJ_Q?yA8ajBsz@c5XVeGu(s41}{Ti-Y|>b2F0wI!>BiO#3hmEO?; zw_1Lx7QUJ+$r(E%7Iu=UXu_=65$9^nb&zcG+?Y$0ncAF`V}FCBPEP*%rt#PRxV%FQLVlsbW%mG>1>r89`(n=)n#O4jvWs=qI8{JJnjaDX69{Mo#wDZHvXK7&1;lH_#KT`JH=$ zxJ!REf&wF&Sb5l1w~bWjUO;EXE??7O{MxNV0AI06d=4Hfu0WOTZ_R{7mSw4WO^L#e zy#lcRXdQFBa@||MU7;&lbQKPW-H*2v`{2ec1zy>@TLCOCUDb&<6qtEp-4+!p)J-?V zs@Snl1F!0WRAwRZY4LD&yAF8A&nTFHiR`m*c8|RGOX)!8`O7joRKvm|{bObbQVVB? z)xb<-AyqHTcHn2E3mt+$9zQMeE?(8)V3Zu)gEjzMxLgPRHtx_l=t*;8E-Ds*YL~7_ zioRc?@E^DC$S&k{ORJARQ@{}tlkU7Fy1@RL2UPoGF^-um_*i4yyh{;qXbOvrv{PaG zUh#DCDxDBLg z^|c!c-Z5pa_rrQc4*@F%`@i!^g{km|!rsR1g5v58p}lpFB3FR+$328R3X45uwg8H~ zhxBZ%RG=Pg?oz5hV6qByeE-D0_xrWccs14q2Z9iw1}1fVmg&g)1&L!IlQ((x3AY0GX& zHebz)Vc3Z2vD4zj&d=+Tp6 zB*KT(uHEX8{ZWlT?V0lmWYE(E**kGY5nR?g{^5GiUB@r<2u1-L)PJPYpDT*%v066EaCRdm32^vAvT%0W z-8|8Cz?%qXhbx3>Lkzab0Mxu0v8jUW;`3xH3bDhLIxBBMKaOu=WFsui$t zqVObJfNGj;+f!>V#JF)suTx)5(pb#A?wn%zhMIkmv1n8t0|eX;$gJSKBC$AP$Q8Ju z7pyJNl$&>?|8+i=K+---3cl{#FGB#efrmOLjq%lrIMe9feD-O;t!4-)BkuFA{R+i| zHv@|?tPdW^Dfw)OtS5X2VP**Zd{IvVIe(et7MFa@7CEix_}zQbL>wtBpu*WbR5&~1 z2p$+9^A()&sIFX7Q>kt_kE^kKovbtV8cM();|s$2fhbF*J*#uBQPZb2E18b#5yh!Q zy+0o+qLD>R08_`1@lp)LZr@=UP%iMv(IP~4)h3M)al}=@VMN<+u|7PqWtaEwMWtGU#z0#XS4H#ZJgE?BfK`Q~s1VwY^3x*}W~%{Bb)u;Qyk$i{ zv+JKqXd1BD7|ZxhnoJ>14LXS!0V(1*XsqT5kbJL{%t3|5(n(zYC98!M?hFzMAoeS2 z<{n=;V-#2xRB9r>nCS=g{vaWo9Wy2CS(G0Pr~2XSR%k73;p`X`fJ5h-31>$aXfi7d zaPY&~;T2-$P|xu2ML>#od4la5*jkyz{edl515k0pc^ z`hqXQQxj)<*KWq*k!R~n^J_B`CxQxS7Vt~~;pYfXybZ*Uk`)`YMugWm{)~<_;>j}# z*ull4N17+7$wCC@sd`JXgBcEEVgbp3?k}nCS7sM}jD?GZDM6S?7}kF)C&T%U?-@Bq3+m&Ao@COh=%G3gMia zN4a*3+(0HSoNcCD94Pc{sEfsd$Ap66(j&plW>3Rfy5cY*{W!2kPHHw=x=MF(8E6e- z0YC8S_1kDw8BM%Yte$!D%z+qaWR%KS6I7kYVbX>j(jPiqy;&9TJz*HCg4c;|GaLj0 zUljsq=gToN0Tx3ryA5cnv!OT|s4iC9LK8ClkuI7M^LD*98VIXS)VtRZ$?nRHu?73w zrP4$EQ2c@?Ph@|&OHGDj|1*(=t3M0+fEBoYQ(7cnW3Uz$&%)U~^8Qdrv5qX99ZChf z@C!4P7|!nD8wh7tPu3IZB7p`z4s>315oTG!V+u(i#(a;JBvIJDx11vs6{)-A7W;@0 z;)=Q=2FOO8*7}JPYsmZ*iO8dTCsi{9a+}Bfbx#c!=I-_#{RB+c_*^ulWq8NfQk~T+ zi~~2^+e61RyPIzd6A}1#)6^7oFd6nM7M?7WHkWR>XE)(reEs86K%C{b{L0M8)f?t23VtTz_-K#{2qKMNFLKW&MD%>ynz6*Tm>>F9K2NO6se{RGmsu;GyPx9 zx3NE~VESc70w!8OlBnFVuMosFW5G+CxS!aFMxUrz7>30`zEKruXxd4Of|VQOzKxiu zi$3lr`Kj|{ySw&RM=RD#4siE)3g3Zp#U-ny$-j9Q_pd$^V=s;~VUhJ20}3S|hS6jQ zi&yFAA+8s#ly`&ht=l4mnPyQx=5WBN*hp%|^waqZ{nCVcUa*pk8grHY3L<-cJHt}o zoq<&cXK@xTmjK`;;Tl6f9I+p%`NVnxKI<%-EV-UK*DK#h4hwcluM4t)Jj?c83y44x zbBX*^X(l|8MlATmSur7jPDBpthWzw!vCtVv1&1n9has!qR#OGn%tp4!1X%@e)U|RG z*=RVT-_2dH`et3!5rA0eMb=v^@L?SI&>+(cm;eO=%&Lp&glkL;wjK(bcGfE?TlYYD z&mnpihUUN*Banxw%J2TW5UfBId>CE5wi@`dHCh;zbZ_u54p;`XNoYHt5tRf_$%%XO z2?CScUzRamgck3f*>LdX)1w?fxl}Zp9^PK z!2Nk%ntKah*afOeaUrT~e~AT~(tZy2&fVBn*v0NH?)H)7ce{4*-Sn!roTNXWi(IEy z0p--SbyV0zS4)X+3NdP7Oh9B;PI0d(inzbP!}BFW z1D_?`jw@g(==KTuk-kd!;p`mo`5d(c-OdNAnYoKB$@yHgKxhNx+>SikqmvR3XP3{y z*`+JS;)P3Ed2HDg6M&L#m~Y_42<;bgZ~X0*adG$ec6ptEnGD!=j=Vn+&d!9eXney{ zaSLbXWEH^eu9<0rI?eq$oX5SJrZtPQXp#m#F(x{C^11zgNU!vwa_p|X2{0i~bNkZr zW^+u!SI)vAF`Qk(mM>q04JEVwDRG4JJE_R)b{&a3CbaPomnm)=Q%t1Y+jgmg``y`E zKxWKJsKhbOLJsA1YMTRRnoQXbXIC>)x}LVVR%{%t)hb%Er9LY+iS35<<8j%}Se3Y4 z_i4|^6HDAiYnx_ccN3#a)rsv)wif(G5_i(tE?hlpQOll>36|KA)sMxta{HgHFxFk1 z0ITCa?r#Zx1KID_kH=-#sg68<2+s}YXYXcHj&+d`&d&CJmvV6VuydRLNX`w?e(KPXf=P@=|z;?eERTJwWhy*R&2ou8?kxg;US zhW0b>-~E_o7N{yAzL}phm;8LTH|hRsN4tKu2Ou8n%)cw*6DYKO1^%1d=eU#AIWu_{ zwafsqi^Q03%0GcpHfCdSoK*ihH6A?8e|P*GTnSHQyc-{^KQwCxXoS;XEk>xVb{K8Q`yG{%P7=JJZMLa-a2339TZYG0cC00R=`#ehI zYWFG)+-GicGYtd4)y+ZwmKY4NB02Q4yQLAU45r^hx|+T>up$HwBeQrg}| zpJ26|&|sPiA62xPwhEVWVR#C=?S6iwuQa#KjZf?P7qfM0yH-oOZH6FR#BDXVaizOJ z9)(?iIBjdK5Ziue<4tv=E9zoL+0Itm^qL*Hq>Bre&+Wd@w(~Ks+pd`A z-n15TyG?Cxqc+C6h;}9zRso*IP>R=-q`B~kwx!XwIg9d4q2Y2!_Jv%7a`I5nZArGB zwl<Br@5`cCM_o9w!hWzDPS=e<59=_!AgvsI;6XhPS%CpDj5%FXWM~%y|7%u z?dgtblWWknffsZU2=!nEDXh;sMO=#$8QaI2UH^0LP9nXN+iTJ(`ojhtRzK!y%{ts>$Es|*vVCH08SMw|pSaVUlIL;z-qT$yA_{Z6KXKMYS?w;y?sVxN1H!f$ z8?vSbc4DMVebq6YG;tKNZnLiKL$>YHJos*!jy8SwgAPv6Q6Ber*#g(zAZ^xV`!%Tud`M?LNpGJ;nQDF;!^XQD@p{+-Nh+T(C^1Zr)9QCP_b) zrB~H-)ar-zUi)6!YChvzola@dO&#TRyVD`KYkwWUpye;W)}d*|{&Gmv!A}S3I4smcl5LzOzhByG*g>cC z3c9d?nOn}Tj(oFF!6sl33jgggU6*aB^F>Qmd9xR*f*qEF;BpN$I>4{+q3B%n zgJhsy8}V_6axRRXZ&q?bPI2MvK5&1rAtqL~o^xCQ4mr=*k%i-khX|6Z)`*hhyl$4nO*JhEcF4$GsnXcNMZt7q!UjKo1n+3gWNv~>Z};O&;?^L*U1i0^I6$NCZ)TQHPtWX03xfnLuSa(lzBQb z&j34qp#zs(qj(rEj0ieIv$yX`e-_b; z!#Y6-P)H0+h5qxGbO;i%_aD*u-`cH36}K=ABt)}>J5ax6mkwFiY!&m2GI#oF*$h2q zecK)#)jxkZHa8@Ovtx1sOh23*ka98E@w&GQXNRoA?sQvxWF2i8vgz%}DLRk8bH5^1 z%=}LA_s(9_!A)oYBA{NhQd9owO^OmSb#5%eF&v~OLzuBZ2NO@9S0Dl`Y#w*`3SQs1 zrGa2x5u_da)Wz4L&J?RV97^5a=&D9%X)17+?(ZV#-yo-W4046-D`>{Sra(A3Z zg+$%DBfhNOEc+0Atgp7Fgy}d{q_H!^bnu5?k00yMJw{;648e;GU?>p-#2AIzv0rWC z3h)(!{^KndS*AjEV4iE#qzTO`Rq=vPqKuQlqY3ncg<@csjHh7@72$(=tiGxAox74D z%nh_2IjQTfCJAWF!DtszqG>19JbOV0Eu~TfC{LqZ_wN$`xeqsCVnO$W~G;7n?2ts z+l7HR9nxEQqGkHMxLDvOxPvj%gkd^ymX70O8`tHk+%u;r1E9^DKTK}kBA8^{6SlKw zUvk*pTGEYJ$vL*|kl`OaDsJ$XkqTh|w?$fqequ@(4tWo;g!CU{$DLuYZO^zGm&8`z%k_NLD%&)knB~GCdQ{VcDrQa>2 zi?jw_9Q#e3A(mp;gdM!k|IL%XBk6-XY^VY;A4ZdEkvd&jE>-3fY{CnWqS8Z*4Z_o* z@g(Q?S;xD@L8GJOxx^(L6RreeX6JgA^TH?$>JT;Z$i;*|Jtj}m2CxauL;&Wm2$jKV|u`#T>qD+=RzR>0t zIacc5ZaEHuxh$byWPr?W>LU=7^=~LppU#1{5bhcEkldkLa1wDkYAo61e>9c?vC-M@ z4k)ysH+XrfK1s{r9BGyk0;siOi?IF-uWQP=p;@|&J z4bF}jfGgbij?4`9a*BXmWN>yJdP<+sRnkxF%^wzhzhBrQ6c$?8c2&FcbNONtF_iP_ zX7U1P7Ysps@CxQo?Zri^s#SN5#-4sjsVlN(3=0oG_*hT0YFCKoNb6shhC^7ZkaPD+ z*%)pU;IS_Tc6fiRj}Fp{$#Z0(^yRC)dT;@^Z|E%%;0I7|`QOi!36Wh@43SGEg#25M zV8ux=ue(jIkg+xjh6jLksM#eY(kpJqEl867T&PDSr2NEkte9d9AZQO_Vic<^^|b(Q zmD}-`d&%MMk;u3;T9IYXVfovls~WlH8DS6B4Z{tQ{;DjTMdg-{6jAX9LJE;@^U zr-fJ`Hr8c8a`Ojjzk8V!hKdsQ(U`6SY6N*S@3vvVC!tbrdUh1R*-eli#4{qw(NpCDns-rV5y08y z>G@OuXSYL^BP{**tHas-az5bfaEOSQ4Q(O8$DA-T%%0Tv*_U*jWW)!OY-Cl$;O>K^ z(l8tgq$E8e5=j;-w;~$i4MyE- zq@G8i_LRr!@y=L>1E=BykrCPjw>irxxJ?p9doW}|J1&^)$Fq$E%XOolOzSXktP*Z> zki;KvfS1QcBs&9X!`P9++Xhm+=2Q>Ps6%wPAXFf^cqy#b^c10RxZ(nbm%hoTc6Nb3FLLU;=QQc#`3*}-$t8FUhBArtg(ZLv=hG<%_rqb>f)1Ak>Vbdur_ z9bqIWR61ij1DB`PYoGYt*xolHeH5O7A$oO>ecS>?oxNBF48ze+A{-SmTxD>BnNWcC zPykKKXs&bt>nJh+a&F35+DS5no}dQ!O|<>`UTOnMyYh+PTTFFe%x6zD7$t-n+q?TgRN`qK@$duJ|yfrkN$WEl_0x9=rFM79kMB$0Bq!-KPUAUkGNoT1}8vRA|zv6 z9KmTcHfU-tA#P!GI6=6#(8Sl?1_8KNDi8kT9_Ukfg85nS$%r74gdLWlVz2@X=Yk-bvq2yJU*SbWih6@MI~%B>~z`nq09 z9|)>sUP#Ds-YAn}6E#w}S&b4Q44qE~$c!QKUEM_W5TdY8f3{r%&JJ5Gv)A-F23?+G zIB8LL>VmRtW<}nq;q0<)E(8N)#s_5XpM9Z(tI($DoL4wILqBskJC{_(>EY~bPFqm2 zc`%JhN_8?gJ9_OZCxthycKwtF+TT2%7Gu+TGHe=6na@=+E=461Hh{~q4|%!*7g}QB zXBE^_x^`hnddNxi(rExantOOGLC#lg@@W8e7p%Grk@h3)j) zu7{2nwGR=@tmdlu@TVp(>Gj9=Bjhx1Pjoi8dv#p3^E{D0YEsm^h%@?oQ)NM0DMs5K z!m^Vx#Nh1CgeT`hL6br_yV6L4t|}*kvx}NkCHDxTt$O8=AfkHwxR>|8@qK4VT!=N! z21sr(9gEJ^fBFk;uC5z#{hvW~fA)M5Jdu*vT=DwTsx;LTimODbdZZpXYpTVn&Vd@-zj9fZtF!j! zT>E`toBai?_ZPIOPOa+=U8wf7*)PsqkXzSVO7kR5X%bbz+5OKnoL!pIl%_QO9#RI{ z_3Eqxjj!Eb*!Dm{n>3{rt?RCQR08Gz+Vg1R!3^9 zp88K`(bLmEA^j_)>TluWZ@xtS`qgmEqPJ`*@1g8?Sl~=4LaaLNtFfTWsqb6QDR>na zdv6$r@QPj(`in@XYL`cFc5zg$x}m5g@q>ww^S%@PtyU)GNL`b^^NrrXMw(d`zK!+$ zIJ;aw<0We_vr5wV$4#WUncP3Clc_6P#MMkgnM)Y3Su_t6cKOU-pZiHM?-v~KoyLYf=X1LK z64#buW2_iuy5y(W_nDi1#5F&)o%N3z%v!a);_^nx0plyzKBrX#0+=$JDKq8hK1fTZ z-rK6F{EltarXqP+sV>&cYIAT6n`(W|ut`!ZdVY1&fV0v|V=e`<4d#x&oXxiR;kOLY zx`mt&xvrsoeH)!dLhemqC#S#VRkpuH_kY@cCD@Eb6i6v~1(5CYmHfF?v1gVf`IAPS?&`CjGAU zE|=Jpel_n^Ej@DCmD%k55tFrsgw~FntVP_2c>eNazD=Hot}K_fJn@3yyUrV&UCWz= z2>0wuTGQ3EqgJOp`?55%OMkIw^)o7P`$#R9Ubspti`?d0c2mh`UQ$UkiZ(BKOe-Ub zLnK2w^4u#b4`BsQu2Vh528nikFD-gm`K0PWl&@^kG8hEv^R#assI$nfeNXY^u32hB zsZAQk2i@3PH>E<(-gvuivG#c_MT@5?^?@=C&JH17-Ao+t#fR_;w!l?%fcDd7^h662 zZcxX^-K)M}zrHm2ne|d*DtTyylolf$J59H_)GoRYp`a}(8tyxv^r^}L?-mCoaXZgqLZVR#=oK))y!5U##%b(Cv z;(lYa%P=I+#2CI?@74i!_V2QT^HQmwa}GDj)}n{d<9 z9@J9BpATvgI%M#)VrbpcdYC+`k$HlkFbF_^0^REOS)&5rbGT5@# z7WO{#ve-yHFK?1gw=%0vz2jMvJ9^~!>YHlem(}6y78;ygb_i_MS z^cQ`jAJjL(vPf>^ZjI}FdTddQ)(a2GevNA za~5lDD_y>Ko;XQ2zxrA`xJaD-m%Eee-bns2SNmA~p98Q>7ox9w2nXeUnm zo9~2#^wfGGFTDAl%mDKyr=Xsh3j}BabNBxs!gMjJ^EQ4wLyE)Mkr~l1oarSc(!cGW zDY|^HO`!toC9gkGnY{L9Wz+O)z&M43t=qK>8RNuFtbIYisc;Vie(M9Rr>YoR{K*Qke zdmkyHL~wRr@0BSEQ0`~NSFD=U>G%mD3D6!ARalDUQ~1M=4bS7 zQ8xAw4Qh;oz=t|3+^X@O8{d%>@WqatvhoT2{vlTlz)VQ2I`)wd!u2#X1XYrNKNrf4 zay$I2k54fH$EdDrM*S|LQ*XVm=twu;eqTJqrJ|4sv{`2v8VNfFc=R^`sbIW4hN^d8 z?vdUyLOt-KyaDclgbBrX;zg-F2T@~GW#kkY>GijXjYtZiFbIGNJHM2xVX%c`AtrSj zq{YFc6kYlW{E1vu!`Ax5rIS&ES<9AGWabitEBQ|_$AuwXa`nb7WzTGMkIaH_&48M; z@rGW>mp3Tp;|eFtkUA1NNI>X31&$pz9JzynmOzhDSs02__;$afa^kq63IXb!Ey<1V z3M+(RARd7f4Ee!a95HDrZUvWpZC80%*v(jgv!u7U_#b{!;g7Z}t>Y}-T)J2f9cTz= zhr7hZkZ~_sB@=CFzS19e5{iHMRj^E$8AiKzpK<~6&8uxG`sHOB)S!zF8;D2v{s$GS zb*(~!uk9u&!*+bV5dICRuaUvoVKBG=WLgc*?zw7kb~O8o^8#n5XJ@U%7Q7qbnSeTX ziNLqe1bVUSOO2*4OK5;X=z7>dkH|?67^qP@ld?MF;WzWt#b=z~iHQkB<6P$S3`{-C1&nJ10-d^IWo$mwXlV3l$-`uFyQ$1d$anP zVloN%Zi`!kC#Ww3GdS?inSvanJW2~cyAKktC_wo_dyKy48x1A@Jx91a=uEyXsK2JG z;u&LED#6eEpA7BL5=Y)hZEby`5Rv|ak1H98IQV0Rp(+&EK>n*e8rcyL@Qi&8PZKY> zg%q-h5YFcIXY*L2};C0NJP+0l;6Z^noQBn+sF9yKcvD zY|lPDE?I%{Vk&H9yAq~eqiT{_C%J^{**WD`r#SwuUUaQ0k&xI}`g7|x$ zb0>$h8#G>d76QfNkC`U75{I+<&k)Xzu@!CwKTEN9x9EWb#=ubS{K45>qmax-o;YK^ znui(?mS`TXlkK^e6>;G+8*b~4y97>1>>g-BR>kJQKjZ&g?~aCRg|ci%73 zAg_wS@-hx*hi2ojkYm3wx_iH|lJCIr@(7p~_JhP{E|9k+g7&Zn-*qR8#El9bgdcnp z13*|uvWypFu#9oyPdSd}Or9-EhQsJBTAE>iKxiP$XLyKVqjIPy``6yAQ+WnwcTE>v z)x5JxqFN9~N({0KL!c@ug!yp5AsLa>eGkj|GFC$mAyNSjierXPi1!>bRW-oO)z2oc zzg-XhXyMAIl*-l3_j%5q;6skR+J)#58VCnk-K?}7ErqM7M@fi&;Ij*Q+##WJA)Wyx z$1{}MbP=+3l$NMZ;t8+N9O@wl@-I-qobH2l7LzC6LdS?Ps9Xp86cwD|E@ZVtLB{)a zs!p{;)u%D}pqtd%;q2gJmVtv2DCkwm^}#%w9DCcYH|+K*oWGhTVlzu}46!OFgsSsd zP$dTH#f3t?G7P#>Lk7$6kMNnV@tF`_mEN#7lal%I97Dh>v$v(5)fX9V7-i&8>MM&A z4rgZ&cKJ3Pgp|CYed>;u>(>zZu4*DCG`6pws%srorZ@&?r@1l)`4#_WYOPbYL4oBv zoL#fvb&$`|@f}UNFgQD07$Xm|JkknBax1Y9*PI7+Pn-(Q&gL^UIyIbKiJ{MB*tCs8 zQ!u~EvFs8yLB~7dxON#K=v>04aQVb3{<C0}YY}!#^Wi7hsw`nI$77b>}+N{?Ic*>#S z%IuU+fA!h6RkLSf-_(vSj8B)1PDRC{s-h|7L3#U)=95QgSHaxfdOIgMY_QK64)D0b zY4iT;2TOg1b_DYkvc-87@yD4{N96SfO^wN={A6%;C`rq1!ul(@&~SDUTckgyg|mxF zdZz+r`q>!U<0S(fKH0=_2{&dGu8MJvxj_A_myEZtJ}YhMNx52GxHWVm;%8iGBjqoR zcpF2)bcT5OM7UI^S|xR_PPIW=%Gsk~W5rK0b4PD0vG1Bf>^sI?n$i@J<~*2^NH@~z zk*5FF)L{0?Wu30d+LP7%>-<)G@>-@TO=(I~n$D0yIJ^JxxBrxevrAK&(v+s(Lk;d* zv9#OO*@tsm9V%{rxTsy4(v+q&rRfYwFOdw+&OWf^ZzR){rZlA~O=m#iTlk_5C#qge z#z-&7VsF#@Hf0f5{kcTX5E2@1``{FZ4_NJ+HsP zOub93P`s%T)xaN%eyf#9Ia1dYz1J>{xEj76cNSIchnM(~nk8d(`c=LYuRrx{jsBL! z%6qjn#1y}z#RG>?*I63sKn=@E zZLK$;MjL9C0tcFG*sQW~D^0(Orh1hc%2{5UU=E z9ZbX~aQVXOgngdWlic8Mc-)H>wAHPf*ypDOn`RR{<7K?&GW$fWgShzX;CPuPwx*M& z#(Qz0C}Gpt9FU^aCR##{o=|RlfZ;w{P+jgI9v0jDYVS_2eMFivf7mzC5Ke1N*!0hc51RYwV!APy z!klUIMv+t_yD-zBwjA;?VPELgwT61-ZBFgi1t&MIK&JL>=Pdg?xSN|BRKn1(v=dIq zjbQ7X+r@@Zk$@uGDwSDE$=9ADX~Z?GT1*?Co&24`1fy6y_3Im|v2-e%XUs)5Wu*e?c>Yx_PnLPqfv-73O4tPB zsdJOBznvU$w_5w~O2PKrK2n{^G@Qh-)3pB2*H$&}ti``W?o_W`cLz@pn8>sTh0E~L z1}!3dYMqvU)cSmNc*xzCKcTzO0Iwfi%x(ic6r)<$j^dRYstz)Gdc9ogHC=Re&;$TfL94zo z$1M{UaSFQoe%->s>k!jr3EelhjRCc7P-w?qRy?7qe4cq~2QMIHhH!RJ(~e>t+~_w} zO@&J^7V}5S*L1ZM$FhOD?o&_U13Ck@(VymB)Vo*T6vhyRC(P8E&haw>FDXv8&>HT= zt96UD&uPhWuaUvLdfI>oM8gM;*HWnUuL~cqrHPN@h>WT>ZdR)hE(O*+qx}KnbnV*b zwSU9yx>1WRLh876n7l2X8cER}x`V2e)XC~ETMM6=n_TsDC0t-b_Ot_eH*PH*Wt%=< zjo9^7a@t(2Z(aVl)?=Y_bQR;7JVy(+j~*3H4;`DmSXhl-NvSFQg5_Ex*rq~D<+y|$ zI7n}otdToz(arR%wU9*K+iHNA6@rJ@@wx1F{&Hy~w!!UYERb5G=y%Q%q)q>ET0e*7 zP(K{RLRxf{k-zu=QeAAi=OKra7aoBBm~sNKNejvn(so40P)f_IPJ z0i4|`t?b6~S3Ok)XGejhYjp&H3eK)ly_mmDmw29%dY4+Ea)+~9pvCO3y(NXD4WI1P z@_f8Jz6r(q>`PhobFXNz=D|bKGq< zzLxypBjGu~89d0n^90$4I8Zh!Ve@s3tDjMm5ZsSHi6MQ*NJZfx9K-o?1QAmMy2{q7 zyR?^$&M0u_8FdtgI+DEup%g!2NsIF3_>Cv%tR ztm9$s{6b&_I9bo=hfLI|=?jt{@019J->nt*$dNMSCEt9jdT7R_r8>wqY?82$aLpJR z9igdITQ|@o4B?jvOyp06l@3egfN8$0wZ~B5bP)<@=$r2*M@23o@JF6rr!wCikXC76+g2>YX`UM3mpdsgvxSj@--TXLvef^oHgu2*x2?Up? zqtSkNNW=P!l0K2M;H@UikbA`@;VnHPf@)&tzhAu z`%3?jCb~^7Trotc9Il+qpq@C;h{zu|y(b^E=us&rF<{R=sU=#9RkA;Fid-IsfAFvn z!q93=4-Z&k_{RbdJT9ksaZ&P}53~xLJn`G_1!qTjd`w)Y6D~B4YtOtgYUoiHW zbf1uA2^UxtDuw4_IRDOv!mr)DrINz1fLws4vk}#4JxYdeMTg+sfU#0O`~pFY@Q!Qv z=u@$vu{{dG29OqdPx*OE_A%xbDOYC)P<`IE#UxiMQKooKQxxc;Ce{j>90fo?fp*44sMHm@^k_Z z`6g^Zk14=kJ(sA1VF><${2l4TSS$xOAvfJoc0T73Nx9z`>A<^NLpZxl8Ynak;p|{L zO(G1OA2>Tyg&YTKxvEJ3XNQ+ZRXBx4J+)p>flv(8j8ia^hIzQ1_Fw>K_ufYuMZL07 zy&&hplaihkU#Fg;Hbn;R%ebMD0RqrX)OhB@av}xx{e^G$%VjsR(JnU~I6+?6;hAq9 zsL;~PQV@Iu;$y>QyIcQ{#&Y_r>!kz5v*YiG_e4;*N|+>ClenRxa1}vgk7K9FezCPt zQ^gbV19$?5;Wl~>Z%G>Pr1(~juXr-~)n26qXw)5dCI2m3k%NtR^TUrC^)p_aI#)M^ zhnJQ}pxm7cU$en3?85f(Ck!TN1M=b&Sp_mBsk)|%2A#NR?ufT_m}kNm#7$`o>WXxb z7k(3u!5D??s;)B7Wsg*3=h5g&a!mA$P}9ip3TYfZ(ft%5od)5ac737H!A2Nov;orF)F>zIQ<7=2GrMzsQZEsp#A`gQUhgkfkFP{w`Xjc!E_p`v^gphfLyA zi3FYIS~!KYsOSA{^5C3BiQyWyfvZJ3KisBVojNfUTr=DCw_QjFny@Fxgx{YmJ4QLs zAvB4Oz~r0lD=F8Tb0o&X2N*(mEP2+$vPPT~N4V-!1Ng$D(M|TV>p%kpXV+Sv41tZf zcq{}rN<>6QuPhJX>=?T(GB~^C24_cxg^t2=T7LfF?6?aXYVg2f<#)6JWm~X9Hp905 zbv231h>g4$&qzSMskg9&&<&MbE~Ulc?%ty(076q9sVudF!P)VbbcPKjBzWLJb<-A# z9CQ%higP5K6XzKGN{GEAruVigF7_Ojd}Ot7g%J}2c3d!7?UV=PrrA*7%Sx5v(JIBK zI^)t=5Z#0c@Cw`SK3Jo8v<{1AynN>@Ij^LBbl_hyg&|EDyg{zP*%8#S+;8j|1!*af z9{a`Xp~)oaC=7ph?^XDJ@wMcH>2eyF03yQ=e*c4fF-ax2z#B3upY>1x&W)?x|D!?? z#V`a$0C*TSj&sSk-|2w^8)JF=EMmelxa%K1Rf@_+n@Oebx-YrmZ8;D`&)>Q*pDH-J zZUZZ6AIis2j>w5Vwe6vYIG8l%k+7GE-3Q5dh{?Dx|MCo%pc!~T#!Ac9Dv=@1qnEcB ztbM5|J&dM5cn$OqRYT!i!ya0p$Dn$s*Fh1Rni-N)l3RBhsIeirCpRJxaV-Kv7gs)| zr*$|cn9hg*4~qs>rT&=7!D{%A;1~hGe3B`~8Qku+5mI`b zd+(7dKnj4O51t@zj!7IkEZgwM4kRpG8@;)%3v!mi3M38#u`akINWfLn#(U=II36D} z#=+qQaGC?g1@G&d+$7hD!^LwE+Lt}9{cF1FRK9(ChJb{Gmc@q30bEBDRW{5I17VGkAY|Is<&1CTdUH;353vZ2xh=OO@0PUO>t- z95qJML{nk|z6`x>-&2DjnoWL(BlGvY340wxcW|}znx4WgY<%fjJqf{7(ISpFwr?e& zz_*W327pR))g{IHi>HQH?kF%@RLH-fL>@Zo9z8|D)gT=t3zPjZbi1B1c9JCgAooSA z-1MQ9a-i;xkb8@6dSa_bXJ-Dm2nKv)dvs*>A~o9|?$WtXk@u>>*%^*mUI=H0 zhV&ns+`dy8iocl7JnwLJ83qj4$fjOMwL&<%41>8tA*D739H-~GHrdGaEyJ2x6vEj> z9sw#g47U=S!Q=I08h)MM)Unt6Z>G&~io}#>u!Nr7$N|{|6>6h}C~8ximghWleW<%A zcrKKP!P)UQ%b1C-;=;=8fxh!9UOwMugNdu#pR+Bun*AW$)`fHc==5y%5FGOe&dOz9Rq5@ksD8xUVozGI#J?=;BUG8`d=NnP8a$qKf)=> zb38ht9jm;ct@h)`y>kDnYr~r3wdoe&e!`A>Gko8#ipodTssR^{)G6zTb0gl)I0GYI z1wF07UOTJ(h^2KyarSxxB8f*k36o%cTkSOKBvEq83&%TBcjPVMj^&Y3#dd<@)>PlG zYErCZq%)C{=r>fVs(MVZqnieQy{9QcEQ`40cZ~5cs#!X4!};LSxlq(#?`CRWL@C}N z;&x4LR9ERZCxcsrmz0D~z{~qtza(ly{4P~8sv*rtj#jMZ+1e+Avm*m7x=!y6%5KsW z97W6UH-Idw6}nLs`d!lW*GrOMD9ZAbvuR4xe85AE9sD? zG^Hs`X*xp+!9)r|IJ?rCcul{9qHE8klK+x)dd~dCgC{Lei*(ZZPu1pA9X~%5zx$c& zr|zU4j8p2_c(IcnJPn=nzJEn@s{Wp;Unec^`zO8RG&?meKh?pLo;{BgInZ{MC!J+_ z(u1cVDos6jD*9cOpQi9>PF+~iybzm*QMDiAPtCL8B$9|+NU8gEK^{I+IT>$&ep4>2 z(^jQYB82tw4{AEooH=D7%$0N1_oJ&$S~6a3(7{;Alb($qFSV5j-k#{fI1gRo(UH{4 z>nD{Pf4tdojg3oR{P!IzDSmpHQ)p}r#@3jV7iUydVb!&f`cEq#r6ebO#!pNi5mEF;ePyhVLQ#e^2;R#$H)pX?h@fuW%l({&22P>dYMw=ou3VA zh!u8>EHB{N&yM5Q#ZOgL7`8LIsf#dZPgqz65Z*mH7-zy+Q^FdSV;FIzHqkQ27OlE+ zBy3io&tBF%%4<}>XTO$PrxLcD2@3Yx22OSkx70IVP<`_z3AVd>reWNN< zHJN5vk8%uXG1rhPON~p#4rga<5l@VPD6n(e&$?WklleAb*01$hVX=LZn*9<(*zy^sseL)WWMCosW?CV7Za&!_Y0%^EJgdr6#^=TCzzi(=PN`%2OUto!M5W+eVhn{HM+-b5x#|bILuwE^Hdi=hsaQ@(#)6 z+IPL(TQxK!9=|(Pm0IPEtcJ*P&YE0fW<8`u`eUZ*zDpj{O1^$$0_EV=bpM?Xw9JEs zJ+eki4CzRrP5qT#w$!47*WcDc4wyFSeob6=)j9X(#R+L%(?x>gUc)B`j-$+G{v*m~ zZ0X^+d$p>>LGAKlaCY4XYYk=Yd4scSuXRMvy`mM3NREv`lTtf) z0mYFW}j3~$ycS!&q~ddqPPcEn_Hd-XGt0-CV$ zNx{uvQ@0ySuQU8Gty~%;{YO9)!yacWkZQSO!4>u%sRj7UA6Maf9uU(OtkAM%oo%f} zUmQX7!|v8f@mq(j$6K4uOfKyyJV4Uh{-dRic@IIImE`W9}epIU!Ida#15(aml`-nP7wcLH$ zgFzHYVb+X2vWcEA1kkeW9w3Y+@^s`nFf45)D2jBTnjbx)e zSUyVD)ZmdSE7g8j$M)sdvgg`$pzi2z86srDEuWkm&JLZ%JRIVIc)%r(J|i|F-*E?Vv3A>5gUW4@35F*Jw=wy}*K+z>w+pQUsbPC-pVRs%G!4n}_vb@eD|}Ux^k?aB$5*`(9y_&V(Pyg*9vIZgn4|vTSx(L zjdnk5>oVc;nrGx6-`gq>K)Q|Q;q?eyc&p!z2?FcjVJ)5hcE3~#f5+vN*}hBKzxP{N z;DH~7ym08S1c1W*@ROV%dQak(G{^u_<9SPyzx--A7q1FU2ch0GS7(W7@DxvkT(JR~ zaqy5>!W+jhup5lHY**z*V5 zq;RFC@u@dGYoez)hQD=kIJ>0qq7Y>OXZOBr41OZnWC&+RQ(dj=TALF#E+OwjD~Q=~ zI6L&Vb$7WZ+I(@5;t(cExP_B#dk7Z;g_-4Wb`J;@?dWe32mFWOw++|G05@@CZySGH zFTvqSv+apWr@mU~{rOia+<%G$Bt_yJNc&4OhYth_(DYKHZWP-Uc)Kag@+-A;SFx;BQJq7#j#KW@rIfy3Dd~m z|8JgvBd8GnLxr%NtpBiK5^eoNj+>!dhg$=PqPoFYI&-pTpc##cDwS9%qezs-p9x~C za-hdFg#Y&(<%~%S(PVA(eA}mTOqe}AgyYy1Ovk|J)k7=fKv7(r)D5@G=Mr!TJEVtb z;pEvGBcQ=t1w%>1*cd_JVvrD*PoJ-`A#Cm1Uz$fwfvI4ed%qK>aG(r(@s*^Um@&g! zRG++wAs8De9%&kR2k{W)rY{V;uo(=D6z>g-5ctqP=E+qJy-Ue88@EGp=siw~-d$0C zu21yjKtnh?tQ4an_P)DSLqBp5hqL3>xE}Io_y!a1TPR~gEok#aMM})s=sU>^zrIf> z8fTA3YEfen_N2S*EpihW08OHKTAOTecBGu7S2!a~g5ZSGV`K1&(F3F1^9*O_ZxZl6 zm?(C5MMCOIWW9f(vKvQPM9s*LFhxukPf8aY&JObd8aC1;#R9P;Riw4#gJeH+lXwqL9L^37 z!)-Ky{DWlW@-kILM#6=i`>C^xQ1wK$g#rm&P&82jaJT}uqXd98d> zmw)n^9Hn4APsr-vDUR}&BjPFP81~?gCI?PX{)Oh@SvmT)7i*g z@y-lFiBSY7HuL~vBcb3FP34rsS)$FCCnPY6wd|(K9e|5lkZSRpbI!`0u$O5B4-|_Y zeY`_v<{-5=al#U^C-9J&(m@K0nxY2diSV;%4=UJytb7x`o{dPu7@teXoo^pyqn_H! zK+EiLKDQ$shDAgg?)A#X>Tq@iN=70$yRp+GM0}RR*^vH z6W#1FR1c0BBjfepDv{u8gXTmBgh+W<`b@S&;2D0mzE*k z$A!dQHdr)!q4WoSGH%#^Kmc?ULu9Z8N5KdZ^}~%|2nP*r9NRo$pEVh9|;5##2N5Ley5NR@CECW>o-cjWUJ zDjJ5rV@OEI@;8;#fIEZlJ%@@%41%a?=p@|>BZ0YCFX0s{EQ@i?Uu?s$7+><<Ok7ImW8ROopn+K4*w zOE;;X@hO~lI6FGU5Ov}#=@L?-81jNYZU{FI)UX%fHa1;?hbS0VA!0_RxNq)7u0T$3 zRTH%nM%63t=>#7d8&VX%0*G5ElgExYf=bZlVtd=>Z;#6j&dxC>1p_!Y;C5f*HUqoC zhPWm(oU7VU7&w3*ME}uq-L9>C0uhB`7(Oc3%6!Y{d$fZmf#4f_#zGt0dnz<-xc}a* zCUGNn`j4wyl{*6pr!f__*EA+%jIY^csT>0tm`JQ}bT4`$Y$(G4(<5-3dDFo%->uCiBft6*DUq0w|j(81@h~@j@rUArd z*qocpaOOm&z0}SRp|pHbPBg_q1w!aNZ$_Dc;}zIv{2Way+W@%yU~S1G5h8l|t4121 zVPDgO{GGMS@Yg}K z%^ScDa-^MT2zIi~o@A|k&fx4q^e}&YpIUh>QpD1RA(UCBO}KGJ`LvL1gR}E}e?=Q; zV|6$?zbX+-hYqSLaX35s3}R-8Uzae)t$7;uH`A1)B!sgIw63MSHZXyrU=-7=50iC< z%?IMF98f6G)UI7vO2j6y2D~yOEwkA;QQza`eKwddB&&1VjWpr2XpG?;$uj)O3^Q}T z9KPxC|(VFz`m-ai8NB>UH{rF#q+LbL{wRpVaQ0M+)KW^4lI4Jd^=I2{6h~ zzZ_{QLXnDNL&f(a3@hzKfL(E1DX;TnHAHw;I_P*-F$}Ay+NiLDl?D4JttTw(09NsO zf~JPxa(<(#t6~RB?ZR^>uiP0DA^ru;OTqh!!*hA#kKq7 z)WhhYw<>D3IU(e~!{&mss?n_iY-1*%#)H@0tXi;!Mt-JH)E1pe=usO^rR%3U zUPn~LtCPXm1-+<_oEE>TM#*@!(ZcYPTpJUU|E9Lb%hxcC;A|+$^K3Y0M-lg;&PKh9 zc;Y=Ov5B$z8)J(&nZktVxTeR&js&&EF0bNqv|q28<`d}~CmS}e^yylTa+GHiYvV+H!e;)3HL2%aDGzkb};P?m+@S_uQ-De4g3D5ks7CDp2pU0W7{ z;Q5WBHpKU{;}ChV%cHwQf1_K(+ZOG_8xtp=oD69aoXrRH_IOG7oNY()4MHv3P?}0? z^-IF0(fI_}gaJ)8HqfwWa%=5Uk$oMS+i9YH?0B)^*CkBvi$WN&0M5?%P+|yU&Xd$? zYn>9d#7n#~kU-Z)O&+w#$XN!e=Cggp%xePxK)tEi!QG9S#MC6?0pkG2Il8gHjo5w9PF%2&@1W0!B zOdRfrq?7g6hc=kCYI()wjgoiWSNZN10m-!Js)cKBf1s6lQYnizbfaRh7Nu_cR4b8h z9~n%e_0KeWhn<74Mw8*&*(c+}naK_uR~F8#<&zRBcEtZCCxesN~hGnFK@G*z4C?zkw@W~ z3)J5n!@&zC{kE!_SMM6{jgMN+<-xT4_S*5!e;3+(Y5!7rl*kkqywm$1X~711^UOcBo|gw ziswY!>snjFh-Al13rrnL!15=|&=S3?n`lQsh0_G=qUqu$oh!?=M29wW#FqxtDapIF z*Am#5Hflxo!0}p#w&5Ld6{htXA!fd`A$k36TBE}L6EAArmplCqx2hx^Y*V47U$4C> zaa?CeYq$)g+;5EPK^eG&$~SBdaoB9l47II$UGulbPZuBv3R!9ZuP8vDQ37Xpd1JC; zAL%ga3dc%AJ-m6a)%K1Uh0fePJGtR)U0dryJV$ctqrsP!YQ2`Uaif;HcJ8abuYW_V zMlo7<*U}@{<=}yz>=cd+eVIB}dOm%=c;XC1r5&^Z*Zj(+w6_9&(Y=g%oWoXuTFmOv0&?v#rh2b)@7lo!_*|tK9?T)*&7Inui9a;LAR(7L~GanMrAvOjFyA2dyDux(B-Ewj8 z;g#aoJrC#-6n*v6IyGRN7IDsfM2p*2KB>RU9vAi~_KD*_gqZ8AZ;H7X_UB(|L1gB=!(?Q8YQ5xi z^r*nTxC*VR-4w<%EE@CVi^4kia!;^a&*AJIHaI&X-($}SK?b?tWiSZ}!vTasY&cP= zuB~`7aPD=d=;a1yhmPUPP?fLt2-D>KZ9-{*S7;;3v;8wk0j*fLO3UOqcx9O)5O$7< zey~kEguPh4!`Tt5sB_4j24`0(!9D(htQs4B?iFb)I>3c^z)yEcL-u|v3;*qyI!<&P zI!Qavte4@SS9ci*!=8Pr6Uh=RhfNZ%zWGk-J@#HfF8p**EUG6CGz#`h)=1B>INI57 ztk%D?(Lt;RE8F#@;F|tiC^MP!h}NOQBAD>tQXRSDPGKWprw#(J^%Gr7-w7BvKI;GJ zXI+kNqcg25k_UcL0nGpFZ?uC;{qBH-^4)$dpZ)%T3>iM-H=i`yM;1A@lqARYdOiqlE<{;G3M*NGA(*H+k7!> zAs!Uls$p`IDRX3{UHYpH{9atFn_}(k6O(a~M0+~UEr$N)sx!C zK}gY4o}$(wm4!p>onOdeH^$)XFjry^jX|J)E>L1vSt$oc_le*gjvY__ z_M4W~W6wyLB!C1KVIe*eOcEl*jRra^(1#I|lM5e}#2p*#mm|_%6q2OrU$eBD8v)@F zkPZ$Ab)qpi7aY(Z^W;;w7p|erEovL)P*!goXhcga8KQ$knoCL~N^B~#h59mhqEgXM zK9lHC12{~;fMXQEatTNz@89lMK7m7k$?y|#+iFj2QLG&O;LlMztyeC(orZ_nK zZ4{bqC`yz09mz)-<7ZjpzUv!t~2sQ#10r< z9>Uqt>zfBk1n+$m!r5(<=o!ih&Ti&;g|jQQ2M&&Qd|9dV2dN=~$DWl+ zykgk34=xdGCHhZzV|a^KrTm`?#4%K^)CTz6z3TvZaJ(v-c15{3?Ch#<4)oPcY8VPe zYI$`NahT+t0FRd(Gfm>wgS!zLOX1^sk5XbZ>K^%4Hk6+(6Z=tSyabjG$3{-6WEhT7 z!%sv&V19qAI8Wb6eF$S{8lHiDIEMGYOb{R9K(bx?OJ0~TRzu*y@P!LemxG&gpa!!R zFRCakO&&fXM0&L9?)&9vwtXtaLj1xM=pbVzQD;NL99RThM2&D*-+U_oC(?3a6r%u@ z=_oOL`nkgO@W~pppmqdvToU$1z6QZNl#*NEu#z^)Ce+~LNDanJ6@VV%B#y1$Al2kJ zZNN_v$}~VWB!aC5cOn4YgwD z=}GtLaz>pv#1T{Eh8&8No4&k3&XJp1MB@Kp-oD@DM4cd-qM}%(OU4Hi9A(h12qEu)g9*r7kEs=v?hqG(eSp~c# zb?W^|E4dHkc*O9$F%UY=*_#K+rH-8@7NMv}`T1Am)A@Vo7um?twNe$lHbGQyv>!;I z=sbE}-yA57p*wv?3xdA;V3{*qMGXi=jQ@}_Jwnj`lBvfRSk1rZNJH>|3_wp*3df6- z2y=r8ExPI*eWBjIu?AsWG3XBPuv zc#b1tv{A3vRh=5lTJ&&5X%k#qC0QOy)3J|KYQYK_6`DsHh#O@%31{Ic407uw5g0#1 z@M~o31Y6u|pV2BwFvlPnG@ott%%L)6D->>Vy_DVe`s?u@b0kUPahxQu!rN8GI!3wS_UOQ+C}9tI?;_la$_&nbEbEAXM%FfFG- zy;!_ac`^6p6uB@5<4-3OA@&*t@QDOf?#}J#GRjJnLRUBfHwfnR4sN5tu#R+wG?QQA z4M7-!y$o=W2#nHn-I^jiS4!ApQ1Wrug7hKMf5F)qqBcGPM!`}T3pZ#dJA$)&RT8;n zh~(>1##*8fQWqqaww2)E8@i!Jb`-DhnCKPlMMsDzgmcK}6(Cav8B~SH5Gb-kA5bBxrF_q!$&%}(TBtPF zI>#J!5Md28ur<{3fhEf8aVR(5E-#$gwF^!#HrFN?G;S?slISpwrt$2`K^eMrq<#$X^_#(_}zut{=2Cn4=raeR z%d^8tTBUXuy>SjvwjA!Pz+mM(i4fYJW$2DISA)5U5PQv8>LYi5vd%v0m1*y?9rsK# zIa&u36)5A60vbE`-i^A1l8x&Oyvy(9O?BD%>mbbyvd-o^jF^2@kkQtM+mwirgS)Df z*j$VApyiTC>#AoUCE@oYi|xY_niOI4EBqk)VyR6*D=}ruv^gFEOmk(hK00|-CHBf* zC2e1KG^Ne34Ki3ulM&r& zyum@=L*0(#>xP_R*nMR-tH~|b3rHC(X!+l)5IWLDlWhpCI%tS?#r8#2znn6W9wrRj zGQ&_P>sqhQfiw@ad&8U)MIDZp-&75Lir?Z6CyLq!R1)HMIgV2m09p)MN)T0!>lFj1 z^55Vp`|DRZAejHJ;qAi4&;UnKt5#JA6c*q2mPGf}y{rZmh$@Vrw_@O9 z@yjE)s;ID+3GNl4b=lcc2jhxeRr7Mg2J{AadEKS@5pl0N2$)~)2fc8-VYNMmc)e>*Opj=T^l3$#?MCO zb@!McyvxDaI7(XxZ6~z}&BV`o;dpoIAqA|6HCWuJQ6@YdbynO6^|J zCF7SzdKi?C39(*MgPALq7@Xbp7ZRO}u~_`>?58&7qzBV<{>cS_$eMOeOC(MI&8flM zRm-otqR~57mAsQ#{!T_&n$nb}G^Obbsln>Ck6rYKKm7CG{QbZF{r~sRfBO$iHB zl%_KzA=39~*f>~k9z94-Q<~D0rZoK}3ecD;?Hx{K>Gk!U5-CU0l%_PL=>ky<&dz;m z%6oc|&vHmT?x#x6034yLI(pdIk@ zrrx4f$eUNEx2P?O^D5X6ry|uj==)Vy8PzBmuQs)0bi^--|5j^H>|SNnl{~uSRQIii z6t&a48SjyLQN3`~op`7Gpf9QLj>nJ3xffmN)y50N_vs_!i<6b}xZeYl^fT zbXK#YIk_evpBY_fSY?S2iA|ieY9lH#kW8;O*VZd?ZAoZ5jSa;u-@bcX-s}X<$mH4Tsn5H1 zCRV%^Y`B1CriVV)~mOHeT_tiJGT4~b#T3oo|Nm;d~d0(TYVjr07y7bqP zhgOJVB@SoTT-U-?ZryD_vga_>!>xM`4JL}G_VGedwyoSp;+K}nh#Y|Gi5GO-m&q2| zdabs%NL3I$iv8(lT2PBlA`uun_Fnbqt@pHaaQ-qawOI71_&~T&^8+~e>YM%A5 zg`XQV6E538?cV-C#jt(!ZR_^rBde8a%y~p>tY<8c6VUqRkHl*E(+g_XDb!%r(nl(C z3X=Q2uYA-NcMqPRp3pb63SO{{ofd#i4H&1@uUJ~Y(Q*eU4eAI}*gn}QLZ@-TFWUlk zEO5v~LHOW02Tf3!b#DZb3YM*XPRo`Dj+c|gkD#yPrfdJ%O6)GM^4dtKIHwmEwumTh%D*?E?_9L#H7z?Ep~kTd97rp zJ8*32S}lc!8!+vbA+jZy!x5qdJ`@JhcvuRf_$45*J-JS`{q~z+sBm8BS?wmFa`bJr zmTt{6GH(Hzgm8AmLShnKXx>SnP&>Z};Ov@q6s+G%8>&dYblIU;+|*{qQ!~?-*Vw{{&LHg<8XGJ`)Oq=Z6lHF)K@{Mb%l<= znO}aD>J+z^-q1%p7p|6U9dW#}NqL{c*?qBFa4l_a3D(%9-t?@g+}7BkmuNqpC@*|g zlM%w%;apGyV&Rg<)P7tQ{d(F0r^DGTStG~6eqH;8GFvr>X2OlfECxHA-JWkWUV&*x zf0LH}XTE|xO(L%(dFf(^Y7v|rJI6yfyY{yVyO!Lr#~s2VIt`rNB7?KTlGkrgm+xPg zoV`#k@?Wx~fe46ffba&3@a(87f&adR$v@@_T3D@mP*5YSy30p!${C*8!3#xL&}(lg z%f{WKmW<)P{9279yS#sq@)Ej6zIp7p0Dy?5jE!)7c!p!gG-}!PrIefyweNc^c>hCV zLofSDKw|BBDj?w>;0Z&kXI@s8(CTLKoB;%$ddC+EX?UKFeIyjLecKKNJVb`ig9$^_L;?ILnO>!=7gaMGNZrYr@xJZ{1 zxG2nsm0>S|3&)B?xp0CZjNlNl6B4&oPwPU|n$#FBqufMA$}_;nG2!SDFv{BWygZdV zDV15SG|}Mf$V0I=#*$=|=vk>fvS?&r`!g4aMX>RrLWO$N)Sn083rOYAHo@7g(@2wz zoEjF9f7Nafb~rm+4};A+?vl7sYmcA~XGa&%Y!v$a5Y7%U;nwjrNZ;Y?Xb-9DbZeVG zo30CrUSFVuM9NEw<cRGPIB!KQ6g@PXJcS zNR${xRDjiJCKtk9lo=0;(;$Xnyq)?*AgdI47c_$6I@~b^k)(^HRX~MmtWEdN^hZqK?`9eq(e5o!jt^G?Hf17s1)}5mFzK zKZ3Jk2lFFt6OECGKch^&>Df`4J-NrrlL*6VhZ*F)0i4}x@f`myIJ?~eoZaxd6($K? zI4nXYK38ydhm!X{Ed8!K2dbpFxkfx}JHJr8L`h)aK||7mQEV`F_Tm8Q9Db4<5zbq5 zkzZ5EL$Y(CEc%ID7Ov8_HwX{#6Jb>*^%P>3IRZ*jr(UGA(vS%4MX4A<5}wg#x=&X7 z>`TcB)5RH77h>!mz}X#^?W}lG2?rV0&j;m#N$v5xY@}M0saLN=h}MoOecNy)eTW{G zj+qv`y&(I68#n|Fn3l;%|2adZjgnkktOt~6FB=&pWBFvVlJaaY0g0gGT*ZKO?jwOS zA#cT56Rof59N_IDufAjCzH!QLzGtwc-)lgCjMyPCYn^w;p~KQaY~}NgY0=Le;L$t8z|pO{6X!=YEfuh375lVZ!2w}suo=( zD$0<o4|RVRB^-NgsG3TX2tsJ&;B5{5ZXq`THPT1pG0q9NB!y+~EMvY_GZ`N6`gz%FP zK4hYD8HRf>w#QI=pKhO)gYyjDaTfT~8HR>eZn%hr_GvTxELSz{sFDof(N#B8#ywO{ zRpX}z0GH@w?@@BBl*cJhfT}PDYypuu$M8D?#wjepLjn@FyY^=3HZ7ziysF&?+2>9$ zHqYLG({ijEE5_=J4c?oK${XzLf`PEB&nWo{O}x25tiwy-H{bw@jesJ>#tGyY7CXA( zCP2i60~Ge>1EZ#hMWp1thU-};R!;zfy`-G*_P&LB`Ic{ZZ*cYc+v--q&WgfmOpROV ztDGb|(-$bYAcrSzka&}O`rB1k-yEBT<1-TUs@*=Vmu*uSvTX)Qmc1O$u{k1z_5np* zVv`cG3?eLHQ<@44Hq9TIQusJ zN(D_dmb#?!4WH0=d}a?Ca@#PaQH&25FMENK7=l@9<+Vu8QgPB}dKg$@mZ2tQ+fE~! z^&x0G+t0HJZQiOZ1F0)@C^pj>@1s+R)lgzD(6S6=(f0*scb&>R9|{bL(1ns^UrZ{s zPZm1-UBt1n5Q>l^y6-i?j2~}db_(+01*b$f`xOcxD9y#I%k6@hF#gwn^%>4k8(j*; z_I*uRq6x?qyUdY_9q%z3Z)L~6qFSFQgtIGX zcf8zix&$28M%Z!uvhNsQj@{(IQ@-P{RHY%3TeV-qq>4^ep;T2zyNYTHz^p<5x2Wa- zLM?{j76-p_oU5oM39G^H>%~%lr!D|_QzKSHU5kFJIvc^+c{jt$0~V#QqSmQKQ-g!y zeid&G&MvRbiGsE#8n@CZ$7eflJohFAd?UxNc#~aT~zX9fOS!U8YP2MVfko3 z(pza@tPN4~qO&Ejvr)t9RF3CPfdXFuvH2t@y1`n=U(f*2tuU%gFTEo)U zt}aPan$nb}G@T&{&hFwr{PExa_8iH7kOXIU;SuT6 zl%_PL>93FiG^P^;ZIA0Au00a2N%jD^#@~|E<0n0mrW&j})mdjWaPj&Y6*PhGSdPv^LsHvxFbG(fIt#K-~@JaukYX7f; zQsC@PKT)8}KHBFysizV)2SNx*Cp(o|+kbgd$HVSNztzshjypwX6XEolc*)dT)CxtF z*WE2@i{cz}7DW`n%Ef=9t7;amu9MN4i+GvnlvnOo=}26N)yv20^uO@}5^=2N`bj}M zt*NEfL03XQ<&78jY(kjtM896(s8wx?cL>y)sWnBtqwkS#Rc=Gj-Q z#YvlbSzvf{!MwtD>Yc7Kq&_d1Z-9qhGE(3?n}l0tB~_=v(|N}!pC3*!_M7^`V()dX zp|0s0=xrrCpLtqpe#hbLqFInG>s$lGi|$)b$gR(<%-bm*wo;FLR%WTOvCzKrUS?Q1 z>|EQeN^Qhpn;DvKe5hfAK1(#3-Rv?dHLSd7pB)FWtZP`WS|wYFba|uX%!eyK-l3(L zt-DvvLQhz)UfHA-Y_OH?J-9@R`L=(iB?luW3wQ}_XxdR+yW>vHz~8-B2ix}yrVaDk zsJYf`K$-S8(?0s_o|@l$2U|4sMxR6L+FxRy=XQ=48^WMZ^ValQ`?Pdpn{w|~;YeI1 zh9Q<&m)}qSU4*?YUM-$Xc|fZ>UVlr=tM8o`eA%2%t$0Gy(H~x=l^$C^5fqq^*?MRp zpk^B1q_yymtPwcCJ##g8{i$`Tr*`4&oV^JB<&9dOH+fDlbs1ZN&v(z(8rdt#wBYC2 zm$j(ovFF6|Oq*(cRTC`$+q^{rZDe0*Pp!We$^Brbz5=cI@MEc8yPj(EN1tk~*TC^w z5d7BrS}#XCh5GS^*1E`UZM`NXw{F)u<9=gQ16oa0s5&7Z6&gNS^|a`!OSXKh!dy~h zaCWy1m(Fi`S7#B#j$L8`(#f#}AcH3eb?xoQOV)^E?sqbp>sp$MSSto=UD?Mw zwF;RXtthJpDjJa+CQJ1+g8|7@>rs-(m7mTEowo_)dM z3N-lm39$)9d3lrcrq3uXOkTf13q6nirlrSd_7g8?Mf@#8q=GPd`QutNHhsRZ8x}t* zIZb;|@DMW=XhAM2ep7FW(7_tGkW22Ir8TyXKQE@g`JUF*4VoZXu6b5kyYw+tGH;oZ zkqamTv96Vr?C>vwKH2xZR{K4@KDlVMI634_t&G0q4lN2sfjBa5x|RcP+aWD%+e5CF z2=v0M;{22Av`&LEFTSoW*M$Scm~S2=Zw?y;XJ<*S;Ov?S{eUiDGc;qz=R(kc=L|vc zwz!GMo(R+ll@wa;rw^d!UOoB5FF*Q3d=_gQk?TJTG##3jXAsR$DuctmQ6uY}bro)n1M zu)D=BHewigK)$VAM1S^vtAi6}NQj3HCs#i$JOOz4&9~B`A8jAC=cbMZS09*jW@JP7 z%-rNfMU`+3C)lZ9n1dL0!}G5sUw>OtN9`_8Xk|A&7YNgIIR%W0xKS}g=%>H^CN2}N z$eYH`(AsUnGUoT}ODcvs;yr&pBzO@N2wUX{DvMfg->Go)(i>v^_Xh;4vBSW}P)c%J zxcTG@0eS^d5w{{(hkFDxKrwXm$gdJVO+uk}eJK~ve_XJJETy;SiIl!ohqJ@=W5)EF zFmPjU<&v$s3yWc~p>-r|sCeK$)Q^zQ6WwtI5{lt5sGgWYQ`viT` zv9BTxdB7iY1+aiM4j8A!>3D>lUuYbF_L3ZtMWW}}fA3L}1t~($p~?@w3*qdhoC417 zwKtWezV=oCXGh@2?EfWG?uPCY$Wd1W>JAh~K!HExCI^gH0x@l#{0`zfd_X*FLNGv4;o;}I)krN)e>i}%Bj1F*@QrZN)er*Nh&M2qxB~Oh9})ukh;)SC zcB3GWsezaWGjSmB_NG4K26|31PH6ddztSnr-oHrAz%S#JGwL1W(rKu{tktV3{(J?Y zqw>fRje|%h(E~bwH@v2+j0cBx?3i>EOU9mW>Qm`ByXea1EdpO*pU6*{ULypc0E0+R zh_{SZP)b~?!;Hc~{%(9%XHj}|ZvPKLVfkv05JPZ|?{1aHxowzW>wZ3{`hCqf^$@{u zwa6It#jX6IvD$-Lqxx(V!yV)0@lc46A!qr8!?G(iJI}f{IdO*kK6xniMuz_K1_cs- ze4J^Eg6Aw2>KY#QqC)WpHS%Xn%y0h}GJA^=D zotz7PnbCv8+5M?N^y8vJ9 zKmcdw(1j=}DHLh7!`Y!BU+$5ibr~Sr96K!lT!$^h3;}u_ku#;&STQ3@j2h1XlN~4v zZNd4H`XHtu6O*5Rom{j^Hyt!l5KR+jCI2m3k2^4mzcL59XkkT3nE;jPB>4pc%&VK| zVbf&^g$_~=QuGmb%iqB@Y#2L-FeLO0zgA?pZI}(5LIsfosVHj1C<)!gnLhinJSJww zL70g4FI%gpS8SyH@ET*laVHJwi;V$0Nhllsy1+0j$Ox#J3-!H(O_DC-GQ@xvhS6k0 z+z2l}?p}FbT+9U@A0-UDN-pm^<&_MM&_Xt>h(vqLG(}oeEopFebpNK_0Yv|$CCXLl zDISdxG(%2&1PV=BjS@3NVyqp(E7S^=*+c!_Bjx3Bg4;h+?m+V#&JKygd0Z9w7byvX zBT`}*BxU4u4rhnB+uxczcu*cHv+m*S<}VlD$j9;N_brss!b9><;wu|1pSM(eW+R}| zJa|PyK-;|Jy$>qErvRqw2;ctM4|MoMrJj%w24IEiTp&ftX(cUX@;MX8Fj&%CVX9&BV`%b%zhU^fxbee_KTzk`!E z^j6wL7e-H2_tA|R^JQy!f}iG~4utZ*JNM zh+GGA@P|JH5_kgV$&Jt=95 zoAtnmK{uWS1tQ;Z7&od#grn{5IBR4{vW77H6{tyDnXuQ96@%35_B{hku<_G1=Ee3f#V-BC4b+sBxlKg?$Hyfw77xoW z`{*3UQA9dLUs=z*qHF$#fNt#TG!N85d7mY{J9nOxC zFFYr48)V|B^~VcwO4v&z?g%F*&Qv2gGWK5W<04T2_=(44*r<>{S>sSVLat4LK*3-> zv4I4?d1t*V^D$;o_(e0ifNP*0N=}#|@{W{rP%@5;(Cxg|Qck$k(@^rb3yq=6RE6qN zTfT7&hmzMuF$tEkgISRQ;FbE0RtqUffx4JYaW15}2W`}Tew!OoXRGdNB&O{z=!)&F zCMw~Nxt;T~7YSREL=^+au2B+yIp$`lITCH8PB4m^$paXz;~cPhya9@hgXZki2kawJ zZ6%1_qv{+Kv9_tftd+|uuFRx+mFNUnC%W>9y(=WD%z9YeMyty0*^|!#5eS>TA1}0* z>CR2>uyTIKuXErpdspi-Lb42EF2`Q>xtZk{2%f)2_iM9TYV?g@$S6^=+;IMcpLI;I zJeyGBmlxQB&H{s9%dt1_Ik8VIUT~rr`VeCX&F3R`$S30D+i#X3vqgMJI8Ynq? zQdb6VB>Rq_m~9g|GHecpA7tO3=SIqz6~WoH2(C)F_F5L^1NKszUX~q0oGUSuwm_>* z5MHfbF`4RSh46QAj`?JggnfH1%LM8Ta|223+J&V=G|@Fg_H!4Xu&GN?gPmQa#*_co z-qrpzb%pV&Tl}J%?hn}aEoNJE(S@q^h160r=ZMo`44bFwLj zL1IFuLQ7!<84{3|LMLO$OJ8o^=?eo)G{$JuRl483r@fR~;X)J&KEM3ZJolXQ+;i_a z&;8x!T-pnp1s0!tNDEKfSgm*&rV9^8n|!Ts0H16Lrfds06MGNuA<`*x7dwh6Oc16;PJDbcB4;g@@C}5P zY#d;-66PK*j5@~`L~(@K;ju!|jy`5g4Id$22iI@mtI}t8YcDq7f3hyZUYFC*2`^sjW;sHEeMVxyIud|!m z2q6*^hO%;1)wcIPxVAd^+PV$b)_z7L5{X2Kl&R}#SHJc4s%5Xg^V%D$maiZZiA17A z%6`4_`;Q-e8cNFuZTew+X+|UxiNvYM{}ulG_tu4yHjO0=nJ zkw}~`l$Dj0wYId_IgT@1O#S^vgQ26nefDWIbeQ`GY!<84Z03kWB5^*D7trh1uR9!$ z{{DWwUhj6hywuV4>sUc*bt*y{agTXL3 zILQCoifoMAPH2`JA>vhYckrnj8Wlf^h+DZ*LzO8X6lLd-CMT z*zAJ!h&;5jvy%igaR9A^XxceWYwWGm_0)Fuq7X`IruiWd1WXXnKp=ojkcnC_7{n(w zp>DA88JjUaKd_FF|B`?v4xp0IN~OMMZSkK=57f$js#%<;dH3hWves^i8fu9kwqjDu z%*)C@JU36*Yi1qI%!{xf5nn)K6>cJ!!ZL#itGF3$u)K1jYZ$CSG(sexi3GEddsejl zvs6(lldENNm27{tEKeiLRxi$}`K77L>#&(7ohFXsTmtNNyYvZVUQVZTx?zCE9*+lo z#a2uT^o5S5_1GO9F|XJP!b^!b0t%o)sZ=74VfXa(T)up{qoacfUz7}n5w~y#AOTGr zKvDY4mN$zUka#Z1t@-eruCUGe>VeuN3XLqMW@W)2#$J=d#!WI$$Oq4yIdkO55k!te z4TX^P_4S=TefsFpqk6qwdL*DP1n}9jXPcXwp>EQ>;BxHPF`Z5)u`jg2MWNMd;nmjG zCee$qfDuPPkvXc>YL!Zrm6dhp&Yirxyz1&|$S6w{A3b_>@7_IJ5@TM}WMo{rbm_*88)$Io(4mVLFCy1K z5T87Gvb3}mw`dqeMMW1bTre8>e`63Wpv=alm71EGl9G~?l!Ob61T>*AV7837?edz= zMOi9joe<4M3QcvNcje)F*eF5yE~S3dZ6A2XqfpEs^aZ!cf`S5QjTBL{MoHnGJ$o7& z8YJeD5H*BNVPPR;7k7P$eTms_c6K(xTZ$JNpjl&MQ@8-U0$HAGx=8t0?L={S7oXU z!;=aqbPW-L7{Cox;)F6$gMoO%+8@C)Wd_Pb4GSi$lMtf$`T5ej!{Q0PSY0U;3M_-9 t^aV|CX=y>6WBrb+z~k{q?2E8a@jpfh^v&joRv7>Q002ovPDHLkV1ljU$65dY diff --git a/.resources/3a4fd0c68bd7045db81874d3865b454b3d3d2df13bb18fe63a7b99ea0a79051e b/.resources/3a4fd0c68bd7045db81874d3865b454b3d3d2df13bb18fe63a7b99ea0a79051e deleted file mode 100644 index 55d867ab..00000000 --- a/.resources/3a4fd0c68bd7045db81874d3865b454b3d3d2df13bb18fe63a7b99ea0a79051e +++ /dev/null @@ -1,155 +0,0 @@ -{ - "custom": { - "activityLogger": { - "alt_pageid": "tools", - "start_time": { - "$": [ - "ts", - 192, - 1716471122012 - ], - "$ts": 1716471122012 - } - } - }, - "events": { - "system": { - "onShutdown": { - "config": { - "script": "\tactivityLog.productMetrics.callLogger(self, \u0027page\u0027)" - }, - "scope": "G", - "type": "script" - }, - "onStartup": { - "config": { - "script": "\tself.session.custom.view_in_focus \u003d self.page.props.path\n\tself.custom.activityLogger.start_time \u003d system.date.now()" - }, - "scope": "G", - "type": "script" - } - } - }, - "params": {}, - "propConfig": { - "custom.activityLogger": { - "persistent": true - }, - "custom.activityLogger.pageid": { - "binding": { - "config": { - "expression": "{/root.props.currentTabIndex}" - }, - "transforms": [ - { - "code": "\tpageid\u003d self.custom.activityLogger.alt_pageid+\u0027/\u0027+self.getChild(\"root\").props.tabs[value]\n\treturn pageid.replace(\u0027 \u0027,\u0027\u0027)", - "type": "script" - } - ], - "type": "expr" - } - } - }, - "props": { - "defaultSize": { - "height": 1080, - "width": 1920 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "CommissioningTool" - }, - "props": { - "path": "Main-Views/Commissioning Tool/CT_Main" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "S3" - }, - "position": { - "tabIndex": 1 - }, - "propConfig": { - "props.params.selected_site": { - "binding": { - "config": { - "path": "session.custom.fc" - }, - "type": "property" - } - } - }, - "props": { - "params": { - "selected_image": null - }, - "path": "Main-Views/S3/manage" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "NotifyTool" - }, - "position": { - "tabIndex": 2 - }, - "props": { - "path": "Main-Views/Notify-Tool/Notify-Main" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "EmbeddedView" - }, - "position": { - "tabIndex": 3 - }, - "props": { - "path": "Main-Views/Config-Tool/MainView" - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "root" - }, - "propConfig": { - "props.currentTabIndex": { - "onChange": { - "enabled": null, - "script": "\ttry:\n\t\tpageid \u003d self.view.custom.activityLogger.alt_pageid + \u0027/\u0027+ self.props.tabs[previousValue.value]\n\t\tpageid \u003d pageid.replace(\u0027 \u0027,\u0027\u0027)\n\t\tpayload \u003d activityLog.productMetrics.createActivityPayload(self.view, \u0027page\u0027, pageid, pageid)\n\t\tif payload:\n\t\t\tself.view.custom.activityLogger.start_time \u003d system.date.now()\n\t\t\tsystem.perspective.sendMessage(\u0027activityLogger-TabChanged\u0027, payload \u003d payload, scope \u003d \u0027page\u0027)\n\texcept:\n\t\tpass" - } - } - }, - "props": { - "currentTabIndex": 3, - "tabs": [ - "CT", - "S3", - "Notify Tool", - "Site Config" - ] - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "activityLogger-TabChanged", - "pageScope": true, - "script": "\t# implement your handler here\n\tif payload:\n\t\tactivityLog.productMetrics.callActivityLoggerAPI(payload)\n", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.container.tab" - } -} \ No newline at end of file diff --git a/.resources/3a5269376a7f4a66814b74c9b6bcb3ff0d0abe76ee063479a76fe416f45b356b b/.resources/3a5269376a7f4a66814b74c9b6bcb3ff0d0abe76ee063479a76fe416f45b356b new file mode 100644 index 0000000000000000000000000000000000000000..c079147cbc3552a744b03cea282ace79e543ad4f GIT binary patch literal 9598 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 diff --git a/.resources/667720a493e52c5f439c2cd8bbc30f0674e31f76d35a0ba72c27e228ed6dc39a b/.resources/3d85d26f9949d17c2b9b17c80f62449d075c18ef37b04e24f3722c46b0a1ab7d similarity index 100% rename from .resources/667720a493e52c5f439c2cd8bbc30f0674e31f76d35a0ba72c27e228ed6dc39a rename to .resources/3d85d26f9949d17c2b9b17c80f62449d075c18ef37b04e24f3722c46b0a1ab7d diff --git a/.resources/3e059e667f2e8524ec24a21f64d25c6cb42d34ed9d0f276a35a81ced6e89f468 b/.resources/3e059e667f2e8524ec24a21f64d25c6cb42d34ed9d0f276a35a81ced6e89f468 deleted file mode 100644 index 4f7537423cb0ea882ef6f5798c37c3f7615da05d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11059 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π9Wy#T1L zoYm^@ZWU}-ttK0nzjBjAmaRCL1lP#~&OQHjCAR%m0dOZabNy*2hi;!)O>jXBAQ1hzYH4KFdz4Z!RGVM`LjAvm9* z(XPlz#TvCrU_~8BJ$x%l-ZtClQb!? z)NO%L1w32QSRh3j*vI2LC?|lG1?AXxj>m5cKqZG#vb?-ua$4&az~S@hB$Gh*H`}QR ztSXM-%%CZDj1zpAu)M^J<*gZp9r20Im)VI3EIOQ;zNHocMsJ(MdjGU}3AwkEu`ztu z!E_2Af-hE7Ua~PsKUSQdg%YeT$bNK+$U8jYqwgBfW;l2UnVWTXL?B_Y?9wi}bummA zrr;WI*#{G}HP>(6+z<<7HE*RlJp+M)*%+mw=c0`C{6i5fT*wAXHmS}7NANhoeNo9( zu;w1+cqY{f<#IU(rh_^Emva$RS|qH&qQZ<0m&q%k)F{|^**rT@M(vOKI{UDD=>d7k z74?~>j|fWgfB>N43Q|~RW(>x_qZ~gW@AaqHlU#7H`gN=92({nL6jyci*17$dWk)sg z(rin%iUWX$t+lzCT&*H}O{H(GsVO12l72a%Yx=2~1aOP4F2)TCxpYcm6d9~3@vJnp z3D4fo0PhOiWQUqp2Tfch?x;tz$+*#lb&el4{c@kBcb9RFj;utyTUPO$f!%te;cA3H zmNC2S$2oT~T^XD!%)?AeuXhF!D!RL`VHN?XYL$a;LrexGooX}unfig!>ALgc z^{Jwpey3^T1I>#b#`p1q1tZ>rOmhO!(U}_gYdzh{v{aS$d45pTV&G(29lt-eW;i%5 z`5@o==C;VPj9;Aa4U-PE#FpRb9-%P|?Qy01(@zk~d^EkbF&ZElsycZd%6q*E*NGLL z35-XW)t@zlb@6>_MgMs&y7nZ{aO=o>}@zptwQ?+pB^U^cDfqe=32o7 zfA7it+Y?~;FvUsscHYEj+sO3g`75UzITv0kv~IZDNgS6rdcBnOKiTdbtPn8?)WU67 z2!s^cezmSXVgfZa9PdLh*8BEdM+q#Je~PxwbJ2x?uT*54;(i4oIYY~!HF1CiYE(NR$e2^CAl=8 z*E}9YeE+)GKYLYM8b673oCm4wNg_3;i$f>aKW`&qNZPSGrp)XYHDs){TdG(=DriQS z<=*MB@6(GB-#NGa?atJ=! zX_uo-V+#&dxZ4)#+{FEBZR_RQ9pIYi6&)10*9d+=l;SCdgWUeiR^=XBh-yFt1U&=3 zn-sv?8Ik;w=H$Uh0b|1rSd Z_p6;HJ$cVmfn%IRPup0lM#CZUe*i@}AwvKF diff --git a/.resources/3f0bdb77711bbb96a579e36b291df3c5c09439bcfc6c6bbe5d88bf90e0271e83 b/.resources/3f0bdb77711bbb96a579e36b291df3c5c09439bcfc6c6bbe5d88bf90e0271e83 deleted file mode 100644 index 6353d9a0..00000000 --- a/.resources/3f0bdb77711bbb96a579e36b291df3c5c09439bcfc6c6bbe5d88bf90e0271e83 +++ /dev/null @@ -1,390 +0,0 @@ -{ - "custom": { - "disconnected": true, - "plc": "value", - "priority": 0, - "priority_string": "No Active Alarms", - "searchId": "PLC01", - "state": 0, - "state_string": "Loading Not Allowed" - }, - "params": { - "directionLeft": false, - "forceFaultStatus": null, - "forceRunningStatus": null, - "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.priority": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "fallback": 0, - "inputType": "scalar", - "mappings": [ - { - "input": 0, - "output": 0 - }, - { - "input": 1, - "output": 0 - }, - { - "input": 2, - "output": 0 - }, - { - "input": 3, - "output": 3 - }, - { - "input": 4, - "output": 1 - }, - { - "input": 5, - "output": 1 - }, - { - "input": 6, - "output": 1 - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.priority_string": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "fallback": "Unknown", - "inputType": "scalar", - "mappings": [ - { - "input": 0, - "output": "No Active Alarms" - }, - { - "input": 1, - "output": "No Active Alarms" - }, - { - "input": 2, - "output": "No Active Alarms" - }, - { - "input": 3, - "output": "Low" - }, - { - "input": 4, - "output": "High" - }, - { - "input": 5, - "output": "High" - }, - { - "input": 6, - "output": "High" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - }, - "onChange": { - "enabled": null, - "script": "\tif self.custom.priority not in [1, 2, 3, 4, 5, 6, 0]:\n\t self.custom.priority_string \u003d \"Unknown\"" - }, - "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.state_string": { - "binding": { - "config": { - "expression": "case({view.custom.state},\r\n0, \"Loading Not Allowed\",\r\n1, \"Loading Allowed\",\r\n2, \"Running\",\r\n3, \"Full\",\r\n4, \"Communication Faulted\",\r\n5, \"Extendo Faulted\",\r\n6, \"Estopped\",\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": 20, - "width": 29 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "RunningStatus" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "position.rotate.angle": { - "binding": { - "config": { - "path": "view.params.directionLeft" - }, - "transforms": [ - { - "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", - "type": "expression" - } - ], - "type": "property" - } - }, - "props.elements[0].fill.paint": { - "binding": { - "config": { - "expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, 2, 3, 4, 5, 6,\r\n \"#c2c2c2\", \"#c9fcc0\", \"#00ff11\", \"#0000FF\",\r\n \"#FF0000\", \"#FF0000\", \"#FF0000\",\r\n \"#fff700\"\r\n )\r\n)\r\n" - }, - "type": "expr" - } - }, - "props.elements[1].fill.paint": { - "binding": { - "config": { - "expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, 2, 3, 4, 5, 6,\r\n \"#c2c2c2\", \"#c9fcc0\", \"#00ff11\", \"#0000FF\",\r\n \"#FF0000\", \"#FF0000\", \"#FF0000\",\r\n \"#fff700\"\r\n )\r\n)\r\n" - }, - "type": "expr" - } - }, - "props.elements[2].fill.paint": { - "binding": { - "config": { - "expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, 2, 3, 4, 5, 6,\r\n \"#c2c2c2\", \"#c9fcc0\", \"#00ff11\", \"#0000FF\",\r\n \"#FF0000\", \"#FF0000\", \"#FF0000\",\r\n \"#fff700\"\r\n )\r\n)\r\n" - }, - "type": "expr" - } - } - }, - "props": { - "elements": [ - { - "d": "M 50 0 L 65 0 L 80 30 L 65 60 L 50 60 Z", - "fill": {}, - "name": "path", - "stroke": { - "paint": "#4c4c4c", - "width": "2" - }, - "type": "path" - }, - { - "d": "M 45 0 L 25 0 L 25 30 L 25 60 L 45 60 Z", - "fill": {}, - "name": "path", - "stroke": { - "paint": "#4c4c4c", - "width": "2" - }, - "type": "path" - }, - { - "d": "M 0 0 L 20 0 L 20 30 L 20 60 L 0 60 Z", - "fill": {}, - "name": "path", - "stroke": { - "paint": "#4c4c4c", - "width": "2" - }, - "type": "path" - } - ], - "style": { - "overflow": "hidden" - }, - "viewBox": "-1.5 -1.5 73 63" - }, - "type": "ia.shapes.svg" - } - ], - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tsystem.perspective.openDock(\u0027Docked-East-Extendo\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, - "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/High" - }, - { - "input": 2, - "output": "Alarms-Styles/Medium" - }, - { - "input": 3, - "output": "Alarms-Styles/Low" - }, - { - "input": 4, - "output": "Alarms-Styles/Diagnostic" - } - ], - "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": { - "justify": "center" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/3f26209daf6701ddc1a20d82a4ad25882654d0b986785a901737dda1a60d5ecb b/.resources/3f26209daf6701ddc1a20d82a4ad25882654d0b986785a901737dda1a60d5ecb deleted file mode 100644 index d615c70f..00000000 --- a/.resources/3f26209daf6701ddc1a20d82a4ad25882654d0b986785a901737dda1a60d5ecb +++ /dev/null @@ -1,7 +0,0 @@ -{ - "base": { - "style": { - "color": "#CCCCFF" - } - } -} \ No newline at end of file diff --git a/.resources/3ff3629bce864627fc88714de83e2922482ccb172c03865e000e2e1ea90c6a86 b/.resources/3ff3629bce864627fc88714de83e2922482ccb172c03865e000e2e1ea90c6a86 deleted file mode 100644 index dc1e3968..00000000 --- a/.resources/3ff3629bce864627fc88714de83e2922482ccb172c03865e000e2e1ea90c6a86 +++ /dev/null @@ -1,237 +0,0 @@ -{ - "custom": { - "box_shadow": "0px 2px 4px rgba(0, 0, 40, 0.15)", - "expanded": true - }, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\tself.custom.expanded \u003d self.params.open_expanded\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "params": { - "open_expanded": true, - "params": {}, - "path": "Objects/Templates/EAM/Cards/Editable/Work Order Scheduling", - "show_box_shadow_on_expanded": true, - "title": "Card Title", - "useDefaultHeight": false, - "useDefaultWidth": false - }, - "propConfig": { - "custom.box_shadow": { - "binding": { - "config": { - "expression": "if(\r\n\t{view.params.show_box_shadow_on_expanded}\u0026\u0026{view.custom.expanded},\r\n\t\u00270px 2px 4px rgba(0, 0, 40, 0.15)\u0027,\r\n\t\u0027\u0027\r\n)" - }, - "type": "expr" - }, - "persistent": true - }, - "custom.expanded": { - "persistent": true - }, - "params.address": { - "paramDirection": "input", - "persistent": true - }, - "params.open_expanded": { - "paramDirection": "input", - "persistent": true - }, - "params.params": { - "paramDirection": "input", - "persistent": true - }, - "params.path": { - "paramDirection": "input", - "persistent": true - }, - "params.show_box_shadow_on_expanded": { - "paramDirection": "input", - "persistent": true - }, - "params.system": { - "paramDirection": "input", - "persistent": true - }, - "params.title": { - "paramDirection": "input", - "persistent": true - }, - "params.useDefaultHeight": { - "paramDirection": "input", - "persistent": true - }, - "params.useDefaultWidth": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 339, - "width": 369 - } - }, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.title" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Framework/Card/Title_transparent" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.custom.expanded \u003d not self.view.custom.expanded" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "propConfig": { - "props.image.icon.path": { - "binding": { - "config": { - "expression": "if({view.custom.expanded}, \u0027material/expand_less\u0027, \u0027material/expand_more\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": {} - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "24px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "EmbeddedView" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.custom.expanded" - }, - "type": "property" - } - }, - "props.params": { - "binding": { - "config": { - "path": "view.params.params" - }, - "overlayOptOut": true, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "path": "view.params.path" - }, - "overlayOptOut": true, - "type": "property" - } - }, - "props.useDefaultViewHeight": { - "binding": { - "config": { - "path": "view.params.useDefaultHeight" - }, - "type": "property" - } - }, - "props.useDefaultViewWidth": { - "binding": { - "config": { - "path": "view.params.useDefaultWidth" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Framework/Card/Embedded_transparent" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "root" - }, - "propConfig": { - "props.style.boxShadow": { - "binding": { - "config": { - "path": "view.custom.box_shadow" - }, - "type": "property" - } - } - }, - "props": { - "direction": "column", - "style": { - "classes": "Framework/Card/Card_transparent" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/bd20af4c0366c26f97408e6ea0ae03adefa91dcabf623966ac64f9fce738b517 b/.resources/409f36066cc41b03036fd841c896e97f27339e138573c6764b225210983dbdb2 similarity index 100% rename from .resources/bd20af4c0366c26f97408e6ea0ae03adefa91dcabf623966ac64f9fce738b517 rename to .resources/409f36066cc41b03036fd841c896e97f27339e138573c6764b225210983dbdb2 diff --git a/.resources/411226983512d9afc841b4fbd5a5cb76f72e6e96f069a5ca12afbc4f8ee640d4 b/.resources/411226983512d9afc841b4fbd5a5cb76f72e6e96f069a5ca12afbc4f8ee640d4 deleted file mode 100644 index f9f3846449883d9841e4aca5b0971c8361712947..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1360 zcmV-W1+V&vP)I5m_>l?GzPQSY&Ild zj0pyuu!m4VAu1HYQd-&sf>KZ+2`GUuw#PHQ_l^x_l(cwUBqI5H7?1Dxp6{OXoqNw2 z2iW~M_6VR4_;LK;5(&dF_+hhQHk;>TH1?K3X25oLcQIhfhCb;w5f6RPYXB>d;wa&! zz>bm$k+{rLA~{Hs#O-#Rgn-=eC$6g#4SGyr49Ega*(e^Ti^2v0ZmB`~Brkyz&(SXJNJofTe!kPypxfUMyg~l?m?DguLcEV|A zavts?7L$@6lu-v*jM|cb9dOLxYl8D_o z*SG7kl7DDN5!|I){Z9aqK!&|sjARAJ3FDH}vcjX-g*W7^u!!Q~+$-1Q1yZ)gGTo*U z<{3tP6luXy9-XRznT&5Fhg}|g{Gw4V$}81oh~*N_na{tB$daZsKYRv~9#u#0utyOo zQiGdTWk$YI%S~k88yv4xq@Vrln>tfnWE5xq*Rjyxm}L-HhxZ(Ak=jc|v8C3{N1fj% zWJXDNy7{ z(#6rCp^6G!Lu;>65~gT<*qq0e>V|z33GO65+({(94n=yhsn6h4+?~-%15cgi7qd@) zc#^g01SdC>@a^v;t_moS8_%k1vWmrQ0f(JiVN4apmo-##`QrIUW6_s*D|VkmGL~>d zirO}3kVu|2>GwWEt?^z{oqA+uF+C|LG9>&`XzE~(vBCV~c#omXG{o$bK*t?HY(0?{ z6!rI5N-}Hibr}qu!xQ~xkx0}zy0pIfbFxq<;fsw!3k)ed3kEArCX?x`Q_mI#gn|S~ z>Fq5CIcX^qtF5EGwJ|CqC>G zWt|J;uHhsoj0{A=5X-PxBh&Yi&NnSO#ap^NSY`3;`jS+UI7!#i2L}n%LXZT_oOf_g z<`2N>goZuqI(?Rx@aXPb?IJR2qY64j#GtBr;y`yt^*pd;K%@BUdIgMIwW;3*niodd zMuBR0Y)F#>?@6$Cq}o;VjOy;(o$UYcw&dBQQcbIiagWz$3eWc>*TT_vH!a4X6w%?P zfELkp-!G52G3)O3K!wAO?7#CLhdpBY13&&1M-jJoisZ-ffnTKe0Dh6)1N;NTP39LE S9k_=800001&yWv diff --git a/.resources/0c8d6468597c70598785fa9e88a35fefe11eb8940df242b1a89d985446a85293 b/.resources/4147487b97a00b3340d2e2dd7084de0499295fe5a8c42da87bcfe4656a89eeb9 similarity index 100% rename from .resources/0c8d6468597c70598785fa9e88a35fefe11eb8940df242b1a89d985446a85293 rename to .resources/4147487b97a00b3340d2e2dd7084de0499295fe5a8c42da87bcfe4656a89eeb9 diff --git a/.resources/41d630adf5d9b6a7de227ea4a84f6074b2935cf89990682111c12cde244fa1f5 b/.resources/41d630adf5d9b6a7de227ea4a84f6074b2935cf89990682111c12cde244fa1f5 deleted file mode 100644 index bb1deaa9..00000000 --- a/.resources/41d630adf5d9b6a7de227ea4a84f6074b2935cf89990682111c12cde244fa1f5 +++ /dev/null @@ -1,497 +0,0 @@ -{ - "custom": { - "alarm_message": null, - "covert_mode": true, - "disconnected": false, - "display_icon": true, - "error": false, - "isMatch": 0, - "plc": "value", - "priority": 0, - "priority_string": "No active alarms", - "searchId": "PLC01", - "state": 5 - }, - "params": { - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.alarm_message": { - "persistent": true - }, - "custom.covert_mode": { - "binding": { - "config": { - "path": "this.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\r\n\t\t0, {session.custom.alarm_filter.show_safety},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_safety},\r\n\t\t4, {session.custom.alarm_filter.show_safety},\r\n\t\t5, {session.custom.alarm_filter.show_safety},\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.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)\r\n", - "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 - }, - "params.forceFaultStatus": { - "paramDirection": "input", - "persistent": true - }, - "params.forceRunningStatus": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps": { - "paramDirection": "inout", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 10, - "width": 40 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Light_Curtain", - "tooltip": { - "style": { - "fontSize": 16 - } - } - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "props.elements[0].fill.paint": { - "binding": { - "config": { - "expression": "\u0027#AAAAAA\u0027" - }, - "transforms": [ - { - "expression": "if({view.custom.display_icon}\u0026\u0026 {view.custom.isMatch}\u003d0,{value},{value}+\u002700\u0027)", - "type": "expression" - } - ], - "type": "expr" - } - }, - "props.elements[1].stroke.paint": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case({value},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state1},\r\n3,{session.custom.colours.state1},\r\n4,{session.custom.colours.state1},\r\n{session.custom.colours.state5}\r\n)", - "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": [ - { - "d": "m 32.5,0 h 8 v 8 h -8 z m -32,0 h 8 v 8 h -8 z", - "fill": {}, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1 - }, - "type": "path" - }, - { - "d": "m 9,4 c 7.666668,0 15.333332,0 23,0", - "name": "path", - "stroke": { - "width": 3 - }, - "type": "path" - } - ], - "style": {}, - "viewBox": "-0.5 -0.5 42 9" - }, - "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\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown\")" - }, - "type": "expr" - } - }, - "meta.visible": { - "binding": { - "config": { - "path": "view.custom.display_icon" - }, - "type": "property" - } - } - }, - "props": { - "aspectRatio": "40:10", - "mode": "percent", - "style": { - "cursor": "pointer" - } - }, - "type": "ia.container.coord" - } -} \ No newline at end of file diff --git a/.resources/41e4948cdb5cbf9d4cfe3c67d9928e68da77677fded40c1041365032c445fbbe b/.resources/41e4948cdb5cbf9d4cfe3c67d9928e68da77677fded40c1041365032c445fbbe deleted file mode 100644 index 8f2274d9..00000000 --- a/.resources/41e4948cdb5cbf9d4cfe3c67d9928e68da77677fded40c1041365032c445fbbe +++ /dev/null @@ -1,99 +0,0 @@ -import datetime -import hashlib -import hmac - -try: - from urllib.parse import quote_plus -except ImportError: - from urllib import quote_plus - - -def sign(key, msg): - return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest() - - -def getSignatureKey(key, dateStamp, regionName, serviceName): - kDate = sign(("AWS4" + key).encode("utf-8"), dateStamp) - kRegion = sign(kDate, regionName) - kService = sign(kRegion, serviceName) - kSigning = sign(kService, "aws4_request") - return kSigning - - -def build_querystring(access_key, session_key, algorithm, amz_date, credential_scope): - query_strings = { - "X-Amz-Algorithm": algorithm, - "X-Amz-Credential": quote_plus(access_key + "/" + credential_scope), - "X-Amz-Date": amz_date, - #"X-Amz-Security-Token": quote_plus(session_key), - "X-Amz-SignedHeaders": "host", - } - keys = list(query_strings.keys()) - keys.sort() - query = [] - for key in keys: - query.append("{}={}".format(key, query_strings[key])) - - canonical_query_string = "&".join( - query - #["{}={}".format(key, value) for key, value in query_strings.items()] - ) - return canonical_query_string - - -def make_websocket_connection(api_id, region, stage, credentials): - method = "GET" - service = "execute-api" - host = "{}.{}.{}.amazonaws.com".format(api_id, service, region) - canonical_uri = "/{}".format(stage) - access_key = credentials["AccessKey"] - secret_key = credentials["SecretKey"] - session_key = credentials["SessionKey"] - now = datetime.datetime.utcnow() - - amz_date = now.strftime("%Y%m%dT%H%M%SZ") - datestamp = now.strftime("%Y%m%d") - canonical_headers = "host:" + host + "\n" - signed_headers = "host" - algorithm = "AWS4-HMAC-SHA256" - credential_scope = "/".join([datestamp, region, service, "aws4_request"]) - - canonical_querystring = build_querystring( - access_key, session_key, algorithm, amz_date, credential_scope - ) - payload_hash = hashlib.sha256(("").encode("utf-8")).hexdigest() - canonical_request = "\n".join( - [ - method, - canonical_uri, - "", - #canonical_querystring, - canonical_headers, - signed_headers, - payload_hash, - ] - ) - string_to_sign = "\n".join( - [ - algorithm, - amz_date, - credential_scope, - hashlib.sha256(canonical_request.encode("utf-8")).hexdigest(), - ] - ) - signing_key = getSignatureKey(secret_key, datestamp, region, service) - signature = hmac.new( - signing_key, string_to_sign.encode("utf-8"), hashlib.sha256 - ).hexdigest() - canonical_querystring += "&X-Amz-Signature=" + signature - request_url = "wss://{}/{}".format(host, stage) - auth_header = algorithm + " Credential=" + access_key + "/" + credential_scope + ", SignedHeaders=" + signed_headers + ", Signature=" + signature - #print('-H "Authorization":"' + auth_header +'" -H "X-Amz-Date":"' + amz_date + '" -H "X-Amz-Security-Token":"' + session_key + '" ') - request_headers = { - "Authorization":auth_header, - "X-Amz-Date": amz_date, - "X-Amz-Security-Token": session_key - } - return request_url, request_headers - - diff --git a/.resources/42306e544640e2308599574305e6833e2d18efadb0bfcd1a390baf9f4de4d3a1 b/.resources/42306e544640e2308599574305e6833e2d18efadb0bfcd1a390baf9f4de4d3a1 deleted file mode 100644 index 982f4b34..00000000 --- a/.resources/42306e544640e2308599574305e6833e2d18efadb0bfcd1a390baf9f4de4d3a1 +++ /dev/null @@ -1,13 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FAFAFA", - "borderColor": "#D5D5D5", - "borderStyle": "solid", - "borderWidth": "1px", - "borderRadius": "4px", - "boxShadow": "0px 2px 4px rgba(0, 0, 40, 0.15)", - "margin": "5px" - } - } -} \ No newline at end of file diff --git a/.resources/4316dc0dba99c7fa1cb9c0eccbfb54659cbc263cb54cbbad874dd7a6d364a016 b/.resources/4316dc0dba99c7fa1cb9c0eccbfb54659cbc263cb54cbbad874dd7a6d364a016 deleted file mode 100644 index 92691b5a..00000000 --- a/.resources/4316dc0dba99c7fa1cb9c0eccbfb54659cbc263cb54cbbad874dd7a6d364a016 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#007DFA", - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontWeight": "bold" - } - } -} \ No newline at end of file diff --git a/.resources/4335092f698e1cfc4b7fd1be0740d64239b2a7c1b2afbfb3b1fbaed0b6af4df2 b/.resources/4335092f698e1cfc4b7fd1be0740d64239b2a7c1b2afbfb3b1fbaed0b6af4df2 deleted file mode 100644 index 8f56c7d1..00000000 --- a/.resources/4335092f698e1cfc4b7fd1be0740d64239b2a7c1b2afbfb3b1fbaed0b6af4df2 +++ /dev/null @@ -1,123 +0,0 @@ -{ - "custom": {}, - "params": { - "breakpointLarge": 768, - "breakpointMedium": 480, - "params": {}, - "path": "Header/Header" - }, - "propConfig": { - "params.breakpointLarge": { - "paramDirection": "input", - "persistent": true - }, - "params.breakpointMedium": { - "paramDirection": "input", - "persistent": true - }, - "params.params": { - "paramDirection": "input", - "persistent": true - }, - "params.path": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 58, - "width": 818 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Large" - }, - "position": { - "size": "large" - }, - "propConfig": { - "props.params.params": { - "binding": { - "config": { - "path": "view.params.params" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "path": "view.params.path" - }, - "type": "property" - } - } - }, - "props": { - "params": { - "size": "large" - } - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Small" - }, - "propConfig": { - "props.params.breakpoint": { - "binding": { - "config": { - "path": "view.params.breakpointMedium" - }, - "type": "property" - } - }, - "props.params.params": { - "binding": { - "config": { - "path": "view.params.params" - }, - "type": "property" - } - }, - "props.params.path": { - "binding": { - "config": { - "path": "view.params.path" - }, - "type": "property" - } - } - }, - "props": { - "path": "Framework/Breakpoint Embedded" - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "root" - }, - "propConfig": { - "props.breakpoint": { - "binding": { - "config": { - "path": "view.params.breakpointLarge" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "backgroundColor": "#2B2B2B" - } - }, - "type": "ia.container.breakpt" - } -} \ No newline at end of file diff --git a/.resources/dfa3eadc240ba19b08c88e72b63ac13bf9ab6347002353d5ca3697c11e9dcd4c b/.resources/43e7c6ec5e11ecaa814512947f55057e1c686afde527057bcbe7d8c5c2ba0263 similarity index 100% rename from .resources/dfa3eadc240ba19b08c88e72b63ac13bf9ab6347002353d5ca3697c11e9dcd4c rename to .resources/43e7c6ec5e11ecaa814512947f55057e1c686afde527057bcbe7d8c5c2ba0263 diff --git a/.resources/43ea278e19f3e4b3d493d82765b55577f65eaf4692b594e79fca840fdfaaee0e b/.resources/43ea278e19f3e4b3d493d82765b55577f65eaf4692b594e79fca840fdfaaee0e deleted file mode 100644 index 60e320df15cf9129492bbcfc60f41a4dc0c5ad48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35668 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≷ePxlmmH{eej8q2KiRW&Wn&4r504s-Mb7_o@t)%X}3*GOxh=` z^x4(sI=~*fzX&?4X+0d3pcLG(l|cL!KZIS#HX=NKaVHkGKKz>Z>QKQ+z z*zwS|6^0OY7}+4mxDG(=#IV6P7&ou2vXZ${Qdpq?*M~zDGKs8OsXqCaO4eZN1UFDi ziECTA*gOZ!^T!2U2s7hWisAFwWA8YbB}Ldw`YsPUVrVmHWn;FyEy;$59|_y?1btfU z5NPeA6u#?ha>`WtJ-~`JWw28IGF!eqE`Q1Dx-i7{$U(C2XZMV_kdm5JT2A0zb^VPa zy`_^Huy$r*eXd=bF$GI1|MUK8?uITFtp8mKgSCYtkERP_O?pJ6_uwAY80)3q!U z!os{q>hJ?al22Q~8zoOy1yl$S40^vhcCRn65HyTu35#C7-0?{n_0gG)&+XvxTECT9 zTX8L(HPmfzxRcmh-h*nVOt)k%)fv+lpfa6+b6i@nKANxOI30Ig_V{8uRVszEJsGMa ze&(f$jv9i9BVS1@I*>L0r+x{@a4qBg8LM2?v>(7@FX^rPvR6TO7~_Wv_WLc9&@J8L zM|Wd2egvF%yaVc`jo#lfsd$TK+Kjl5TtQ`uj9?^fFFiaTti&ZOV|m>QB@`T#ib|X% zyC&61r39c#vI|}-vAjhJ91c667pd$`*FSpALOP0XIBs&{CZcj&_=Vm3J!8oaC!P{u z);Dtaa5q=zB<;-hM6^6(P$Kr2-Vd&PxrydIJIS3)!l(yv*qiJf)!n+xk!Y!iI)zo3VPEFne@~xZH!#k+KeNH$73?j_ONSOF@mJw;o0G3CBaL|Vtvxe?rOTsK) zk0%d3yIC#r`cE9gSv9oB1N_%qmH%NFrun7 zf{&$$l{8LwSNQUkEhu>^i{bIU-2ydPkYlX3IqP_5n;6U(PpFW*%POl5cT=-fWOlpz z(B|Z9(3CzAtt?g);|m|Jd-OsvWJbwBDf#snk-30MB5rN?j9az2Ti?_@ur^Ps$`z6G zS|=QGUcAye_;u>sbPqbyXgAh+4@yNvL*XJqC8hK=Y$iQ03{T?rDFg1L5|809&FK$I z33&FW&nyB3Og%xPLoZy}1A~PFq~N+up`Yh7qWH(_H?F+krUW&;Wy%25iyOpw`l+ng zq@;D!Y}4|*Lu!wO<`s1~bw=zatmb0KgD6mtKpP#YSq*(?)6G)<<$`~iJ3Ce|@iLlk z8PNSZs9VFaSvzdPv%e*iRA)j9Bc7>iT#m#OACoaCMidMbu+TupQoPNc(C`dkjF67u ze0?`+1Ie;>KSo!-y+T^Y$UFHTE!Jc%{h8jI`^B{LQeP6Em75NtE1a6|#!N+}8&Jzd z6|HbDY=-vybD5-PmG7>i!q@Ug357of;){6?B$dTLwXc+ z`*N%2jloy@Z5mYQ7~wa=frkk##M(3Lq+@xQ=Z&`nN)hnYKiNt)tjMa`AWdV5GnU%*6ER9TSH zcWz~qeP{IwJueH*CKUV55@9`$`*hH+9PXuhA|z~Ab&aJibvnE|UWk)vV7vYU!-936 zscbzF_0Wk*&g_l%gWHOi6FNnFV;PL1M6J{Dv_%iteW>})F#l(-^=BI<%N^{z6cD$5 z#SE?+>kGxB5~7|06AE|DwMyWK%$9{V-A*t4L~nNXm(P=v{+j0DXa32ITYRc$9#FPw zA%nET`t$J>I~Ofll(gQdng8O&rPF6FNwa&s?yA6-Lg0SSuC7i6mE#P-F3Z76m@W!l zsOHGoJht$+N$F4n%<-?!GSS~2m~$&OG|;PaCdhp?i6>I!oeL1l!LpwI~-hl`DWgC=gs@^ zvXf+!&1AC4Zg#ViC>14XR3suK004k0EAv(DqjvttjR?>m~!s+NYyo0(l5EV6uHM=+#fW8BGNsdQGVBSElr5q^2%cR z!2fQF%@|OZMv1@&ZwDz_9n+ER9{7zOu3c&1X_U2xJW5hhGGs3JD>^#*!@~n*6e%g``A5^k z-F;zkaTMi11(_o&Jv}`siGs5=K`&wX&!0aT85xHQ49*@A0|S34NeJ>C--S9|5pzXQ zk&#Vw37MEnRMenb>_U!@*|>0|r1~QfkhZtKBKUY?sa6yfk(5P708n6RwEhdI*0EWP z-wxlTWtoph=s#GK<+C$9LGi&jdIRz77n zmmCWRn~-C`_g`pw;G+2HDULrsN?ngucDoIapZt;D{AMOuWHtqp`{hv6DymQcz;8OY6*$!Xnl$BR(6+3t38u|9dZ zmUuXHzG}4A!RxpWE*MZ8ud!2Pu7Qx)+gn-Lh^nZk|4K~#O-<|P(kx_^shg?W=3pxm z^{Y`#h?kv5L_9a6HO%FJ83`>uhizopBKq{t2n$3PjwRa?Qr)1 zwx=DQ6}6vn0EeY$;}rjDz@;7pZNCZIqN!HC1m$racC4RYCyIg;9z=lz)o6TWd$dEKK-!d+Y0QF!q*9=GA?9{8UhOct4VSxj65)G<7BJ*F^y|zuA7+ z6x_JE_?_$Vp_OkQ@&1n+tF)W86|0HrJ&Zlw9Ll*NsconoEfw$10G1w0TY)Ze;z7A;fCN8C`J`lp_{FkZeiGo3Ykkc5$kO}obn znfbS(d7O>v=WWk%j|c{PJMVM%A+Y{2j(u6(Bg2oo7Ar=R8M%zYuMnh+X1H3JPzrsz zh6oBl>aze`-AzoV-XT<3DG7N8nio2NA^@af1(#16NCcRHT0#+{No595!Km=g5{f*N z`11k+T4na3Ung-N$6p-tF$|d^@JGv2`sG)*%Z{&P5QK=J;=|PuLxu}Yvf$Uywv;qA zpmm@w?4UNy=plD_S9UxEa&U@K`F8BUf|*VN5GxcnvY0j7Uj(RQ4Gzl?DhEe$FM-e& zsw<9A?Fxe+M}q!F3@x!%cwN7Xty4P)54i2 zj`P19)lP`awApE&#Ycp(68GWWf!unWUT0DrG@J?m`p@1g8b?Y^%)MI+ zqSjU@P|v6Kv|uF$QhD)*(R>s3zeq4`+vE{)hE&YLfH~TZqVg2-c*j7n7XqueCsDry z!YDaYi5m1a55nx1?3($?{{nxF!3H9Vt8xBMIa;_l<9tk*Wr8FG=Zd}4Sq`=-3^w)W z8}8Rr!{e4WjpyP`ql66+>L*Yj-{k|YI(seBv1{M;&`dq zKs`N-a{0_C`MS68hn*RJ2EW!@Xcplxc_c?!L>Br|wNQC5^$Zt1O8T8Xb7yAf;YrJk zN>7t}DZZ~Ox<4;M06{6or++uFuLmR~<$?GfeLqt*+*DwNypl)oJT%mV5N2pQue|8qm&V=*3Z&1G zz0wqp6c}gs&@Y|6h72#hK*6qQ6Yi(?_3+Dxs*BC?QnkB*@n4rL+G_&WE9c3K4ytW_ z&V$;Q)$h-9V0dB1fM?@<<zF78b8}N_*X^WxN~a< z?apU=+~4SVa5^K28)E(~NmBm=`6=#=rqhnZq>pM?3IP+XAlC(hW=4b`h&TRqS04Iv zr&i{Ew)XC>I%>Pqn>5V0)=9ZnDGM(@x3l$@c|MIv)_IN`4 zt^1W|?H$j63|etKzlIb9QU%(>o|ER6;uTv2#xRrnafZb(B_yFRoRk^`ws>#vi+F10 z8hY+SlZYTrS`0+jIBG*xr_iEbFopXh8^?*pVDv5NvPtEV6Obb98sww%%Pp#sfJFE4 z03Io=sJ)8-1M2uSo;!F41_0sS7bbK8|Kz~kATcf?$|fS+$X!o05+VOjQ)-z;WPt@X zTh9p;10h>Cr(6AjO49HP>x!o*g;UG2g3h08Y>W5JW+68~uQnXWjawrJu;WyiMIIjh zY6E%3-wUqTFTDhRQbrk978zVZZ9Ze_C0FuowPZhY2E-;S1EQjk!(ve`rcz*vx=-_* zq5>oz<(DA&!-2%bh_y@+j@AGmWPv}CjalJts>j8NAxcDPk^>Mc9WvN1Xkn)0gJle% zPt?kwA?)es-DoF<-EB!WAr$*HmAz*-#~YefPfSotNG;39QVWV;Ts=a<;Sy3|on6G0 z(8AV)Rt{Y2t2W-SNJLnV%M7te`Oqhgg42}-X2a_1QPNcFqSDfOlk6Pz1r*T33KH3p zycM}9NWzDE36zhbB-Et8gTO35H&k{60K8DGGE(M?O9E0{u1d=A7k7nyn?;&c{|hjB zPim3EL+l`pgTsiWEjAus$;5)wrP!>cUP~Pt_=V}%CJ$BM=^uf3V|e1<yIkeG+r`v$DCil}Qo!m|^z`Yr^2wzUvIB)B z)2cIcUKAyXrWH&2CyL3Y85;P^snbt{vxHQa0`zR5$7{W=aBNd@XacJhpv2vY5P~Iz zIKf7`Dd$^pBA!N;JtUS?tEQNrme@fRG6l3N?7Y_4P^Hqe)#U~Fcb zINp%t^ZYJ2TSfT6EOAwuupMS{Q9_b(w`b@Lf?$||t3n~ktA6||Fu!LhG~PwsmK#>9gdfF~QfaO&mUCxUulQ+9_FfiT%X#%a#ooV}!sTfKHfRM22A~K3O=3 z79bjmu278ei|Inu_#v8FT6VkY=3geEjdvTm_OQuzudV))<^L*q<*&rIlZ z+|O6R4||~fJK+a$HS1qdiBUGM{Tv84PC5YkJ#ifr6Rgm8jA-)gZ`26=DhS_G2J~}9 z2?|j|O0}jIp!8Pgxmtqml~mNx)f&a5&}1e{6B6OoW=gfWHrfHK4{F1fephm=B;A0? z+)&(Q$3?A^$7;aEScuP06D6#etBBteCy%yxF=)X~1yjRe2v*!R4JbG>n{?OQfX$?W z4XRl=kDqz^h}UYbs)T>`>BAn~BP}I_P>zSKY1RIe}h1X8k zqSJE-$-KM@oc9A3ro~UC1{#!*a!8jF?e%`ZFw_1_iw`&Fha44(>ua?SUp)7XCT#=_ zzu{9sZc$}e4AZg&DCz0?<-ylG97x|vJfGZ!n6c3j2Pg}#ujr6W5d|p(!b64g|*9?r|t9TOC-Y%%?1dMxo3zG;`^Ue@(*CH#+M*S^u&nzPiPP;mgVw&!i z0c#yI>Y{STCh^E6u^hg7HK89Hax_K=FoQ`bg}^E1??Uac?3H0H!PDPLctZ6jV^~PG zrhc$m_GLx*Ds1NQtg5areKUA@1iZiGTf7(H}0uWD~QTiXwrtn3%tEW0_s@QTZWhsyt^Axv;pW*#74~N_;1W= z*F4du$)^0e(=-+885=_6c6so7uy6*W|p-E%r5 zas6QfZm%64`Lp|J`TWU-H;1mr`Enz6+ccaVeHr8G2Ao()9)_Jn8M^t%LU+|2vs<^T ze!*|`;X3XUwU+j3I=UgC+y!q)O)a7PLJy(wLJJyT&MzU-pbgp6NN7j2O`=6Du7NqN zT&r><`FB3;&~x}0Zv#clV{dxR*PI;uXQ$}*Z&FjIG9f3I_Q9PrW@6EBQHe+H(0>tN zUJQTq?L!Q*uq!)+cy)fbZ9$CYgpe>_XIFA%7XDxvnjc!iqR|1b4%Y$nS4KOZ|4F}! zZbtWzVxardbbG4$isvHlAm>Gi3evt8ORh~bUz}ihfM-b;*BR`e%tnW!p?GRxsT}0E z*-XMh!;IPl9FLvmmJe|!v#fu6*IMoq7PxuKrUhLjji)D$ZPnNiRHX@C6(e|0Y zKAzv`u6pazetAhD*Ul9UxC<6|o+9&eR&vRgGNzmy3m(Cpx>cMDBFs1#r(X+>ECf{i};91vx8>C#s`w0wU;@c-)g|R#rrLIfeX4vJF(nuuy|%h~K!UBeg*P zj+XLHIA%@28dqh=;U*hF6gV$nhgB#aJn6})uZvTELYY;p(mX}tEys2$ zRy8xV=J*OF3Cf>MxJ{{J!}~E1rQ=5;7|2AKi>$t#hNT&B$`9V1h;gg>sdLwrj&Uwp zI>BPw((<>pEB_KuRAsd8FZF~QnlR!LbxQ2WN=D3@lr~`miG5*0R#yLs=nA(=d3!fD zra9z_m**)z$m@w$qdZzpEFG;^11#x{88CC?%T9dzOv)**fjuuhxr0=L)535Qb2rX3 zE$dd=5-@cplb5ezG;JHLwI?$f`TKfmb@=q&fv#5g=AFIg*gc$v=?7l=gcT=D+ghY+aRNS*D_fp8;wqj3AAMdZn?*l$IHuzC6t^{dS$Pbsb zm6cY4ZpM=ql-NT{P2gYhjiKf?hl8&j&COu;-WoIM7i6gSiR5#)Ghq*|rl_}9(z2yO zy&`MsofI2$o1A5fmR*v5-wVAyl*9_{&&D5j94QL6&)Nb>%$`^Nma(^1-GX4@wQB-QT2|vCdEdN3H!%-<5}lC+_o~Mra#O& z4+}o)_wM(M9yup`8D*9-pF6Y~jxa=F5CB!Khlc6Eo|&NwSpRMbG&W~6zNzIekUOp) z*tk-&44^$Wf>Nk!V4mH0YqN`Cio*dnB*6rc2K#PgA^4K{Tftn)!G1 zcRc%+=QBj-SUgJ?XN?oUMkV259lMx2+ETJ+85?)Sn!7AqIjK{wc|CR*Z||3pen-*o zFZCWGUYi5{dP=)5{5DwQq^0}{&R22cz7GmzIW_CxoU#pD7Aey3-!{}Q`n^=oVL2TP z$uVrkW)if#Sr^rpC{71SZX{JF`UW+CX;zi8R5qKw?dx%hG`+)4^Ck;)haEGt_0R!R zM&1A_TTrT{AnrV9Lf8WDzOcR7dF(DzfhB^NPtZCkdGwPH{GMxJNKv7dq=3&zT9TV; zK|5Db=-4{_XptAEBqOoD$Na)!X-}U;Rvklag@9vzp|>)4NPEgFhF7abpqM`G`^Nh{ za|Q82jXw6tWsmdj!T4aw=;4druP2AU;1xBETe))4*aQX}#yKFhxFxP>1R)Abo{(b{fOQv1a0)sKD7AKi-ggnOt;5`3UP>wIBsPz zgbD)6k?kzcG)z<&ckojx!&9N+mN!!);K)JkmZ~DF5}YRDNQxFaoSL4?ns%fVuoem~fU| zQsAehRI7Sr6f`m_C7}@KT<-}H!70(S;*vydV4dZky$n5iU&62D&dc6XOoh`J2)C%Q zcZy3y(_m_JB%6*AP9fjhJ5(I%*xwoYIup0|>R$7ymNZ=Kzpv1Zw)QP-3jNu}sk4z{ zV?zBgqu$AQ;C!nBmqMw3V%eSB$u_1~VzT#{A)T+~oSoAuplA0S4Yu9jwRh;=R9i$I zN+Bx}Dg+IxHx{c0H5CDs45;!Hc^fk^lOJcYbu>Q=iI{;0n@h&Y4mP<&4*F&<29DFD zq%oVbwT0CW zm6hho3$~Dtnrr3LEX>L-bl#*g9CQrl)5bT*Ccqg-YG#mB2PU69$=mn`0qXH_2=hmlfwYR8udeg&f7S57sw6qQ~`Yr5!?o&8r z$566af)LI_VghH*#wd9!AqEGb=IaA$PIMNXlOf7ZM2DfXdrDo&W;I7H(Gg473dU zWgj$q`Y{Hkzq>PpU(-iZY(ISxYM-+6Sd~sS9~Bnrr0sZt4I8%5)_RX^!n#t_J-{Bo z@5CTG8a26|^Y}hpV8>AJn%TIwFB9OvSap2O$`YT4ZE8Jaj;tXR#DXHVhw z_Ms`;7;JXUWbuiLNmpo`XmBt29fp03le@_U1$X%8AqyHdtRe)5+5aik*r=|jO-mhz zRiaRNV5`zYE*K}DEGg)>Nb*lpy~$pg$&7J!&1q9d>GlT$fdb`7J#?PUU|Nt^5&u~4 zCvL(N5kjklzzk}jY3~-BE{VeC--MBu4jXP-@8dsV?(@NP86(z(7t^0bzqvQ>fx|^9 zZ6bYCE1%o&_O^n3&7BPb$zB8U@9HA8s-&i@=MnU3h{UTjDgPh0@Ba{q7At*qy{ljQ zxKnzle$7{olM)1g+F+t>{t2zD1zj(KXAjWmY~F-D0z0SVC#(teGp;_!NP1CX#3Q6^ zJjRZRrg&LD#)wv-=w?p@PRt4dj4#Ag&R+j`A+k>7?iX1a6FgqNj_n~(!s#0;!LjnQ z%kzARl2#g0^AE9{eg?&~I~AADTi>^UN%@@W4^sC!ci*~Lqe~|?*57^`fv;V zel+m8<`Qa?vlTZI+SY!_8PIyBkzQnYITU60AZPW(Tgk+Yz1-^}60rF(zcJHF_>-r& zi>#!o?DH?ZdVxQip_dI-t3j3RL$Ou(H?2%)cLXGwRn={;5&LLI#GH#~m)`%zFZ$m| zFLU^L=2J*B*EQO>1*n?Z3to+Y==h|*oT36;R9>6E2ViHR@$=d}>9zKXhcW)%CEaeO!$VGI zZz`?PrCz)VIotL+CoJclmB&bpi<`5TZdT+`g7#N(F3*|2W2P;uGzzmg?r#(+T1lK* zDf;m`QwCG0-8XBS>#r!~9vs_SQLAJSb5t$_m|X;7hBT5lwRU$G0G0jxcF8P>b1xxl zV|QO{PXkSH22*`TZHSDnAJ`7s>^EjxtL~@b*4t)D+FWbHUOPjlLGLau@H*v1;2%z& za8f96%71qp6_-j$L?#m^B+C5#DB*HgzY0Ua{D3=o{>8?})ZGU8WZtAl|Lq*E@UI>5 zx6@5}kH8FL<$GCaXL$dAwCv;IDSQy++)AjWM&SGbT1;k{UQ-*)ZZwaF7^R*fV&lph z)Ziq$A01f!5`-80hpT3a)Ag@joy$ByN*dzG=72y984XPmK$G;&= zjd$hs598O5N$G0eZelDi0wZ`l0z=EjNmXi6GX@|&&%HX^Rxa=wl2r{&3E@49U;LY(q6$%Bm^KQnvGHu?umOd7|=6x%HJVyG!PM>d`P zAiFhxc4^g{rdE;n{8#SKn?#t4>`CaYn|_V#qy0U|k41C7WoiTbs1fzP0I)wqj$?Tb za%Ddkdr#iSkT&^v;PGWNq7abynfm7k4jvG(^ZnT*H-G0DG;)i%``G$UsZmn4MeaRI zp4{cc>ltkL45$GsO=}a`?`|UtW)D;4uU!!j^9wA|S+KXBiFFni6@s9m2G`1_is9&6 z@OsnWd~AmY4!;73&8%{k!G>j+*~2)P$;0@C-{h5ZA8qO4s7XB!nQh^@VJ#@C=m0H0 zB)v!)9eDQW>Aq!#jVyh=Q{u8~(YRFm5|7GjZ}h`_TWiCa$Kk^v4>-KN1$jNfx%<1a zurL`*zR}Kqs|!ox@^b|l@J;(KM&h!svotqnL5Jt7pW{qX4SZ(w|Q>$-&c7&|a1rk;+3gouIG^f5bBS(F3GnpZnumVi4 z->|o=0~-YXUI7itF^SPpboJkCw?FzyikFtKSBy=c5ji zOZk;^Ou1bq5@*Yb{Bmq9p7nLE4z#+wTFnpzk}aD_q6tSqOCJA-HT;IPI9gLu z5~6?@p_&DR1dif+ER6t912=^YeR?>z1uQnTf9D7>( z8r1R`{_-6DGTo_cF5`4n>Yb*!pscH^G|OgU*56dKx&;XOOU;LZvJZUN2%rR`c9vj1 zW=(16vePK(6=d-MO=apoTAlk`1eq)vC!Ipr+xqq~1o6Xu{1X2_=->G;jX&94^lp;= zU*U-V+NHTlq4s}9d+6RxyMJa|W>XfNGK2Z!$~$ZMF4$V31*FBa`E`#bZw||h<0$_* zSh!$y*fL~un4fT!SxqR-Z4!{+4>=(n@D*O9=X+5$W=Xww-?(CUfKc z?z2fPYdW2BKBk2oV9Nu5ZIv=rXta(08jrr8JRc3{x?yyT;qnP6p_cn@7G5lbRu&+> z)Kx9Wby7RoC=7bY`2UW++s~8v+(VzSs{^Xw3JX<%ozBuLHxGMdh(U0e-pXKTwAfs^ySp@X?EA1}=T`GVq@Qe< z^TTwvq1$+~b{*b@W8qgrD-DUrx2m%YZjX!{g3H9K;HHG*@19pvL);r1BF#`H@XB3X z3TLOs7YCRu_WU!)=ck7}%Z3Kij%-%3=uQ3AOPv$7ZyO@r_Dbrx`X7(6u!(Xs^)kPw z{dBB`ztUA_dHM}5D!n2;>Q}{>jx@wUleRyVS3kGY*14HcSV+Dst0X3WSzVi1nF-`? z>wF6tTRhZNj2FD0J_alXo=0qCkzysfUCpI&BUi8OYzn+7iQTT1z7y+j>TvY=H<*IJ zdeQivk>&jR)f{Q6{rcu@e?V029xf>lR;wJE$pU+cN{a zHc)k?uHfZ0xaxDUW9`RjLPuYoEf)=v5(`;ubKup6C<~~o3E!Dw3~i;h3aW{Lm}8n*0@Aa@-ULg zuwJN_?u%m?7d$R$e;4ef`U*IgZSeFI^E`Hn$O7>H`Q_w&4gXqvE}GfG(+9SDUoG22 z#bOnCeE$s$h=W>{6KAy29QL(X3Yw_3b9)g`0>OGIB5rJ`kVB~4HI8N-3r7;gg|dlo zI(jTRZ2wVu@E*c?(P=p5<*0W!Bv<#};5J~^r`#!vJ|8hb9tno?1ineAf(qf~4Sh!f zYoCW&<)jMTDw97)FJ%9~yIEAWepf1>6;t?Ad_$^*r#1iCzS7=WpJ#D=j?-8F`)YT1 zTCwJ}6dd+Uv<-9@=~Hf^+3HHe_Pow6B4^`6%2TUzEI(fKv|RT4^uIRwG?wV7IA8WY zQm=bYVYjvx;uD7BtDGdr45?z2Qt};F{2lS)Uja={?NT}ovB_UTKSqY`Sh0kezJLE_ zGN~n{r27Y5vyt-0fsprC5DZdDQ6n-c#*piGsf!f1LECfxKAe`1h#Rh;&R({!y5x`W zj{vNhOQyk>tbuRBP29h-Cj2JVz2Fte?gUxPd5tRqvS^ugr z+npVJk$nWN4 X$=o}zRrv8O7a;ph>1(Zoaq#~D$e8i7 diff --git a/.resources/46644d07a912b1e90730d28b170a8e2c644db7cd75c205dba0b18f21c9e8f7b7 b/.resources/46644d07a912b1e90730d28b170a8e2c644db7cd75c205dba0b18f21c9e8f7b7 deleted file mode 100644 index 8c494eed..00000000 --- a/.resources/46644d07a912b1e90730d28b170a8e2c644db7cd75c205dba0b18f21c9e8f7b7 +++ /dev/null @@ -1,7467 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": { - "defaultSize": { - "height": 1080, - "width": 1920 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "height": 0.9124, - "width": 0.2638, - "x": 0.0026, - "y": 0.0626 - }, - "props": { - "style": { - "borderStyle": "solid", - "borderWidth": "1px", - "box-shadow": "5px 5px 5px grey", - "marginBottom": 10, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 10 - } - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "FlexContainer_2" - }, - "position": { - "height": 0.0529, - "width": 0.9791, - "x": 0.0025, - "y": -0.002 - }, - "props": { - "style": { - "borderStyle": "solid", - "borderWidth": "1px", - "box-shadow": "5px 5px 5px grey", - "marginBottom": 10, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 10 - } - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "FlexContainer_1", - "visible": false - }, - "position": { - "height": 0.1482, - "width": 0.3717, - "x": 0.2761, - "y": 0.8209 - }, - "props": { - "style": { - "borderStyle": "solid", - "borderWidth": "1px", - "box-shadow": "5px 5px 5px grey", - "marginBottom": 10, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 10 - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "component": { - "onEditCellCommit": { - "config": { - "script": "\tpayload \u003d {\n\t\t\"Msg\":\"Event is %s\"%str(event)\n\t}\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")\n\t\n\tsystem.perspective.sendMessage(\"updateAlarmNote\", event, \"page\")" - }, - "scope": "G", - "type": "script" - }, - "onRowDoubleClick": { - "config": { - "script": "\tselectedRowValue\u003devent[\"value\"]\n\tpayload\u003d{\"ID\":selectedRowValue[\"ID\"],\"Name\":selectedRowValue[\"Name\"],\"Priority\":selectedRowValue[\"Priority\"]}\n\tsystem.perspective.sendMessage(\"alarmsTab_selectAlarm\",payload)\n" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "tableAlarms" - }, - "position": { - "height": 0.7411, - "width": 0.708, - "x": 0.2749, - "y": 0.0632 - }, - "propConfig": { - "props.data": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.alarms" - }, - "type": "property" - } - } - }, - "props": { - "cells": { - "style": { - "overflow": "hidden" - } - }, - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Row", - "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": "center", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "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": "" - }, - "title": "" - }, - "justify": "center", - "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": true, - "style": { - "classes": "" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "visible": true, - "width": 80 - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Name", - "filter": { - "boolean": { - "condition": "" - }, - "date": { - "condition": "", - "value": "" - }, - "enabled": true, - "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", - "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": true, - "style": { - "classes": "" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "visible": true, - "width": 400 - }, - { - "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": "", - "value": "" - }, - "visible": "on-hover" - }, - "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": "string", - "resizable": true, - "sort": "none", - "sortable": true, - "strictWidth": true, - "style": { - "classes": "" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "visible": true, - "width": 150 - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Type", - "filter": { - "boolean": { - "condition": "" - }, - "date": { - "condition": "", - "value": "" - }, - "enabled": true, - "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", - "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": false, - "sort": "none", - "sortable": false, - "strictWidth": false, - "style": { - "classes": "" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "visible": false, - "width": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Tested_date_UTC", - "filter": { - "boolean": { - "condition": "" - }, - "date": { - "condition": "", - "value": "" - }, - "enabled": true, - "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", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Result", - "filter": { - "boolean": { - "condition": "" - }, - "date": { - "condition": "", - "value": "" - }, - "enabled": true, - "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", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": true, - "field": "Notes", - "filter": { - "boolean": { - "condition": "" - }, - "date": { - "condition": "", - "value": "" - }, - "enabled": true, - "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", - "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": "" - } - ], - "dragOrderable": false, - "pager": { - "bottom": false, - "initialOption": 1000 - }, - "style": { - "borderStyle": "solid", - "borderWidth": "1px", - "box-shadow": "5px 5px 5px grey", - "marginBottom": 10, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 10, - "overflow": "auto" - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "updateAlarmNote", - "pageScope": true, - "script": "\t# implement your handler here\n\trow_index \u003d payload[\"rowIndex\"]\n\tcolumn \u003d payload[\"column\"]\n\t\n\tself.props.data[row_index][column] \u003d payload[\"value\"]", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.display.table" - }, - { - "meta": { - "name": "Label_7" - }, - "position": { - "height": 0.0318, - "width": 0.0626, - "x": -0.0988, - "y": 0.3665 - }, - "props": { - "text": "Timestamp ms" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_4", - "visible": false - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "75% 137%" - }, - "width": 0.1666, - "x": 0.2988, - "y": 0.8376 - }, - "props": { - "style": { - "fontWeight": "bolder" - }, - "text": "Information" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{}\n\tpayload[\"containerName\"]\u003dself.parent.meta.name\n\tpayload[\"targetTable\"]\u003d\"tableAlarms\"\n\tsystem.perspective.sendMessage(\"exportFile\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_18", - "tooltip": { - "enabled": true, - "text": "Exports Alarms Table Data" - } - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.1933, - "y": 0.9258 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/import_export" - } - }, - "primary": false, - "text": "Export" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.sendMessage(\"alarmsTab_init\")\n\tself.session.custom.alarms \u003d[]" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "buttonInit", - "tooltip": { - "enabled": true, - "text": "Reset Alarm List and User Inputs" - } - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.1224, - "y": 0.9258 - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#000000", - "path": "material/refresh" - } - }, - "primary": false, - "text": "Reset" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.getChild(\"root\").custom.displayUpload \u003d True" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Uploads" - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.0193, - "y": 0.0173 - }, - "props": { - "image": { - "icon": { - "path": "material/import_export" - } - }, - "primary": false, - "text": "Uploads" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"status\":1,\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"sendSimulationEvent\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_12", - "tooltip": { - "enabled": true, - "text": "Send Alarm Active Message" - } - }, - "position": { - "height": 0.0385, - "width": 0.1408, - "x": 0.1223, - "y": 0.3082 - }, - "props": { - "image": { - "icon": { - "color": "#FFFFFF", - "path": "material/power_settings_new" - } - }, - "text": "Activate" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"status\":0,\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"sendSimulationEvent\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_13", - "tooltip": { - "enabled": true, - "text": "Send Alarm De-active Message" - } - }, - "position": { - "height": 0.0385, - "width": 0.1408, - "x": 0.1223, - "y": 0.3515 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/not_interested" - } - }, - "primary": false, - "text": "De-activate" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "textFieldEventsCommandParams_Timestamp", - "visible": false - }, - "position": { - "height": 0.0318, - "width": 0.1079, - "x": 0.1223, - "y": 0.2716 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "toStr(toMillis({../DateTimeInput.props.value}))" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "textAlign": "right" - }, - "tex": "" - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_10" - }, - "position": { - "height": 0.0318, - "width": 0.0803, - "x": 0.0287, - "y": 0.1251 - }, - "props": { - "text": "Controller" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "dropdownEventsCommandParams_Target" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "50% 169%" - }, - "width": 0.142, - "x": 0.1223, - "y": 0.0886 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": "session.custom.sources" - }, - "transforms": [ - { - "code": "\toptions \u003d []\n\tfor source in value :\n\t\topt \u003d {\n\t\t \"value\":source[\"Source\"],\n\t\t \"label\":source[\"Source\"]\n\t\t}\n\t\toptions.append(opt)\n\t\t\n\treturn options ", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "showClearIcon": true, - "value": null - }, - "type": "ia.input.dropdown" - }, - { - "meta": { - "name": "textFieldEventsCommandParams_EventDescription" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "375% -109%" - }, - "width": 0.1418, - "x": 0.1223, - "y": 0.1617 - }, - "props": { - "enabled": false, - "style": { - "textAlign": "right" - }, - "tex": "" - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_8" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "75% 137%" - }, - "width": 0.0803, - "x": 0.0287, - "y": 0.0886 - }, - "props": { - "text": "Source ID" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_14" - }, - "position": { - "height": 0.0318, - "width": 0.0803, - "x": 0.0287, - "y": 0.1617 - }, - "props": { - "text": "Alarm Description" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"testResult\":\"PASSED\",\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"setTestResult\", payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_14", - "tooltip": { - "enabled": true, - "text": "Scada State Matches Alarms State " - } - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.1223, - "y": 0.4429 - }, - "props": { - "image": { - "icon": { - "color": "#323232", - "path": "material/check_circle_outline" - } - }, - "primary": false, - "text": "Passed" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"testResult\":\"FAILED\",\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"setTestResult\", payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_15", - "tooltip": { - "enabled": true, - "text": "Scada State Does Not Matche Alarms State " - } - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.1932, - "y": 0.4429 - }, - "props": { - "image": { - "icon": { - "color": "#323232", - "path": "material/highlight_off" - } - }, - "primary": false, - "text": "Failed" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_6" - }, - "position": { - "height": 0.0318, - "width": 0.0803, - "x": 0.0287, - "y": 0.1983 - }, - "props": { - "text": "ID" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "textFieldEventsCommandParams_EventID" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "375% -109%" - }, - "width": 0.1418, - "x": 0.1223, - "y": 0.1983 - }, - "props": { - "enabled": false, - "style": { - "textAlign": "right" - }, - "tex": "" - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_13" - }, - "position": { - "height": 0.0318, - "width": 0.0803, - "x": 0.0287, - "y": 0.2348 - }, - "props": { - "text": "Priority" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "textField_alarmPriority", - "tooltip": { - "style": { - "classes": "Alarms-Styles/Critical" - } - } - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "375% -109%" - }, - "width": 0.1418, - "x": 0.1223, - "y": 0.2348 - }, - "props": { - "enabled": false, - "style": { - "textAlign": "right" - }, - "tex": "" - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_20" - }, - "position": { - "height": 0.0318, - "width": 0.0803, - "x": 0.0287, - "y": 0.2714 - }, - "props": { - "text": "Date and time" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "DateTimeInput" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "-58% 268%" - }, - "width": 0.1079, - "x": 0.1223, - "y": 0.2714 - }, - "props": { - "format": "YYYY-MM-DD hh:mm:ss", - "formattedValue": "2023-08-29 12:11:39", - "tex": "", - "text": "", - "value": 1693311099006 - }, - "type": "ia.input.date-time-input" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t\n\tnow \u003d system.date.now()\n\t\n\ttimeNow\u003dsystem.date.toMillis(now)\n\tself.getSibling(\"DateTimeInput\").props.value \u003d timeNow\n\t\n\t\n\tMsg \u003d \"Setting time of message to %s\"%now\n\tpayload \u003d {\n\t\t\"Msg\":Msg\n\t}\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "buttonInit_2" - }, - "position": { - "height": 0.0318, - "width": 0.0308, - "x": 0.2328, - "y": 0.2727 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/access_time" - } - }, - "primary": false, - "text": "" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "textFieldTargetPLC" - }, - "position": { - "height": 0.0318, - "width": 0.142, - "x": 0.1223, - "y": 0.1251 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "../dropdownEventsCommandParams_Target.props.value" - }, - "transforms": [ - { - "code": "\ttry:\n\t\treturn value.split(\"/\")[0]\n\texcept:\n\t\treturn \"\"", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "enabled": false, - "style": { - "textAlign": "right" - }, - "tex": "" - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "EmbeddedView", - "tooltip": { - "enabled": true, - "text": "User Feedback" - } - }, - "position": { - "height": 0.153, - "width": 0.708, - "x": 0.2742, - "y": 0.82 - }, - "props": { - "path": "Main-Views/Commissioning Tool/UserFeedBack", - "style": { - "borderStyle": "solid", - "borderWidth": "1px", - "box-shadow": "5px 5px 5px grey", - "marginBottom": 10, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 10, - "overflow": "auto" - } - }, - "type": "ia.display.view" - } - ], - "custom": { - "dateTimeCommandSent": { - "$": [ - "ts", - 192, - 1668596541256 - ], - "$ts": 1668596541109 - }, - "testingAlarmPriority1": "", - "testingAlarmPriority2": "", - "testingAlarmPriority3": "", - "testingAlarmPriority4": "" - }, - "meta": { - "name": "ContainerAlarms" - }, - "props": { - "mode": "percent" - }, - "type": "ia.container.coord" - }, - { - "children": [ - { - "meta": { - "name": "FlexContainer_3" - }, - "position": { - "height": 0.9105, - "width": 0.2664, - "x": 0.0021, - "y": 0.0644 - }, - "props": { - "style": { - "borderStyle": "solid", - "borderWidth": "1px", - "box-shadow": "5px 5px 5px grey", - "marginBottom": 10, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 10 - } - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "FlexContainer_2" - }, - "position": { - "height": 0.0549, - "width": 0.9776, - "x": 0.0026, - "y": -0.001 - }, - "props": { - "style": { - "borderStyle": "solid", - "borderWidth": "1px", - "box-shadow": "5px 5px 5px grey", - "marginBottom": 10, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 10 - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "component": { - "onEditCellCommit": { - "config": { - "script": "\tpayload \u003d {\n\t\t\"Msg\":\"Event is %s\"%str(event)\n\t}\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")\n\t\n\tsystem.perspective.sendMessage(\"updateSourceNote\", event, \"page\")" - }, - "scope": "G", - "type": "script" - }, - "onRowDoubleClick": { - "config": { - "script": "\tselectedRowValue\u003devent[\"value\"]\n\tpayload\u003d{\"Source\":selectedRowValue[\"Source\"]}\n\tsystem.perspective.sendMessage(\"sourcesTab_selectSource\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "tableSources" - }, - "position": { - "height": 0.7382, - "width": 0.7049, - "x": 0.2751, - "y": 0.0649 - }, - "propConfig": { - "props.data": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.sources" - }, - "type": "property" - } - } - }, - "props": { - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Row", - "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", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "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": "" - }, - "title": "" - }, - "justify": "center", - "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": true, - "style": { - "classes": "" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "visible": true, - "width": 80 - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Source", - "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", - "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": "Tested_date_UTC", - "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", - "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": "Result", - "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", - "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": "Notes", - "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", - "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": "" - } - ], - "pager": { - "initialOption": 1000 - }, - "style": { - "borderStyle": "solid", - "borderWidth": "1px", - "box-shadow": "5px 5px 5px grey", - "marginBottom": 10, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 10, - "overflow": "auto" - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "updateSourceNote", - "pageScope": true, - "script": "\t# implement your handler here\n\trow_index \u003d payload[\"rowIndex\"]\n\tcolumn \u003d payload[\"column\"]\n\t\n\tself.props.data[row_index][column] \u003d payload[\"value\"]", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.display.table" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.sendMessage(\"sourcesTab_init\")\n\tself.session.custom.sources \u003d []\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "buttonInit" - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.1286, - "y": 0.9241 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/refresh" - } - }, - "primary": false, - "text": "Reset" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_8" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "75% 133%" - }, - "width": 0.0808, - "x": 0.0293, - "y": 0.0898 - }, - "props": { - "text": "Source ID" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "textFieldEventsCommandParams_Timestamp", - "visible": false - }, - "position": { - "height": 0.0318, - "width": 0.1084, - "x": 0.1231, - "y": 0.2387 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "toStr(toMillis({../DateTimeInput.props.value}))" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "textAlign": "right" - } - }, - "type": "ia.input.text-field" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t\n\ttimeNow\u003dsystem.date.toMillis(system.date.now())\n\tself.getSibling(\"DateTimeInput\").props.value \u003d timeNow\n\tself.getSibling(\"textFieldEventsCommandParams_Timestamp\").props.text \u003d timeNow\n\t\n\tMsg \u003d \"Setting time of message to %s\"%system.date.now()\n\tpayload \u003d {\n\t\t\t\"Msg\":Msg\n\t}\n\t\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "buttonInit_1" - }, - "position": { - "height": 0.0318, - "width": 0.0287, - "x": 0.2364, - "y": 0.2387 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/access_time" - } - }, - "primary": false, - "text": "" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_6" - }, - "position": { - "height": 0.0318, - "width": 0.0808, - "x": 0.0291, - "y": 0.3118 - }, - "props": { - "text": "ID" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "textFieldEventsCommandParams_EventID" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "375% -109%" - }, - "width": 0.1403, - "x": 0.1246, - "y": 0.3118 - }, - "props": { - "enabled": false, - "style": { - "textAlign": "right" - }, - "text": "1" - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_14" - }, - "position": { - "height": 0.0318, - "width": 0.0808, - "x": 0.0291, - "y": 0.2013 - }, - "props": { - "text": "Alarm Description" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "textFieldEventsCommandParams_EventDescription" - }, - "position": { - "height": 0.0318, - "width": 0.1423, - "x": 0.124, - "y": 0.2013 - }, - "props": { - "enabled": false, - "style": { - "textAlign": "right" - }, - "text": "AccessDoorOpenedFault1" - }, - "type": "ia.input.text-field" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"status\":1,\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"sendSimulationEvent\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_12" - }, - "position": { - "height": 0.0385, - "width": 0.1387, - "x": 0.1251, - "y": 0.3484 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/power_settings_new" - } - }, - "text": "Activate" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"status\":0,\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"sendSimulationEvent\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_13" - }, - "position": { - "height": 0.0385, - "width": 0.1387, - "x": 0.1251, - "y": 0.3917 - }, - "props": { - "image": { - "icon": { - "color": "000000", - "path": "material/not_interested" - } - }, - "primary": false, - "text": "De-activate" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"testResult\":\"PASSED\",\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"setTestResult\", payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_15" - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.1242, - "y": 0.5462 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/check_circle_outline" - } - }, - "primary": false, - "text": "Passed" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"testResult\":\"FAILED\",\"containerName\":self.parent.meta.name}\n\tsystem.perspective.sendMessage(\"setTestResult\", payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_16" - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.1961, - "y": 0.5462 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/highlight_off" - } - }, - "primary": false, - "text": "Failed" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{}\n\tpayload[\"containerName\"]\u003dself.parent.meta.name\n\tpayload[\"targetTable\"]\u003d\"tableSources\"\n\tsystem.perspective.sendMessage(\"exportFile\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_18" - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.2007, - "y": 0.9243 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/import_export" - } - }, - "primary": false, - "text": "Export" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\talarm \u003d self.parent.custom.testingAlarmPriority1\n\tpayload\u003d{\"alarm\":alarm}\n\tsystem.perspective.sendMessage(\"sourcesTab_setAlarm\", payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_17" - }, - "position": { - "height": 0.0318, - "width": 0.0261, - "x": 0.1254, - "y": 0.1631 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "if({parent.custom.testingAlarmPriority1}\u003d\u0027{}\u0027 || {parent.custom.testingAlarmPriority1}\u003d\u0027\u0027, False, True) " - }, - "type": "expr" - } - }, - "props.style.classes": { - "binding": { - "config": { - "path": "session.custom.colours.colour_impaired" - }, - "transforms": [ - { - "code": "\tif not value:\n\t\treturn \"Alarms-Styles/Diagnostic\"\n\telse:\n\t\treturn \"Alarms-Styles/Alt-Colours/Diagnostic\"\n\t\t ", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "icon": { - "color": "#AAAAAA" - } - }, - "style": {}, - "text": 1 - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\talarm \u003d self.parent.custom.testingAlarmPriority2\n\tpayload\u003d{\"alarm\":alarm}\n\tsystem.perspective.sendMessage(\"sourcesTab_setAlarm\", payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_19" - }, - "position": { - "height": 0.0318, - "width": 0.0266, - "x": 0.1566, - "y": 0.1631 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "if({parent.custom.testingAlarmPriority2}\u003d\u0027{}\u0027 || {parent.custom.testingAlarmPriority2}\u003d\u0027\u0027, False, True) " - }, - "type": "expr" - } - }, - "props.style.classes": { - "binding": { - "config": { - "path": "session.custom.colours.colour_impaired" - }, - "transforms": [ - { - "code": "\tif not value:\n\t\treturn \"Alarms-Styles/Low\"\n\telse:\n\t\treturn \"Alarms-Styles/Alt-Colours/Low\"\n\t\t ", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "icon": { - "color": "#AAAAAA" - } - }, - "style": {}, - "text": 2 - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\talarm \u003d self.parent.custom.testingAlarmPriority3\n\tpayload\u003d{\"alarm\":alarm}\n\tsystem.perspective.sendMessage(\"sourcesTab_setAlarm\", payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_20" - }, - "position": { - "height": 0.0318, - "width": 0.0261, - "x": 0.1879, - "y": 0.1631 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "if({parent.custom.testingAlarmPriority3}\u003d\u0027{}\u0027 || {parent.custom.testingAlarmPriority3}\u003d\u0027\u0027, False, True) " - }, - "type": "expr" - } - }, - "props.style.classes": { - "binding": { - "config": { - "path": "session.custom.colours.colour_impaired" - }, - "transforms": [ - { - "code": "\tif not value:\n\t\treturn \"Alarms-Styles/Medium\"\n\telse:\n\t\treturn \"Alarms-Styles/Alt-Colours/Medium\"\n\t\t ", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "icon": { - "color": "#AAAAAA" - } - }, - "style": {}, - "text": 3 - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\talarm \u003d self.parent.custom.testingAlarmPriority4\n\tpayload\u003d{\"alarm\":alarm}\n\tsystem.perspective.sendMessage(\"sourcesTab_setAlarm\", payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_21" - }, - "position": { - "height": 0.0318, - "width": 0.0261, - "x": 0.2192, - "y": 0.1631 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "if({parent.custom.testingAlarmPriority4}\u003d\u0027{}\u0027 || {parent.custom.testingAlarmPriority4}\u003d\u0027\u0027, False, True) " - }, - "type": "expr" - } - }, - "props.style.classes": { - "binding": { - "config": { - "path": "session.custom.colours.colour_impaired" - }, - "transforms": [ - { - "code": "\tif not value:\n\t\treturn \"Alarms-Styles/High\"\n\telse:\n\t\treturn \"Alarms-Styles/Alt-Colours/High\"\n\t\t ", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "icon": { - "color": "#AAAAAA" - } - }, - "style": {}, - "text": 4 - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_13" - }, - "position": { - "height": 0.0318, - "width": 0.0808, - "x": 0.0291, - "y": 0.2752 - }, - "props": { - "text": "Priority" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "textField_alarmPriority", - "tooltip": { - "style": { - "classes": "Alarms-Styles/Critical" - } - } - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "375% -109%" - }, - "width": 0.1403, - "x": 0.1241, - "y": 0.2752 - }, - "props": { - "enabled": false, - "style": { - "textAlign": "right" - }, - "text": "High" - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_20" - }, - "position": { - "height": 0.0318, - "width": 0.0808, - "x": 0.0291, - "y": 0.2361 - }, - "props": { - "text": "Date and time" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "DateTimeInput" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "50% 62%" - }, - "width": 0.1074, - "x": 0.1242, - "y": 0.2377 - }, - "props": { - "format": "YYYY-MM-DD hh:mm:ss", - "formattedValue": "2023-08-30 12:28:29", - "text": "", - "value": 1693398509608 - }, - "type": "ia.input.date-time-input" - }, - { - "meta": { - "name": "Label_11" - }, - "position": { - "height": 0.0318, - "width": 0.0808, - "x": 0.0291, - "y": 0.1264 - }, - "props": { - "text": "Controller" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "textFieldTargetPLC" - }, - "position": { - "height": 0.0318, - "width": 0.1418, - "x": 0.1242, - "y": 0.1264 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "../textField_SelectedTarget.props.text" - }, - "transforms": [ - { - "code": "\treturn value.split(\"/\")[0]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "enabled": false, - "style": { - "textAlign": "right" - }, - "tex": "" - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_16" - }, - "position": { - "height": 0.0318, - "width": 0.0808, - "x": 0.0294, - "y": 0.1631 - }, - "props": { - "text": "Alarm Priority" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "textField_SelectedTarget" - }, - "position": { - "height": 0.0318, - "width": 0.1423, - "x": 0.124, - "y": 0.0898 - }, - "props": { - "enabled": false, - "style": { - "textAlign": "right" - }, - "tex": "", - "text": "PLC01/UL5-2/ESTOP2" - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "StatusIcon" - }, - "position": { - "height": 0.0799, - "rotate": { - "anchor": "50% 40%" - }, - "width": 0.0693, - "x": 0.1954, - "y": 0.4562 - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "expression": "if({this.props.params.tagProps[0]}\u003d\u0027\u0027,False,True)" - }, - "type": "expr" - } - }, - "props.params.tagProps[0]": { - "binding": { - "config": { - "path": "../dropdownEventsCommandParams_Target.props.value" - }, - "type": "property" - } - } - }, - "props": { - "params": { - "tagProps": [ - null, - "", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "path": "Symbol-Views/Equipment-Views/ControlCabinet", - "useDefaultViewWidth": true - }, - "type": "ia.display.view" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.getChild(\"root\").custom.displayUpload \u003d True" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Uploads" - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.0193, - "y": 0.0163 - }, - "props": { - "image": { - "icon": { - "path": "material/import_export" - } - }, - "primary": false, - "text": "Uploads" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "EmbeddedView" - }, - "position": { - "height": 0.153, - "width": 0.7044, - "x": 0.2763, - "y": 0.8212 - }, - "props": { - "path": "Main-Views/Commissioning Tool/UserFeedBack", - "style": { - "borderStyle": "solid", - "borderWidth": "1px", - "box-shadow": "5px 5px 5px grey", - "marginBottom": 10, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 10, - "overflow": "auto" - } - }, - "type": "ia.display.view" - } - ], - "custom": { - "testingAlarmPriority1": { - "id": "3", - "message": "BufferBatteryErrorSystemWarning1", - "priority": "Diagnostic", - "type": "0" - }, - "testingAlarmPriority2": "", - "testingAlarmPriority3": { - "id": "22", - "message": "ExternalUnitFault1", - "priority": "Medium", - "type": "0" - }, - "testingAlarmPriority4": { - "id": "1", - "message": "AccessDoorOpenedFault1", - "priority": "High", - "type": "1" - } - }, - "meta": { - "name": "ContainerSources" - }, - "position": { - "tabIndex": 1 - }, - "props": { - "mode": "percent" - }, - "type": "ia.container.coord" - }, - { - "children": [ - { - "meta": { - "name": "FlexContainer_3" - }, - "position": { - "height": 0.9192, - "width": 0.2534, - "x": 0.003, - "y": 0.0635 - }, - "props": { - "style": { - "borderStyle": "solid", - "borderWidth": "1px", - "box-shadow": "5px 5px 5px grey", - "marginBottom": 10, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 10 - } - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "FlexContainer_5" - }, - "position": { - "height": 0.0597, - "width": 0.9797, - "x": 0.0032, - "y": -0.0058 - }, - "props": { - "style": { - "borderStyle": "solid", - "borderWidth": "1px", - "box-shadow": "5px 5px 5px grey", - "marginBottom": 10, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 10 - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"fileFormat\":\"csv\"}\n\tsystem.perspective.sendMessage(\"measurementTab_exportFile\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_18" - }, - "position": { - "height": 0.0385, - "width": 0.0673, - "x": 0.1884, - "y": 0.9278 - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#000000", - "path": "material/import_export" - } - }, - "primary": false, - "text": "Export" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onFileReceived": { - "config": { - "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileExtension\":event.file.name.split(\".\")[1]}\n\tsystem.perspective.sendMessage(\"measurementTab_importFile\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FileUpload_0" - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.0197, - "y": 0.0159 - }, - "props": { - "fileUploadIcon": { - "color": "#000000", - "path": "material/import_export", - "style": { - "borderStyle": "none" - } - }, - "maxUploads": 1, - "style": { - "backgroundColor": "#FAFAFA", - "borderStyle": "solid", - "classes": "" - }, - "supportedFileTypes": [ - "csv" - ] - }, - "type": "ia.input.fileupload" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.sendMessage(\"measurementTab_changeSelectedPLC\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "dropdownTargetPLC" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "50% 169%" - }, - "width": 0.1413, - "x": 0.1141, - "y": 0.1304 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": "session.custom.sources" - }, - "transforms": [ - { - "code": "\toptions \u003d []\n\tlist_of_controllers \u003d []\n\tfor source in value :\n\t\ttry:\n\t\t\tcontroller \u003d source[\"Source\"].split(\"/\")[0]\n\t\texcept:\n\t\t\tcontinue\n\t\t\n\t\tif controller in list_of_controllers:\n\t\t\tcontinue\t\n\t\t\n\t\tlist_of_controllers.append(controller)\n\t\t\n\t\topt \u003d {\n\t\t \"value\":controller,\n\t\t \"label\": controller\n\t\t}\n\t\toptions.append(opt)\n\t\t\n\treturn options ", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "placeholder": { - "text": "Select Controller..." - }, - "showClearIcon": true, - "value": "PLC01" - }, - "type": "ia.input.dropdown" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.sendMessage(\"measurementTab_init\")\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "buttonInit" - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.1126, - "y": 0.9278 - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#000000", - "path": "material/refresh" - } - }, - "primary": false, - "text": "Reset" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_11" - }, - "position": { - "height": 0.0318, - "width": 0.0933, - "x": 0.022, - "y": 0.1312 - }, - "props": { - "text": "Controller" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.sendMessage(\"measurementTab_sendEvent\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_17" - }, - "position": { - "height": 0.0385, - "width": 0.1449, - "x": 0.1126, - "y": 0.8263 - }, - "props": { - "image": { - "icon": { - "color": "#FFFFFF", - "path": "material/power_settings_new" - } - }, - "text": "Send Sequence" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "rowOfLastMessageSent", - "visible": false - }, - "position": { - "height": 0.0308, - "rotate": { - "anchor": "50% 38%" - }, - "width": 0.0313, - "x": 0.6155, - "y": 0.9464 - }, - "props": { - "enabled": false, - "value": 1 - }, - "type": "ia.input.numeric-entry-field" - }, - { - "meta": { - "name": "Label_13" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "75% 137%" - }, - "width": 0.0933, - "x": 0.022, - "y": 0.0935 - }, - "props": { - "text": "Source ID" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "dropdownEventsCommandParams_Target" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "50% 169%" - }, - "width": 0.1413, - "x": 0.1141, - "y": 0.0928 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": "session.custom.sources" - }, - "transforms": [ - { - "code": "\toptions \u003d []\n\tfor source in value :\n\t\topt \u003d {\n\t\t \"value\":source[\"Source\"],\n\t\t \"label\": source[\"Source\"]\n\t\t}\n\t\toptions.append(opt)\n\t\t\n\treturn options ", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "placeholder": { - "text": "Select Source ID..." - }, - "showClearIcon": true, - "value": "PLC01/UL5-1" - }, - "type": "ia.input.dropdown" - }, - { - "meta": { - "name": "dropdownMeasurementName" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "50% 169%" - }, - "width": 0.1444, - "x": 0.1148, - "y": 0.3525 - }, - "props": { - "options": [ - { - "label": "RESULT_NOREAD", - "value": "RESULT_NOREAD" - }, - { - "label": "RESULT_MULTIREAD", - "value": "RESULT_MULTIREAD" - }, - { - "label": "RESULT_SAL_CODE_AT_INFEED", - "value": "RESULT_SAL_CODE_AT_INFEED" - }, - { - "label": "RESULT_INSUFFICIENT_GAP_AT_INFEED", - "value": "RESULT_INSUFFICIENT_GAP_AT_INFEED" - }, - { - "label": "RESULT_NOT_ALIGNED", - "value": "RESULT_NOT_ALIGNED" - }, - { - "label": "RESULT_WRONG_ORIENTATION", - "value": "RESULT_WRONG_ORIENTATION" - }, - { - "label": "RESULT_OVER_LENGTH", - "value": "RESULT_OVER_LENGTH" - }, - { - "label": "RESULT_NODATA", - "value": "RESULT_NODATA" - }, - { - "label": "RESULT_BAD_REQUEST", - "value": "RESULT_BAD_REQUEST" - }, - { - "label": "RESULT_AEG_ERROR", - "value": "RESULT_AEG_ERROR" - }, - { - "label": "RESULT_VERIFY_SALNOREAD", - "value": "RESULT_VERIFY_SALNOREAD" - }, - { - "label": "RESULT_VERIFY_SHIPNOREAD", - "value": "RESULT_VERIFY_SHIPNOREAD" - }, - { - "label": "RESULT_VERIFY_SALMISMATCH", - "value": "RESULT_VERIFY_SALMISMATCH" - }, - { - "label": "RESULT_SAFETY_STOP_FLUSH", - "value": "RESULT_SAFETY_STOP_FLUSH" - }, - { - "label": "RESULT_VERIFY_SAL_MULTIREAD", - "value": "RESULT_VERIFY_SAL_MULTIREAD" - }, - { - "label": "RESULT_MISMATCH_FLUSH", - "value": "RESULT_MISMATCH_FLUSH" - }, - { - "label": "RESULT_PITCH_OR_TRACKING_ERROR", - "value": "RESULT_PITCH_OR_TRACKING_ERROR" - }, - { - "label": "RESULT_CAMERA_ERROR_INDUCT", - "value": "RESULT_CAMERA_ERROR_INDUCT" - }, - { - "label": "RESULT_CAMERA_ERROR_VERIFY", - "value": "RESULT_CAMERA_ERROR_VERIFY" - }, - { - "label": "RESULT_TAMP_FAILED_TO_EXTEND", - "value": "RESULT_TAMP_FAILED_TO_EXTEND" - }, - { - "label": "RESULT_MISC_ERROR_OPERATIONS", - "value": "RESULT_MISC_ERROR_OPERATIONS" - }, - { - "label": "RESULT_MISC_ERROR_MACHINE", - "value": "RESULT_MISC_ERROR_MACHINE" - }, - { - "label": "RESULT_UNKNOWN", - "value": "RESULT_UNKNOWN" - }, - { - "label": "RESULT_SUCCESS_SIDELINE", - "value": "RESULT_SUCCESS_SIDELINE" - }, - { - "label": "RESULT_SUCCESS", - "value": "RESULT_SUCCESS" - } - ], - "showClearIcon": true, - "value": "RESULT_INSUFFICIENT_GAP_AT_INFEED" - }, - "type": "ia.input.dropdown" - }, - { - "meta": { - "name": "delta" - }, - "position": { - "height": 0.0318, - "width": 0.1444, - "x": 0.1143, - "y": 0.3891 - }, - "props": { - "inputBounds": { - "maximum": 10000, - "minimum": 1 - }, - "value": 100 - }, - "type": "ia.input.numeric-entry-field" - }, - { - "meta": { - "name": "Label_16" - }, - "position": { - "height": 0.0318, - "width": 0.0792, - "x": 0.0218, - "y": 0.3911 - }, - "props": { - "text": "Delta" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_17" - }, - "position": { - "height": 0.0318, - "width": 0.0808, - "x": 0.0218, - "y": 0.3545 - }, - "props": { - "text": "Measurement name" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.sendMessage(\"measurementTab_setMeasurementInTable\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_29" - }, - "position": { - "height": 0.0385, - "width": 0.1444, - "x": 0.1143, - "y": 0.4988 - }, - "props": { - "image": { - "icon": { - "color": "#323232", - "path": "material/control_point" - } - }, - "primary": false, - "text": "Set Measurement" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_18" - }, - "position": { - "height": 0.0318, - "width": 0.0792, - "x": 0.0218, - "y": 0.4276 - }, - "props": { - "text": "Unit" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_19" - }, - "position": { - "height": 0.0318, - "width": 0.0792, - "x": 0.0218, - "y": 0.4642 - }, - "props": { - "text": "Sampling ms" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "sampling" - }, - "position": { - "height": 0.0318, - "width": 0.1444, - "x": 0.1143, - "y": 0.4622 - }, - "props": { - "inputBounds": { - "minimum": 1 - }, - "value": 1 - }, - "type": "ia.input.numeric-entry-field" - }, - { - "meta": { - "name": "textFieldUnit" - }, - "position": { - "height": 0.0318, - "width": 0.1444, - "x": 0.1143, - "y": 0.4256 - }, - "props": { - "style": { - "textAlign": "right" - }, - "text": "un" - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_22" - }, - "position": { - "height": 0.0318, - "width": 0.0975, - "x": 0.0222, - "y": 0.7102 - }, - "props": { - "text": "Current state" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"targetEventState\":\"1\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setEventState\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_30" - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.115, - "y": 0.6 - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#323232", - "path": "material/power_settings_new" - } - }, - "primary": false, - "text": "Set On" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"targetEventState\":\"0\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setEventState\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_31" - }, - "position": { - "height": 0.0385, - "width": 0.0683, - "x": 0.189, - "y": 0.6 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/not_interested" - } - }, - "primary": false, - "text": "Set Off" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_24" - }, - "position": { - "height": 0.0318, - "width": 0.0928, - "x": 0.022, - "y": 0.5628 - }, - "props": { - "text": "Alarm ID" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_23" - }, - "position": { - "height": 0.0318, - "width": 0.0975, - "x": 0.022, - "y": 0.6 - }, - "props": { - "text": "Signal state" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"targetState\":\"1\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setState\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_33" - }, - "position": { - "height": 0.0385, - "width": 0.0454, - "x": 0.1145, - "y": 0.7094 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/control_point" - } - }, - "primary": false, - "text": "Fault" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"targetState\":\"2\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setState\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_34" - }, - "position": { - "height": 0.0385, - "width": 0.0454, - "x": 0.1635, - "y": 0.7094 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/control_point" - } - }, - "primary": false, - "text": "Stop" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"targetState\":\"3\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setState\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_35" - }, - "position": { - "height": 0.0385, - "width": 0.0459, - "x": 0.2126, - "y": 0.7094 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/control_point" - } - }, - "primary": false, - "text": "Run" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "EmbeddedView" - }, - "position": { - "height": 0.7584, - "width": 0.7226, - "x": 0.2591, - "y": 0.0641 - }, - "propConfig": { - "props.params.last_message_index": { - "binding": { - "config": { - "path": "../rowOfLastMessageSent.props.value" - }, - "type": "property" - } - }, - "props.params.tabledata": { - "binding": { - "config": { - "path": "../tableSequence.props.data" - }, - "type": "property" - } - } - }, - "props": { - "path": "Main-Views/Commissioning Tool/SequenceTester", - "style": { - "borderStyle": "solid", - "borderWidth": "1px", - "box-shadow": "5px 5px 5px grey", - "marginBottom": 10, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 10, - "overflow": "visible" - } - }, - "type": "ia.display.view" - }, - { - "events": { - "component": { - "onRowDoubleClick": { - "config": { - "script": "\tselectedRowValue\u003devent[\"value\"]\n\t#payload\u003d{\"Source\":selectedRowValue[\"Source\"]}\n\t#system.perspective.sendMessage(\"sourcesTab_selectSource\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "tableSequence", - "visible": false - }, - "position": { - "height": 0.5938, - "width": 0.6747, - "x": 0.3011, - "y": 0.2369 - }, - "propConfig": { - "props.selection.data": { - "onChange": { - "enabled": null, - "script": "\tsystem.perspective.sendMessage(\"tableSelectionData\", self.props.selection.data, \"page\")" - } - } - }, - "props": { - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Seq", - "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": true, - "style": { - "classes": "" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "visible": true, - "width": 100 - }, - { - "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": "" - }, - { - "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": "" - }, - { - "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": "" - }, - { - "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": "" - }, - { - "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": "" - }, - { - "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": "" - }, - { - "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": "" - }, - { - "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": "" - }, - { - "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": "" - }, - { - "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": "" - }, - { - "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": "" - }, - { - "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": "" - }, - { - "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": "" - }, - { - "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": "" - }, - { - "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": "" - } - ], - "dragOrderable": false, - "items": [], - "pager": { - "initialOption": 1000 - }, - "resizeMode": "fixed", - "selection": { - "mode": "multiple interval" - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "update_selectionData", - "pageScope": true, - "script": "\tself.props.data\n\t\n\t# implement your handler here\n\tseq\u003d payload[\"index\"]\n\tstate \u003d payload[\"state\"]\n\tsystem.perspective.print(seq)\n\tsystem.perspective.print(state)\n\t\n\tself.props.data[seq][\"Selected\"] \u003d state\n", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "ClearSelection", - "pageScope": true, - "script": "\tsystem.perspective.print(\"clearSelection\")\n\tfor item in self.props.data:\n\t\titem[\"Selected\"] \u003d False", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "ClearAll", - "pageScope": true, - "script": "\t# implement your handler here\n\tself.props.data \u003d []", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "SelectAll", - "pageScope": true, - "script": "\t# implement your handler here\n\t\n\tfor item in self.props.data:\n\t\titem[\"Selected\"] \u003d True", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.display.table" - }, - { - "meta": { - "name": "Label_20" - }, - "position": { - "height": 0.0318, - "width": 0.1251, - "x": 0.0185, - "y": 0.5318 - }, - "props": { - "text": "Events", - "textStyle": { - "fontSize": 12, - "fontStyle": "italic", - "fontWeight": "bolder", - "textDecoration": "underline" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_26" - }, - "position": { - "height": 0.0318, - "width": 0.0912, - "x": 0.0185, - "y": 0.3163 - }, - "props": { - "text": "Measurement Event", - "textStyle": { - "fontSize": 12, - "fontStyle": "italic", - "fontWeight": "bolder", - "textDecoration": "underline" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_27" - }, - "position": { - "height": 0.0318, - "width": 0.0912, - "x": 0.0185, - "y": 0.6356 - }, - "props": { - "text": "State Changed Event", - "textStyle": { - "fontSize": 12, - "fontStyle": "italic", - "fontWeight": "bolder", - "textDecoration": "underline" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_15" - }, - "position": { - "height": 0.0318, - "width": 0.0813, - "x": 0.0208, - "y": 0.208 - }, - "props": { - "text": "Offset ms" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_25" - }, - "position": { - "height": 0.0318, - "width": 0.0778, - "x": 0.0208, - "y": 0.1693 - }, - "props": { - "text": "Date and time" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_8" - }, - "position": { - "height": 0.0318, - "width": 0.0892, - "x": 0.0206, - "y": 0.2433 - }, - "props": { - "text": "Delay between Msg" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "textFieldEventsCommandParams_Timestamp", - "visible": false - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "117% 50%" - }, - "width": 0.109, - "x": 0.114, - "y": 0.1989 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "toStr(toMillis({../DateTimeInput_0.props.value}))" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "textAlign": "right" - } - }, - "type": "ia.input.text-field" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttimeNow\u003dsystem.date.now()\n\ttimestamp \u003d system.date.toMillis(timeNow)\n\t\n\tself.getSibling(\"DateTimeInput_0\").props.value \u003d timestamp\n\tself.getSibling(\"textFieldEventsCommandParams_Timestamp\").props.text \u003d timestamp\n\t\n\tMsg \u003d \"Setting time of messages to %s\"%timeNow\n\tpayload \u003d {\n\t\t\t\"Msg\":Msg\n\t}\n\t\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")\n" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "buttonInit_1" - }, - "position": { - "height": 0.0318, - "width": 0.0292, - "x": 0.2262, - "y": 0.1675 - }, - "props": { - "image": { - "icon": { - "color": "#323232", - "path": "material/access_time" - } - }, - "primary": false, - "text": "" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "textFieldInterval" - }, - "position": { - "height": 0.0318, - "width": 0.1413, - "x": 0.1142, - "y": 0.2414 - }, - "props": { - "inputBounds": { - "minimum": 1 - }, - "value": 100 - }, - "type": "ia.input.numeric-entry-field" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.sendMessage(\"measurementTab_setTimestampInTable\")\n" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_22" - }, - "position": { - "height": 0.0385, - "width": 0.1413, - "x": 0.1143, - "y": 0.2798 - }, - "props": { - "image": { - "icon": { - "color": "#323232", - "path": "material/control_point" - } - }, - "primary": false, - "text": "Set Sequence Data" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "timestampOffset" - }, - "position": { - "height": 0.0318, - "width": 0.1408, - "x": 0.1143, - "y": 0.2061 - }, - "props": { - "inputBounds": { - "minimum": 1 - }, - "value": 1000 - }, - "type": "ia.input.numeric-entry-field" - }, - { - "meta": { - "name": "DateTimeInput_0" - }, - "position": { - "height": 0.0318, - "width": 0.109, - "x": 0.1128, - "y": 0.1674 - }, - "props": { - "format": "YYYY-MM-DD hh:mm:ss", - "formattedValue": "2023-08-29 12:18:17", - "value": 1693311497777 - }, - "type": "ia.input.date-time-input" - }, - { - "meta": { - "name": "Label_28" - }, - "position": { - "height": 0.0318, - "width": 0.0959, - "x": 0.0222, - "y": 0.6698 - }, - "props": { - "text": "Reason Code" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "dropdownReasonCode" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "50% 169%" - }, - "width": 0.1439, - "x": 0.1146, - "y": 0.6698 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": ".../ContainerAlarms/tableAlarms.props.data" - }, - "transforms": [ - { - "code": "\toptions \u003d []\n\t\n\tfor item in value:\n\t\topt \u003d{\n\t\t\"label\": item[\"Name\"],\n\t\t\"value\": item[\"ID\"]\n\t\t}\n\t\toptions.append(opt)\n\treturn options", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "placeholder": { - "text": "Select Reason Code..." - }, - "showClearIcon": true, - "value": "2" - }, - "type": "ia.input.dropdown" - }, - { - "meta": { - "name": "eventID" - }, - "position": { - "height": 0.0318, - "width": 0.1444, - "x": 0.1135, - "y": 0.5624 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": ".../ContainerAlarms/tableAlarms.props.data" - }, - "transforms": [ - { - "code": "\toptions \u003d []\n\t\t\n\tfor item in value:\n\t\topt \u003d{\n\t\t\"label\": item[\"ID\"],\n\t\t\"value\": item[\"ID\"]\n\t\t}\n\t\toptions.append(opt)\n\treturn options", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "placeholder": { - "text": "Select Alarm ID..." - }, - "value": "69" - }, - "type": "ia.input.dropdown" - }, - { - "meta": { - "name": "Label_29" - }, - "position": { - "height": 0.0318, - "width": 0.1, - "x": 0.0194, - "y": 0.7412 - }, - "props": { - "text": "Mode Changed Event", - "textStyle": { - "fontSize": 12, - "fontStyle": "italic", - "fontWeight": "bolder", - "textDecoration": "underline" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_30" - }, - "position": { - "height": 0.0318, - "width": 0.0975, - "x": 0.0225, - "y": 0.7737 - }, - "props": { - "text": "Current Mode" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"targetState\":\"0\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setMode\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_36" - }, - "position": { - "height": 0.0385, - "width": 0.0454, - "x": 0.1141, - "y": 0.7729 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/control_point" - } - }, - "primary": false, - "text": "Auto" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"targetState\":\"1\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setMode\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_37" - }, - "position": { - "height": 0.0385, - "width": 0.0454, - "x": 0.1627, - "y": 0.7729 - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#000000", - "path": "material/control_point" - } - }, - "primary": false, - "text": "Maint" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"targetState\":\"2\"}\n\tsystem.perspective.sendMessage(\"measurementTab_setMode\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_38" - }, - "position": { - "height": 0.0385, - "width": 0.0459, - "x": 0.2114, - "y": 0.7729 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/control_point" - } - }, - "primary": false, - "text": "Man" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "EmbeddedView_0" - }, - "position": { - "height": 0.1482, - "width": 0.7226, - "x": 0.2592, - "y": 0.8335 - }, - "props": { - "path": "Main-Views/Commissioning Tool/UserFeedBack", - "style": { - "borderStyle": "solid", - "borderWidth": "1px", - "box-shadow": "5px 5px 5px grey", - "marginBottom": 10, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 10, - "overflow": "auto" - } - }, - "type": "ia.display.view" - } - ], - "custom": { - "testingAlarmPriority1": "", - "testingAlarmPriority2": "", - "testingAlarmPriority3": "", - "testingAlarmPriority4": "" - }, - "meta": { - "name": "ContainerMeasurement" - }, - "position": { - "tabIndex": 2 - }, - "props": { - "mode": "percent" - }, - "type": "ia.container.coord" - }, - { - "children": [ - { - "events": { - "component": { - "onRowDoubleClick": { - "config": { - "script": "\tselectedRowValue\u003devent[\"value\"]\n\tself.getSibling(\"textFieldEventID\").props.text \u003d selectedRowValue[\"ID\"]" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "tableAlarms" - }, - "position": { - "height": 0.8758, - "width": 0.7497, - "x": 0.2462, - "y": 0.0434 - }, - "props": { - "pager": { - "bottom": false, - "initialOption": 1000 - }, - "selection": { - "mode": "multiple interval" - } - }, - "type": "ia.display.table" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.sendMessage(\"utilsTab_changeSelectedPLC\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "dropdownTargetPLC" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "50% 169%" - }, - "width": 0.1382, - "x": 0.1042, - "y": 0.0515 - }, - "props": { - "options": [ - { - "label": "PLC01", - "value": "PLC01" - }, - { - "label": "PLC02", - "value": "PLC02" - }, - { - "label": "PLC03", - "value": "PLC03" - }, - { - "label": "PLC09", - "value": "PLC09" - } - ], - "showClearIcon": true, - "textAlign": "right", - "value": "PLC01" - }, - "type": "ia.input.dropdown" - }, - { - "meta": { - "name": "Label_11" - }, - "position": { - "height": 0.0318, - "width": 0.0975, - "x": 0.003, - "y": 0.0515 - }, - "props": { - "text": "Target PLC" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.sendMessage(\"utilsTab_init\")\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "buttonInit" - }, - "position": { - "height": 0.0318, - "width": 0.1366, - "x": 0.1045, - "y": 0.8535 - }, - "props": { - "image": { - "icon": { - "color": "#AAAAAA" - } - }, - "primary": false, - "text": "Reset" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onFileReceived": { - "config": { - "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileExtension\":event.file.name.split(\".\")[1]}\n\tsystem.perspective.sendMessage(\"utilsTab_importFile\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FileUpload_0" - }, - "position": { - "height": 0.0318, - "width": 0.1137, - "x": 0.0027, - "y": 0.0062 - }, - "props": { - "maxUploads": 1 - }, - "type": "ia.input.fileupload" - }, - { - "meta": { - "name": "dropdownCommandTarget" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "50% 169%" - }, - "width": 0.1382, - "x": 0.1042, - "y": 0.1175 - }, - "props": { - "options": [ - { - "label": "PLC01/10", - "value": "PLC01/10" - }, - { - "label": "PLC01/30", - "value": "PLC01/30" - }, - { - "label": "PLC01/40", - "value": "PLC01/40" - }, - { - "label": "PLC01/50", - "value": "PLC01/50" - }, - { - "label": "PLC01/60", - "value": "PLC01/60" - }, - { - "label": "PLC01/210", - "value": "PLC01/210" - }, - { - "label": "PLC01/220", - "value": "PLC01/220" - }, - { - "label": "PLC01/AIR", - "value": "PLC01/AIR" - }, - { - "label": "PLC01/P1", - "value": "PLC01/P1" - }, - { - "label": "PLC01/S01", - "value": "PLC01/S01" - }, - { - "label": "PLC01/State", - "value": "PLC01/State" - }, - { - "label": "PLC01/ZM1", - "value": "PLC01/ZM1" - }, - { - "label": "PLC01/ZM2", - "value": "PLC01/ZM2" - } - ], - "placeholder": { - "text": "Select Target..." - }, - "showClearIcon": true, - "textAlign": "right", - "value": "PLC01/30" - }, - "type": "ia.input.dropdown" - }, - { - "meta": { - "name": "textFieldEventState", - "visible": false - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "0% 37%" - }, - "width": 0.013, - "x": 0.2449, - "y": 0.6909 - }, - "props": { - "enabled": false, - "text": "0" - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_8" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "75% 137%" - }, - "width": 0.097, - "x": 0.0036, - "y": 0.1175 - }, - "props": { - "text": "Command Target" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"command\":\"synchStatus\"}\n\tsystem.perspective.sendMessage(\"utilsTab_handleCommands\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_20" - }, - "position": { - "height": 0.0318, - "width": 0.0652, - "x": 0.1054, - "y": 0.4845 - }, - "props": { - "image": { - "icon": { - "color": "#AAAAAA" - } - }, - "primary": false, - "text": "Synch status" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"command\":\"synchAlarms\"}\n\tsystem.perspective.sendMessage(\"utilsTab_handleCommands\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_21" - }, - "position": { - "height": 0.0318, - "width": 0.0693, - "x": 0.1732, - "y": 0.4845 - }, - "props": { - "image": { - "icon": { - "color": "#AAAAAA" - } - }, - "primary": false, - "text": "Synch alarms" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"command\":\"restoreFromDisconnection\"}\n\tsystem.perspective.sendMessage(\"utilsTab_handleCommands\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_7" - }, - "position": { - "height": 0.0318, - "width": 0.0688, - "x": 0.1735, - "y": 0.4078 - }, - "props": { - "image": { - "icon": { - "color": "#AAAAAA" - } - }, - "primary": false, - "text": "Reconnect" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"command\":\"simulateDisconnection\"}\n\tsystem.perspective.sendMessage(\"utilsTab_handleCommands\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_6" - }, - "position": { - "height": 0.0318, - "width": 0.0662, - "x": 0.1046, - "y": 0.4078 - }, - "props": { - "image": { - "icon": { - "color": "#AAAAAA" - } - }, - "primary": false, - "text": "Disconnect" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "textFieldDisconnectionDuration" - }, - "position": { - "height": 0.0318, - "width": 0.1382, - "x": 0.1042, - "y": 0.3694 - }, - "props": { - "text": "5000" - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_15" - }, - "position": { - "height": 0.0288, - "width": 0.1522, - "x": 0.5459, - "y": 0.0113 - }, - "props": { - "text": "Alarm list", - "textStyle": { - "fontWeight": "bolder", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_13" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "75% 137%" - }, - "width": 0.097, - "x": 0.0036, - "y": 0.1541 - }, - "props": { - "text": "Command Code" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "textFieldCommandCode", - "visible": false - }, - "position": { - "height": 0.0298, - "width": 0.0141, - "x": 0.2438, - "y": 0.2227 - }, - "props": { - "enabled": false, - "text": "1" - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_14" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "75% 137%" - }, - "width": 0.097, - "x": 0.0036, - "y": 0.1907 - }, - "props": { - "text": "Command Params" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "textFieldCommandParameters" - }, - "position": { - "height": 0.0318, - "width": 0.1382, - "x": 0.1042, - "y": 0.1907 - }, - "props": { - "enabled": false, - "style": { - "textAlign": "right" - } - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_17" - }, - "position": { - "height": 0.0318, - "width": 0.097, - "x": 0.0036, - "y": 0.2638 - }, - "props": { - "text": "Timestamp" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "textFieldCommandTimestamp" - }, - "position": { - "height": 0.0318, - "width": 0.1011, - "x": 0.1042, - "y": 0.2638 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "toStr(toMillis({../dateTimeInputCommandTime.props.value}))" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "textAlign": "right" - } - }, - "type": "ia.input.text-field" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttimeNow\u003dsystem.date.now()\n\ttimestamp \u003d system.date.toMillis(timeNow)\n\tself.getSibling(\"textFieldCommandTimestamp\").props.text \u003d timestamp" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "buttonInit_2" - }, - "position": { - "height": 0.0318, - "width": 0.0328, - "x": 0.2085, - "y": 0.2638 - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/access_time" - } - }, - "primary": false, - "text": "" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "dateTimeInputCommandTime" - }, - "position": { - "height": 0.0318, - "width": 0.1382, - "x": 0.1042, - "y": 0.2273 - }, - "props": { - "format": "YYYY-MM-DD hh:mm:ss", - "formattedValue": "2022-12-23 04:14:00", - "value": { - "$": [ - "ts", - 0, - 1691659021617 - ], - "$ts": 1671812040000 - } - }, - "type": "ia.input.date-time-input" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload\u003d{\"command\":\"sendCommand\"}\n\tsystem.perspective.sendMessage(\"utilsTab_handleCommands\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_15" - }, - "position": { - "height": 0.0318, - "width": 0.1382, - "x": 0.1042, - "y": 0.3004 - }, - "props": { - "image": { - "icon": { - "color": "#AAAAAA" - } - }, - "primary": false, - "text": "Send command" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label_4" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "75% 137%" - }, - "width": 0.097, - "x": 0.0036, - "y": 0.9033 - }, - "props": { - "text": "Information" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "textAreaResult" - }, - "position": { - "height": 0.0616, - "width": 0.9619, - "x": 0.0039, - "y": 0.9324 - }, - "props": { - "enabled": false, - "text": "Init completed" - }, - "type": "ia.input.text-area" - }, - { - "meta": { - "name": "Label_19" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "75% 137%" - }, - "width": 0.0959, - "x": 0.004, - "y": 0.3694 - }, - "props": { - "text": "Disconnection duration" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_20" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "75% 137%" - }, - "width": 0.0959, - "x": 0.004, - "y": 0.4078 - }, - "props": { - "text": "Connection" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_21" - }, - "position": { - "height": 0.0318, - "rotate": { - "anchor": "75% 137%" - }, - "width": 0.0959, - "x": 0.004, - "y": 0.4845 - }, - "props": { - "text": "Sync" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_18" - }, - "position": { - "height": 0.0318, - "width": 0.1382, - "x": 0.1042, - "y": 0.0839 - }, - "props": { - "text": "Commands", - "textStyle": { - "fontWeight": "bolder", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_22" - }, - "position": { - "height": 0.0318, - "width": 0.1382, - "x": 0.1042, - "y": 0.3328 - }, - "props": { - "text": "Comms Connection", - "textStyle": { - "fontWeight": "bolder", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_23" - }, - "position": { - "height": 0.0288, - "width": 0.1366, - "x": 0.1046, - "y": 0.4508 - }, - "props": { - "text": "Synchronisation", - "textStyle": { - "fontWeight": "bolder", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "height": 0.0318, - "width": 0.1382, - "x": 0.1042, - "y": 0.1541 - }, - "propConfig": { - "props.value": { - "onChange": { - "enabled": null, - "script": "\tself.getSibling(\"textFieldCommandCode\").props.text \u003d str(self.props.value)" - } - } - }, - "props": { - "options": [ - { - "label": "Start", - "value": 1 - }, - { - "label": "Stop", - "value": 2 - }, - { - "label": "Reset", - "value": 3 - }, - { - "label": "Get", - "value": 4 - }, - { - "label": "Set", - "value": 5 - }, - { - "label": "Enable", - "value": 6 - }, - { - "label": "Disable", - "value": 7 - } - ], - "placeholder": { - "text": "Select Command..." - }, - "textAlign": "right", - "value": 1 - }, - "type": "ia.input.dropdown" - }, - { - "meta": { - "name": "Label_25" - }, - "position": { - "height": 0.0318, - "width": 0.097, - "x": 0.0036, - "y": 0.2273 - }, - "props": { - "text": "Date and time" - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "ContainerUtils" - }, - "position": { - "tabIndex": 3 - }, - "props": { - "mode": "percent" - }, - "type": "ia.container.coord" - } - ], - "custom": { - "Admin": false, - "AdminTabs": [ - "Alarms", - "Sources", - "Sequence", - "Utils" - ], - "Default": [ - "Alarms", - "Sources", - "Sequence" - ] - }, - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tindex \u003d self.props.currentTabIndex\n\tif index \u003d\u003d 4:\n\t\tsystem.perspective.navigate(url \u003d \"https://w.amazon.com/bin/view/EURME/MAP/Projects/Amazon_SCADA/SCADA/Manual/CommissioningTools/\" , newTab \u003d True)\t\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "TabContainer" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "parent.custom.displayUpload" - }, - "transforms": [ - { - "expression": "!{value}", - "type": "expression" - } - ], - "type": "property" - } - }, - "props.tabs": { - "binding": { - "config": { - "path": "this.custom.Admin" - }, - "transforms": [ - { - "code": "\t\n\tif value:\n\t\treturn self.custom.AdminTabs\n\telse:\n\t\treturn self.custom.Default", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "tabSize": { - "height": 40, - "width": 120 - } - }, - "type": "ia.container.tab" - }, - { - "children": [ - { - "meta": { - "name": "Header" - }, - "position": { - "basis": "75px" - }, - "props": { - "style": { - "opacity": "0.73", - "overflow": "auto", - "textShadow": "#AAAAAA 1px 2px 2px" - }, - "text": "Commissioning Tool", - "textStyle": { - "fontSize": 30, - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Header" - }, - "position": { - "basis": "32px" - }, - "props": { - "text": "Start From Fresh ?", - "textStyle": { - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Header" - }, - "position": { - "basis": "32px" - }, - "props": { - "text": "Upload Alarms.csv", - "textStyle": { - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onFileReceived": { - "config": { - "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n\tsystem.perspective.sendMessage(\"alarmsTab_importFile\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FileUpload" - }, - "position": { - "grow": 1 - }, - "props": { - "style": { - "backgroundColor": "#F2F3F4", - "borderStyle": "none", - "classes": "FadeInFast, background, background-none", - "cursor": "pointer", - "max-height": "400px", - "overflow": "visible" - }, - "supportedFileTypes": [ - "csv" - ] - }, - "type": "ia.input.fileupload" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "margin": "10px", - "padding": "10px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Header" - }, - "position": { - "basis": "32px" - }, - "props": { - "text": "Upload Sources.csv", - "textStyle": { - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onFileReceived": { - "config": { - "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n\tsystem.perspective.sendMessage(\"sourcesTab_importFile\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FileUpload" - }, - "position": { - "grow": 1 - }, - "props": { - "style": { - "backgroundColor": "#F2F3F4", - "borderStyle": "none", - "classes": "FadeInFast, background, background-none", - "cursor": "pointer", - "max-height": "400px", - "overflow": "visible" - }, - "supportedFileTypes": [ - "csv" - ] - }, - "type": "ia.input.fileupload" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "margin": "10px", - "padding": "10px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "grow": 1 - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "borderBottomLeftRadius": "2px", - "borderBottomRightRadius": "2px", - "borderColor": "#D4D4D4", - "borderStyle": "dotted", - "borderTopLeftRadius": "2px", - "borderTopRightRadius": "2px", - "borderWidth": "1px", - "margin": "25px", - "max-height": "500px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Header" - }, - "position": { - "basis": "32px" - }, - "props": { - "text": "Pick Up Where You Left Off ?", - "textStyle": { - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Header" - }, - "position": { - "basis": "32px" - }, - "props": { - "text": "Upload Alarms Export", - "textStyle": { - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onFileReceived": { - "config": { - "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n\tsystem.perspective.sendMessage(\"uploadBackup\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FileUpload" - }, - "position": { - "grow": 1 - }, - "props": { - "style": { - "backgroundColor": "#F2F3F4", - "borderStyle": "none", - "classes": "FadeInFast, background, background-none", - "cursor": "pointer", - "max-height": "400px", - "overflow": "visible" - }, - "supportedFileTypes": [ - "csv" - ] - }, - "type": "ia.input.fileupload" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "margin": "10px", - "padding": "10px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Header" - }, - "position": { - "basis": "32px" - }, - "props": { - "text": "Upload Sources Export", - "textStyle": { - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onFileReceived": { - "config": { - "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n\tsystem.perspective.sendMessage(\"uploadBackup\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FileUpload" - }, - "position": { - "grow": 1 - }, - "props": { - "style": { - "backgroundColor": "#F2F3F4", - "borderStyle": "none", - "classes": "FadeInFast, background, background-none", - "cursor": "pointer", - "max-height": "400px", - "overflow": "visible" - }, - "supportedFileTypes": [ - "csv" - ] - }, - "type": "ia.input.fileupload" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "margin": "10px", - "padding": "10px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "grow": 1 - }, - "props": { - "style": { - "max-height": "value" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "borderBottomLeftRadius": "2px", - "borderBottomRightRadius": "2px", - "borderColor": "#D4D4D4", - "borderStyle": "dotted", - "borderTopLeftRadius": "2px", - "borderTopRightRadius": "2px", - "borderWidth": "1px", - "margin": "25px", - "max-height": "500px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "props": { - "style": { - "margin": "10px", - "padding": "10px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Footer" - }, - "props": { - "style": { - "margin": "10px", - "max-height": "75px", - "overflow": "visible" - }, - "text": "Required Data ", - "textStyle": { - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "meta": { - "name": "AlarmsData" - }, - "position": { - "basis": "200px" - }, - "propConfig": { - "props.selected": { - "binding": { - "config": { - "path": "session.custom.alarms" - }, - "transforms": [ - { - "code": "\tif value :\n\t\treturn True\n\telse:\n\t\treturn False", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "enabled": false, - "text": "Alarms Data", - "textPosition": "left" - }, - "type": "ia.input.checkbox" - }, - { - "meta": { - "name": "SourceData" - }, - "position": { - "basis": "200px" - }, - "propConfig": { - "props.selected": { - "binding": { - "config": { - "path": "session.custom.sources" - }, - "transforms": [ - { - "code": "\tif value :\n\t\treturn True\n\telse:\n\t\treturn False", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "enabled": false, - "text": "Source Data", - "textPosition": "left" - }, - "type": "ia.input.checkbox" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "grow": 1 - }, - "props": { - "justify": "space-around", - "style": { - "margin": "10px", - "max-height": "75px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.session.custom.alarms \u003d []\n\tself.session.custom.sources \u003d []" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_0" - }, - "position": { - "basis": "120px", - "grow": 1 - }, - "propConfig": { - "custom.Start": { - "binding": { - "config": { - "expression": "try(if(len({/root.custom.alarms})\u003e0 \u0026\u0026 len({/root.custom.sources})\u003e0, True,False),False)" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/delete_forever" - } - }, - "primary": false, - "style": { - "margin": "5px", - "max-width": "120px" - }, - "text": "Clear" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.getChild(\"root\").custom.displayUpload \u003d False" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "120px", - "grow": 1 - }, - "propConfig": { - "custom.Start": { - "binding": { - "config": { - "expression": "try(if(len({/root.custom.alarms})\u003e0 \u0026\u0026 len({/root.custom.sources})\u003e0, True,False),False)" - }, - "type": "expr" - } - }, - "props.enabled": { - "binding": { - "config": { - "path": "this.custom.Start" - }, - "transforms": [ - { - "code": "\treturn value", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/play_circle_outline" - } - }, - "style": { - "margin": "5px", - "max-width": "120px" - }, - "text": "Start" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "grow": 1 - }, - "props": { - "justify": "flex-end", - "style": { - "margin": "20px", - "max-height": "75px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "200px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "EmbeddedView" - }, - "position": { - "basis": "150px" - }, - "props": { - "path": "Main-Views/Commissioning Tool/UserFeedBack", - "style": { - "margin": "10px", - "overflow": "auto", - "padding": "10px" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "parent.custom.displayUpload" - }, - "type": "property" - } - } - }, - "props": { - "direction": "column", - "style": { - "margin": "10px", - "padding": "5-x" - } - }, - "type": "ia.container.flex" - } - ], - "custom": { - "displayUpload": true - }, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\t\n\tif not self.session.custom.sources or not self.session.custom.alarms:\n\t\tself.custom.displayUpload \u003d True \n\telse:\n\t\tself.custom.displayUpload \u003d False\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "root" - }, - "position": { - "x": 0.0412, - "y": 0.001 - }, - "propConfig": { - "custom.alarms": { - "binding": { - "config": { - "path": "session.custom.alarms" - }, - "type": "property" - } - }, - "custom.sources": { - "binding": { - "config": { - "path": "session.custom.sources" - }, - "type": "property" - } - } - }, - "props": { - "direction": "column" - }, - "scripts": { - "customMethods": [ - { - "name": "sendConsoleMsg", - "params": [ - "Msg" - ], - "script": "\t# implement your method here\n\tpayload \u003d {\n\t\t\t\t\"Msg\":Msg\n\t\t\t}\n\tsystem.perspective.sendMessage(\"addFeedback\" , payload , \"page\")" - } - ], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "alarmsTab_init", - "pageScope": true, - "script": "\tresult\u003d \"Resetting Alarms Page ...\"\n\t\n\t\n\ttry:\n\t import sys\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerAlarms\")\n\t #clearing all fields\n\t\n\t targetContainer.getChild(\"textFieldTargetPLC\").props.text \u003d \"\"\n\t targetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.value \u003d None\n\t targetContainer.getChild(\"textFieldEventsCommandParams_EventID\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textField_alarmPriority\").props.text \u003d \"\"\n\t targetContainer.getChild(\"DateTimeInput\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textFieldEventsCommandParams_EventDescription\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text\u003d \"\"\n\t \n\t targetContainer.getChild(\"tableAlarms\").props.data \u003d []\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\n\tself.sendConsoleMsg(result)\n\n\n", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "setTimeNow", - "pageScope": true, - "script": "\timport sys\n\tresult\u003d\"Setting Time to current time\"\n\ttry:\n\t containerName \u003d payload[\"containerName\"]\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(containerName)\n\t targetName\u003dpayload[\"targetName\"]\n\t timeNow\u003dsystem.date.now()\n\t timestamp \u003d system.date.toMillis(timeNow)\n\t targetContainer.getChild(targetName).props.value \u003d timeNow\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t \n\tself.sendConsoleMsg(result)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "setEventState", - "pageScope": true, - "script": "\t\n\tresult \u003d \"Setting Event State on %s to %s\"%(payload[\"containerName\"] , payload[\"status\"] )\n\tstatus \u003d payload[\"status\"]\n\tcontainerName \u003d payload[\"containerName\"]\n\t\n\tself.getChild(\"TabContainer\").getChild(containerName).getChild(\"textFieldEventsCommandParams_Status\").props.text \u003d status\n\t\n\tself.sendConsoleMsg(result)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "sendSimulationEvent", - "pageScope": true, - "script": "\n\t\n\tself.sendConsoleMsg(\"Sending an Event ...\")\n\t\n\tcontainerName \u003d payload[\"containerName\"]\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(containerName)\n\tsimulationEventStatus\u003dpayload[\"status\"]\n\tselectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\twhid \u003dstr(system.tag.readBlocking([selectedTagProvider+\"Configuration/FC\"])[0].value)\n\ttimestamp \u003d targetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text\n\ttargetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text \u003d timestamp\n\t\n\tplc\u003dstr(targetContainer.getChild(\"textFieldTargetPLC\").props.text)\n\teventParameters_target\u003d\"\"\n\tif containerName\u003d\u003d\"ContainerSources\":\n\t eventParameters_target \u003d str(targetContainer.getChild(\"textField_SelectedTarget\").props.text)#review\n\telse:\n\t eventParameters_target \u003d str(targetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.value)\n\tcommandTarget\u003dplc+\"/-1\"#-1 is used by E2C application to identify a simulation command\n\teventParameters_timestamp\u003dstr(targetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text)\n\teventParameters_eventID\u003dstr(targetContainer.getChild(\"textFieldEventsCommandParams_EventID\").props.text)\n\teventParameters_status\u003dstr(simulationEventStatus)\n\teventParametersString\u003deventParameters_target+\",\"+eventParameters_timestamp+\",\"+eventParameters_eventID+\",\"+eventParameters_status\n\tcommandParams \u003d \"EVENTS,\"+eventParametersString\n\tactionCode \u003d 5 #SET\n\tparameters\u003d{}\n\tparameters[\"commandTarget\"] \u003d commandTarget\n\tparameters[\"commandCode\"] \u003d actionCode\n\tparameters[\"commandParams\"] \u003d commandParams\n\n\tself.sendConsoleMsg(\"Event Parameters : %s\"%str(parameters))\n\t\n\tresponse \u003d Commands.button_commands.send_request(whid,actionCode,parameters)\n\t\n\tself.sendConsoleMsg(response)\n", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "setTestResult", - "pageScope": true, - "script": "\timport sys\n\t\n\tcontainerName \u003d payload[\"containerName\"]\n\ttargetTable\u003d\"tableAlarms\"\n\tif containerName\u003d\u003d\"ContainerSources\":\n\t\ttargetTable\u003d\"tableSources\"\n\ttestResult\u003dpayload[\"testResult\"]\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(containerName)\n\t\n\tresult\u003d\"Setting test results for %s\"%targetTable\n\t\n\ttry:\n\t\ttargetAlarmIDLastTest\u003dtargetContainer.getChild(\"textFieldEventsCommandParams_EventID\").props.text\n\t\tcurrentDataJSON \u003d targetContainer.getChild(targetTable).props.data\n\t\tselectedRowsJSON\u003dtargetContainer.getChild(targetTable).props.selection.data\t\t\n\t\tfor indexSelectedRow in range(len(selectedRowsJSON)):\n\t\t\tcurrentSelectedRowDic\u003dselectedRowsJSON[indexSelectedRow]\n\t\t\trowNumber\u003dint(currentSelectedRowDic[\"Row\"])\n\t\t\tnewData\u003dcurrentDataJSON[rowNumber]\t\t\t\n\t\t\tcurrentDataJSON[rowNumber][\"Tested_date_UTC\"]\u003dsystem.date.format(system.date.now(),\"YYYY-MM-DD HH:mm:ss\")\n\t\t\tcurrentDataJSON[rowNumber][\"Result\"]\u003dtestResult\n\texcept:\n\t\texc_type, exc_obj, tb \u003d sys.exc_info()\n\t\tlineno \u003d tb.tb_lineno\n\t\terrorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t\tself.sendConsoleMsg(errorMessage)\n\t\n\tself.sendConsoleMsg(result)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "exportFile", - "pageScope": true, - "script": "\timport sys\n\t\n\tcontainerName\u003dpayload[\"containerName\"]\n\ttargetTable\u003dpayload[\"targetTable\"]\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(containerName)\n\tselectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\twhid \u003dstr(system.tag.readBlocking([selectedTagProvider+\"Configuration/FC\"])[0].value)\n\t\n\tfilePrefix\u003d\"Alarms_Testing_\"\n\tif targetTable\u003d\u003d\"tableSources\":\n\t filePrefix\u003d\"Sources_Testing_\"\n\t\n\ttry:\n\t columns \u003d targetContainer.getChild(targetTable).props.columns\n\t headers\u003d[]\n\t for column in columns:\n\t headers.append(column.field)\n\t rows \u003d targetContainer.getChild(targetTable).props.data\n\t data\u003d[]\n\t for row in rows:\n\t rowContent\u003d[]\n\t for column in columns:\n\t rowContent.append(row[column.field])\n\t data.append(rowContent)\n\t\n\t ds\u003dsystem.dataset.toDataSet(headers, data)\n\t Excel_xlsx \u003d system.dataset.toCSV(ds,True)\n\t fileName\u003dfilePrefix+whid\n\t fileName\u003dfileName+\"_\"+str(targetContainer.getChild(\"textFieldTargetPLC\").props.text)\n\t fileName\u003dfileName+\"_\"+system.date.format(system.date.now(),\u0027yyyyMMddHHmmss\u0027)+\".csv\"\n\t \n\t system.perspective.download(fileName,Excel_xlsx)\n\t \n\t result\u003d\"Exporting %s\"%fileName\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t\n\tself.sendConsoleMsg(result)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "alarmsTab_importFile", - "pageScope": true, - "script": "\timport sys\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerAlarms\")\n\theaders \u003d [\"Row\",\"ID\",\"Name\",\"Priority\",\"Type\",\"Tested date\",\"Result\",\"Notes\" ]\n\trows\u003d[]\n\ttableContent\u003d[]\n\tresult\u003d\"Importing file: %s \"%payload[\"fileName\"]\n\t\n\tself.sendConsoleMsg(result)\n\t\t\n\ttry:\n\t rowNumber\u003d0\n\t fileContent \u003d payload[\"fileContent\"]\n\t fileName\u003dpayload[\"fileName\"]\n\t \n\t fileExtension \u003d fileName.split(\".\")[1]\n\t if fileName!\u003d\"alarms.csv\":\n\t result+\u003d\"Invalid file name. Please select alarms.csv file\"\n\t targetContainer.getChild(\"textAreaResult\").props.text \u003d str(result)\n\t return\n\t\n\t tableContent\u003d[]\n\t rowsValues\u003d[]\n\t rowsValues \u003d fileContent.splitlines()\n\t for indexRow in range(1,len(rowsValues)):\n\t Row\u003drowNumber\n\t rowFields \u003d rowsValues[indexRow].replace(\"\\\"\",\"\").split(\",\")\n\t ID\u003drowFields[0]\n\t Name\u003drowFields[1]\n\t Priority\u003d\"Invalid\"\n\t\n\t if int(rowFields[2])\u003d\u003d1:\n\t Priority\u003d\"Diagnostic\"\n\t if int(rowFields[2])\u003d\u003d2:\n\t Priority\u003d\"Low\"\n\t if int(rowFields[2])\u003d\u003d3:\n\t Priority\u003d\"Medium\"\n\t if int(rowFields[2])\u003d\u003d4:\n\t Priority\u003d\"High\"\n\t Type\u003d\"Default\"\n\t if rowFields[3]\u003d\u003d\"1\":\n\t Type\u003d\"Critical\"\n\t TestedDate\u003d\"\"\n\t TestedResult\u003d\"\"\n\t Notes\u003d\"\"\n\t rowContent\u003d{}\n\t rowContent[\"Row\"]\u003drowNumber\n\t rowContent[\"ID\"]\u003dID\n\t rowContent[\"Name\"]\u003dName\n\t rowContent[\"Priority\"]\u003dPriority\n\t rowContent[\"Type\"]\u003dType\n\t rowContent[\"Tested_date_UTC\"]\u003d\"\"\n\t rowContent[\"Result\"]\u003d\"\"\n\t rowContent[\"Notes\"]\u003d\"\"\n\t tableContent.append(rowContent)\n\t rowNumber+\u003d1\n\n\t self.session.custom.alarms \u003d tableContent\n\t\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t\n\tresult \u003d \"File imported succesfully\" \t\n\tself.sendConsoleMsg(result)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "sourcesTab_importFile", - "pageScope": true, - "script": "\timport sys\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerSources\")\n\tresult\u003d\"\"\n\ttableContent\u003d[]\n\ttry:\n\t rowNumber\u003d0\n\t fileContent \u003d payload[\"fileContent\"]\n\t fileName\u003dpayload[\"fileName\"]\n\t \n\t result\u003d\"Importing file: %s \"%payload[\"fileName\"]\n\t \t\n\t self.sendConsoleMsg(result)\n\t fileExtension \u003d fileName.split(\".\")[1]\n\t\n\t\n\t if fileName!\u003d\"sources.csv\":\n\t result \u003d\"Invalid file name. Please select sources.csv file\"\n\t self.sendConsoleMsg(result)\n\t return\n\t\n\t rowsValues\u003d[]\n\t rowsValues \u003d fileContent.splitlines()\n\t tagProviderSourcesList\u003d[]\n\t for indexRow in range(1,len(rowsValues)):\n\t rowFields \u003d rowsValues[indexRow].replace(\"\\\"\",\"\").split(\",\")\n\t rowContent\u003d{}\n\t rowContent[\"Row\"]\u003drowNumber\n\t rowContent[\"ID\"]\u003drowFields[0]\n\t rowContent[\"Source\"]\u003drowFields[1]\n\t rowContent[\"Tested_date_UTC\"]\u003d\"\"\n\t rowContent[\"Result\"]\u003d\"\"\n\t rowContent[\"Notes\"]\u003d\"\"\n\t tableContent.append(rowContent)\n\t tagProviderSourcesList.append(rowFields[1])\n\t rowNumber+\u003d1\n\t self.session.custom.sources \u003d tableContent\n\t\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t \t\n\tresult \u003d \"File imported succesfully\" \t\n\tself.sendConsoleMsg(result)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "sourcesTab_init", - "pageScope": true, - "script": "\tresult\u003d \"Resetting Sources Page ...\"\n\ttry:\n\t import sys\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerSources\")\n\t #clearing all fields\n\t targetContainer.getChild(\"textFieldTargetPLC\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textField_SelectedTarget\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textFieldEventsCommandParams_EventID\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textField_alarmPriority\").props.text \u003d \"\"\n\t targetContainer.getChild(\"DateTimeInput\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textFieldEventsCommandParams_EventDescription\").props.text \u003d \"\"\n\t targetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text\u003d \"\"\n\t targetContainer.getChild(\"StatusIcon\").props.params.tagProps[0]\u003d\"\"\n\t #Creating source table\n\t targetContainer.getChild(\"tableSources\").props.data \u003d []\n\t targetContainer.custom.testingAlarmPriority1 \u003d \u0027\u0027\n\t targetContainer.custom.testingAlarmPriority2 \u003d \u0027\u0027\n\t targetContainer.custom.testingAlarmPriority3 \u003d \u0027\u0027\n\t targetContainer.custom.testingAlarmPriority4 \u003d \u0027\u0027\n\t result+\u003d\"Init completed\"\n\t\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t \n\tself.sendConsoleMsg(result)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "alarmsTab_selectAlarm", - "pageScope": true, - "script": "\t\n\t\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerAlarms\")\n\ttargetContainer.getChild(\"textFieldEventsCommandParams_EventID\").props.text \u003d payload[\"ID\"]\n\ttargetContainer.getChild(\"textFieldEventsCommandParams_EventDescription\").props.text \u003d payload[\"Name\"]\n\ttargetContainer.getChild(\"textField_alarmPriority\").props.text\u003dpayload[\"Priority\"]\n\t\n\n\t\n\tself.sendConsoleMsg(\"Setting Alarm ID, Description \u0026 Priority \")", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "sourcesTab_selectSource", - "pageScope": true, - "script": "\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerSources\")\n\tself.getChild(\"TabContainer\").getChild(\"ContainerSources\").getChild(\"textField_SelectedTarget\").props.text \u003d payload[\"Source\"]\n\ttargetContainer.getChild(\"StatusIcon\").props.params.tagProps[0]\u003dpayload[\"Source\"]\n\t\n\tself.sendConsoleMsg(\"Setting Source ID\")", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "sourcesTab_setAlarm", - "pageScope": true, - "script": "\t# implement your handler here\n\ttargetAlarm\u003dpayload[\"alarm\"]\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerSources\")\n\ttargetContainer.getChild(\"textField_alarmPriority\").props.text\u003dtargetAlarm[\"priority\"]\n\ttargetContainer.getChild(\"textFieldEventsCommandParams_EventID\").props.text \u003d targetAlarm[\"id\"]\n\ttargetContainer.getChild(\"textFieldEventsCommandParams_EventDescription\").props.text\u003dtargetAlarm[\"message\"]\n\t\n\tself.sendConsoleMsg(\"Setting Alarm ID, Description \u0026 Priority \")", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "measurementTab_init", - "pageScope": true, - "script": "\timport sys\n\ttry:\n\t\tresult\u003d\"Restting Sequence Page \"\n\t\tself.sendConsoleMsg(result)\n\t\t\n\t\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t\tselectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t\t#Check if is a valid SCADA 2.0 Tag provider\n\t\t#Filling up the dropdown with the list of the PLCs\n\t\ttagProvidersPLCs \u003d system.tag.browse(path \u003dselectedTagProvider , filter \u003d {})\n\t\ttagProviderPLCsList\u003d[]\n\t\tfor tagProvidersPLC in tagProvidersPLCs.getResults():\n\t\t fullPath\u003dstr(tagProvidersPLC[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t\t entry\u003d{}\n\t\t entry[\u0027value\u0027] \u003d fullPath\n\t\t entry[\u0027label\u0027] \u003d fullPath\n\t\t tagProviderPLCsList.append(entry)\n\t\ttargetContainer.getChild(\"dropdownTargetPLC\").props.options \u003d tagProviderPLCsList\n\t\tselectedValue \u003d tagProviderPLCsList[0][\"label\"]\n\t\ttargetContainer.getChild(\"dropdownTargetPLC\").props.value \u003d selectedValue\n\t\t#Filling up the dropdown with the list of the sources\n\t\ttagProvidersSources \u003d system.tag.browse(path \u003dselectedTagProvider+\"/\"+selectedValue , filter \u003d {})\n\t\ttagProviderSourcesList\u003d[]\n\t\tfor tagProvidersSource in tagProvidersSources.getResults():\n\t\t fullPath\u003dstr(tagProvidersSource[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t\t entry\u003d{}\n\t\t entry[\u0027value\u0027] \u003d fullPath\n\t\t entry[\u0027label\u0027] \u003d fullPath\n\t\t tagProviderSourcesList.append(entry)\n\t\ttargetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.options \u003d tagProviderSourcesList\n\t\n\t\n\t\ttargetContainer.getChild(\"tableSequence\").props.data \u003d []\n\t\ttargetContainer.custom.testingAlarmPriority1 \u003d \u0027\u0027\n\t\ttargetContainer.custom.testingAlarmPriority2 \u003d \u0027\u0027\n\t\ttargetContainer.custom.testingAlarmPriority3 \u003d \u0027\u0027\n\t\ttargetContainer.custom.testingAlarmPriority4 \u003d \u0027\u0027\n\t\tresult \u003d\"Init completed\"\n\t\t\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t \n\t self.sendConsoleMsg(errorMessage)\n\tself.sendConsoleMsg(result)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "measurementTab_importFile", - "pageScope": true, - "script": "\timport sys\n\tfrom collections import OrderedDict\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\ttry:\n\t result\u003d\"Importing file Sequence Backup ... \"\n\t\n\t self.sendConsoleMsg(result)\n\t rowNumber\u003d0\n\t result\u003d\"\"\n\t fileContent \u003d payload[\"fileContent\"]\n\t fileExtension\u003dpayload[\"fileExtension\"]\n\t if fileExtension\u003d\u003d\"csv\":\n\t self.sendConsoleMsg(\"File has correct extension . Importing ...\") \n\t rowsValues\u003d[]\n\t rowsValues \u003d fileContent.splitlines()\n\t tableContent\u003d[]\n\t for indexRow in range(1,len(rowsValues)):\n\t \n\t rowFields \u003d rowsValues[indexRow].replace(\"\\\"\",\"\").split(\",\")\n\t system.perspective.print(rowFields)\n\t messageType\u003drowFields[6]\n\t rowContent \u003d OrderedDict(\n\t [\n\t (\"Seq\",str(rowFields[13])),\n\t (\"Type\", messageType),\n\t (\"When\",rowFields[7]),\n\t (\"Source\", rowFields[5]),\n\t (\"CurrentState\",\"\"),\n\t (\"ReasonCode\", \"\"),\n\t (\"CurrentMode\", \"\"),\n\t (\"EventID\", \"\"),\n\t (\"EventState\", \"\"),\n\t (\"MeasurementName\",\"\"),\n\t (\"SamplingInterval\",\"\"),\n\t (\"Unit\",\"\"),\n\t (\"DeltaValue\",\"\"),\n\t (\"Selected\", \"\")\n\t ]\n\t )\n\t if messageType\u003d\u003d\"StateChanged\":\n\t rowContent[\"CurrentState\"]\u003drowFields[8]\n\t rowContent[\"ReasonCode\"]\u003drowFields[4]\n\t if messageType\u003d\u003d\"ModeChanged\":\n\t rowContent[\"CurrentMode\"]\u003drowFields[0]\n\t if messageType\u003d\u003d\"Event\":\n\t rowContent[\"EventID\"]\u003drowFields[9]\n\t rowContent[\"EventState\"]\u003d rowFields[1]\n\t if messageType\u003d\u003d\"MeasurementEvent\":\n\t rowContent[\"MeasurementName\"]\u003drowFields[10]\n\t rowContent[\"SamplingInterval\"]\u003drowFields[2]\n\t rowContent[\"Unit\"]\u003drowFields[3]\n\t rowContent[\"DeltaValue\"]\u003d rowFields[11]\n\t tableContent.append(rowContent)\n\t \ttargetContainer.getChild(\"tableSequence\").props.data \u003d tableContent\n\t else:\n\t \tresult\u003d\"Importing file must be a CSV file not a %s\"%(fileExtension) \n\t \t\n\t \tself.sendConsoleMsg(result)\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\tself.sendConsoleMsg(\"Sequence Import Sucessful\")", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "measurementTab_sendEvent", - "pageScope": true, - "script": "\t# implement your handler here\n\timport time\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\tselectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\twhid \u003d str(system.tag.readBlocking([selectedTagProvider+\"Configuration/FC\"])[0].value)\n\tcommandTarget\u003d str(targetContainer.getChild(\"dropdownTargetPLC\").props.value)+\"/SPRK\"\n\tinterval \u003d targetContainer.getChild(\"textFieldInterval\").props.value\n\t\n\tselectedRows \u003d targetContainer.getChild(\"tableSequence\").props.data\n\tresult\u003d\"\"\n\ttry:\n\t\tactionCode \u003d 5 #SET\n\t\tfor selectedRow in selectedRows:\n\t\t eventType\u003dselectedRow[\"Type\"]\n\t\t timestamp \u003d selectedRow[\"When\"]\n\t\t source \u003d selectedRow[\"Source\"]\n\t\t indexSeletectedRow\u003dint(selectedRow[\"Seq\"])\n\t\t targetContainer.getChild(\"tableSequence\").props.selection.selectedRow \u003d indexSeletectedRow\n\t\t targetContainer.getChild(\"rowOfLastMessageSent\").props.value \u003d indexSeletectedRow\n\t\t if eventType\u003d\u003d\"StateChanged\":\n\t\t currentState \u003d selectedRow[\"CurrentState\"]\n\t\t reasonCode \u003d selectedRow[\"ReasonCode\"]\n\t\t eventParametersString\u003dstr(source)+\",\"+str(currentState)+\",\"+str(reasonCode)+\",\"+str(timestamp)\n\t\t commandParams \u003d \"STATE,\"+eventParametersString\n\t\t if eventType\u003d\u003d\"ModeChanged\":\n\t\t currentMode \u003d selectedRow[\"CurrentMode\"]\n\t\t eventParametersString\u003dstr(source)+\",\"+str(currentMode)+\",\"+str(timestamp)\n\t\t commandParams \u003d \"MODE,\"+eventParametersString\n\t\t if eventType\u003d\u003d\"Event\":\n\t\t eventID \u003d selectedRow[\"EventID\"]\n\t\t eventState \u003d selectedRow[\"EventState\"]\n\t\t eventParametersString\u003dstr(source)+\",\"+str(timestamp)+\",\"+str(eventID)+\",\"+str(eventState)\n\t\t commandParams \u003d \"EVENTS,\"+eventParametersString\n\t\t if eventType\u003d\u003d\"MeasurementEvent\":\n\t\t measurementName \u003d selectedRow[\"MeasurementName\"]\n\t\t samplingInterval \u003d selectedRow[\"SamplingInterval\"]\n\t\t unit \u003d selectedRow[\"Unit\"]\n\t\t deltaValue \u003d selectedRow[\"DeltaValue\"]\n\t\t eventParametersString\u003dstr(source)+\",\"+str(measurementName)+\",\"+str(samplingInterval)+\",\"+str(unit)+\",\"+str(deltaValue)+\",\"+str(timestamp)\n\t\t commandParams \u003d \"MEASUREMENT,\"+eventParametersString\n\t\t parameters\u003d{}\n\t\t parameters[\"commandTarget\"] \u003d commandTarget\n\t\t parameters[\"commandCode\"] \u003d actionCode\n\t\t parameters[\"commandParams\"] \u003d commandParams\n\t\t\n\t\t self.sendConsoleMsg(\"UI : sending command to whid\u003d\"+whid+\",actionCode\"+str(actionCode)+\",parameters\u003d\"+str(parameters))\n\t\t response \u003d Commands.button_commands.send_request(whid,actionCode,parameters)\n\t\t self.sendConsoleMsg(response)\n\t\t time.sleep(interval)\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "measurementTab_exportFile", - "pageScope": true, - "script": "\timport sys\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\tresult\u003d\"\"\n\tresult\u003d\"Exporting Sequence data \"\n\tself.sendConsoleMsg(result)\n\ttry:\n\t fileContent\u003dNone\n\t arrayElements \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t selectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t whid \u003d str(system.tag.readBlocking([selectedTagProvider+\"Configuration/FC\"])[0].value)\n\t fileName\u003d\"Sequence_Testing_\"+whid+\"_\"+str(targetContainer.getChild(\"dropdownTargetPLC\").props.value)+\"_\"+system.date.format(system.date.now(),\u0027yyyyMMddHHmmss\u0027)\n\t \n\t fileName+\u003d\".csv\"\n\t headers\u003d[]\n\t rows\u003d[]\n\t for element in arrayElements:\n\t keys\u003delement.keys()\n\t if len(headers)\u003d\u003d0:\n\t headers\u003dkeys\n\t row\u003d[]\n\t for key in keys:\n\t row.append(element[key])\n\t rows.append(row)\n\t\n\t ds \u003d system.dataset.toDataSet(headers,rows)\n\t fileContent \u003d system.dataset.toCSV(ds)\n\t system.perspective.download(fileName,fileContent)\n\t\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t return\n\t \n\tresult\u003d\"Export Succesful \"\n\tself.sendConsoleMsg(result)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "measurementTab_addRow", - "pageScope": true, - "script": "\tsystem.perspective.print(\"Add Row ...\")\n\timport sys\n\tfrom collections import OrderedDict\n\ttypeElement \u003d payload[\"messageType\"]\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\tresult\u003d\"Adding a \"\n\t\n\ttry:\n\t tableElements \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t result \u003d str(type(tableElements))\n\t rowIndex\u003d0\n\t if tableElements is None:\n\t tableElements\u003d[]\n\t else:\n\t rowIndex \u003d len(tableElements)\n\t\n\t newElement \u003d OrderedDict(\n\t [\n\t (\"Seq\",str(rowIndex)),\n\t (\"Type\", typeElement),\n\t (\"When\",targetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text),\n\t (\"Source\", targetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.value),\n\t (\"CurrentState\",\"\"),\n\t (\"ReasonCode\", \"\"),\n\t (\"CurrentMode\", \"\"),\n\t (\"EventID\", \"\"),\n\t (\"EventState\", \"\"),\n\t (\"MeasurementName\",\"\"),\n\t (\"SamplingInterval\",\"\"),\n\t (\"Unit\",\"\"),\n\t (\"DeltaValue\",\"\"),\n\t (\"Selected\",False)\n\t ]\n\t )\n\t \n\t \n\t result\u003d\"Adding a %s \"%typeElement\n\t self.sendConsoleMsg(result)\n\t \n\t tableElements.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\n", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "measurementTab_deleteRows", - "pageScope": true, - "script": "\timport sys\n\ttry:\n\t \n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t result\u003d\"\"\n\t oldArray \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t selectedRows \u003d [payload[\"index\"]]\n\t \n\t result \u003d \"Removing row %s\"%selectedRows\n\t self.sendConsoleMsg(result)\n\t newArray\u003d[]\n\t rowIndexesToBeDeleted\u003d[]\n\t for selectedRow in selectedRows:\n\t rowIndexesToBeDeleted.append(int(selectedRow))\n\t newRowIndex\u003d0\n\t for element in oldArray:\n\t rowIndex\u003dint(element[\"Seq\"])\n\t if not (rowIndex in rowIndexesToBeDeleted):\n\t newElement\u003d dict(element)\n\t newElement[\"Seq\"]\u003dstr(newRowIndex)\n\t newRowIndex+\u003d1\n\t newArray.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data \u003d newArray\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "measurementTab_setTimestampInTable", - "pageScope": true, - "script": "\timport sys\n\tresult\u003d\"Setting TimeStamp \u0026 Source ID for all items in sequence ...\"\n\tself.sendConsoleMsg(result)\n\t\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t timestampOffset \u003d targetContainer.getChild(\"timestampOffset\").props.value * 1000\n\t currentTimestamp \u003d long(targetContainer.getChild(\"textFieldEventsCommandParams_Timestamp\").props.text)\n\t commandTarget \u003d targetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.value\n\t tableData \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t newArray\u003d[]\n\t for element in tableData:\n\t newElement\u003d dict(element)\n\t if element[\"Selected\"]:\n\t newElement[\"When\"]\u003dstr(currentTimestamp)\n\t newElement[\"Source\"]\u003dcommandTarget\n\t currentTimestamp+\u003dtimestampOffset\n\t \n\t newArray.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data \u003d newArray\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "measurementTab_setState", - "pageScope": true, - "script": "\timport sys\n\tresult\u003d\"Setting State and ReasonCode\"\n\tself.sendConsoleMsg(result)\n\tSTATE_TYPE \u003d \"StateChanged\"\n\ttargetState\u003dpayload[\"targetState\"]\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t tableData \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t selectedRows \u003d targetContainer.getChild(\"tableSequence\").props.selection.data\n\t reasonCode \u003d targetContainer.getChild(\"dropdownReasonCode\").props.value\n\t newArray\u003d[]\n\t for element in tableData:\n\t newElement\u003d dict(element)\n\t if element[\"Selected\"] and element[\"Type\"] \u003d\u003d STATE_TYPE :\n\t newElement[\"CurrentState\"]\u003dtargetState\n\t newElement[\"ReasonCode\"]\u003d str(reasonCode)\n\t newArray.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data \u003d newArray\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "measurementTab_setMeasurementInTable", - "pageScope": true, - "script": "\timport sys\n\tresult\u003d\"Setting Mesurement Name , Sample Interval , Unit \u0026 Delta Values\"\n\tself.sendConsoleMsg(result)\n\tMEASUREMENT_EVENT\u003d \"MeasurementEvent\"\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t tableData \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t newArray\u003d[]\n\t measurementName \u003d targetContainer.getChild(\"dropdownMeasurementName\").props.value\n\t delta \u003d targetContainer.getChild(\"delta\").props.value\n\t sampling \u003d targetContainer.getChild(\"sampling\").props.value\n\t unit \u003d targetContainer.getChild(\"textFieldUnit\").props.text\n\t for element in tableData:\n\t newElement\u003d dict(element)\n\t if element[\"Selected\"] and element[\"Type\"] \u003d\u003d MEASUREMENT_EVENT:\n\t newElement[\"MeasurementName\"]\u003dmeasurementName\n\t newElement[\"SamplingInterval\"]\u003dstr(sampling)\n\t newElement[\"Unit\"]\u003dunit\n\t newElement[\"DeltaValue\"]\u003dstr(delta)\n\t newArray.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data \u003d newArray\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "measurementTab_setEventState", - "pageScope": true, - "script": "\timport sys\n\tresult\u003d\"Setting Event ID \u0026 Event State\"\n\tself.sendConsoleMsg(result)\n\ttargetEventState\u003dpayload[\"targetEventState\"]\n\tEVENT_TYPE \u003d \"Event\"\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t tableData \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t eventID \u003d targetContainer.getChild(\"eventID\").props.value\n\t newArray\u003d[]\n\t for element in tableData:\n\t newElement\u003d dict(element)\n\t if element[\"Selected\"] and element[\"Type\"] \u003d\u003d EVENT_TYPE:\n\t newElement[\"EventID\"]\u003deventID\n\t newElement[\"EventState\"]\u003dtargetEventState\n\t newArray.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data \u003d newArray\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "utilsTab_handleCommands", - "pageScope": true, - "script": "\timport sys\n\tresult\u003d\"\"\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerUtils\")\n\t command \u003d payload[\"command\"]\n\t selectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t whid \u003dstr(system.tag.readBlocking([selectedTagProvider+\"Configuration/FC\"])[0].value)\n\t\n\t PLC\u003dtargetContainer.getChild(\"dropdownTargetPLC\").props.value\n\t targetSimulation \u003d PLC+\"/-1\"#-1 is used by E2C application to identify a simulation command\n\t commandTarget\u003dtargetContainer.getChild(\"dropdownCommandTarget\").props.value\n\t commandCode\u003dtargetContainer.getChild(\"textFieldCommandCode\").props.text\n\t commandParameters\u003dtargetContainer.getChild(\"textFieldCommandParameters\").props.text\n\t commandTimestamp\u003dtargetContainer.getChild(\"textFieldCommandTimestamp\").props.text\n\t eventSource\u003dtargetContainer.getChild(\"dropdownEventsSource\").props.value\n\t eventTimestamp\u003dtargetContainer.getChild(\"textFieldEventTimestamp\").props.text\n\t eventID\u003dtargetContainer.getChild(\"textFieldEventID\").props.text\n\t eventState\u003dtargetContainer.getChild(\"textFieldEventState\").props.text\n\t disconnectionDuration\u003dtargetContainer.getChild(\"textFieldDisconnectionDuration\").props.text\n\t\n\t\n\t if command\u003d\u003d\"synchStatus\":\n\t commandParameters \u003d \"SYNCH,STATUS\"\n\t actionCode \u003d 1 #Start\n\t functionParameters\u003d{}\n\t functionParameters[\"commandTarget\"] \u003d targetSimulation\n\t functionParameters[\"commandCode\"] \u003d actionCode\n\t functionParameters[\"commandParams\"] \u003d commandParameters\n\t response \u003d Commands.button_commands.send_request(whid,actionCode,functionParameters)\n\t\n\t if command\u003d\u003d\"synchAlarms\":\n\t commandParameters \u003d \"SYNCH,ALARMS\"\n\t actionCode \u003d 1 #Start\n\t functionParameters\u003d{}\n\t functionParameters[\"commandTarget\"] \u003d targetSimulation\n\t functionParameters[\"commandCode\"] \u003d actionCode\n\t functionParameters[\"commandParams\"] \u003d commandParameters\n\t response \u003d Commands.button_commands.send_request(whid,actionCode,functionParameters)\n\t if command\u003d\u003d\"simulateDisconnection\":\n\t commandParams \u003d \"DISCONNECTION,\"+str(disconnectionDuration)\n\t actionCode \u003d 6 #Enable\n\t functionParameters\u003d{}\n\t functionParameters[\"commandTarget\"] \u003d targetSimulation\n\t functionParameters[\"commandCode\"] \u003d actionCode\n\t functionParameters[\"commandParams\"] \u003d commandParameters\n\t response \u003d Commands.button_commands.send_request(whid,actionCode,functionParameters)\n\t if command\u003d\u003d\"restoreFromDisconnection\":\n\t commandParams \u003d \"DISCONNECTION\"\n\t actionCode \u003d 7 #Disable\n\t functionParameters\u003d{}\n\t functionParameters[\"commandTarget\"] \u003d targetSimulation\n\t functionParameters[\"commandCode\"] \u003d actionCode\n\t functionParameters[\"commandParams\"] \u003d commandParameters\n\t response \u003d Commands.button_commands.send_request(whid,actionCode,functionParameters)\n\t if command\u003d\u003d\"sendCommand\":\n\t actionCode \u003d commandCode\n\t functionParameters\u003d{}\n\t functionParameters[\"commandTarget\"] \u003d commandTarget\n\t functionParameters[\"commandCode\"] \u003d commandCode\n\t functionParameters[\"commandParams\"] \u003d \u0027\u0027\n\t functionParameters[\"commandTimestamp\"] \u003d commandTimestamp\n\t response \u003d Commands.button_commands.send_request(whid,actionCode,functionParameters)\n\t if command\u003d\u003d\"sendAlarm\":\n\t actionCode \u003d 5 #SET\n\t functionParameters\u003d{}\n\t functionParameters[\"commandTarget\"] \u003d targetSimulation\n\t functionParameters[\"commandCode\"] \u003d actionCode\n\t functionParameters[\"commandParams\"] \u003d \"EVENTS,\"+str(eventSource)+\",\"+str(eventTimestamp)+\",\"+str(eventID)+\",\"+str(eventState)\n\t response \u003d Commands.button_commands.send_request(whid,actionCode,functionParameters)\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t result +\u003d errorMessage\n\ttargetContainer.getChild(\"textAreaResult\").props.text \u003d result", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "utilsTab_importFile", - "pageScope": true, - "script": "\t# implement your handler hereimport sys\n\ttargetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerUtils\")\n\theaders \u003d [\"Row\",\"ID\",\"Name\",\"Priority\",\"Type\" ]\n\trows\u003d[]\n\ttry:\n\t\tds\u003dsystem.dataset.toDataSet(headers,rows)\n\t\trowNumber\u003d0\n\t\tresult\u003d\"\"\n\t\tfileContent \u003d payload[\"fileContent\"]\n\t\tfileExtension\u003dpayload[\"fileExtension\"]\n\t\tif fileExtension\u003d\u003d\"json\":\n\t\t\t#Importing from a configuration file\n\t\t\tcontentJSON \u003d system.util.jsonDecode(fileContent)\n\t\t\talarmList\u003dcontentJSON[\u0027alarmList\u0027]\n\t\t\tfor alarm in alarmList:\n\t\t\t\tRow\u003drowNumber\n\t\t\t\tID\u003dalarm[\"id\"]\n\t\t\t\tName\u003dalarm[\"message\"]\n\t\t\t\tPriority\u003d\"Invalid\"\n\t\t\t\t\n\t\t\t\tif alarm[\"priority\"]\u003d\u003d\"1\":\n\t\t\t\t\tPriority\u003d\"Diagnostic\"\n\t\t\t\tif alarm[\"priority\"]\u003d\u003d\"2\":\n\t\t\t\t\tPriority\u003d\"Low\"\n\t\t\t\tif alarm[\"priority\"]\u003d\u003d\"3\":\n\t\t\t\t\tPriority\u003d\"Medium\"\n\t\t\t\tif alarm[\"priority\"]\u003d\u003d\"4\":\n\t\t\t\t\tPriority\u003d\"High\"\n\t\t\t\tType\u003d\"Default\"\n\t\t\t\tif alarm[\"type\"]\u003d\u003d\"1\":\n\t\t\t\t\tType\u003d\"Critical\"\n\t\t\t\trows.append([Row,ID,Name,Priority,Type])\n\t\t\t\trowNumber+\u003d1\t\t\n\t\tds \u003d system.dataset.toDataSet(headers,rows)\n\t\ttargetContainer.getChild(\"tableAlarms\").props.data \u003d ds\n\texcept:\n\t\texc_type, exc_obj, tb \u003d sys.exc_info()\n\t\tlineno \u003d tb.tb_lineno\n\t\terrorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t\tresult +\u003d errorMessage\n\ttargetContainer.getChild(\"textAreaResult\").props.text \u003d str(result)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "utilsTab_init", - "pageScope": true, - "script": "\ttry:\n\t import sys\n\t result\u003d\"\"\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerUtils\")\n\t selectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t #Check if is a valid SCADA 2.0 Tag provider\n\t validSCADATagProvider\u003dTrue\n\t if validSCADATagProvider and not system.tag.exists(selectedTagProvider+\"Configuration/FC\"):\n\t result+\u003d\"The tag \\\"Configuration/FC\\\" does not exists in the selected tag provider\"+\"\\r\\n\"\n\t validSCADATagProvider\u003dFalse\n\t if validSCADATagProvider and not system.tag.exists(selectedTagProvider+\"System/aws_data\"):\n\t result+\u003d\"The tag \\\"System/aws_data\\\" does not exists in the selected tag provider\"+\"\\r\\n\"\n\t validSCADATagProvider\u003dFalse\n\t if validSCADATagProvider and not system.tag.exists(selectedTagProvider+\"System/device_count\"):\n\t result+\u003d\"The tag \\\"System/device_count\\\" does not exists in the selected tag provider\"+\"\\r\\n\"\n\t validSCADATagProvider\u003dFalse\n\t if validSCADATagProvider:\n\t #Extracting the target site\n\t #Filling up the dropdown with the list of the PLCs\n\t tagProvidersPLCs \u003d system.tag.browse(path \u003dselectedTagProvider , filter \u003d {})\n\t tagProviderPLCsList\u003d[]\n\t for tagProvidersPLC in tagProvidersPLCs.getResults():\n\t fullPath\u003dstr(tagProvidersPLC[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t entry\u003d{}\n\t entry[\u0027value\u0027] \u003d fullPath\n\t entry[\u0027label\u0027] \u003d fullPath\n\t tagProviderPLCsList.append(entry)\n\t targetContainer.getChild(\"dropdownTargetPLC\").props.options \u003d tagProviderPLCsList\n\t selectedValue \u003d tagProviderPLCsList[0][\"label\"]\n\t targetContainer.getChild(\"dropdownTargetPLC\").props.value \u003d selectedValue\n\t #Filling up the dropdown with the list of the sources\n\t tagProvidersSources \u003d system.tag.browse(path \u003dselectedTagProvider+\"/\"+selectedValue , filter \u003d {})\n\t tagProviderSourcesList\u003d[]\n\t for tagProvidersSource in tagProvidersSources.getResults():\n\t fullPath\u003dstr(tagProvidersSource[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t entry\u003d{}\n\t entry[\u0027value\u0027] \u003d fullPath\n\t entry[\u0027label\u0027] \u003d fullPath\n\t tagProviderSourcesList.append(entry)\n\t targetContainer.getChild(\"dropdownCommandTarget\").props.options \u003d tagProviderSourcesList\n\t targetContainer.getChild(\"dropdownEventsSource\").props.options \u003d tagProviderSourcesList\n\t\n\t\n\t targetContainer.getChild(\"tableAlarms\").props.data \u003d []\n\t targetContainer.getChild(\"textFieldCommandCode\").props.text \u003d \u0027\u0027\n\t targetContainer.getChild(\"textFieldCommandParameters\").props.text \u003d \u0027\u0027\n\t targetContainer.getChild(\"textFieldEventID\").props.text \u003d \u0027\u0027\n\t result+\u003d\"Init completed\"\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t result +\u003d errorMessage\n\ttargetContainer.getChild(\"textAreaResult\").props.text \u003d str(result)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "alarmsTab_changeSelectedPLC", - "pageScope": true, - "script": "\tresult\u003d\"\"\n\tresult\u003d\"Changing selected PLC for Alarms Page...\"\n\tself.sendConsoleMsg(result)\n\t\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerAlarms\")\n\t selectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t selectedPLC\u003dtargetContainer.getChild(\"dropdownTargetPLC\").props.value\n\t tagProvidersSources \u003d system.tag.browse(path \u003dselectedTagProvider+\"/\"+selectedPLC , filter \u003d {})\n\t tagProviderSourcesList\u003d[]\n\t for tagProvidersSource in tagProvidersSources.getResults():\n\t fullPath\u003dstr(tagProvidersSource[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t entry\u003d{}\n\t entry[\u0027value\u0027] \u003d fullPath\n\t entry[\u0027label\u0027] \u003d fullPath\n\t tagProviderSourcesList.append(entry)\n\t targetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.options \u003d tagProviderSourcesList\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "measurementTab_changeSelectedPLC", - "pageScope": true, - "script": "\tresult\u003d\"Changing selected PLC for Sequnce Page ...\"\n\tself.sendConsoleMsg(result)\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurment\")\n\t selectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t\n\t selectedPLC\u003dtargetContainer.getChild(\"dropdownTargetPLC\").props.value\n\t tagProvidersSources \u003d system.tag.browse(path \u003dselectedTagProvider+\"/\"+selectedPLC , filter \u003d {})\n\t tagProviderSourcesList\u003d[]\n\t result +\u003d str(tagProvidersSources)\n\t for tagProvidersSource in tagProvidersSources.getResults():\n\t fullPath\u003dstr(tagProvidersSource[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t entry\u003d{}\n\t entry[\u0027value\u0027] \u003d fullPath\n\t entry[\u0027label\u0027] \u003d fullPath\n\t tagProviderSourcesList.append(entry)\n\t targetContainer.getChild(\"dropdownEventsCommandParams_Target\").props.options \u003d tagProviderSourcesList\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "utilsTab_changeSelectedPLC", - "pageScope": true, - "script": "\tresult\u003d\"\"\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerUtils\")\n\t selectedTagProvider \u003d system.tag.getConfiguration()[0][\"path\"].toString()\n\t selectedPLC\u003dtargetContainer.getChild(\"dropdownTargetPLC\").props.value\n\t tagProvidersSources \u003d system.tag.browse(path \u003dselectedTagProvider+\"/\"+selectedPLC , filter \u003d {})\n\t tagProviderSourcesList\u003d[]\n\t for tagProvidersSource in tagProvidersSources.getResults():\n\t fullPath\u003dstr(tagProvidersSource[\u0027fullPath\u0027]).replace(selectedTagProvider,\"\")\n\t if \"System\" not in fullPath and \"Config\" not in fullPath and \"_types\" not in fullPath:\n\t entry\u003d{}\n\t entry[\u0027value\u0027] \u003d fullPath\n\t entry[\u0027label\u0027] \u003d fullPath\n\t tagProviderSourcesList.append(entry)\n\t targetContainer.getChild(\"dropdownCommandTarget\").props.options \u003d tagProviderSourcesList\n\t targetContainer.getChild(\"dropdownEventsSource\").props.options \u003d tagProviderSourcesList\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t result +\u003d errorMessage\n\ttargetContainer.getChild(\"textAreaResult\").props.text \u003d str(result)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "uploadBackup", - "pageScope": true, - "script": "\t# implement your handler here\n\tfileContent \u003d payload[\"fileContent\"]\n\tfileName\u003d payload[\"fileName\"]\n\tif \"Alarms\" in fileName:\n\t result\u003d\"Importing an Alarms backup file \"\n\t self.sendConsoleMsg(result)\n\t #Importing the alarms from a previously saved file\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerAlarms\")\n\t try:\n\t tableContent\u003d[]\n\t rowsValues\u003d[]\n\t rowsValues \u003d fileContent.splitlines()\n\t for indexRow in range(1,len(rowsValues)):\n\t rowFields \u003d rowsValues[indexRow].replace(\"\\\"\",\"\").split(\",\")\n\t rowContent\u003d{}\n\t rowContent[\"Row\"]\u003drowFields[0]\n\t rowContent[\"ID\"]\u003drowFields[1]\n\t rowContent[\"Name\"]\u003drowFields[2]\n\t rowContent[\"Priority\"]\u003drowFields[3]\n\t rowContent[\"Type\"]\u003drowFields[4]\n\t rowContent[\"Tested_date_UTC\"]\u003drowFields[5]\n\t rowContent[\"Result\"]\u003drowFields[6]\n\t rowContent[\"Notes\"]\u003drowFields[7]\n\t tableContent.append(rowContent)\n\t\t self.session.custom.alarms \u003d tableContent\n\t except:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\n\t return\n\telif \"Sources\" in fileName:\n\t #Importing the sources from a previously saved file\n\t result\u003d\"Importing an Sources backup file \"\n\t self.sendConsoleMsg(result)\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerSources\")\n\t try:\n\t tableContent\u003d[]\n\t rowsValues\u003d[]\n\t rowsValues \u003d fileContent.splitlines()\n\t tagProviderSourcesList\u003d[]\n\t for indexRow in range(1,len(rowsValues)):\n\t system.perspective.print(str(indexRow))\n\t system.perspective.print(str(rowsValues[indexRow]))\n\t rowFields \u003d rowsValues[indexRow].replace(\"\\\"\",\"\").split(\",\")\n\t system.perspective.print(str(rowFields))\n\t rowContent\u003d{}\n\t rowContent[\"Row\"]\u003drowFields[0]\n\t rowContent[\"ID\"]\u003drowFields[1]\n\t rowContent[\"Source\"]\u003drowFields[2]\n\t rowContent[\"Tested_date_UTC\"]\u003drowFields[3]\n\t rowContent[\"Result\"]\u003drowFields[4]\n\t rowContent[\"Notes\"]\u003drowFields[5]\n\t system.perspective.print(str(rowContent))\n\t tableContent.append(rowContent)\n\t \n\t \n\t system.perspective.print(\"Setting Table Sources DATA\")\n\t \t\t\t\t\n\t self.session.custom.sources \u003d tableContent\n\t except:\n\t \tsystem.perspective.print(\"Error\")\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t self.sendConsoleMsg(errorMessage)\t\t\n\t return\n\telif \"Sequence\" in fileName:\n\t result\u003d\"Importing sequence from file is not yet supported\"\n\t self.sendConsoleMsg(result)\n\telse:\n\t result\u003d\"Invalid file name\"\n\t self.sendConsoleMsg(result)\n\t \n\tresult\u003d\"File :%s imported Succesfully \"%fileName\n\tself.sendConsoleMsg(result)", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "measurementTab_setMode", - "pageScope": true, - "script": "\timport sys\n\tresult\u003d\"Setting Current Mode\"\n\tMODE_TYPE \u003d \"ModeChanged\"\n\ttargetState\u003dpayload[\"targetState\"]\n\t\n\tself.sendConsoleMsg(result)\n\ttry:\n\t targetContainer \u003d self.getChild(\"TabContainer\").getChild(\"ContainerMeasurement\")\n\t tableData \u003d targetContainer.getChild(\"tableSequence\").props.data\n\t selectedRows \u003d targetContainer.getChild(\"tableSequence\").props.selection.data\n\t newArray\u003d[]\n\t for element in tableData:\n\t newElement\u003d dict(element)\n\t if element[\"Selected\"] and element[\"Type\"] \u003d\u003d MODE_TYPE :\n\t newElement[\"CurrentMode\"]\u003dtargetState\n\t newArray.append(newElement)\n\t targetContainer.getChild(\"tableSequence\").props.data \u003d newArray\n\texcept:\n\t exc_type, exc_obj, tb \u003d sys.exc_info()\n\t lineno \u003d tb.tb_lineno\n\t errorMessage\u003dstr(lineno)+\" -\u003e \"+str(exc_type)+\" -\u003e \"+str(exc_obj)\n\t result +\u003d errorMessage\n\ttargetContainer.getChild(\"textAreaResult\").props.text \u003d result", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/4694a97be7d4b2734be4d6942d0a356730fc988cbf40daadba567acf0cf938fc b/.resources/4694a97be7d4b2734be4d6942d0a356730fc988cbf40daadba567acf0cf938fc deleted file mode 100644 index 51f7cfa7..00000000 --- a/.resources/4694a97be7d4b2734be4d6942d0a356730fc988cbf40daadba567acf0cf938fc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "base": { - "style": { - "margin": "5px", - "marginLeft": "0px", - "marginRight": "0px" - } - } -} \ No newline at end of file diff --git a/.resources/46e76e6eb817205795da4d47f6ac371d5def12e0c083087e9596dd7b100a1db3 b/.resources/46e76e6eb817205795da4d47f6ac371d5def12e0c083087e9596dd7b100a1db3 deleted file mode 100644 index f45faa69..00000000 --- a/.resources/46e76e6eb817205795da4d47f6ac371d5def12e0c083087e9596dd7b100a1db3 +++ /dev/null @@ -1,108 +0,0 @@ -{ - "custom": { - "activityLogger": { - "alt_pageid": "site-overview", - "start_time": { - "$": [ - "ts", - 192, - 1709762531101 - ], - "$ts": 1709762531101 - } - } - }, - "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": {}, - "propConfig": { - "custom.activityLogger": { - "persistent": true - }, - "custom.activityLogger.pageid": { - "binding": { - "config": { - "expression": "{page.props.path}" - }, - "transforms": [ - { - "code": "\tif value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n\t\treturn self.custom.activityLogger.alt_pageid.lower()\n\telse:\n\t\treturn value[1:].lower()", - "type": "script" - } - ], - "type": "expr" - } - } - }, - "props": { - "defaultSize": { - "height": 1080, - "width": 1920 - } - }, - "root": { - "children": [ - { - "custom": { - "s3URI": "SCADA/Other/MAP.svg" - }, - "meta": { - "name": "Image" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "props.source": { - "binding": { - "config": { - "path": "this.custom.s3URI" - }, - "transforms": [ - { - "code": "\treturn AWS.s3.getPresignedURL(self, value)", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "altText": "none", - "fit": { - "mode": "fill" - } - }, - "type": "ia.display.image" - } - ], - "meta": { - "name": "root" - }, - "props": { - "mode": "percent", - "style": { - "backgroundColor": "#EEEEEE" - } - }, - "type": "ia.container.coord" - } -} \ No newline at end of file diff --git a/.resources/1f0fb39dc4c68df142462fb91320d574d11c0b6c73c92f81199f761551190e36 b/.resources/470ce79936502f2f945420f80f25aa07214a3773faffc5fb20a987ec6e32f879 similarity index 100% rename from .resources/1f0fb39dc4c68df142462fb91320d574d11c0b6c73c92f81199f761551190e36 rename to .resources/470ce79936502f2f945420f80f25aa07214a3773faffc5fb20a987ec6e32f879 diff --git a/.resources/4792b13a09d5055dbbc62c7b7463b5cdc38bcfc85774255add664036d5ce81bf b/.resources/4792b13a09d5055dbbc62c7b7463b5cdc38bcfc85774255add664036d5ce81bf deleted file mode 100644 index ba1ce9240ded1c5c100480ea38de1551f6c1d41e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8362 zcmb`NRZtv2v#5dKzPNkB;_d|3;Di7{f?Ei-*rJOs1l{1l9fG^NyIb%Df&>q)m;anw z_xYZx^Dr|nQ{B@u-92A*b%dt6A`T`6CISKij~;q8NU+{AqQ?ee5J)@FwI_}>8iak=1?=bQE zbVab>3_jx)@LhNxh=%tOLF3Vc@T&knh1%q07NWp>-gL1~{tH!=V9EUZSxMy1 z{3EHJBI!rmAo84(=MG6J2W_Rd_?Z2gzzwFdz`j#v{Lv!a5|%6if@*w*>W~u%?p>;X zG1c%#He!4XWPBB3TK(i4_C;M*HX>nJ1{{wi!7e^uPsN#UzLz1N~Agag%m4!h~D&9(=(l*YaN!bieEt<|F$(JX1`| z`nHb&qdo#PuN3VEZ%y{1m#n%s@AaT&N93CWux`9K503EL+1OU0nVLd6?;sn+&kl;6 zKJia3)-5Jj!D+XuTOi)=p2!Wgp5eqIGj5lIoR63c`(l@TDMMv>caNH)b4eQ&Ilw=is$h(p4;W#q{evsl zBSH=oqR31)q!y-?x26d~Yw{^Uz|Es7#^dFz3`6~yfC~7_sPeJ4yXRg>&dQI-*)mzS z3=}BAL&6EKz8x`!{==iOxG{Q<%=B@G?EEF3*6e3qq2y^ax`V zXdK``WyeK&B%j?A5>`Dllo=EPq;_-5O5`CIh2Q~=+u{<^!-0O{ zg_hQI4E*TR%63C3>9{6(0*V1mbJ#n(y9|Ej*a;vOab`I>5qiY)ooGJ3cl1MsDxmzc z*?v>=511rJ?cqtkG3C5w+4G$P6*z-NxDXpNgIm8hP6U~@F}{-jWTuz%<#^NKl`=L%B^nvg^VeXl! zPhOGXJzv@=Gc)fyzfO{I2Lb(BZj=rkJ#Tdy0=F;tN;~0E8qyvfg2ULsMWwV}msG0b z%#Yw#&HaRc>3_c?2333H31 zL5=~}b;d6iQv_KY7zqUQ{AS9V8Wh4jtObpb9LtD=cwBJjqx^#`A<2{qm9zsT}Annw-9$1VpYeDfgPdqC$K?ZI*V$xDpmy$!0FYQgSmwm`b zEsxl?_B|OYMLc%DZ*&-|m|1Z77O17|?fGcLD`dChdG}X?ob$`N=^mcnR7Bgm_Sl^% zq3zVzoDpOtu;jfB(@@1E&%?P>&bPcUrAWoU*hI#!ciCwLqWi+nf=+}6)cVgalABx| z-_+Ide=V$QUxrN;9Mfy-(7S#R&a7+P-i#tce(PA+=%9o-XL@&DYFoi7mo19?pq`X{ z2Byb}@-Px^LeAl#oL0ZnmNky6%L&&v_)abo*<3>yTt77_g3JF2L}OAoH&vq?@rZSE z4)AJ^v+`<1_i(&TGa~q#Jk51Rxx#ThqcZ`;MaEi%qLhxr?-eJ8ku}U~iSs7e zD-!mh0oaVeD#se4jiSxP7znvgwg2D;Z#p}>0^xikhcvVb1;y5>1rt(2tkXi&mS2;0 zVV#rECU>wv6y<{RhSD6xwWj*!Xj^@mxPFHllh=0R?PkP_mNbnC2dS($J%wj@|0ig& zjFPOK)|u*t+W6i%ODwQhxjhAC0xesDaSSY&T?=mjhr4TpqhDbvjx7 zmnEYjGR$bK_+o#_ew!Fc&mki=p6EXOb*XKj7Vvb;YlCBE3N^rQTS}Bxy~C(1iQ7J@ z3+sH2Y>9lx!J2VBUgzdXS-7nLcHAQ^ays@FYpnxYrFR<&EPS?behRSii15TDxgUh1 z$K*>a!0-Ey6DF|=5>Dr?g+rLDy8V&`3+e`LG`buP_X2U@FFG}ZNJTC?NTrl$yed@?ay5WAt!Ii$0Cr@X5yqLC5#uDZu? zy)Fnh-d3ZJ@Fg$Ufk_^TypVlamXPgi^Tc>=;S-|-E4J%JPybM2w8? zX(`&r{Rk>Zn5>$cM*D@|7$aCy{wX}-Y_R`O4}5n?b27_|z*WI8VG`o99jcUJBGsG* zBQFe1ys~8%b0-9QV0_--*iw4leC80(lU~*LN6zF#q{H2|8h`UmzYRN7FHO_$7(wxo zm14dCMHyY`8PT1K(xrJvoV8MqP6&umRLSo-nv6XeM-EoLl58`HSl)P&T5 z58)fvXG%``xQpg#wi09B_Vt&%oig!arEy&Zj?$NbHOZ!rK~{WwE>}kdfk~}L2nGhW zB_EBU$r_x}dj#QppB#!SeoqcpyROG^{3TB+cx_VNO7QUcF9@kEl21Ksa2D6fI zTGf1hZyu3=MO+gO_?w(V%N{axQFX>9)|uUob2aKbb!9E#p-TrKmub~bjk=dUU`H+y z+z%;;6mB1CJ}VEvn*NTxM?c^%R$EmWH46*LkgTeq-ZHlkj-Q{G^-zq0WN*dONyx_b z7H~p&jPZ)2(B2z)C;N`Yt<5%hH}{rs?tadk5H;ER>w-Q{U;3BdN%i!b=OVB1q2LJL zpFP~!md0MNtz|<0h5N#+z((4=m!GYT(kc5&fn?>Z_aB~-gUn|Gg-JnNIbYtsz3x1& z+p$fxR}|;)74$gLKif3>dOJ2Tfh!J9p^%^y0WtlD($D(#%zkV}O!hK$6J|k`gP0}o z;*m9cY2IOE-ioUdh@X3-xpYvO#xGPtD?uQ*e6*$Cx5E)Jw75qd|~N z8pQ7K&Fcb>I|cdN!QtCk`6{ufF)%1NSR^C_x%bl*$G797&CSgz5v(fOFIBa*14~X! zXU=+rUJk9}L}7tb0uD@!0IF<==N-EQP1AuLGGfqgOFL-m>dVE2^seB z_2;YFr{c`o1T%#8RL6~SBhRXv_QZn<=8rwh8ot&$TfJe7mh=xj3qqAxt$F7rCeLVN zV`JQI`AmR#I zlficae+gzs9X_pezMvpga-WEuc*@_y(z!%LdYin%dIlC^4yy|raC-5*X#{0;K!W$MSm0}X4OU?t5lbPkz8MiV!(Dx>e2DbdGaRqaQcbnTDz6P4-rr& z&6FPQSJ7{^1CX4GhY><`;j0B~K#}@4fvomX_pC%HgQJ?DEhY{g^4$7ik$(9|pY&#i(J1y-pz<1+8BtXR2m;PH!CKO0GpNM$M# zNVkvf2oe&Eq{{j*2(4?~=w4c}%hn;GC%*s`u#lOw@+KEE%14=8ty%PMCMiK<(fzhw zzPRgwgkApQdtdG(LZIHgE>y$0@B6qFg%al9^xtif$?!!?sSNr(-SBdukYpA!oX@AE z|A>jVnWSS;`rhW=Z(G?JGPNYUniJUI_>-$+#UspqGS*8u?iQL|M{e8cM-orq+T4OE zWJ6Eqg^TIAV=-}Y97fx8yN)&6NIGrI){!O>|Dc7+Z`^-VTj*ltv8OIIF)}OFYo)$W zuGcj|%gE!lgsv{R=5CG2?EsJL2wc4JnO^X~f@^gKPx-z1eNJ@fQUL_o^`}xd$2F1r zZ{;67iX;VW~~vQFN)N_s(KBK=} zP(J#XVU180cW`vy?m?<$w?1756V+y4#Pn`i^aCXf!-_b{m)ghDMu>BdCs>wVJkT3V zd}CIab+;O2JEVsr1*yKoN4JM+XuizRl@>OTTMY`ijM8P^W&zjh=Kxq8@?AzBoLZ4c zizK@RY{d)=OSf3B`%6^l;Cq|){gxANDl_84!t2D#jCiTn>y-UhKlCl$b&aheg=$@KnNTmklrRX1zd_8+#YC zNrqx$@g@_~W#WUCW+T&S8Z18h5cSWI0}G41zf`V!?dpilNvY)@{_P37UW!v>N(_#$ zbZDZf_tv(2HDYJ!-oCd{I=@AAjn$c=_=WVd(=V_Sv&}g=Nov5hb~#EY%2HKf-I)z|EYO{A2lP zae+=q4%Zb+Wqlhm0yY$$Rbw0!(oQ;oR#LH_&o>&h;B^aG9B~^IN`o!=A6Iv)>Zl{m zmcV_3Qv{(7n2M0dxESt&=;(6#bY;+yVzq57u}(!t25$)NbyY({-&xMW6!41S@_t!ce@p}$08#M6U;pQ=GSaimF zH-HxU%~dzDCj{)(A_a$IWMnZ@u`Be9Gb49oe$|hn>P@`yaACNUrSm+9D@ZiEMQ4k@ zy2gGd{n$utnrf);o}bp8G-PQ%dZOq&jVs2c!Wm_&;HAIhB#dP|GiD|<)4`X%ywXkd z?=gwQI)k_DII5_N(acPON*0RU@9e4)brfD?_&LSZOmTq(4XRbeUsPlLr_QMg;zwuQ zy|d(^MeB<7H|82U&)0fRf-hwj6gh7J6#9V`_!EZx0Q2D99$9g=L3bLuCoh`GB2W#w z#ddm14vlf++@QQMzKHVmGqsBHbG>mAiLO6o$g|I^sPXwDFvKI#sr4sX@KRjL!fxPA z*_VIr38$Q+31htCPgb9-; zPx7k`%5(DRWwd3H)@A+f?h$OtuwS z2Ue7`_7;{JQAff<@7E)6RBqi#!!g$@)>KNEv;(qgi5Vqf4=;DSo3ZN$w;IF9k6BfB zw;M2(bIBhKTa%9Gt5AFF(VR?=XP;L{`j7m?+o;RB^lCEZftM)bNQmlMY-dv+D0Aam zdI%-cOe}c7>#&LqE1`Synglx_%ChVV&@#^r@w(0M}udTIj&|B>LHMrFWm(^7cYc> z7f63u(D;6(SdzH-`Nk``z4`lUy@FwN_{6Cn@7cyX>VZ?F3vQjwAV`FPf?X;Zt6OjQ zIp)O54f6r{>(lFHReAy-Ob@&UhW3sY53llvwk!LbWc<6Ff^4=lPLz%GYde)Ey9l#7 z?|s|jZxzyDdN!1XoD~|Dv!`*t;_d?w5-(o$M!V~wQAWn%%{GNOacZ_C? zbIn13jN3MRvMXUs;?~r`Vf<-#T9W$^QuQO#?A6r*{eD9SyQDle!vAfa^Sqk% zzX!f#aeb%Hflv+NwTCB8H?D`0T%S$|2euNtHn#q=zP|5FRdw}2e2!O!uMsv7UOVYr zqjAKR_@Sw(Nvd=n1d)^%78M1Bom2#$Y`S0kHI)Knkqfi4V{2(?t(t_LotdS7zH)Z!R0R{1i?i)$frC#Tfn11D;VtPjF6W zhX?zz89EHgL*&>)r0AIB*~Hp$gwUgIKA^nT(|0i6inqzaM0s#CE7&WO`1nh2>bK@I zc15L;lWHo5;)iplzzlEs(5eI1jr`bi%`Y9J_KioC-Jgc_=DOfhiHGrcSx0M z|8PWh_5g(uO3S=yd63%wMY}+%ds6R+joW`)#$Zh8epK<+kHu%?2y4A4J~raj38NKI za`dD74b^jUABlSW<`Xm!Bb3ltVA?G4GEB}PT^v+mxDJW|3nV#&o=6-**|RY{i!tWF z;WJQ4h z`$`pZmc`J-98dC5L5t%fTVJtt4BmILmSC>L+U49+g=hSXOB9N)!6}!Cjr_EWj;meK zlzP>|Y*gwo>Z=1YQ@U>#JrKu1NHfp?s&MTb2I^XWF|DkjoS_sb^V+o3%XM01&g2pz z|3=XIAi!LNlIpz`1o+>EO8fqiPSmD13Yu}=TUJ5fs(ykpMSZ%>&dx`QWO#!wVNX4A zViapNI*e~SIF9AR<997MH@BF3s4X%wNiAJhMAhLUBJ6kaTD<|vIfBr8_R72OdI*b) z%X&&OMgf4#?^zTp=f9q5k|t6@KBeKAODEt?$N$NB{4HSA>4wx2uEf6Kg+$8rrR&_d z6hNKo2%L4M9ko_4hhJI&MIa>d%-8hvQ_jGXS24lp67QB(K~JZ}oEg~4h0UHbb^QKN~A&ioLG@oeoegIe0fijBVJH>H45 zje+hSg7m!S@elL#>}J$I4=d=bg9tSqJK%l_)?tLA(Stj?(DSMzgg+H4v5LeG^dO8b zj@-MzeDwXrEL6wLLA(RLv$kD;{}`^q>P|U${u=q8_2l3hX@b)_(Gk0Uz|WOX;ICiu zy@}f??XBn>8o#(9>)O9ch{-WN3xE6!wJ%DZAz(pG^fau3OcfQQT=k^6 zZRuURGUHA}m7=}PLBD>WWHYf$EWWstLy&|p36x8sfA~rio6l8td7k2%aSfRsrHQ$0 z5N%j=m9*s{g?LFvB!{8Uw(>^~xXh)n_C2;@GRhX^4LAP`z9_^NZJ~T4ym>>Ta937i zrekvGbU}HeE1ZiCUgX4yN~1@we}t}RFwz7a*gni-1`ch6vE5KqdD>y?Qnv(Pp^?aL zlSZ_(DC)P}BK%Bqq+eY_{lh2#tniIt-Z5P$H;$dh`WKhlihCuXhd)Z#c?wR3E%PdJ z0=n3|DeiPl7k?atD`y1y?Bv9hKLGARCAW5K#hUaM1N8JTVVktkXbGn$1@S4(XUGO= zoU(iH;29sOt$WLziX~{+y&{m6b)aY2Zb)3`dust&Hg3e8|E`6(rSJk(M@++?uk2~H z6jqHCT5)N??ux&rerraT+Qe={?|i1_?g^~+CSZe3(jXnC1*#lgwb&|Nsn% zmcB2AYp#qP4#)8-(7zbAQ4rq|WXL+gKq#duY(E4K7pvt+L(H6)&&sUgne6e=kYevZKbY zwf<-ERub)$m-nGGZglH_I&Ao0cnT;-CZrx7z7!E2iyJf=LT71d#rRePF@gs+H8MZd zUqtWo0W~NnFD{+vjb1&;^!Y(J?s-5+RD6mc%50&UtdS*tTTd>4mJl^DQcQbxW^1=1 zu+$0tosA`93_7*E{cm(GJ>aS@PwLK&HB;}JY~)e`wrXm6On!(k*t@A~9y(%a%@}x1 z3DPsMwA}j%uGz7a-=VafRrB@(U-SC3Mo*Z=EgrINCZ!g^A$QgSCqzAr|1-1 z2@|ubeIVw`B3Wyn51&lD&hT%_4AWclk!03N60{6zD*L z8fO}{aRPE8ZH&ZtP>u*mz1hG=P)+(ldq_N^7Vw}wJ$`#krsR^{8bH%Rs`YfVtgj&F z{!8qlroLTgI{uQ@eCOtH$0op)ftQ7}8)SZ;Bcbw^L0!-MnhU^t&Hm>yH{Ub8LzxzH zhLMet?upm1s)O$-f=L@l%qtP|;(BhT;QucqPHf2BYt9%xG4MHeJ9Xa7$h?Z55i$C1 z*@sg@v3cTN>~LqDa?~9*TOYGN;x_)!5ZrJ>e%I?Z<4NXr(c-W+N!7IHc)!m+8|mM= jvYWi=CwiB1`*I|IA8uWhvtGGDr diff --git a/.resources/9ec6bdfae8e0b1a697f9647af06fbe850b39b628460da2aae2e78e488a8dabd0 b/.resources/47a074a79c8bad72e59d8dd6b13135dd8a068d0d78286fe8045265b13a5e82d8 similarity index 100% rename from .resources/9ec6bdfae8e0b1a697f9647af06fbe850b39b628460da2aae2e78e488a8dabd0 rename to .resources/47a074a79c8bad72e59d8dd6b13135dd8a068d0d78286fe8045265b13a5e82d8 diff --git a/.resources/47ae0c1270a89ae0282dbb59610ae6a63b7d321358aa1f7f02d8d97993e05489 b/.resources/47ae0c1270a89ae0282dbb59610ae6a63b7d321358aa1f7f02d8d97993e05489 deleted file mode 100644 index a625894a..00000000 --- a/.resources/47ae0c1270a89ae0282dbb59610ae6a63b7d321358aa1f7f02d8d97993e05489 +++ /dev/null @@ -1,1001 +0,0 @@ -{ - "custom": {}, - "params": { - "params": "value" - }, - "propConfig": { - "params.params": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 1080, - "width": 400 - } - }, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Icon" - }, - "position": { - "basis": "32px" - }, - "props": { - "path": "material/settings_applications", - "style": { - "marginLeft": "10px" - } - }, - "type": "ia.display.icon" - }, - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "129px", - "grow": 1 - }, - "props": { - "style": { - "marginLeft": "10px" - }, - "text": "Add Device", - "textStyle": { - "fontFamily": "Arial", - "fontSize": "20px", - "fontWeight": "bolder", - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "40px" - }, - "props": { - "justify": "space-around", - "style": { - "marginTop": "10px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "129px" - }, - "props": { - "style": { - "marginLeft": "0px" - }, - "text": "Device :", - "textStyle": { - "fontFamily": "Arial", - "fontSize": "16px", - "fontWeight": "bold" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "Device": "", - "tagPath": "Configuration/FC" - }, - "meta": { - "name": "TextField" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.text": { - "onChange": { - "enabled": null, - "script": "\tsystem.perspective.sendMessage(\"update-device-data\", currentValue.value)" - } - } - }, - "props": { - "placeholder": "\u003cDevice Id\u003e" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "multiple_selection", - "pageScope": true, - "script": "\t# implement your handler here\n\tself.props.enabled \u003d not payload", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "missing-data", - "pageScope": true, - "script": "\t# implement your handler here\n\t", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.text-field" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "40px" - }, - "props": { - "justify": "space-around", - "style": { - "marginTop": "10px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "130px" - }, - "props": { - "style": { - "marginLeft": "0px" - }, - "text": "Area :", - "textStyle": { - "fontFamily": "Arial", - "fontSize": "16px", - "fontWeight": "bold" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "key": "prefix", - "tagPath": "Configuration/aws" - }, - "meta": { - "name": "TextField_0" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.text": { - "onChange": { - "enabled": null, - "script": "\tsystem.perspective.sendMessage(\"update-area-data\", currentValue.value)" - } - } - }, - "props": { - "placeholder": "\u003cArea Id\u003e" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "multiple_selection", - "pageScope": true, - "script": "\t# implement your handler here\n\tself.props.enabled \u003d not payload", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.text-field" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "40px" - }, - "props": { - "justify": "space-around", - "style": { - "marginTop": "10px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "130px" - }, - "props": { - "style": { - "marginLeft": "0px" - }, - "text": "SubArea :", - "textStyle": { - "fontFamily": "Arial", - "fontSize": "16px", - "fontWeight": "bold" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "key": "prefix", - "tagPath": "Configuration/aws" - }, - "meta": { - "name": "TextField_0" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "props.text": { - "onChange": { - "enabled": null, - "script": "\tsystem.perspective.sendMessage(\"update-subarea-data\", currentValue.value)" - } - } - }, - "props": { - "placeholder": "\u003cSubArea Id\u003e" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "multiple_selection", - "pageScope": true, - "script": "\t# implement your handler here\n\tself.props.enabled \u003d not payload", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.text-field" - } - ], - "meta": { - "name": "FlexContainer_2" - }, - "position": { - "basis": "40px" - }, - "props": { - "justify": "space-around", - "style": { - "marginTop": "10px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Checkbox" - }, - "position": { - "basis": "130px" - }, - "propConfig": { - "props.selected": { - "onChange": { - "enabled": null, - "script": "\tsystem.perspective.sendMessage(\"multiple_selection\", payload\u003dcurrentValue.value)" - } - } - }, - "props": { - "style": { - "margin-left": "0px" - }, - "text": "Upload" - }, - "type": "ia.input.checkbox" - }, - { - "custom": { - "rowToAdd": { - "Area": "", - "Device": "", - "SubArea": "" - } - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\twhid \u003d self.session.custom.fc\n\ttagPath \u003d \"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\"%(whid)\n\tself.custom.tagData.append(self.custom.rowToAdd)\n\t\n\ttag \u003d {}\n\tfor i in self.custom.tagData:\n\t\ttag[i[\"Device\"]]\u003d {\"Area\": i[\"Area\"], \"SubArea\":i[\"SubArea\"]}\n\t\t\n\t\n\tsystem.tag.writeBlocking([tagPath], [system.util.jsonEncode(tag)])\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button", - "tooltip": { - "enabled": true, - "text": "Missing Data for : [u\u0027Area\u0027, u\u0027SubArea\u0027, u\u0027Device\u0027]" - } - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "custom.tagData": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" - }, - "transforms": [ - { - "code": "\ttagData \u003d[{\"Device\":k, \"Area\":v[\"Area\"], \"SubArea\":v[\"SubArea\"]} for k,v in system.util.jsonDecode(value).items()]\n\treturn tagData", - "type": "script" - } - ], - "type": "tag" - } - }, - "props.enabled": { - "binding": { - "config": { - "path": "this.custom.rowToAdd" - }, - "transforms": [ - { - "code": "\n\tmissing_data \u003d []\n\tfor k, v in value.items():\n\t\tif not v:\n\t\t\tmissing_data.append(k)\n\t\n\tif missing_data:\n\t\tenabled \u003d False\n\t\tmsg \u003d \"Missing Data for : %s\"%missing_data\n\telse:\n\t\tenabled \u003d True\n\t\tmsg \u003d \"\"\n\t\n\tself.meta.tooltip.text \u003d msg \n\t\n\treturn enabled\n\t", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/add_circle" - }, - "position": "right" - }, - "primary": false, - "text": "Submit" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "update-device-data", - "pageScope": true, - "script": "\t# implement your handler here\n\tself.custom.rowToAdd[\"Device\"] \u003d payload", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "update-area-data", - "pageScope": true, - "script": "\t# implement your handler here\n\tself.custom.rowToAdd[\"Area\"] \u003d payload", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "update-subarea-data", - "pageScope": true, - "script": "\t# implement your handler here\n\tself.custom.rowToAdd[\"SubArea\"] \u003d payload", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "multiple_selection", - "pageScope": true, - "script": "\t# implement your handler here\n\tself.position.display \u003d not payload", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - }, - { - "custom": { - "data": { - "ARSAW1301": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1302": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1303": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1304": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1305": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1306": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1307": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1308": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1309": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1310": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1311": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1312": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1501": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1502": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1503": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1504": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1505": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1506": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1507": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1508": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1509": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1510": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1511": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "ARSAW1512": { - "Area": "AR FLOOR", - "SubArea": "ARSAW\r" - }, - "FSC1": { - "Area": "", - "SubArea": "\r" - }, - "FSC10": { - "Area": "OUTBOUND", - "SubArea": "FSC\r" - }, - "FSC2": { - "Area": "", - "SubArea": "\r" - }, - "FSC_Cells": { - "Area": "", - "SubArea": "\r" - }, - "FSC_Induct_1-4": { - "Area": "", - "SubArea": "\r" - }, - "PLC01": { - "Area": "OUTBOUND", - "SubArea": "SHIP\r" - }, - "PLC02": { - "Area": "OUTBOUND", - "SubArea": "SHIP\r" - }, - "PLC03": { - "Area": "OUTBOUND", - "SubArea": "KO \u0026 REJECT\r" - }, - "PLC06": { - "Area": "OUTBOUND", - "SubArea": "TOTE ROUTER\r" - }, - "PLC07": { - "Area": "OUTBOUND", - "SubArea": "TOTE ROUTER\r" - }, - "PLC08": { - "Area": "OUTBOUND", - "SubArea": "TOTE FEED\r" - }, - "PLC09": { - "Area": "INBOUND", - "SubArea": "RECEIVING\r" - }, - "PLC09_Receiving2": { - "Area": "", - "SubArea": "\r" - }, - "PLC09_Receiving3": { - "Area": "", - "SubArea": "\r" - }, - "PLC1000": { - "Area": "INBOUND", - "SubArea": "RECEIVING\r" - }, - "PLC1000_Receiving4": { - "Area": "", - "SubArea": "\r" - }, - "PLC13": { - "Area": "AR FLOOR", - "SubArea": "ARSAW P2\r" - }, - "PLC13_SC2": { - "Area": "", - "SubArea": "\r" - }, - "PLC14": { - "Area": "", - "SubArea": "\r" - }, - "PLC15": { - "Area": "AR FLOOR", - "SubArea": "ARSAW P3\r" - }, - "PLC15_SC2": { - "Area": "", - "SubArea": "\r" - }, - "PLC16": { - "Area": "AR FLOOR", - "SubArea": "PICK TO REBIN P3\r" - }, - "PLC20": { - "Area": "OUTBOUND", - "SubArea": "AFE1 TOTE 1-3\r" - }, - "PLC20_Tote4-8": { - "Area": "", - "SubArea": "\r" - }, - "PLC21": { - "Area": "OUTBOUND", - "SubArea": "AFE TRAY ROUTER\r" - }, - "PLC22": { - "Area": "OUTBOUND", - "SubArea": "AFE TRAY ROUTER\r" - }, - "PLC23": { - "Area": "OUTBOUND", - "SubArea": "AFE1 TRAY FEED\r" - }, - "PLC24": { - "Area": "OUTBOUND", - "SubArea": "AFE1 WALL 1-2\r" - }, - "PLC25": { - "Area": "OUTBOUND", - "SubArea": "AFE1 WALL 3-4\r" - }, - "PLC26": { - "Area": "OUTBOUND", - "SubArea": "AFE1 WALL 5-6\r" - }, - "PLC27": { - "Area": "OUTBOUND", - "SubArea": "AFE1 WALL 7-8\r" - }, - "PLC30": { - "Area": "OUTBOUND", - "SubArea": "AFE1 PACK 1-4\r" - }, - "PLC31": { - "Area": "OUTBOUND", - "SubArea": "AFE1 PACK 5-8\r" - }, - "PLC32": { - "Area": "OUTBOUND", - "SubArea": "AFE1 EMP. TOTE\r" - }, - "PLC60": { - "Area": "OUTBOUND", - "SubArea": "S.PACKING 1\r" - }, - "PLC61": { - "Area": "OUTBOUND", - "SubArea": "S.PACKING 2\r" - }, - "PLC69": { - "Area": "OUTBOUND", - "SubArea": "GIFT WRAP\r" - }, - "PLC70": { - "Area": "OUTBOUND", - "SubArea": "TRANSSHIP\r" - }, - "PLC71": { - "Area": "OUTBOUND", - "SubArea": "TRANSSHIP\r" - }, - "PLC80": { - "Area": "OUTBOUND", - "SubArea": "SMART PACKING\r" - }, - "PLC81": { - "Area": "OUTBOUND", - "SubArea": "SMART PACKING\r" - }, - "PLC82": { - "Area": "OUTBOUND", - "SubArea": "SMART PACKING\r" - }, - "PLC97": { - "Area": "SAFETY PLC", - "SubArea": "\r" - }, - "PLC98": { - "Area": "SAFETY PLC", - "SubArea": "\r" - }, - "PLC99": { - "Area": "SAFETY PLC", - "SubArea": "\r" - }, - "THE": { - "Area": "BOB", - "SubArea": "NOB" - } - }, - "list_data": [ - "OUTBOUND", - "PLC03", - "KO \u0026 REJECT\r", - "OUTBOUND", - "PLC01", - "SHIP\r", - "OUTBOUND", - "PLC02", - "SHIP\r", - "OUTBOUND", - "PLC07", - "TOTE ROUTER\r", - "OUTBOUND", - "PLC08", - "TOTE FEED\r", - "OUTBOUND", - "PLC06", - "TOTE ROUTER\r", - "OUTBOUND", - "PLC81", - "SMART PACKING\r", - "OUTBOUND", - "PLC82", - "SMART PACKING\r", - "", - "PLC09_Receiving3", - "\r", - "", - "PLC09_Receiving2", - "\r", - "INBOUND", - "PLC09", - "RECEIVING\r", - "", - "PLC14", - "\r", - "AR FLOOR", - "PLC15", - "ARSAW P3\r", - "AR FLOOR", - "PLC13", - "ARSAW P2\r", - "AR FLOOR", - "PLC16", - "PICK TO REBIN P3\r", - "", - "FSC_Induct_1-4", - "\r", - "SAFETY PLC", - "PLC98", - "\r", - "SAFETY PLC", - "PLC99", - "\r", - "SAFETY PLC", - "PLC97", - "\r", - "OUTBOUND", - "FSC10", - "FSC\r", - "", - "FSC_Cells", - "\r", - "OUTBOUND", - "PLC25", - "AFE1 WALL 3-4\r", - "OUTBOUND", - "PLC69", - "GIFT WRAP\r", - "OUTBOUND", - "PLC26", - "AFE1 WALL 5-6\r", - "OUTBOUND", - "PLC23", - "AFE1 TRAY FEED\r", - "OUTBOUND", - "PLC24", - "AFE1 WALL 1-2\r", - "OUTBOUND", - "PLC27", - "AFE1 WALL 7-8\r", - "AR FLOOR", - "ARSAW1310", - "ARSAW\r", - "OUTBOUND", - "PLC61", - "S.PACKING 2\r", - "AR FLOOR", - "ARSAW1312", - "ARSAW\r", - "AR FLOOR", - "ARSAW1510", - "ARSAW\r", - "AR FLOOR", - "ARSAW1311", - "ARSAW\r", - "OUTBOUND", - "PLC60", - "S.PACKING 1\r", - "AR FLOOR", - "ARSAW1512", - "ARSAW\r", - "OUTBOUND", - "PLC21", - "AFE TRAY ROUTER\r", - "AR FLOOR", - "ARSAW1511", - "ARSAW\r", - "OUTBOUND", - "PLC22", - "AFE TRAY ROUTER\r", - "INBOUND", - "PLC1000", - "RECEIVING\r", - "OUTBOUND", - "PLC20", - "AFE1 TOTE 1-3\r", - "AR FLOOR", - "ARSAW1307", - "ARSAW\r", - "AR FLOOR", - "ARSAW1505", - "ARSAW\r", - "AR FLOOR", - "ARSAW1306", - "ARSAW\r", - "AR FLOOR", - "ARSAW1504", - "ARSAW\r", - "AR FLOOR", - "ARSAW1309", - "ARSAW\r", - "AR FLOOR", - "ARSAW1507", - "ARSAW\r", - "AR FLOOR", - "ARSAW1308", - "ARSAW\r", - "AR FLOOR", - "ARSAW1506", - "ARSAW\r", - "AR FLOOR", - "ARSAW1509", - "ARSAW\r", - "", - "PLC20_Tote4-8", - "\r", - "AR FLOOR", - "ARSAW1508", - "ARSAW\r", - "", - "PLC13_SC2", - "\r", - "AR FLOOR", - "ARSAW1301", - "ARSAW\r", - "OUTBOUND", - "PLC70", - "TRANSSHIP\r", - "OUTBOUND", - "PLC71", - "TRANSSHIP\r", - "AR FLOOR", - "ARSAW1303", - "ARSAW\r", - "AR FLOOR", - "ARSAW1501", - "ARSAW\r", - "OUTBOUND", - "PLC32", - "AFE1 EMP. TOTE\r", - "AR FLOOR", - "ARSAW1302", - "ARSAW\r", - "AR FLOOR", - "ARSAW1305", - "ARSAW\r", - "AR FLOOR", - "ARSAW1503", - "ARSAW\r", - "OUTBOUND", - "PLC30", - "AFE1 PACK 1-4\r", - "AR FLOOR", - "ARSAW1304", - "ARSAW\r", - "AR FLOOR", - "ARSAW1502", - "ARSAW\r", - "OUTBOUND", - "PLC31", - "AFE1 PACK 5-8\r", - "OUTBOUND", - "PLC80", - "SMART PACKING\r", - "", - "FSC1", - "\r", - "", - "PLC15_SC2", - "\r", - "", - "FSC2", - "\r", - "", - "PLC1000_Receiving4", - "\r", - "BOB", - "THE", - "NOB" - ] - }, - "events": { - "component": { - "onFileReceived": { - "config": { - "script": "#\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n#\twhid \u003d self.session.custom.fc\n#\tdata \u003d{}\n#\tdef get_child():\n#\t\treturn {\n#\t\t\t\"Area\":\"\",\n#\t\t\t\"SubArea\":\"\"\n#\t\t}\n#\t\t\n#\tdef convert_csv_string_list(string):\n#\t\treturn string.replace(\"\\n\",\",\").replace(\"\\\"\",\"\").split(\",\")[3:]\n#\t\n#\tlist_data \u003d convert_csv_string_list(event.file.getString())\n#\tself.custom.list_data \u003d list_data\n#\tfor i in range(2, len(list_data),3):\n#\t\tchild \u003d get_child()\n#\t\tchild[\"Area\"] \u003d list_data[i-2]\n#\t\tchild[\"SubArea\"] \u003d list_data[i]\n#\t\tdata[list_data[i-1]]\u003d child\n#\n#\tself.custom.data \u003d data\n#\t\n#\t\n#\tvalues \u003d system.util.jsonEncode(data)\n#\t\n#\tsystem.tag.writeBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\"%whid], values)\n#\t\n\twhid \u003d self.session.custom.fc\n\tFileHandler.uploader.add_device_btn_code(whid, event)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FileUpload" - }, - "position": { - "basis": "150px", - "display": false - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "multiple_selection", - "pageScope": true, - "script": "\t# implement your handler here\n\tself.position.display \u003d payload ", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.fileupload" - } - ], - "meta": { - "name": "FlexContainer_4" - }, - "position": { - "basis": "40px" - }, - "props": { - "justify": "space-around", - "style": { - "margin-top": "10px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "borderBottomLeftRadius": "5px", - "borderBottomRightRadius": "5px", - "borderStyle": "solid", - "borderTopLeftRadius": "5px", - "borderTopRightRadius": "5px", - "margin": "10px" - }, - "wrap": "wrap" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/47e98a03144926118cf8071178e6886746bcbf10caaa79bed33ea5a29e1c4374 b/.resources/47e98a03144926118cf8071178e6886746bcbf10caaa79bed33ea5a29e1c4374 deleted file mode 100644 index a6ba74f6..00000000 --- a/.resources/47e98a03144926118cf8071178e6886746bcbf10caaa79bed33ea5a29e1c4374 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FF0000", - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontWeight": "bold" - } - } -} \ No newline at end of file diff --git a/.resources/1a329c69292917258760e5a3280a8a1db07df5d45c404f47601338f8c508056e b/.resources/494cb3ac46fb59b87fdad459d4dafadf523f877f85db4489aef9f84449dbe4a0 similarity index 100% rename from .resources/1a329c69292917258760e5a3280a8a1db07df5d45c404f47601338f8c508056e rename to .resources/494cb3ac46fb59b87fdad459d4dafadf523f877f85db4489aef9f84449dbe4a0 diff --git a/.resources/49505662ccaaa240c24a887c94525a9141e7ebc4f3eb2567ad0091e9f9ed2b96 b/.resources/49505662ccaaa240c24a887c94525a9141e7ebc4f3eb2567ad0091e9f9ed2b96 deleted file mode 100644 index 4b9da024338ee096a917e9fdff2e7db70b82f5ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^fk4c{!2~2L*SV+yDJM@C$B>G+yAwC^GAMAc+?{4P zlZz>6!9_Pt;XhNS=j++0weJpRJ+k7FfM6)&Mf26K_DOC1lf7@Ql9S7sIWyC~@fk#{ YJGtrA``)$XK+_mJUHx3vIVCg!03#PE#sB~S diff --git a/.resources/4a29f3458eef7f029d41ac61f14f2623da2b6091b1a57f216d46cdf61a1f3631 b/.resources/4a29f3458eef7f029d41ac61f14f2623da2b6091b1a57f216d46cdf61a1f3631 deleted file mode 100644 index cc584ec5e103f6f5efe7669d54a29277c28a8eba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2377 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 diff --git a/.resources/c7533aa323183d002951ebd750919823e00c7413f2968c4fe8cbc8be50212faf b/.resources/4a7b0afbfc6dc0278b94d2cefb7ed4943274d69c3446ffcf04ebbcb2ba695e2e similarity index 100% rename from .resources/c7533aa323183d002951ebd750919823e00c7413f2968c4fe8cbc8be50212faf rename to .resources/4a7b0afbfc6dc0278b94d2cefb7ed4943274d69c3446ffcf04ebbcb2ba695e2e diff --git a/.resources/4b25235af00bb225517aa3c56494a3700c1ce2f8c412639afb87714569a46e49 b/.resources/4b25235af00bb225517aa3c56494a3700c1ce2f8c412639afb87714569a46e49 deleted file mode 100644 index fc9a0d0b1b31f065a42258c85e2e23a3faaed4c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2825 zcmeHJ*E<^wAGK-(5i7N|UP{fP_A0N`Uj2-S88u>4#3;3jYFbL|8b#Hr9i_x5LJ1+Y zqKaz!sujd&V!wU9KjORkF3vd@=jQx=7w0+Y)|N)>0096E4Gp`AvEjWxTJr~m%yfVF zHpki)4Gmz*#8BTh%9T{O5zIT!KYSp0^mmmhDb4se0fsPs#dE8QK{9dpdEjgHmYX($ z1~TuPKY_G(ui4&X$^F8|#>b{gi&z|nKArJ zBg}iPm=d`*t}!3%xps3R-8hCGEl9tyg%3|rcG(!S?b66H){L^AjLXwi&-uDiwL^MA zK}r|T#eM$hp#E7R*<@mu-0AF^kNY)D*gz6>EUQZ+#di04rDhId+Vi7l^!L?;D~2lP zJGOp9SfmGI+Ug4PreP8ZBjRNX^HoV*R={Jg*{eD94+kQ8iqkKLOap?+8f^u zbJ;?Gv17C&*|g3Ikdj>pHMLrWiWQ9+emAkmd82F!Wrh5xcq?SFiic@$pm>bER$dVUXEm!YmcDpe(jDtKrST&qARQCIhjpb zwTaWtjy9pYCiPChQ@U(5sZ;d^NDOW75>2L<-GOB|Y2~Gp_1SSDP6eh(CXq3sJ;y

y3$#+^Sa(0QgwP*6#J0H#`o!R!3D$E74n$yQG`7{;}DYTkJ+- zGL6ofCu^DUC#RD*0sp48wRokUlW$Zu3@@~f(IT%PrXgF+JBm*6J2Z}==8T*kg_tR1N| z+#6O109DVL*zdul<0$)XVSQA|-!TNwx7EKtE2v>gy3f@f0^N3Ep+^_pedn`tB#yhe zb5EzEC3oEec!Cz9djfB8v84Pp_Q5I)w|nTVG}@Y+V%HE>OFZlqj*q%k!N}-`6r~2p zCyqjN!rVtzgBv+A%%hu?-1q$R*Ahnn_$I%dUoI)4XF-(Ses<~le|YJpM@mjnNyq~1P0PSd+waFf@y zydhkMq3DyI)IFQ)>mfH}qJR!M0eTJ?FPu?4#yJ!x?+dk*{qM;KA5mBr_00m2+S*#u zdyB&ecJmLp#PLVI*~yukEm#z9Qk{Y+_c#qahNG5?fK-LyKR%Qf`pNHP>)xsj8;ZdUq_!A!A}-&}aH-gV(pIRP}e$8^uLM z1Ke=>!~|@YbK~f!3Ht zZd*@^p2L8Z25F_l`bY~UdCGZa# z@MIG2w-m^y$5?I))RO}HXY_Dd8t|%e10Q(3uh~P0nN@^UPRXM`n$2sFyOO~N;swXH zcTS<{8ho#q!3olE0vG%W3|FPxXhRdI?=%Y&K=jXe1hR}){m{Ib3kskt($EJ(X z-w1GX=K}bxPD2SX10U}6p{c1Ue2G?ASePQ*W4&pY+0*JsGip47x<`X)|K0`WyZ>7Y zxlKg=U2Rz+#;{zx+2Zal8^3mZq7b-KXeTCum`dH9e8?Q)}keR zh^rqKdJZVTKJBQfK`g!xl#r0XVzEvgK|0~JEa68Gf#V@jwt=6l79%Q1r5pcMjv>~Zdn$qC$bTPzo0j^7uuqjLSClK%lknl z99q1Ez_2z2oJYf=Mm{dZ3ux&ce7|i0B!Hn+9{_T2+*d;Q`wxZ^K}sYN3CjKYZL_ej zux?qfrzgWv%27-Y70Ct!4j_?8kNI1ws(FEmct%D>_wKH)p(fw+^YbV%S%KtSZ#TEH z=I@c3(C|CNKP9%j>&5q?(TBz5 zO>F7f0NmJEQBhHd%s8Nvr4cI}a=kGLn;gRQbq*cXMNMa)osx#4LHR#qyY{vhl+mIS zV6ZT!9*G6ziYmL30x<{iL($-miIA@#`Nuq9T0>h-C#XJ?qS4R9LG(8|=l~t4aqO-} zaGjNS#Hv}QMMIW_STgUfsZ*9C_p93{-H-Q_ppCpFw}GNesD_NliS!&m1g9B0J46_N zS2H2+#$C_fmntt^3_JNUi(dGrDd;NgWW_Z`D_geG8a{0s#i$C8Jwxob^rs)Wd6Olj g|8M+HUUJS$tJ6cGdw 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 diff --git a/.resources/516b0625993a0b994ec11ce209c1aee306e4c17aa622d2d4d46399514da51512 b/.resources/516b0625993a0b994ec11ce209c1aee306e4c17aa622d2d4d46399514da51512 deleted file mode 100644 index 4192b886..00000000 --- a/.resources/516b0625993a0b994ec11ce209c1aee306e4c17aa622d2d4d46399514da51512 +++ /dev/null @@ -1,84 +0,0 @@ -{ - "custom": {}, - "params": { - "Hidden": true, - "Name": "Planned_Stop_Or_Not_Used" - }, - "propConfig": { - "params.Hidden": { - "paramDirection": "inout", - "persistent": true - }, - "params.Name": { - "paramDirection": "inout", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 37, - "width": 200 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "ColumnSelect" - }, - "position": { - "basis": "36px" - }, - "propConfig": { - "props.selected": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.Hidden" - }, - "type": "property" - }, - "onChange": { - "enabled": null, - "script": "\t#Use previous value. If you\u0027re clicking -, you want to remove then toggle to +. Vice versa with clicking +.\n\tif getattr(previousValue, \u0027value\u0027, None) is not None:\n\t\tsystem.perspective.sendMessage(\u0027column-visibility\u0027, {str(self.view.params.Name): previousValue.value}, scope\u003d\u0027page\u0027)" - } - }, - "props.text": { - "binding": { - "config": { - "path": "view.params.Name" - }, - "type": "property" - } - } - }, - "props": { - "checkedIcon": { - "path": "material/add" - }, - "indeterminateIcon": { - "path": "material/add" - }, - "style": { - "fontSize": 12, - "overflow": "visible" - }, - "uncheckedIcon": { - "path": "material/remove" - } - }, - "type": "ia.input.checkbox" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "overflow": "visible" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/523a4c1021c0fd72faccc6600b4b1d008f89291dbe1ce8507b489ed73c6a197c b/.resources/523a4c1021c0fd72faccc6600b4b1d008f89291dbe1ce8507b489ed73c6a197c deleted file mode 100644 index 1c9a08f1..00000000 --- a/.resources/523a4c1021c0fd72faccc6600b4b1d008f89291dbe1ce8507b489ed73c6a197c +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "color": "#000000", - "fontFamily": "Arial", - "fontSize": "12px", - "fontWeight": "bold" - } - } -} \ No newline at end of file diff --git a/.resources/528692b263a2ec9227a864505244830a53b9b73f17f99ea1a08087cb49473be3 b/.resources/528692b263a2ec9227a864505244830a53b9b73f17f99ea1a08087cb49473be3 deleted file mode 100644 index 6ddabce6270daca451263631408fa359b98fe1d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V6Od#Ih timeout: - return True - else: - return False - - -def get_heartbeat(provider): - tag_to_write = "%sSystem/wbsckt_heartbeat_interval" % (provider) - current_time = system.date.now() - system.tag.writeAsync([tag_to_write], [current_time]) diff --git a/.resources/5542fb404969e47ceb59807bf87e2dc1fdfb59562ad3d93824d2b47588110929 b/.resources/5542fb404969e47ceb59807bf87e2dc1fdfb59562ad3d93824d2b47588110929 deleted file mode 100644 index 60cc4c5e..00000000 --- a/.resources/5542fb404969e47ceb59807bf87e2dc1fdfb59562ad3d93824d2b47588110929 +++ /dev/null @@ -1,31 +0,0 @@ -def create_web_socket_tags(whid): - - logger = system.util.getLogger("%s-Create-Web-Socket-Tags" % (whid)) - if whid != "" and whid != None: - provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) - tag_paths = {"aws_data":{"name":"aws_data", "valueSource": "memory", - "dataType": "String", "value" : "{}"}, - "close_socket":{"name":"close_socket", "valueSource": "memory", - "dataType": "Boolean", "value" : True}, - "device_count":{"name":"device_count", "valueSource": "memory", - "dataType": "String", "value" : "{}"}, - "IdToStatus":{"name":"IdToStatus", "valueSource": "memory", - "dataType": "String", "value" : "{}"}, - "wbsckt_heartbeat_interval":{"name":"wbsckt_heartbeat_interval", "valueSource": "memory", - "dataType": "DateTime", "value" : 0}, - "wbsckt_logging":{"name":"wbsckt_logging", "valueSource": "memory", - "dataType": "Boolean", "value" : False}, - "wbsckt_messages_send":{"name":"wbsckt_messages_send", "valueSource": "memory", - "dataType": "String", "value" : "{}"}, - "thread_id":{"name":"thread_id", "valueSource": "memory", - "dataType": "String", "value" : ""}, - "wbsckt_running":{"name":"wbsckt_running", "valueSource": "memory", - "dataType": "Boolean", "value" : False}, - "download":{"name":"download", "valueSource": "memory", - "dataType": "String", "value" : ""}} - - for k,v in tag_paths.items(): - if not system.tag.exists("%sSystem/%s" % (provider, k)): - base_path = "%s/System" % (provider) - system.tag.configure(base_path, v) - logger.info("Created tag %s" % (k)) \ No newline at end of file diff --git a/.resources/5673ab7b1b208867263287e584caf95c2e3d3a7ace0421b8f7f7d1791af7da8e b/.resources/5673ab7b1b208867263287e584caf95c2e3d3a7ace0421b8f7f7d1791af7da8e deleted file mode 100644 index 218c7758ea23d9c624a9c6c230f4577ea0e0728f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56022 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%0D!3eCTQdRDY=w{5f=TY4rMHcwPJ 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 diff --git a/.resources/b6b7779ff87d95dd0bcb3dbdc43fd50133879b6ea74dd83228c9386be6cd97a8 b/.resources/56a71b625d7d2361556b62952d58efa0294bd712b246e940a29ad8c5e1b2fecb similarity index 100% rename from .resources/b6b7779ff87d95dd0bcb3dbdc43fd50133879b6ea74dd83228c9386be6cd97a8 rename to .resources/56a71b625d7d2361556b62952d58efa0294bd712b246e940a29ad8c5e1b2fecb diff --git a/.resources/56b546caca9f84304055491db4a4af349bb0478961750c28f442148d9c35a2ea b/.resources/56b546caca9f84304055491db4a4af349bb0478961750c28f442148d9c35a2ea deleted file mode 100644 index 6726facc..00000000 --- a/.resources/56b546caca9f84304055491db4a4af349bb0478961750c28f442148d9c35a2ea +++ /dev/null @@ -1,31 +0,0 @@ -WITH Active AS ( - SELECT - ae.id, - ae.eventid, - ae.priority, - aed.strValue - FROM alarm_events ae - LEFT JOIN alarm_event_data aed ON ae.id = aed.id AND aed.propname = 'myTag' - WHERE ae.eventtype = 0 - AND NOT EXISTS ( - SELECT 1 FROM alarm_events ae_clear - WHERE ae_clear.eventid = ae.eventid - AND ae_clear.eventtype = 1 - ) - AND ae.displaypath NOT LIKE '%System Startup%' - AND ae.source NOT LIKE '%System Startup%' -) -SELECT - SUBSTRING_INDEX(SUBSTRING_INDEX(strValue, '/', 2), '/', -1) AS Location, - CASE priority - WHEN 0 THEN 'Diagnostic' - WHEN 1 THEN 'Low' - WHEN 2 THEN 'Medium' - WHEN 3 THEN 'High' - WHEN 4 THEN 'Critical' - ELSE 'Unknown' - END AS Priority, - COUNT(*) AS Count -FROM Active -GROUP BY Location, Priority -ORDER BY Location, Priority; diff --git a/.resources/48a0c1796b779145f6c66a536abf210dd8743426723f42d2abf915167806fd80 b/.resources/56c5aee1c4f7eb2c70c1f1aeea88d62457d7b85a601a29b4a0ccea62ce2e1f9b similarity index 93% rename from .resources/48a0c1796b779145f6c66a536abf210dd8743426723f42d2abf915167806fd80 rename to .resources/56c5aee1c4f7eb2c70c1f1aeea88d62457d7b85a601a29b4a0ccea62ce2e1f9b index f20e013d..284cc5fd 100644 --- a/.resources/48a0c1796b779145f6c66a536abf210dd8743426723f42d2abf915167806fd80 +++ b/.resources/56c5aee1c4f7eb2c70c1f1aeea88d62457d7b85a601a29b4a0ccea62ce2e1f9b @@ -3,6 +3,7 @@ "alarmHighlight": "", "alarm_filter": { "magnificaiton": "x2", + "orderby": true, "show_VFD": true, "show_beacons": true, "show_buttons": true, @@ -17,6 +18,18 @@ "show_solenoids": true }, "areaHover": [], + "colours": { + "Fallback": "#00FF00", + "colour_impaired": false, + "state0": "#8C8C8C", + "state1": "#FF0000", + "state2": "#FF8000", + "state3": "#FFFF00", + "state4": "#007EFC", + "state5": "#00CC00", + "state6": "#CCCCFF" + }, + "covert": true, "currentGraphic": "Windows/Graphics/Overview", "demoHighlight": "", "dexmanager": { @@ -50,7 +63,7 @@ "$": [ "ds", 192, - 1754654890875 + 1755608623601 ], "$columns": [ { diff --git a/.resources/f0db7ed1ae045b12a0f0b1ef1b0f1553e08488f015dc9582af9383e70dcc553d b/.resources/5716b142dadbff22362e6ac76328d699050f981ed593563956c6dfe10d52b0e7 similarity index 100% rename from .resources/f0db7ed1ae045b12a0f0b1ef1b0f1553e08488f015dc9582af9383e70dcc553d rename to .resources/5716b142dadbff22362e6ac76328d699050f981ed593563956c6dfe10d52b0e7 diff --git a/.resources/5753827d660cca78b89fded0f476cdfa3286dd1752c8881fcbb22e34afbe5996 b/.resources/5753827d660cca78b89fded0f476cdfa3286dd1752c8881fcbb22e34afbe5996 deleted file mode 100644 index 4fbefa79dfe57289295106773770f1c0e1699ba2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmV-N0l5B&P)0003FNkl zzu%ONmXYcFLLv;nu!vf;KcaWBLu$EWdZlAp1)WfOCD6u*{$+{tcK{KPF)$A3TNXce zd-&3$HVOIsg2D`L({@DkE>SVHVHgOYV&PyM6bnQ^2D%(wfRd@LTUv4G{C&C}Ap%08 z3~KdD?UPG^5=<;?j7-dQM#wJ1l%+LdVrBu_DSk)>qcWG6Q(O9(EgBP6*A347I<`|GJr zUD|{jk_bF})pzOJ=i_|eIo;vf(b18(ad>!mDKL3l1x~=^aus;F;~zWY%D=YEf7+3` z58D#{8kfCnR(5xH71HT+L8KgHcGL1Lo|Ku`H<|zNuNt}MIq%JHu9-}8eMsZ>hAw(Yz~I>@9` z68*L#^>a~aUffV4_dMsl`AyC+BnJXI$VG$L`2^xwCX-QQ&2N4th)3K)oGv?8@YrWO zJdnZFEvcT_lwZa_%Ju0_@{d0yH!WNKwvq}refja1kN39RSlE_dN22oE=!P1(=Q;1q zZ*qo#L^K)|%d##7#MX(>pqh4eb|er8{4oC_KwRSMs=g|@T3=t6y}doz-`|(RgMAr@ ze3m~aV{(0LP1>d{3HmMZ`TgSefaM?*@XPp;U#f;JsTr}<$UV<_Z+>%))9YjE^KNAw&U8&h1#mHWGr48uZ@Zfk3knwpv%?%cVf#@n}VOI=-^3=Itx zZJJ6NhU8<|{{DV>_3D*$b#=-3__*S|va%vGGczhtrg$bQX&5-YfB# z2y}LKs_x;%i`>WKadnPK*eN+oZcBG8<@{3Glvojl(Plv(bV4t!pVkndFR|QwN-_)q zo12^E)~#D||Nec2d-v|;uEE{AcU910O;ahuAOc1qer;{7G&MEJn0xePO7j9+tkoK9!jI`g$db z4$L*;6;sXS7=}cXa7@b?YHe*T*ZTEdjbSwJpKTZ&cXD!4<$$vuodp9A3=GJF2M<*I z=g*(Z$jFH5gq$P1IBCQ1b05RR6G{2{^^3HGx229>NluaY3m8UoLJzk_#Gjj+Q$+^XTLZ1V8PTbkq zSyjO#08Y%g2*beX#ful}$AB&vp1phbPMMc^oM~29SCyftYQ!=Rn&!INFquqN(zY#c zteE^Uwl2R9Mx=GplCbkj$6w%E);h@;*x#Pzl4le*Icis=J$!0J;lj7K{T|Mz1wBr*aJgpZ4~4bOZ|~$6jX`w;8+)W18we+X2w*qUhNv00000NkvXXu0mjf D3nM)> diff --git a/.resources/2ab3d5b7f003202fc6d0fde6964798c50cf486f04c2500fe6769d4ed4dcbbc2a b/.resources/5e571f883de68a739937f6800ae01fd262360401361a11dbffaae8fb5eeba26b similarity index 100% rename from .resources/2ab3d5b7f003202fc6d0fde6964798c50cf486f04c2500fe6769d4ed4dcbbc2a rename to .resources/5e571f883de68a739937f6800ae01fd262360401361a11dbffaae8fb5eeba26b diff --git a/.resources/5e95f3c99f8093e5cd6942452c5d5360dce2803b75c4ceb223aa256804873a4f b/.resources/5e95f3c99f8093e5cd6942452c5d5360dce2803b75c4ceb223aa256804873a4f deleted file mode 100644 index d9e000b2540436bf8166e8d3676dedccf150be80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5991 zcmc(jRa6uJv&WGXq-!Ol1qo?nX;46rZkFzl5|9q*6maS8j-{k)X>gYX6j+)?N?f{| z>-T!U`+gth%R)CnBIFz`(#DQdW}J{@0QJ%I+!Ve<(IZ5Ca3it1K_4 z>ua{3w`;^Qo;^CL1~<*!$?6F8+y1aU2#?O%Ia4*b%+gsg4FKtmRWnEE{vO7&&B&HVBxc#YYoZfSxgo+d+KG z@2D_2%QlKuu=t|hAp)a0c48f%U57;E7Ft{i+B5xOwnLptV74O_=(8v87yt#WR5x4a zDPUS$bdq`)e6f8Jjc;bsWDDgxvMS8<()_zj95So3OQ>#vmp{?$i#yt=%dV0 zk;$UWLnNAW`N<*1yN+Nvm37z~Sk;ktYaq~@9IE>@n18|t_ph!hcPQ^54Wk|OSrSmihnZj_E? zDni3bg-|}aFXwpi5-arXyuCRWX3rcP`eErdraXnsyW?YV1$h-!@Ux*93Fsb?E4@x^ z%?=4)7F)C9AN^4Ekffo}TO7BKSMLVze@MFkaWcrTQ`w2+;XP=9RT2u_B?rA{Q+<#x%A*)z>CCz-p=tpKtVwa+b__0y+K zgurH?6VMdODNZMPM&JY_Qrw{?rj#G*T>87hxrqLg#_0lIEDbZZG(N3YzxaGnbA7J& zyI&xze71OpUM{+@$Vd_hez^(ca^1`8WCJ5rKAl0Tn+Z}oG^}b#OG+l>FRB%k}G~rTv0@RXmWnSP)%CN)+lo= z^LT!ks~@U4b+Pf~uEOKO0S0%|6Vq5rlCB{)w=y)p57)oHOIJHruhkgAs{eAo^fsiF z6`i}yiz4@Nj`J={z(mBb_!|{SNEWS+Fp32=FX*;E%%%)ti!5L1l=w^M5X|=Zd;5aP zXQaIjqVbHmQ+3`~#U~UzoSeF{l~)E;e_0Wz6`GG&8FcB<3|# zZRD*7VYKt5mAZ<4bt-cstdT=;>ivvbX*SF#M0B*Qj8{pAOj_2O&$KqS-QLv8%y?|w zv8$^!pM?1}FdztZ-&}-cIn#DJW~ehA7GMjF2fa@#g>^|k=o9F+LmdsmRM(my?>3&c zzn}`FQc|xJzhS?Csup1H39P=Xq`3?cmn{z0*@&ICceS@ZcRCIc$saki+CK`eCY^a! zfc)N|VWY{HI`6ZruVwr=vs=BjYfR?gMEFJ;`@r5huu!p9#maY667vJC9_GDdEhet$ zeo_IFUNITK0prUzpdVGzL%ZF3zL%9b**3`Mmxczw*#!Jxbdw+x-ADSXfzWiohYHc4 z_28>Mna+39y*C6aVSrH`K%>h1b$E&m-1vHFGCM0zSCCpf3H!|+-`X2y?q+FH|* z&asasH?~7M@RXz1kscqnu0xoh$dHHJ!!NKyl^u0jcH$kY1l_{l^vDVsrHFg!;+6L08ph{> z$;?Hjmc2ZcM+V%6eEGW4XW2Qgq{b)nDi~_A@sh`{dza1 zYAN`PAvdEj-jLqgSO~f*MhN*l%baltwr1~0pkm81_s%oPSe+G*Otzplt4p@M^yoRR z8J}RiyJL8kvN!U~+bg5Jo~v5~=+HtwG+{C%gIzk{3mD1ML4E!zR9hp^lNie%O?^8HfV@gb9t=UhjL$cwdt|MHO%TQbEk(2g-8TI%*X5W zo_)fBgPYV?1P|fZ!YXM zv@Jm|%k2(sz~c|H%qQb?5w)(2iq_K(!V1t3jWDL7_tsX2 z%5&Y6U;UpvBw_->qnHZ{DeI0aR{?fz0TQ>j_B0GX|5J9YBVF*h`;Qtx57MkMIs zIyD~B5F{4yyc*D-G89hxyVJMV4EOcExSUHz)7AWyi1N`GLS2~cENk=5i>1Qm7u<0Ts-gBNfdX3ocfWdGknZ~WeJ^ndYV?uFOcRQ zVV4k^Z-nwG7Sk<37Frggdtb{8rb~oWK}bZbZL@Y8b;TfWT0i8_G55kGx4`w1%cifl zdM;sMI7lDG@xAB%SL=G*8W;B6h#8E&n{9D*z43*9qm6F%pvek9kj_)+N2z@Pb}E5xv$h4BJwkcl30VM&a?QRx?e zJnJU8@X)GTRe-YQZF+IOAP94E2mr8uQKC4D8k&#LFL&Q-FYoLU$(F8~UeBhbDk$Bh z@odu+V4@NR<(}>fX1UJPe!J`vHDzHyT6yM2{6;Z<_WQng1}R^&0G-l*B*MB8$WdjP zzVy=bb_mBquei8X>s?Sx1~~4kfP-o2sYjyNQ}GlQxGv@O6V%;Y7(y`F(WtXvE5BNU zsgiV+cB~t4B5&htF~FNfhtl*@{TjDx#X#}LWl%1ZT*Y%k{C*ykJf?WBKI$A-Dj824 zZ!Mkh3k;PLPDrU5+l%mX4-(BP;tiCbE-9}AQ8VvC5x-+B&zMMYh{&Fc?0eEF5<*NLq3PIvZg^sMCN$eJY1FsYS>^#`~+z>kHvHmkqpuD1uFlP)IIIVwe=46*Im4>+? zd)nW1Fqn2gWnMMlcC7!G&bf)_iq$!dVn=F=TQ5fTE|iIin) z-QTRt<^&Fpo1Uwa+J~0N^1RbwJ8c}EJ-_W0T+|JB1NPhSut#z$0&)j^#s70JCTqD1>v&`G<&IWmVm5 zLe~ZH@~!>ee6Mh<{X*LrkX|dYu;H}Vb>rY6-P7yYHaU<`Wr#lvf7I@Wxq^^v{kR=j zjUDuMkm^Bd&CM&a@=c_*;o!38DFKynbq{x*ykb3<|^C%nca4?X( zIj<+l?^%9orzB`R(za9a&(}Q2q)<$0V!q)_hqpZ43kbbeQ2}}RQ`?(=W|W12_LY^J z2tK&mL0*WxI_mz<*dB{_>$zg-ldb5kn^vE>o8dZw+usK>KjXM51Kl9L!+ALcYtoWp zs~3bmpAoLN;b@iCM%(s#4?SiW5qD$YnSAd_B$^p@Ah7Xm>f>zE*N>?ziOvq6gKe$t z$1A;5!zv)<<~6$q-xuHsEpGO9b>&$gale_vPt*8rIYuRvy0GYdPZfv-J?nvN-ZlHb zRqstV9h)ErB@gl91`LacEO(p_c9c~`&e}ep-{+Pm=7n2#^@fig&WjU-cbeZgt5x!| z6<2gV9L)KgbD?S5)ddmOunWJ%zPWkm%Cr2X7C}g%6EeVA=+)Ys$4cmYZO7#HN%*tV zj>!O6M2?-+RVAT1nQ{fl>r*HeK>Av`hKz_2m-=uFWBg~^Ygo7 zCilKBI!fxGEHdG8d}_VjiJNShF4u(kh1-W~q7N$$^nLLx-DL!Bc>|h=LvTROpfKH-S5iumF+aoq7p&3GT%RfQ zrV+${5A2}Zui%-%s?@th=UE}l3F zQbOXD45?E_6B8?7KCy2&Ct*4)W7z$Uhw|z0PgP+`I5X<;<-qi8y=ct(0=#UE5t9yf z*rPf|DG+R#-Z;BE9UNE6@(?tsd^Nbfv9NagPurQ#Qf@;ghv5RpgHw$B)>O&DIIIs( z#vRUBXa`Ykob6^>&AzGSyQiTeMNbLom{GpblsI^X6`be@L=%mjqHZ*pb=qN*C7oR^ z8`{rDw9(?o;`g(@>E%%qolDz%qe<*lL(}ZWDG`3BC>H+nzDYviNw{nYReE3jzhtsU zeLScc*_pqcU_pBY89Vk@Id@8MS!wIjJ#F>3f!m@)@2(o`9wo5|U9?4b{ZgP z4h^VGR+rNCGekGnp1ajS{BIzxi0JF|Xm0b_dglOaHH|M-XyRy%t_U?E$(BbRXH8|a zSlR@+DJa3ye`$KwD;Y4!g(g7=3TNfcz^aWSN-oIIcer4JOp!U2u&~FO<8|Hxn&E2x zfG#&qa(~+;{LgtaH$$1Z$gAxR2fv_R97w_HheC6EPskLG~Vn*%}CCGwRUfd{eBuZDr^G6QCSwMG5wvNKBZw(-!WL+14D# zt+K9mD8 zOH6z;Z4P<#hc7>I`FZ>PNs35%b0)rj0FwMJV8*Q(PHT11D>1O=qGu@Sr;&Brnu!mx z7v#Svu_>=gzWqkc!$Crwj$Fm-=OJcY@igDu7F7_meh{)Y-=W@;*5*YL6VLNUL4&w{HFTug zVliCgpCh(U!0l2E!HdE|PMaaJwUTCq<38hh#r$$Z9FyOMIJ$q@QHz)HCu zn)^*|T9#?;>}}`w^1J4Xa?vd03)`r29}+*OC9Mft1~zB3YJO~r4&pTkN{Nzu;swsJ z>(?@`QpLbObZa4xqT75_Ol_E{Qlz~}+rq9=NmH-0M!H>h6;MC!tNd%yqF%_1H1#NN zXziZ2D77OI_y^1hsw^{LYsIz*ZKNgd>>249A*l=n0=#rZNIh5Rl4&t{%w#FzGAfo0 zv(IO?YfLJk>s4)i$n?qE+?6a+j-=X{M8tN2(3hmfq~=EA8)^2&VNHo~n)vL0RU(Y@ zfD27*Y*N)@Jhn~gNOJ>;Bo}d_HhaUIP_j%`Pt$Zz zIbx0!$Zi0vjW!LN7$+Mry#p}W3?*_Gkn@<2++Bd3e><5Pnv|8F&shhp(*Scvv_*Ai zzo1Q&r2ysylaZFrPX(IQ(o&tOsjjPzqcjJQMCk$ZsDir&u+W41)DIgaro!D+;rcb? z-UC=v;3rGabC5(G$5Y%2z!XDUWG`#{=Tz3!mqpYOk|Xy%{(7F&a-lGR?hiR_uy(+Y zNsDoT$)o&%j{QYcQSA|>m#~ZnLEHBNTD9wl5O9?PF5G$DHho1b>=KJ?6$tL)R{jI4 zU|A@?h)qPqFVPpCrT}IvORMGaoIwcPK0K@r)Z_^jbzSD$0MDPIitlttOpDZWLQnV3 z>xpo@Pbu!VYW=$LF`AJA2B+q}$pbZGIREN4zz=I!pJzz70M@mT4C;_!vj}kqAg`9A zT@lW)v}q;ak~m%L9&`NQcxD%3vNLDd)7~ z=@B8Q;~||zss`)^QZ*vj)chGM?9eJznc6zefsLF-^8o2GvT9^Sl*cWc^SFPuLp|kh z2H?Xn*HjN`@uYuq=t^ZfiLE>fspX1@bSHlS;NiHp!{BNn$Q2AL9Z}uaOG_HtHbe44FfE70j{0ox!kq6eiFpWM8D{U65Sjt z*IWOX>!}JSP9vCOC4YNZJJr=r4^P4B=<3{wY}9creouA%t`dz^iOjHewyV7!XAbxJ zO*Z~xU?avc*L6is0>i&Qn2E*Am;Cs-SnsaL?>3i0|6%L@TJi1iD}I02jpu6vp}6`_$JybZVwswi)9VqQ(V-h+8mGga(Zp3gQw)B!G<~iu7WdOia4G^dZjl zH^ZI#-E-~?=evgsIV+}xLRL8Ah1ahZD4)xw0tfp}Pbi*Mrnm6!*M?$9)pVl33Z?vcm^EX(c@Lu!O^QWaTWFbU*OlcITEg@`vIa&$!*E9LEd& z!F;j#3a=Q5yhz94y;Cg5FjZwL`j3u!x^>&g#xLpvmU0Eq{#c9#{g-r=?+%tq*L4Id z*4iD@ZXdo7dGmG$c+knmd?-;Z;;yrT)G7wzg?^ockrbVa?R*K$^l=DwljXY58`_<- zc^|!6APh^WV)wettlhbjB}q4}}ZSGvMb#d4!PHw4QTN*?f=>~}nNOyN5p_FX8q`NyeCEZGQH%f;hDWTuZ^PG2# zGsZX0pY!|m2M!oJ)>`|HIj=d_4u7j6`y8DV{mGLj&*kN$)So;-KzZ`ysV^!5_{-2p zm*SHr>X`CU;+o!uCs})LuK4i|1`Fk*qZ-Ipi;MrB_$=r%M}(E7Z(=(@ano-Yu*SL zIr7@@zy7t=_s>k=usmBBJWlGm=oQpB=_4Ixs}9e;-{ofHTrm5->WABzoWHH-8=I7d zcEtuP4y9FpI{8%~O0RFTDq_&7LvCE&>gwJ;TyHGQ3fo&&8JB-_55dNhK%G+dX=TB5 zEq}WWlcL!|2*HtXr^SOJtuM^aC#R%@Vc>v=M0>Zg_<0^sD~7DDu1bbsK_C#9k8Gsg zJKl=KSM&4uhBTt^>%)`i3FZ)-d=2jimRf#d&#Hjs1{)_KLROvbh`iR;^phW(o5RDy zVO-vNQ0RbRkWdZzIAK#5_rmOKZF6Pi=#`d`96U?XoBjo#1~^MyYh?&*xBo1VsC?b~ zd-Ube0{FMl;hW+I>))R$C{fK(F}Hd;Rb$j8pU9w`%DJ^Y5E)6xmM-9CDJj`k`3~-R zyeR%TN6_Q2RIPyZ{P)gCiBcN3_pi-7$uPrCzcjY?hs|K@MLm6eVXJZS2#b*p-|IyS z3{>h6oP)ww(Avh{UqP})A094i0xl~!y6*Afzm1Ov>?CO~{$6#PI9X|Sy7{#g^4nph z>EWV8OvLxe}|KV~$HCuS8 zM3vGrkGFm2GkI!a;tbqM)%<%XkzuNk7yC;*|Ic*b2=`t}+&P0nQKe@8DXUeDyFf3&oKrOr6)vtE`Or;6%7%fImC!?d{-XH`;v?Lwj?@gZZ4+?~maV*+O29>+L?3&vXPY_NUDH zK0U9*X64cQHma~)5Gz`r)L(Bg;`wv^;r@K0#-Pn}rdXK?T`}$<#%`fn9`ZOyz^8lc z8>%{yJdq>TWz-eGV>!yi&c6F(_cF)tH`>g7etv!=5l4dY^Rs2UnioQzQFvdYNc!*s zB|T4;p-`ywB;z@l6+c(M^wD(R%|E5ib8gDTSz20ZY;5$sK0Vp!5{pEer&mX!4%sKr z)d<}%N_$_on|D_iWFTu!gf%Cqqm)Y?9UUDS8p_fBOTy97(ZImK!=ur{Qk%&QuFbS0 zt=u#)mZRO|zy=Ub3fwxDo;q&9D zEs2X`3Bisin0;9OC=lQs2A7@(Z;VBGdB7=6e}O1ktw*Ex_=+d4ob z8YM#gc@&gNG|#)6PT%{d71f|2!{-&{`V=Aeu$NP+dw;f8xrK$VtdXbZ6&U{$*&<-( z%}Iw+`Tv8w37caDRIV;IW^MK-d+^}kMDSol`y z>1)#+3}Sf8BxdJ`(lcq~b0aeaJ#2rjcQl}s)KbdHuF?LmHfTqsjEna+INaJbom-^qr5y56&2b!a2O|#e=t*`3Ra8jtCN+ziJXl(v#(%2l9G}ttg2Gk zt?~RlX5>i5BKl0CQ^@aix|%KG%Wl-ERMM-vJfI;uO-$)$hDTO1;bUhqmicb^A^zx_+?Mt5){|ytyDFOTMquj1_A$Mqq3Y zFt^Jnkt^gnQSv)eF*24k*{$CR_?JJagd~XaRYGE42+cP;ZMb|NF^4(F}jFv@_%3hkOQjS>p6fXtJYH`gLA+lZ$)ItOixI<+2q^JsThTG%(>#c{emS@{}xqe6;dBig?i{d%2P)bD1w(QZfyIi|=w5xpt#4_N*(nGO*w z7GnrESz%9=V@>5D*;wT`>$4{9Tgz=;PC-}?cn-6sHId!~p-=8Gmv8)Y!d)I?PIr%+p#Jtjoco6ZV zqNY=~+3^Ln&FSiw^Sucxk*}Pm8(sf0oH~aP5Xy4vV6Sd|-yYRq6LWst9qAsdmuITO zgTHoM)iL_l_YD2SGR7S~RUkX#tkY>TQ><<16WZBqIYxR*5s26I?dtE{PcH?tclbCx zjH=m6UhgmVam$r{F1LCdfi-wv8}Yp^N>=gi(zlnlCVI91PMS9u8m5*8qevvJa|3l4 zxq=x|U0Ju1;-x7FKQtV42R^fzoDlnW4_5Kp-y<9v3$SAJkTq(_Pm3qF;Xf%q+;i<& zFbB6!Eji;49D>avfnM?V`T1EWrn}g2Gw-tq%Y4gHLfu5(73RPmi;1WnTm>q|2e+%^ zrSLYha_32EsJCF*+t5-wZ%Itq}+rxT4*q@drf-@B_5MY^=tPKMhKj8JQ`vbRVX{ZrC!z0;Eej;8UD#6_Xpvg7heZ_Lmk`Q_QL>$m(G<(V)RTOM@{ z>+b&%c|cZ|aHhm7er3%%ZBJd#DO7;WT~&8nKrDp;EtchC9B|bQfep#9G)74#OZk~I1Ga7J|MjRnv=<8x8!DNMIvcDy9q-7?%W=`C*>H(v!~ zyq159eW6Z+#-`%;6UIX4ZM-|V1EnUtI}CS`i!{9sM!`O&?fw1Rl>uqrk4X2WRF;s^ zYTRoQZdjiUnJ`LY)kDHs(;J;GO*1A6A>{4-WlRBjhuXXy9-5t2? z66r0f2=Zjr=k>0p)qc}YU@J@uoNj#EnaHS0$p34qbDB;HPb)QMl1-?tPKmhG7MV{R zpQHA0IO(O1O6bhYF}~+$L029n&@A*kde*o<0x<^$2E283biTbj!W1^8eUX6K-r;?= z4fHRG{slBWl_ejMrJo&&u9rw>A2nHHje2CD6BA7Q27i*UeL%eY1(7uspQ$iI-Kq)E zpDs6}cK8dsx*V2XTF>}2ZH3$je%#RGC3qNScpJWYD6B1nE|dA`FRn8Vo&-fNFfS{5 zbiKC3<&WzL6~*3PzB5CgCN)PFJorEPuO^J2!MePiw5eA{}w%Cm?mxJu*op+g0wA$?SMpmJD?b}p7EUT{q zc4@t}Pd|;y(d@>Pn5_-5a(HM#jhQQp*fge(L<}-lXnv6{ZZPeL$l_!j@= z%a_qTogA(ry9%Y{`cH3GJ3VAj+9iPxZ zfhKjzE=Mm$0cyKMB}>rthg?8FfQw6={}83FsyjUt*3TX^K0Le(*3+ve?FL{yDAMG; zCL{dM>(8{Zd~UIu-UaF&NLR4+i~PGk@4B6C4*!+RmlE&Lp3^~u$!wZaFDf@W9f4h+UGzpO((t7UjO38*r30k zP~N?r+iS38N12$^qUg_I(Aw__-hEqE?g-df$7g-@o4{7xT-JOTbIr4w$o`LaGSb%8 z*4HOzEw3n-*gvngZ1$CdNL}|8OKnwce^sCEHv463{%Dl%nkn zr`5vhq2_qytE1F9+IhF(HSA824^JBX7o9Zv^b$j~C&at9Hd$IQ3V`ek@&FWA-JF_8m(0?s?+?|O%CEHT%% z$*RM4&m&pI^39N;$z9YHz-qS>8_MPDg1(L>Y z_O|H~tHb9n8C)U92mDEOvipnj1><`wAFLf`d`%FzBM)&kGeSQ>Rl7+ zsR&aDn^S@wo4m#KI!CS;VjROYNRZMDbp97$pb4HcSeIN~hOK%&}%`0-s z5K@HLf5b%re<%JI8n9<-VgbB}VlwMeof%5t-`%kch>FI`HD#N(GuBFcs3Z;OS%atD zqY5*pD;9wTyjQGMzjf}P7b$yqD~jng+Cry)&daM6oeJ2&Eywa}X6NRB-TSaqZ{gi< zoXY1w`r-ksaBjP!OC7$it7?H%1|EHGVFB)SFkN)PW-0HsH{R%54Sd#?rHc!fh*M7x z66CbZ(7nq4?h25Nu^h2SWd??|il--E2~{01)Iin!*xl9D$0A!`uT-qjsSBEMSZ)Y^ z(`C~4N&Q;*)hEQ5O2dxZ-cXDNRKkQ0z_QR)uDH$qIo~@&SO8M5%kxCHDO14h)6<-k z6xl!^?NSBY7<`#+&v(aKqTt@*BkYFl{EUoYaE)cJQ$we;88hiSIVp(F%l7-V2J-%{o?j;cP-|;`Q*$Uc=vvSi(q~^lzg9KpH~2!(BR;!hEth$ ziw7~2p>f&&U_$&jDu-&)(7)D~@Jv9FMKdtQ<>A)DSC?El7SEY*l=dTyw~q7;1EX3j zh2?~jtS~V$DjI@JF5M$)ISb;9kS*oUigk5P!@IpalAY|w9cC1Fm`uNTX^y;5T7-tr z&_7YN9BspA#aIajLxx~sAZ+Se-_6=K< zw=trFI5hcBBnmc3=hdl!G5ZdIZtA4R3g%Ta;W!lVmCBQHJ^SzELNM6b6Z z-voT(gz)+3Ud{)Kjhwaw7Voh543}{ok1ptq$ms9=9SfJPZ?IxRNPeAF8rPaos!41+ ztYv~Gm6i$I1Hlay1&KK0#?;4v(3$y_=cej(Q?LJsu1h?>@$VDW(TlRNckz5 z%c4=}dh_g+9-P5VRKxg<;k(4)q5JR5%xJAj%-~NXx(=@P1(WO(MQ?>;3Jk4sE}d91)2@1W>0!ZkBr}FX;|}HgHg%4y?Wmu2)-)Ki*yAgeZhS{&b49?p>3=p*glZ{WkvVlV>!?bd~sm;Uys| z5&1&YPL%?sI0(FUwyg|`72)`dcrimxE^d*1cQ>NUi-%zv&NQ=FWB@F_nJ|rnaF&=Q zy{Xt*Yd)1tm+}!L)~lt2^mw(Br+<~PmmxYhX&9NzlXM~MD&=B8Y|nR~V~U&a5qHh! z;`J)N)R__m`=J^m<||e8rPXV5164@ABkLK6z(_9R&$|CApyOVf70CX-=h+arl-;Jd>BRA5 z4$B=i57Duw9EQ6qI$}l-9{vdl?v&7J?w0**j;D;g+E3BH308V%Q;f<#75%+_{iEsiA#&6U(~{Z_Pp(*~_B&hl=F43> ztqRKos7=}3r>^0xvGif2F za1EqlBuJp$EBuggTBsa@R@GJ&Nw8H0eR}}TDkO(3l_xca!JNJ)pZYKzPRF-&!M(Vm zxe1}*9$J~UAKzTxpd|D@vcM?*t|*7plklCbPU;(`>Pe9AcX+5_M+ch&fk8?fi@x(L za`l`a3*rw(d0+_A%*%-TTTL4RV=P4vnJOjAa7aL`J!%&^l9Ya=h;-4Dx;>&(%J<)C zu_fF}@q~p{0hPpbJuQ4ycvU!p(rl^$2BDIR00@!am@Yat4uT5P`D>)}; z0<%RUz&4Ixx)5E>i@^|^oIef_%0{3aWnoTauN{y3j}(MdZUO&PDOQaG*fZns@UZ$N z+7xevgr-;%o`k!X;KTGZR)QlqLe%&nIlzV`ZVL4vIyy;!rharz#mQ38g$BB5YHKf` zQ%gmqr>8p?g1_Br_5{>B-(DPm9gR}Z{aXModqBwKP;Z7*bM6ba5$ZpG{uo?O|8sMSx>S~GyU)yiyT_(TCyxwn}394QkEBzCb`odQH zC0pjfruZ^1BO_ybBa|t^x)zWZAOt+7a-MoA{^xXy2O^2ib&ZTv54J4KQF3{Q?Oo$? zeMO>7REJeg57ZSViGGoz-A;$z_x1u(zc4p^7TMr!d61V( z53?r#bbk=6084!eeSwmNSr=spmAZ{Aq}RkpSnB%vQP==(1Mp79Y1|D)7OKcq;cDrf zK=?yGou7_O5C>+JMv2OE3SsZXS`&?8rMfUO?f&drjNO#AK#_x_G=0vWr)zCMpR@s4 z1f;|D&y5dP$M4nyF6XqtQPKCueWlQOVPA=U9kPNM^3elm9-xvY#{lY)d|iN6zG_xC zwu^r4ZFSy@m$j}lUy#}hr2hqcLKH45oy@NhTo6oUctC+kVvnJ3Mmx0y00qAgP;Kwv zmhrg_Y6UV}+x)|VbXIw<0Q2Ot93>|6zw-WA`)W-55B6He51kLr_TkAGByV(~TSo+| z@@@TV&B?Iy!-|^Sot-mJKumHz{1wR7Z}W5jpZ%j6Z1buSF%a={{)Fp-Z8A6xU{e=> zr{JT>0hEY3sTuIoe}H(AMEBEjE9Hp3fUvT#9DYW*p@+R1`%3vCGbbl@9OO(-zuUwB z*t8vtE!zDm=(r~s#ilY#$O}YDKF5o74GTcc^3>KTn7;1y`}=3_kwp@+%2HU91~Eh$ z%S=T;UM|YaH6Bf6`=1ZFM%FgYOupmfGjDsx19`OG+8zfOTku9_@MOjueB zw;0r$%WEGvE46`fnW_NSGR{)z@AvMdkHHDHCPSu>e81TpsPr&j`A$;E;*oB;y8>Z` zs6d`aEqc38+e?2^4=DEEhdWxl5DHWL8v7n*Ll>SzvPjXWM(@Cn)Y$#QfCz6=!Oh6? z(!l)fyP@uI-BD3>;pwGSL~_Oj~CqLsL!$)x^KXqXU6jUVk?X? ze|T0{PQOWR&M04jZLa#hj-7=p?WWd8nO6f^lU*#8HZOk=}virRP^ z=JGe@)Ro8JaKYj!l?XBjp1QGaRlHJj%UduTfdQhrQqB^D*rl<~kRvMe(!ZCvC<#pE z#{clhZgbmRz9Zuj#tK%{@xLetcAii|7%8)2$@v=`-+(HDuAzn$5{)>OGdVFGnDi9w zGqymU^rQfJNs*3o`^|PFc?_rhQvHB#oc0C9hcc96?n=7U7S8RsG^u+BEeOpCjedhQ zhYb{IP)5Gq#C6QsVqAha3%C%oj~1dLskpv(R}QVL&y45Fp-P^=c>J7q1LKvB-tzmE zRaft_seA2?l8~D_;{{t&+)H0Mp8$Y$qxd{TaR{@$#t#+09|m$lF#l&47V!CDuK?th zJwz4ZC8VBf`lUc|$1kL>Ujmf-D~Jl6^dO+%eeYw~Wtq&QaG+`a_`GP1qXl(2one}s z99wUG_!XRFMag3=FomGF1BoN`04vJIinnFxX)6TosU zjc;AZ2zU6LGm!SBZ-P{?f%{Z7op(r7-fTz(!lkCzZ$#v8dz{ap*>kwm8E%80b$OuQ zOy^(zCWC9l+SZ za*x|Bf*JC%SVQ((y*K#q-wQ*H zZz-dw<98h!$YC$LWXt1Nmut|AP8qYd8Z-L>;>lDas+AxT?rI9A+Qm(U=(t|mW6S*8 zl!44pIl>dQP}p5UZfWVaPOW8%kIj0`jzu;Z56iMZ9idJGm$UklO(k3S3-B9Yfd$f~ z7KCXah@uiZW2D0bsAozAn!9A(4$L+Y0fBz2`%pC^RnN-({XO6bNOS9tkm~VuYMaZ; zZNX;+lCl>d#kNKX2W#)6e|aVKtAMUdqJBS)<#_cAoX@%O3EDahCM#(nx&*8QJX5C> zWc$Nl7iUmP<@EXe0~8se!CogM)W&c+zVdhk)KIEhZNzFqCYNhd^8qR#lISG%X-A!>WJ!8Qe-@y4|8S*Rq?f5+@s$s0{5!J5tmDOiq`&R(Ocg18H-#P-Px zU&xO1f($Ltc-mG)q^P$~@f}|THy=0J&F$M>J>?2pnTV&Uju^GS()tosC+r>@6yASG zchIH%TcPP(tCf)^baq{3$gp* zY#A6tjqZW=w_FwDVABUnW;slowINPiT2J~FA73^gJZj>8CbW8sBZSL+r!iL85_t)1 z!P16FxD1rQ@75le7Wg?9#omc$u2X`mEJ#T zV1>q~qY%2Al5&o*$@$@y3D|_gL*g|Jf+=n zO%Q>8%?v-UeL1}uRTc7uqL;~iG8f|?h` z$x!cOlgydT$k3F(sS*XC94saNX9Gk&kA0yqOcK0}+y5>{OkUUNR{fs>YHGo`gFeG_ z1Y~SYS7Z*@Z+|Sn$VmsC9R`K_`)s4$a+~xbG6;pp(NK*bNnqlJdH1m6Nzs#bJBFZu zMT+VPm!@+_tpp-p_IHtH(1aBt{-Sv&K9)F zA+8NAe`6f5cY3b0RmyxTZV;c_EgeZn&-E#t#aP%NMPnwquD!ZC#xNvqWzBHOd$~uU zs9%I5RxRy|UDv09vn`h13dXp~N+!edxj&M$a+xHEZ4`3-uJAs;7E1k9AHR7Asws5Uko@ZGqoboT^WMw{ ziO@3kyd3txovSFsW2-oP_3+eEsx1mK=Sk5&)RktCHq;bE*<147aKh;irBCtXHrLv` zm@^Of^6=v&x0s?oD%$YHV`t16+W(2{RM);RNzS-p<_r8ZOs6}AuJqBG?ty4j2Ru7fb&oSeT#gB3&C?`-#nCAyq9PViQHwB=9+pJS`dHDi^@sw#rS z^>{=~5Bx^OQzBb_`XUV6f7GOY2hyVa>c(Su0TqPpLvtDhG&j*DKk7Yyi?TG@DrnO% z4o(fAWnE>GAdvGI;bRga@;<3c;*Aew<_R*<(A;KdRNg&4wwJ(;M}pRdWl{w;kkmoy zOfX8Qn7)hhc$vODw~KgAHfvIutwv?pGJ0F)yv^KGmzaTod=(QCBZs|mi4e6NXs zQr|=j@+&MFoBsEF2@Jz#VlR;qm=eW%=`m2b-|}zWWO=RU>B2}$k^V6Ad?|l(Y04ug zWlz%?OCdrUZ+RPAza8%%BkNn|o@+zQS4cv~OIX#X2Buu0S{!@SR~21!4X$iLx*t=B z4Mbs^LW+op1$lXaO)|=71ViGQ+~r@3qop)^c-t6|6UdpmAH|1YA$mL^>Rx0#G8ERT z$_GlQan)@-h{}o{84-P`(QNL zLXFWLQ*p96l@y-m&y6ls>RG<=1O{SiY^4bjKGbJwpFHVxxzH>ML#yPGH93;(H~7pL zpW+6)psdJEhW&!UGf1xHxMa5w(DdJ^#7Rz*_v+oztWj(Zkgvu_I5|^N$|t6+4~4^e z5#MSS3YQU`yzL-RQI=VofunIXAk4*x^s`14cJN=O@mL9K422WNrLi@H`s0qhG=z_A z6OB1UN1o9!A(j=a6TkaxIVN?ROk42Y{yoSc^4VuUBch)Ej$@&V#43}}laB@Rsee_p z7!=SnYs+U1=1mV^cj*0=lSQZ7(#Vo!!2+~4P1>!IL?dfSS%zqHG3s7kz1H>vGIXZz z-bgi#Hl8Xdu=GScf0sZ&b81%S>Sa-`yrZz{6?_%w)Y$g+Ft1Ik{CMakx6kF3jKM`i z1y4tZ7B#sA6xRd&V$xuBD7<{FW4e5;s3V(8zUNTvPzFiMXJOp6HGL6UBCesFptu$b z@wR(qTrHhNgxic*H`qvc#xkaG&bN$WDu2y%&g`QO(UGBTHl%07YW&(x*A8unoIWi< zpIW40Xm5mbB}&w+_kRtNV{#x7_G(|aX`a`C)*U@$u<;!rveof?YVx-9=Ij6YT$fl$ zM{pmu(_q$-DNm?Nq^Yl*@ZHE7P-GBOH}HspI*m6X|&@Imu4qGn!R-qR!tOZ@R! z7Tl7u$}JtA49ze%7~ixAbW0W%3V9yRTY&zPDx2kF6)P^X{-H5->`EO1wBkLya@I)RZWA`cx{XGxz&9Eq18X0iSVP z(9zN9&`6{oxnD>g@72)<>X1^894dJ{?g&tL#J#VUM?IsJO^CB`4`Km@+iyDHkWs1q z0Gq^>^{xN}G73}_aa_ETV?Shn0>6$@E0-H5074pE)Ad*I<;$ZZg4*f${N5Qf_EZj> z^#vp@j!K)+SBfF$9=P1_3?GJf&%?Y*Qa6|S?h*nQ9D0Rxy9HBm*Y~XL0>`G$@RkGL z{q=COirttN1xf*Eg2#yO_V&~E_V#Q!LIt9V{1me;J3x*reQ=tra#fkHz1#Ckq_ASlVA7V+$k=MMGS$-@+MpklNnWreXTp ziM|gfFwshrZ~v6tZXTX1FODIS?}AN)ei|YCN3+P7l=wa0>9L9Dd`!>iI&}}64hB)o zT6wm-?SIzfU2TGy#^#sCl`WE7OgZ2B^^Xtz;=1wBI$_QI<_fIhoL5YgV|#c0Y6Z*i z0!>a`!fv|j3natL|xvx?6S8M;`ic-;rw_rtM zpkPysj*I{`T1upTGW5B{%pkC#goFgcKXPshhyeK&+MiA!#`$~y2Xt^(TU@{jnb$88 zo;X;qclbTNs1L~k8J7qZXyIm%uLHTD-SRb8m%PD}Ci-j+%WW^uSJSGTEHY8OgNR+9 z%4DLE?{eojUPrFcMf-%pF=8j_G_UFmIT6-s1z9xHa3C5pA5U)G8_^n|VAb8qen7$O z0Ljt1=`%J*F*z2G37s8+_DihT!B6HvjV4z{UtB{4OK8&`wDzYJDtFGdl>BI@Sxpe#4(QZedbszUh^Fl|>b+iLDOA=?`>(vdtgU7Hi0+ z`Kk+^=xtHlDlf0rcwz@U2Bk@=%kRx(!RVLLaGRLLyDnS>E$+*c6)$ipFqi*ZG~S>X z0eIP@X_05CPu7xx{`BcL%qncL`&ytW0bvyhxaVJS37iVp?nhgtuAM&of7dU2&i}va zm+yHV>zD5a563cI1D;r!fh!AW8Bf6d&FZRtlvOECZS6fkrtbE_5+~mzXC@y;Uo_o?^8dOd z^CTorD`9^7BvjLJwG5hroU9;i5p}15RXf_t@WL{}x9T)ps=Z1_o7+ob;&R!R8XcqFUl} z{H($~F02D4FepZbhx28*H+mkMp(Rykf~Yd;m%PuiAW*98X$u=COT-Ja-C0a+WX2a> zz-0kgrs~I)9q=oZ|C?sKv+5?5(jymDq9BRDR74;NPUbTe>huG)&)sD?@|~3>U$U|R zNG%j+s4Vx%-Bd54mX<(y`P~JMxf-er^K)4WWKJ~CDIFz6jaeNA?aWZPMxb?Vs2L51 zTI%`l2s}>SeTjB@#<`d!rRreh?^sS~M=%t$-EW9mv!R``FB3 zss`)K7lCJvh-uw?Y2=8PSs+DIoxk($m|J%8l!+e^hl@{)TPr9{=Mk`PjZSS|uQl+bY&YRQVQdUHozZ!jsmcmMEodH6IDY_7~L4ofkyQ68N ze;PlQpizp(EaD6%_OS&EAfBR`MRll@ycUO~Be!BZJay9kW%BuqQ_;E> zyNWvnJ*iSvcr@>1I8*4H3lK+_f|234M6f7649ggcu=8O|0@>6|b%fTSI33~MSLWG6 zuf*ZCwQ=7@-eIC|V;si7g#XvRsJ8+8 zUA{uu2g4=D3Y0;lAZ6ZMjQobPBzjfI^AGUwJoojamu_L*Z3n;0aXcsud4kQz@!0D!hG~?oSU5PEZ6qFhsb(9@)J~Y;ps&iEeFn>wcPd8V z6dRCjFG%4L8|#kU{GKN^^+rj>28)Ka`Yd_h4KS(Wl8H1Udy_W*ccknz&ua4|W@()l zo9hdmR$IguXx?-0usUxR_>T@>^^t8-fYryWh!(B(;gt`>sCQ2p%a?CyjXPSvmZ}>XYfrl-4opkJ@&For-H0yh!~PVlAbV13 z#DH%EtR+^1ix_IQ6a%`f)&cYI(F29Gqz^#ezv)G>qMJKqX;t^CQlaxyGe~NyjqUJ^ z25nZsV5f5Z!_yl*{I=ZEc>^x!b~SFdJsAhI4ny)}JNbe)`I2z7*0#Zienw|~87gyJ zj;gPM@8mo=&f<08{0nj{!SGunH;ev|ovHp@H=ER}OtrDk^|vjlP1xraY=}U)a^u+~ zu8a2mT+2}m)4YnUW$hDb3RI4$>(WT%y`pB!K=%LMuvlV#2nwe(3$<}dMOC5 zB>-_0H(TQ-J$kaMnFJ)^HM9Z|&a<5yu7zg!@|SJZB(B0t0eZ13&>~r&9jDk1ny%8P z|Nok<3jSt3jOd-q^1)i6coc@z$uS?YUbyk4F7Y9sdxv=oWcXkHW|XUKplY&c;-L-r zh{&_3$IWWc`gy09Ra+oWSWAU-%K~*bT#RKb^~_N4Z)5N$+#IlVb%ItrLqXXCBqP4H zQR1c4e?x>eqJNkG)n&$;T>$ zIsb_!lF;MUnUYaZgn{|!E8@2rWFa)C=qPm5FJId2jRSH0%M+|MpVg;U2fjVtA@6HdfTQ)gvbn9k>OlC~f&yb$D1 z^|#6^-n&*;*XO7xxZkM(I7j#7&B4hluoF(j_kHzq<`1^!jW;7NT3 z;o^#?#_lP%>5li9!ImS%+k;c*%|;2(JPU2R&0WTIxis@-Gx@V*@tU(X)6)D)n_W-} z-!TI^wXdLx1^C}{x)k2uRu|}inNAwMR$G~yyP4-pl|W(xHSw)jd*)Et0Lq|IYY9E| zKCk{13P`wPy-*KL?sPb1h1R;HW@HEf2>T2LONS2KN`Z_1RD}Z+2S9FX18&f4v|Hf( z#L~pH8;V(>hf$Wy$*QB{eAa99WrjFXVZHjd&aa(IkRpT7G}8j??Z8?9Oz$1t_AEB5 zXm)LR0G-(lH+mG@H@0))&nw%1FbNh&Kpmxx>d5Zd^_q@B3=h0bCZEGHVBO={B0`|z z4XB!1D`1t5D@|3Mo!K3l82(2<1_G8U;=YfQY;Iw}_O8A^K(7n1Ui51@*4BAYspND8 z=4S)Q2H+xqTNFSFuhMHCPvz=!Oi8Z1YGm&)9Y9xUwwYl-cmV0M!dkRHF&=;Y`^!TB znkx0b;9(4P0i=&NeY_C%YX*}HJAoDdwvBd-Y>@NwbFbsYDduuxoD5b@bdUh6(#(R8Tfh^XZ-DmhjvM^G$)y^(hoKH~TJO$U|Tryj1< zYmVWUTfwpTCKE@)aJt+WnXe@PIv-zOPKCJPz6pCyHn;`1nkZhL$P$vJV(7<-M4Rj{ z00u~{SX!hl_P9SB|HO*^Z0tf)X{g$$%TYD5;6M#Qmokg$BM88Wg3&g9&>gy<`yvW# z2a2Gg*-DATkvuJ+aK_;Pb#m#w0&)Z{`irB5*xYc6x1!0VX zjkW{mhG6qJ#N*I;EdA9ZxI>5!1AWQw7!C?M8gs;N5>2iy4ra;_L3?2Tyn(3ZM&kQ6 z#zT&ZoXGdbdgv&&w={%5nITuD^d-8~O6hZ3ydu9;pI96Gb8)MH>FS3PQXWf-Qku_faql6co8)1Zb0jeF$;bKG9T5 zo#3B7%>?%zOHiN^T0eOjO3KGZt$C(^CPg1ZZ}~7Tq6}N&EqSAjYCbDK9aUhjH6jHu z*m^^NWX7NT&0_h@uimC*tW|^6Y!X@We)~-Ndo})ZF9n7k{cJ6&&u)hR{?KZtYM-30 zhLe!n`MNy4lZ_!4uox!b!%J~VMkI7xst;Y_eSy2v=k1p#tDXo@Wd57`?b$06&Bc08 zT$daI6XZE*f4s&rnW%mV+xoh?c=$|#H7P-gjLDkhj-KSqo(uUU=ryn)`2F~Xi)BJP zX8Y<_mTxi%G{ngISxqLwjUHTnHPF%4rgq4Qp zecDBm`?N!?eO335tVuD`e$?ILD8FeVzcZx3RAPlUjOLs(g~>R`S3o{!sM+S|NK!XE zWyi5gjm0M%lAlxCLexii{uPftZ4l3BQ7)4{7l+G6&T}bxf$PzF_A}oh?t+h46C)4B z22>>rh9={Q%^kOirk2pZ(gnSEisc1cPBn+y-?e|ENKoi!bkrroJwiJQQQ2nBOU&O_ zQEGVSwkh=V{kJ%3@BZOfi|1S3<-X%YjBDFWs)x!^4wrq*{J6GZ&kL7SkfxnkfAYV0 zuSE7g{ZK72`Ivi|La=|P(*1O|bBXVYbpzqk_pA+YfsKKz!0e200G2 ziERXJzOJyujx6+SRq(0`%=%_utLRk;5$?(#*R6@pA20a5xUdTfqjX=f>NFM&+fu() z%xN|_Ssb?(PcK@4SH>i<h zP^Z3p_T+)W2DLc1styJ)IThO*nqOMyUGuf9DI!MNUM*T0J?wVgg0HEpZRz}d;KX|kfZxhPt~oo4MVBt(u3eJB5p z`cc+w(f(gQ6Sbh=%LnG0-5xuVg-{5%k5ElRBQfIT7`TC-E)?7`-T&Zh11um2RuchH zl^RT70CSb+?6Ir`dXF{WVdfM7vAoo(Tx|8Q^Y;&4+Yk)}uA?{iv6e}bD8HfGGub@$ zpV!xWEMb~+KPn>}(f|GVzgOUYufYFaf&aY%|MwLLFPD(#C7sIo3%&s6!Q-xLdKyI) z8d`7N(5m^LZ{xXGc=%^Kte_aF2Mz5ZD*q{+zp?gG#O+^r*NkfC$)-_;g3t>qCCk5! zLuHtigu@O@!`Wcc1|`N{%>7GgM5^!vCp<-$Bcb3S_MS6{1_*#1Ut1>0LY^^||n%Sl~p)^xw@ zZKgl-skq+r{NjXM@9<7q4==PA{%Y|C(4xE7O#B zXO`CGRkv23Qh#Xl@R5y~oqHX3v*m#D&z8B2`ZY(*<+QD>9a%;?I|!Gmaz7%1_cZ@z zG}gELRasfP2BP2U_s3)VQ|8phv@h3J*6akw#D z;7bwAhW<|g&Id90FtxQTK58Du!A5q4bH`|~bWo#mQG;-HbVWU^=^|~+G?sts5Uy$g$~m08W7!v`uh5cq^rWCM~{B^prAP# z8XCg6W3*DB(boQo58=}{H9bsA^lYoC9#5?VqZ3{8NYK=}Hr9si4Y@{-N{@GKGBrrB zHagdZ4$|%#5G_&b@X}B2%tVr}3X~X)Mssp@r{jjac$FjQSG2jrUrRxCDgUWwU*K$+83=7G1W-CHrU0y zfdIN>$rAi}?z!jw_kaI)LK6P?kN^0u{_3y(uj4QN;x9=5*`NK{ zAN;`|3?4i|MqX=$B*|~s4mt9 zG?fj@W({LwE9YvK#7zzH)JjO)HK705scT)R3hwe?dsC}xxR!XTsUC^fhVAOvv**u# z_OqQkcOE))=-|PF@4ox)|NPJYT)1!{*mLN(j~p#cGU92raYH0-YKWjJ)FteKXM8Z7 zeu6!`-8Int2!7^a1H@B^+E}dcsxH{Og4vLSyLa!NIdi7YwQ^BWQCV3Ti5iD@toI=> zvB)dRO0Zp)u>9Ue%jOkj+ri5de@O6*miEr&9Say)lU!9`W$@R3{n!8e&;R`Y9RKuB z|Mcg7{^xJM{r1Z*zs&3@I52`VTVRmd#QH0R(-Mq8;^yAHd&yZK%%_7oWZ$j z)he@r5@-Wj==SZ~rs1A#4`bL#ExdXg!>5cRK~v*ty%HWK>>5t-N()-ts@vtwqdobHO^dC2UKb`$)%Je)6?4-?RFqi2k=4`ubpgTde5D*CEzi~{QIFZJ(nz6dFSYcZ% zI5fp3WL`E(pbrpRUU=b!$&)AB_Flbu*|Og7j`iLm8%?olkN+s%=C5}4rr1dLc6n)= zFj+cuil&&^O|jCAIFndJ?{_-#X^6&rt?@@(6{nI~v^UXIo*-J0I z^y^>$x+(Rlz~1-XdvD5=Ddy+?{rjJJ<{3-x+O_MaKmF+=_aQHyU%q_#)mL9-nLl>y zSZZPU^5x|5D%W62e(~bP;FhP(tP?afp4KZNLDv}YwDGA^r~dU{|8?!!wd`Us@h|`K zFKn@#hPg=%{KG%|gE?qDgK7z%xH(!kHAo`0Va>rf{O|w%ZzRer#I=3<_F0;cx@ps< zCMSg0Ibgs5CK+$M@rGG$H4_{~p%KL)OO`BQ1{53#@g!nuvrrpta)H-TqelJbfBxsq zn>RU%0rKI8A6hme*a=Nw4D+kbiClctFygm+al{B^U^RpNO|hv`Q@d)QJ7L|40X1mQ zASPi5!}jgl*>d#g(aoDTfB*gW(P;Ge@#9n@W2&^Ylmzl$7wbP~&z{|~WsCL9Y15{? z^2#gMuV1$^pMCaO`U9br0{86MLxK)@;=~DxJ$?E#qxC00`3dp&hm~V}J@X#seB`94 zD_5?Nhu*@u=v{0)eE4va>q~@e-rl-(i;2bV-MdK>%^y5?K!UlWodN@P?ASrc*vVT8 z#6k|SMyGqAUii!E7I!!VCBPkKT}e{~IvERv_uqe?aKoaZZ{NOH$s+m>|L_lc_wH?W zgpX{Yz#s|sSF@o``T--(MTNfH-Gat9CGg5Ipl%SOE#OnBg1ym#*&?y&1W{^LJx+_#x85+rRx=N}%_Xxmg?P5;L_~OcmPX0<}$lW4tj?|Kv~p1d*eJ&p-bh z`yIP_SHal!kUthO2yJ}pM3HOGhOP9P_|;l z3L1_cMbnV;zy9mLXcR&=lgma2Bk{Mt{Vk)3E!6qq#f#~LL=P*I2`Gb?x@GN1Tho+8 z8>Y)l7dCF($gK3=|NY-B{x-QeAN_|Y#C(D|#Qgd5S%xw;Y10J@7SQe2ty?#5-aN{o z+h4kLiLOG7qGashjGTJJh!Nw)jYAw4RN?EMk@Tk?nXhwhW_96oWX z>2P`WJ6&2l;fscf?Z7fmJ7whN`r58y7U@2^Eq(#tm*i>5FI!96Ds1)v!N!dfJybr3 zu$#@+72$fg^3#FU`%UEL99#_q^?P`4163}%sKF-dcYlBV|DT_qPuGvPtN9_&>2jdp z$%%=botz#Iq+%rb+C|U5dGqGbp{Ax3%V}O5hkI8Re0p-S{QbSex;a**S`s|pzI~f# zUH4c zJ$trll~&C9W#YGsSGE|m8@yB4c>As2^3N|XFIQGpo?#1gQR~^`{qnwQ!YzHW)@`0_ zJ-2S%+Ma(uN=Ix#+|Ht>H#euxsGQ>r@)6VH` z9#by_XU2zCr=jf3hr}yHEn8*S**yZ zMLew{hgWTTDsn0DieAF2J#{zdi@%X*-J~I`xTfc-g%-c}on(jn9RIhnJU>oH>8~af*r5QBRws zx9>jxytk)v^X(VG8r?zME5i-@+WBOoA|f_K=*%!-W@c_UDETL(xcKu@@98mm;&H#e zybMlERP-}5HNAS}iio(ledQ;X&pE%}_BlmPiF$GU*}RjbrKNt$FK3we`TEB0so1!E z`}RG1{`~vQ>LDV#*26F+GbvVef0dRYUNjf8r?=B zhjQOOIM{49`|a!N>nkfOpP!#^F2VEt-CgE0zy!QLet%q4RMq2Sy?_4vnK)5U##)B2 z|M+L11+wO{V4p`_F57x6y!&K|l&tL0>p|)1>9w`B+1c9rO7&uPJSf|}@WzD;7cO0D zdavTMDZ!wl`)rzVOWB>i=|CTZdFU_Hy?3S2Ywbs&*{gTFJwC(XdBF0R!PC{xWt~$(6990m&wu~` diff --git a/.resources/30b006a99b107309e6c4b4a134033ed8d3a5663a870c99b7b0e3c82fa85e3dee b/.resources/62efb1f48e586116d84848b83073819477606d8ea797f852dbdee7cdd76da9a7 similarity index 100% rename from .resources/30b006a99b107309e6c4b4a134033ed8d3a5663a870c99b7b0e3c82fa85e3dee rename to .resources/62efb1f48e586116d84848b83073819477606d8ea797f852dbdee7cdd76da9a7 diff --git a/.resources/870e8f48f258149c5068cd4349152538c3dfe3da4208e609477938ec63bf0b6f b/.resources/6392d400ded08524b28549be1e8e22a0e0b18669f95834f8ff4edaa95018b83a similarity index 100% rename from .resources/870e8f48f258149c5068cd4349152538c3dfe3da4208e609477938ec63bf0b6f rename to .resources/6392d400ded08524b28549be1e8e22a0e0b18669f95834f8ff4edaa95018b83a diff --git a/.resources/74461b7a30648c4aafcee20130144f2e863ff6cde27f6ad424988a9abdde570f b/.resources/6472f4db9735d7db44ef8597941835de336366d513021894e8d2eacd430ea4b0 similarity index 100% rename from .resources/74461b7a30648c4aafcee20130144f2e863ff6cde27f6ad424988a9abdde570f rename to .resources/6472f4db9735d7db44ef8597941835de336366d513021894e8d2eacd430ea4b0 diff --git a/.resources/64f8eb3ba87fe70b25640f2bb29980b334f05aa81b03880429a48becf4068047 b/.resources/64f8eb3ba87fe70b25640f2bb29980b334f05aa81b03880429a48becf4068047 deleted file mode 100644 index 63047d19..00000000 --- a/.resources/64f8eb3ba87fe70b25640f2bb29980b334f05aa81b03880429a48becf4068047 +++ /dev/null @@ -1,33 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "var(--neutral-10)", - "borderColor": "var(--error)", - "borderStyle": "solid", - "borderWidth": "1px", - "boxShadow": "none", - "color": "var(--error)", - "fontWeight": "normal", - "margin": "5px", - "textTransform": "uppercase", - "fill": "var(--error)" - } - }, - "variants": [ - { - "pseudo": "hover", - "animation": { - "duration": "0.2s", - "direction": "normal", - "iterationCount": "1", - "timingFunction": "ease", - "keyframes": { - "0%": {}, - "100%": { - "backgroundColor": "var(--neutral-20)" - } - } - } - } - ] -} \ No newline at end of file diff --git a/.resources/6547187772d7c4629b90421e1653dad1fdf0dc7f451e07ab6f749bd4a8ed8ffc b/.resources/6547187772d7c4629b90421e1653dad1fdf0dc7f451e07ab6f749bd4a8ed8ffc deleted file mode 100644 index e8d6d02b..00000000 --- a/.resources/6547187772d7c4629b90421e1653dad1fdf0dc7f451e07ab6f749bd4a8ed8ffc +++ /dev/null @@ -1,54 +0,0 @@ -import time - -def close_websckt(): - """ - This function disconnects the web socket and exits any loops. - Should be called when a project is saved or modified to stop - multiple threads running. - - Args: - None - - Returns: - N/A - - Raises: - N/A - """ - - fc = system.tag.readBlocking(["Configuration/FC"]) - fc_value = fc[0].value - tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (fc_value) - system.tag.writeBlocking([tag_provider + "System/close_socket"],[0]) - running = system.util.getGlobals().get(fc_value, {}).get("wbsckt_running", 0) - if running: - system.util.getGlobals()[fc_value]["wbsckt_running"] = False - system.tag.writeBlocking(tag_provider + "System/wbsckt_running", [0]) - time.sleep(2) - system.tag.writeBlocking([tag_provider + "System/close_socket"],[1]) - logger = system.util.getLogger("%s-WebSocket-Restart" % (fc)) - logger.info("Web-Socket closed due to restart, AWS.wbsckt_abort.close_websckt()") - -def check_web_socket(): - """ - This function checks to see if the "System/close_socket" tag is active - (boolean on) or inactive (boolean off). If the tag is active the web - socket will run, if it is inactive then the web socket will stop running. - This function is called from the main web socket gateway event. - Used to exit the web socket gateway event. - - Args: - None - - Returns: - True or False - - Raises: - N/A - """ - request_to_close = system.tag.readBlocking(["System/close_socket"]) - request_to_close_val = request_to_close[0].value - if not request_to_close_val: - return True - else: - return False diff --git a/.resources/65578b7f14acfd34a27330950e7286040263b84873ca817f187eaa8d4ca8dd81 b/.resources/65578b7f14acfd34a27330950e7286040263b84873ca817f187eaa8d4ca8dd81 deleted file mode 100644 index 7b9f3dff..00000000 --- a/.resources/65578b7f14acfd34a27330950e7286040263b84873ca817f187eaa8d4ca8dd81 +++ /dev/null @@ -1,284 +0,0 @@ -class helper: - @staticmethod - def list_of_dict_to_dataset(dict_data,dict_column): #dict_data and dict_column are lists of dictionaries - import pprint - #get keys in the first dictionary in the list - #This is used to ensure only real fields are used in the column - if len(dict_data) != 0 and len(dict_column) != 0: - if isinstance(dict_data[0], dict) and isinstance(dict_column[0], dict): - pass - else: - raise TypeError('Dictionary','The items in lists are not Dictionaries.') - else: - raise TypeError('List','List provided is empty') - test = dict_data[0] - pprint.pprint(test) - d_keys = dict_data[0].keys() - - #create the column headers from provided dict_column - #but only if the column name is used as a dict in the data. - column_header = [] - pprint.pprint(dict_column) - for row in dict_column: - if row['field'] in d_keys: - column_header.append(row['field']) - pprint.pprint(column_header) - # create rows used as final list of lists for conversion to dataset - rows = [] - for di in dict_data: - #create individual row - row = [] - for column in column_header: - if di.has_key(column): - row.append(di[column]) - else: - row.append('') - #append each row to rows so all data is captured in a list of lists. - rows.append(row) - - #screate dataset from header and rows of data - dataset = system.dataset.toDataSet(column_header,rows) - return({'basic_dataset':dataset}) - - - - @staticmethod - def sanitize_tree(element): - """ - Arguments: - element: array/list or dict to be sanitized (remove Java "object wrappers") - Returns: - element: sanitized input array/list/dict - Usage: - from helper.helper import sanitize_tree - sanitizedTableData = sanitize_tree(myTable.props.data) - - ## This function loops recursively over a component property and converts all - ## siblings and children to base elements - """ - if hasattr(element, '__iter__'): - if hasattr(element, 'keys'): - return dict((helper.string_decode(k), helper.sanitize_tree(helper.string_decode(element[k]))) for k in element.keys()) - else: - return list(helper.sanitize_tree(helper.string_decode(x)) for x in element) - return element - - - - @staticmethod - def dataset_to_dict(dataset): #provide a basicdataset as input - #verify basic dataset was passed in - string_type = str(type(dataset)) - if string_type != "": - raise TypeError('Dataset','expected BaiscDataset type received %s'%(string_type)) - else: - raw_dataset = system.dataset.toPyDataSet(dataset) - #convert from PyDataSet to list of lists and header names. - headers = [((str(col).replace(' ','')).replace('_','')) for col in raw_dataset.getColumnNames()] - raw_dataset = [[col for col in row] for row in raw_dataset] - - #create needed empty lists to put dictionaries in - col_data = [] - data_data = [] - #create column names for column field of a table - for col in headers: - col_data.append({'field':col, - 'visible': True, - 'editable':False, - 'render':'auto', - 'justify':'auto', - 'align':'center', - 'resizable':True, - 'sortable':True, - 'sort':'none', - 'boolean':'checkbox', - 'number':'value', - 'numberFormat': '0,0.##', - 'dateFormat':'MM/DD/YYYY' - }) - #Create Data dictionaries used for data field of a table - data_counter = 0 - for row in raw_dataset: - data = {} - for col_num in range(len(row)): - data[headers[col_num]] = row[col_num] - data_data.append(data) - data_counter = data_counter+1 - #pass out list of dictionary, list of dictionary, string - return({'data':data_data,'column':col_data}) - - @staticmethod - def xyChartTransform(ds=None, columns=None): - ## This function is for use with the XY chart in Perspective - ## This component requires an array of dictionaries for the chart data structure, rather than an Ignition dataset - ## Each dict item should have the format of: {'Column_X': valueX, 'Column_Y': valueY} - ## ds = Ignition dataset, such as that returned by a SQL query binding - ## columns = list of column names to be included in the array of dicts returned by function. - ## NOTE: the first column name listed will be the X axis - ## If no column list passed in, the function will grab all names from the dataset - - ## NOTE: This function will return every column/value in the dataset as a dict key - rows = [] - if ds is None: - return rows ## return empty array if no dataset passed in - try: - data = system.dataset.toPyDataSet(ds) ## convert to python dataset - if columns is None: - columns = system.dataset.getColumnHeaders(ds) ## extract column names from dataset - for row in data: ## Loop over python dataset - d = {} ## initialize empty dictionary for each row - for c in columns: ## loop over column list - d[c] = row[c] ## add key for each column as key and assign value - rows.append(d) ## append new row - return rows - except: - return rows - - @staticmethod - def string_decode(v): - """ - Arguments: - v: value to be decoded (ignore if not unicode string) - Returns: - v: decoded value - Usage: - from helper.helper import string_decode - my_unicode_string = (u'hello world') - decoded_string = string_decode(my_unicode_string) - - ## This function is a helper for the sanitize_tree function, normally - """ - # vscode pylint v2.7.* will complain about this but it works, also works in Ignition v.8.1.* - if isinstance(v, unicode): - # replace any nasty em- or en-dashes with a more sane '-' short dash - # this should avoid most of the nested try:except: blocks below - if u'\u2013' in v: v = v.replace(u'\u2013', '-') - try: v = str(v) - except: - import traceback - from loggerConfig import getLogger - logger = getLogger('sanitize_tree_string_decode') - logger.warn(traceback.format_exc()) - try: - v = v.encode('utf-8') - v = str(v) - except: - logger.warn(traceback.format_exc()) - try: v.encode('ascii', 'ignore') - except: - logger.warn(traceback.format_exc()) - try: v = repr(v) - except: - logger.warn(traceback.format_exc()) - return v - return v - - @staticmethod - def centerJustifyTableColumns(columns=[]): - """ - ## This method takes a table column config object (array of dicts) and returns it with all columns and their headers set to center justified - Arguments: - columns: [array of dict] table column configuration - Returns: - columns: [array of dict] table column config, with all columns/headers center justified - Usage: - from helper.helper import centerJustifyTableColumns - myTable.props.columns = centerJustifyTableColumns(myTable.props.columns) - """ - try: - for column in columns: - try: - column['justify'] = 'center' - column['header']['justify'] = 'center' - except: continue - except: pass - return columns - - @staticmethod - def get_dropdown_options_from_dataset(ds=None, value_column=None, label_column=None): - """ - This method takes an ignition dataset object, and a name or index for "value" and "label" columns - and returns an array of dict objects for each row to use in the binding of perspective dropdown "options" prop. - Arguments: - ds: Ignition dataset object, ie from named SQL query - value_column: [string or integer] if string, the name of the column to represent the value when option is selected. - if integer, the column index for the value - label_column: [string or integer] if string, the name of the column to represent the label (display) for option selection. - if integer, the column index for the label - Returns: [{ - value: value to be assigned to dropdown "value" property when options selection - label: value to be displayed in the dropdown for each option - }] - Usage: - # in a script transform on the dropdown.props.options binding - from helper.helper import get_dropdown_options_from_dataset - options = get_dropdown_options_from_dataset( - ds=value, # from property/query binding above this transform - value_column='my_value_column_name', - label_column='my_label_column_name - ) - return options - """ - # Check required arguments for null values - if ds is None: - msg = 'No dataset passed in' - return {'error': msg} - if value_column is None: - msg = 'No value_column name or index passed in' - return {'error': msg} - if label_column is None: - msg = 'No label_column name or index passed in' - return {'error': msg} - # convert the ignition dataset to python dataset to iterate over - try: data = system.dataset.toPyDataSet(ds) - except: - import traceback - msg = 'Error converting dataset to python data: %s' % traceback.format_exc() - return {'error': msg} - # grab the column headers from input dataset - headers = system.dataset.getColumnHeaders(ds) - # verify both the value and label columns are in the list of column headers, if passed in as strings - # if passed in as integer indexes, make sure they are valid - if isinstance(value_column, str): - if value_column not in headers: - msg = 'value_column (%s) not in dataset column headers!' % value_column - return {'error': msg} - elif isinstance(value_column, int): - if value_column not in range(len(headers)): - msg = 'value_column index (%d) not valid!' % value_column - return {'error': msg} - else: # if not string or integer, invalid type - msg = 'invalid type for value_column (%s). Must be integer or string' % type(value_column) - return {'error': msg} - if isinstance(label_column, str): - if label_column not in headers: - msg = 'label_column (%s) not in dataset column headers!' % label_column - return {'error': msg} - elif isinstance(label_column, int): - if label_column not in range(len(headers)): - msg = 'label_column index (%d) not valid!' % label_column - return {'error': msg} - else: # if not string or integer, invalid type - msg = 'invalid type for label_column (%s). Must be integer or string' % type(label_column) - return {'error': msg} - # if passed all verification checks, build array of objects representing label/value pairs for each dataset row - options = [{'value': row[value_column], 'label': row[label_column]} for row in data] - return options - - @staticmethod - def keys_exists(element, *keys): - ''' - Check if *keys (nested) exists in `element` (dict). - ''' - if not isinstance(element, dict): - raise AttributeError('keys_exists() expects dict as first argument.') - if len(keys) == 0: - raise AttributeError('keys_exists() expects at least two arguments, one given.') - - _element = element - for key in keys: - try: - _element = _element[key] - except KeyError: - return False - return True \ No newline at end of file diff --git a/.resources/a6b3b9bd56dd1574d604643af47f4a3767101b7070115c07286415626941c776 b/.resources/65d5a60dc4ef39313bfabea1271c383106c929e049d808b957adfc75ffea4404 similarity index 100% rename from .resources/a6b3b9bd56dd1574d604643af47f4a3767101b7070115c07286415626941c776 rename to .resources/65d5a60dc4ef39313bfabea1271c383106c929e049d808b957adfc75ffea4404 diff --git a/.resources/8b6677220f15f17011d1ef7205b33438070aac7194a5239ebe4b330e6f619f6f b/.resources/662024dfbbdf6406ce36fd260071e7afca2baed675d8b0f816b9e12809a76b33 similarity index 100% rename from .resources/8b6677220f15f17011d1ef7205b33438070aac7194a5239ebe4b330e6f619f6f rename to .resources/662024dfbbdf6406ce36fd260071e7afca2baed675d8b0f816b9e12809a76b33 diff --git a/.resources/6679c190779588f2a19507e4d8ad4411018af7b3ed7f90b9186afe6b859ec4d6 b/.resources/6679c190779588f2a19507e4d8ad4411018af7b3ed7f90b9186afe6b859ec4d6 deleted file mode 100644 index c8b12b7346928aa62c0cbbd285500cbaffc9dba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3234 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 diff --git a/.resources/66aac02fef23d2e59e7dcc86df5b7b6807739b5f02dd66336aecd7e928dcd0b3 b/.resources/66aac02fef23d2e59e7dcc86df5b7b6807739b5f02dd66336aecd7e928dcd0b3 deleted file mode 100644 index 916e126e..00000000 --- a/.resources/66aac02fef23d2e59e7dcc86df5b7b6807739b5f02dd66336aecd7e928dcd0b3 +++ /dev/null @@ -1,11 +0,0 @@ -{ - "base": { - "style": { - "color": "#000000", - "fontFamily": "Arial", - "fontSize": "14px", - "fontWeight": "bold", - "textAlign": "center" - } - } -} \ No newline at end of file diff --git a/.resources/676ca8e799840fcd849fdf41501535af0bfcc170eccb89d086675276073a102b b/.resources/676ca8e799840fcd849fdf41501535af0bfcc170eccb89d086675276073a102b deleted file mode 100644 index 2887093c..00000000 --- a/.resources/676ca8e799840fcd849fdf41501535af0bfcc170eccb89d086675276073a102b +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FF8000", - "color": "#000000", - "fontFamily": "Arial", - "fontWeight": "bold" - } - } -} \ No newline at end of file diff --git a/.resources/6803fb95647d0a9e5d1f0bc7c816414f970f89a19faae573b4559816d8e671c0 b/.resources/6803fb95647d0a9e5d1f0bc7c816414f970f89a19faae573b4559816d8e671c0 deleted file mode 100644 index 41fcd9e97f2c8d479605b95f8a71cd5de1c6f197..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3224 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 AGynhq diff --git a/.resources/699ad7ebec961e8a22c65bbc3d84299b59e44ae68d5c674716689e9eb9ee03a0 b/.resources/699ad7ebec961e8a22c65bbc3d84299b59e44ae68d5c674716689e9eb9ee03a0 deleted file mode 100644 index b862ee095c23a69f3aab6cff8df6d9f7c6932aa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^AT|>R8<0#)^t}M2WISCQLn`8uE55(`Tc1+%*wY^8YlNYy2GQ^~Th|r_T|Rf3|M9PP z_ab8END8KB*ZaSYy?dk9D9^sWI-xcK_~hqDtq(Gp z-7ER~@!pQI=l3GcJa^|~G&@=H@z2h~>sKd(*jsMh`xY$V@!@!&g7bz3o`XzAEZipq gbVfN8hrthK6-!>`wSnB`z)a5I>FVdQ&MBb@08lYp4gdfE diff --git a/.resources/6ac3181f1c02d5555461ef04ce8f35fcaf56e49aab563eb3650269c712809440 b/.resources/6ac3181f1c02d5555461ef04ce8f35fcaf56e49aab563eb3650269c712809440 deleted file mode 100644 index ed00255c..00000000 --- a/.resources/6ac3181f1c02d5555461ef04ce8f35fcaf56e49aab563eb3650269c712809440 +++ /dev/null @@ -1,58 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "Icon" - }, - "position": { - "height": 100, - "width": 101, - "x": 148, - "y": 179 - }, - "props": { - "color": "#AC0065", - "path": "material/location_on", - "style": { - "backgroundImage": "", - "classes": "State-Styles/AAA-Style", - "fill": "url(\"/system/images/Backgrounds/hexagons1.svg\")" - } - }, - "type": "ia.display.icon" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "height": 63, - "width": 325, - "x": 157, - "y": 72 - }, - "props": { - "options": [ - { - "label": "This is selected", - "value": "This is selected" - } - ], - "placeholder": { - "text": "" - }, - "value": "This is selected" - }, - "type": "ia.input.dropdown" - } - ], - "meta": { - "name": "root" - }, - "type": "ia.container.coord" - } -} \ No newline at end of file diff --git a/.resources/6bd560ed0fbeb46406021eb23001d8e3d906c8f82a4f02f48a77f6ddd8389dde b/.resources/6bd560ed0fbeb46406021eb23001d8e3d906c8f82a4f02f48a77f6ddd8389dde deleted file mode 100644 index 815c0f3f..00000000 --- a/.resources/6bd560ed0fbeb46406021eb23001d8e3d906c8f82a4f02f48a77f6ddd8389dde +++ /dev/null @@ -1,796 +0,0 @@ -{ - "custom": { - "PLC_list": [ - "MCM01", - "MCM02", - "MCM03", - "MCM04", - "MCM05", - "MCM06", - "MCM07" - ], - "running_state": -1, - "state": 0, - "views_data": [] - }, - "params": { - "tagProps": [ - "System/MCM04/Station/Chute_JR/FL1038_2_JR1", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.PLC_list": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" - }, - "transforms": [ - { - "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", - "type": "script" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.running_state": { - "binding": { - "config": { - "expression": "try(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),-1)\t\r\n" - }, - "transforms": [ - { - "expression": "if({value} !\u003d -1, try(jsonGet({value},\"state\"),4),{value})", - "type": "expression" - } - ], - "type": "expr" - }, - "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": "if(isNull({value}), 0, {value})", - "type": "expression" - }, - { - "fallback": null, - "inputType": "scalar", - "mappings": [ - { - "input": 3, - "output": 3 - }, - { - "input": 2, - "output": 2 - }, - { - "input": 1, - "output": 1 - }, - { - "input": 0, - "output": 0 - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.views_data": { - "binding": { - "config": { - "struct": { - "equipment_id": "{view.params.tagProps[0]}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\tproject_info \u003d system.perspective.getProjectInfo()\n\t#self.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\t#equipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ value.equipment_id)]\n\t#self.custom.views_data \u003d views_data\n\t\n\treturn views_data", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "width": 400 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "color": "#FFFF", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tsystem.perspective.closeDock(\u0027Docked-East-JR\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Icon", - "tooltip": { - "enabled": true, - "style": { - "cursor": "pointer" - }, - "text": "Close faceplate" - } - }, - "props": { - "path": "material/close", - "style": { - "cursor": "pointer", - "marginBottom": 5, - "marginLeft": 5, - "marginRight": 5, - "marginTop": 5 - } - }, - "type": "ia.display.icon" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px", - "display": false - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" - }, - "enabled": false, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "Labels/Label_1", - "marginTop": 20 - }, - "text": "No Active Alarms" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "AlarmStatusTable" - }, - "position": { - "basis": "400px", - "grow": 1 - }, - "propConfig": { - "props.filters.active.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "transforms": [ - { - "code": "\treturn value[1:]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "columns": { - "active": { - "displayPath": { - "enabled": false - }, - "priority": { - "enabled": false - }, - "source": { - "enabled": false - }, - "state": { - "enabled": false - } - } - }, - "filters": { - "active": { - "priorities": { - "critical": false, - "high": false, - "low": false, - "medium": false - }, - "states": { - "clearUnacked": false - } - } - }, - "refreshRate": 500, - "toolbar": { - "enabled": false - } - }, - "type": "ia.display.alarmstatustable" - } - ], - "meta": { - "name": "Active_tab" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "NAME" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "DeviceName" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "transforms": [ - { - "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "backgroundColor": "#FFFFFF", - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Name" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "LIGHT" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "PB_Light" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Pressed" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "ON" - }, - { - "input": 0, - "output": "OFF" - }, - { - "input": true, - "output": "ON" - }, - { - "input": false, - "output": "OFF" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "ON", - "output": "#47FF47" - }, - { - "input": "OFF", - "output": "#FF0000" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Name" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Info_tab" - }, - "position": { - "tabIndex": 1 - }, - "props": { - "direction": "column", - "style": { - "margin-left": "" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/JR_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" - }, - "type": "expr" - } - }, - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#B17B50\",\r\n if(\r\n {this.props.text} \u003d \"JAM RESET PRESSED\",\r\n \"#FE9240\",\r\n if(\r\n {this.props.text} \u003d \"JAM RESET\",\r\n \"#EB6700\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Start_PB" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "fallback": "JAM RESET", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "JAM RESET PRESSED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/sync_problem" - } - }, - "style": { - "classes": "Background-Styles/Controller" - } - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Reset Jam" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "padding": "" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "100px", - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "gap": 6, - "paddingBottom": 20, - "paddingLeft": 10, - "paddingRight": 10, - "paddingTop": 13 - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Commands_tab" - }, - "position": { - "tabIndex": 2 - }, - "props": { - "direction": "column", - "style": { - "paddingTop": 1 - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "tabs" - }, - "position": { - "grow": 1 - }, - "props": { - "menuType": "modern", - "tabSize": { - "width": 1000 - }, - "tabStyle": { - "active": { - "classes": "", - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - }, - "inactive": { - "classes": "", - "color": "#B8B8B8", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - } - }, - "tabs": [ - "Alarms", - "Info", - "Commands" - ] - }, - "type": "ia.container.tab" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "670px", - "grow": 1 - }, - "props": { - "style": { - "border-top": "1px solid white", - "gap": "" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "800px", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "Buttons/Button-Menu" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/6c2898e26509cbbeb0265cf7f9d8f869efcabbbcf2437882ca0c3502eca1e566 b/.resources/6c2898e26509cbbeb0265cf7f9d8f869efcabbbcf2437882ca0c3502eca1e566 deleted file mode 100644 index 276cce5b..00000000 --- a/.resources/6c2898e26509cbbeb0265cf7f9d8f869efcabbbcf2437882ca0c3502eca1e566 +++ /dev/null @@ -1,1846 +0,0 @@ -{ - "custom": { - "PLC_list": [ - "MCM01", - "MCM02", - "MCM03", - "MCM04", - "MCM05", - "MCM06", - "MCM07" - ], - "running_state": -1, - "state": 2, - "type": 3, - "views_data": [] - }, - "params": { - "tagProps": [ - "System/MCM04/Chute/FL_CHUTE/FL1038_1CH", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.PLC_list": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" - }, - "transforms": [ - { - "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", - "type": "script" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.running_state": { - "binding": { - "config": { - "expression": "try(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),-1)\t\r\n" - }, - "transforms": [ - { - "expression": "if({value} !\u003d -1, try(jsonGet({value},\"state\"),4),{value})", - "type": "expression" - } - ], - "type": "expr" - }, - "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": "if(isNull({value}), 0, {value})", - "type": "expression" - }, - { - "fallback": null, - "inputType": "scalar", - "mappings": [ - { - "input": 3, - "output": 3 - }, - { - "input": 2, - "output": 2 - }, - { - "input": 1, - "output": 1 - }, - { - "input": 0, - "output": 0 - }, - { - "input": 4, - "output": 4 - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.type": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.views_data": { - "binding": { - "config": { - "struct": { - "equipment_id": "{view.params.tagProps[0]}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\tproject_info \u003d system.perspective.getProjectInfo()\n\t#self.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\t#equipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ value.equipment_id)]\n\t#self.custom.views_data \u003d views_data\n\t\n\treturn views_data", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "width": 400 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "color": "#FFFF", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tsystem.perspective.closeDock(\u0027Docked-East-SNP\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Icon", - "tooltip": { - "enabled": true, - "style": { - "cursor": "pointer" - }, - "text": "Close faceplate" - } - }, - "props": { - "path": "material/close", - "style": { - "cursor": "pointer", - "marginBottom": 5, - "marginLeft": 5, - "marginRight": 5, - "marginTop": 5 - } - }, - "type": "ia.display.icon" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px", - "display": false - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" - }, - "enabled": false, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "Labels/Label_1", - "marginTop": 20 - }, - "text": "No Active Alarms" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "AlarmStatusTable" - }, - "position": { - "basis": "400px", - "grow": 1 - }, - "propConfig": { - "props.filters.active.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "transforms": [ - { - "code": "\treturn value[1:]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "columns": { - "active": { - "displayPath": { - "enabled": false - }, - "priority": { - "enabled": false - }, - "source": { - "enabled": false - }, - "state": { - "enabled": false - } - } - }, - "filters": { - "active": { - "priorities": { - "critical": false, - "high": false, - "low": false, - "medium": false - }, - "states": { - "clearUnacked": false - } - } - }, - "refreshRate": 500, - "toolbar": { - "enabled": false - } - }, - "type": "ia.display.alarmstatustable" - } - ], - "meta": { - "name": "Active_tab" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "NAME" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "DeviceName" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "transforms": [ - { - "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "backgroundColor": "#FFFFFF", - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Name" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "FULL" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Full" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#FFFFFF", - "inputType": "scalar", - "mappings": [ - { - "input": "FULL", - "output": "#D5D5D5" - }, - { - "input": "NOT FULL", - "output": "#D5D5D5" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Full" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "FULL" - }, - { - "input": 0, - "output": "NOT FULL" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "FULL", - "output": "#0008FF" - }, - { - "input": "NOT FULL", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Full" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "JAM" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Jam" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#FFFFFF", - "inputType": "scalar", - "mappings": [ - { - "input": "JAMMED", - "output": "#D5D5D5" - }, - { - "input": "NOT JAMMED", - "output": "#D5D5D5" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Jam" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "JAMMED" - }, - { - "input": 0, - "output": "NOT JAMMED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "JAMMED", - "output": "#FF8C00" - }, - { - "input": "NOT JAMMED", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Jam" - }, - "position": { - "basis": "35px" - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "fallback": false, - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": true - }, - { - "input": 2, - "output": true - }, - { - "input": 3, - "output": true - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "DISABLED" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Disabled" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#FFFFFF", - "inputType": "scalar", - "mappings": [ - { - "input": "TRUE", - "output": "#D5D5D5" - }, - { - "input": "FALSE", - "output": "#D5D5D5" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Disabled" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus}, \"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "TRUE" - }, - { - "input": 0, - "output": "FALSE" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "TRUE", - "output": "#FF0000" - }, - { - "input": "FALSE", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Disabled" - }, - "position": { - "basis": "35px" - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "fallback": false, - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": true - }, - { - "input": 2, - "output": true - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "HALF FULL" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Half Full" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#FFFFFF", - "inputType": "scalar", - "mappings": [ - { - "input": "HALF FULL", - "output": "#D5D5D5" - }, - { - "input": "NOT HALF FULL", - "output": "#D5D5D5" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Half_Full" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "HALF FULL" - }, - { - "input": 0, - "output": "NOT HALF FULL" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "HALF FULL", - "output": "#FFF000" - }, - { - "input": "NOT HALF FULL", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Half Full" - }, - "position": { - "basis": "35px" - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "fallback": false, - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": true - }, - { - "input": 2, - "output": true - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "NO CONTAINER" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "No Container" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#FFFFFF", - "inputType": "scalar", - "mappings": [ - { - "input": "NO CONTAINER", - "output": "#D5D5D5" - }, - { - "input": "CONTAINER PRESENT", - "output": "#D5D5D5" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/No_Container" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "NO CONTAINER" - }, - { - "input": 0, - "output": "CONTAINER PRESENT" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "NO CONTAINER", - "output": "#FF4487" - }, - { - "input": "CONTAINER PRESENT", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "No Container" - }, - "position": { - "basis": "35px" - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "fallback": false, - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": true - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "READY TO BE ENABLED" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Ready To Be Enabled" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#FFFFFF", - "inputType": "scalar", - "mappings": [ - { - "input": "READY", - "output": "#D5D5D5" - }, - { - "input": "ENABLED", - "output": "#D5D5D5" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "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": "ENABLED", - "inputType": "scalar", - "mappings": [ - { - "input": 2, - "output": "READY" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "READY", - "output": "#92FF00" - }, - { - "input": "ENABLED", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Ready To Be Enabled" - }, - "position": { - "basis": "35px" - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "fallback": false, - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": true - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Info_tab" - }, - "position": { - "tabIndex": 1 - }, - "props": { - "direction": "column", - "style": { - "margin-left": "" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Enable_Chute_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])\n\ttag_path2 \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/GS_PB\"\n\tsystem.tag.writeBlocking([tag_path2],[True])\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" - }, - "type": "expr" - } - }, - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#BB5050\",\r\n if(\r\n {this.props.text} \u003d \"DISABLE\",\r\n \"#FF0000\",\r\n if(\r\n {this.props.text} \u003d \"ENABLE\",\r\n \"#C9FCC0\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n" - }, - "type": "expr" - } - }, - "props.style.color": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Disabled" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "fallback": "#FFFFFF", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "#000000" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Disabled" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "DISABLE", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "ENABLE" - }, - { - "input": 0, - "output": "DISABLE" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/cached" - } - }, - "style": { - "classes": "Background-Styles/Controller" - } - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Enable" - }, - "position": { - "basis": "35px" - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "fallback": false, - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": true - }, - { - "input": 2, - "output": true - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "padding": "" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "100px", - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "gap": 6, - "paddingBottom": 20, - "paddingLeft": 10, - "paddingRight": 10, - "paddingTop": 13 - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Commands_tab" - }, - "position": { - "tabIndex": 2 - }, - "props": { - "direction": "column", - "style": { - "paddingTop": 1 - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "tabs" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.tabs": { - "binding": { - "config": { - "path": "view.custom.type" - }, - "transforms": [ - { - "code": "\t# This script runs whenever view.custom.type changes\n\tif value \u003d\u003d 0 or value \u003d\u003d 3:\n\t\treturn [\"Alarms\", \"Info\"]\n\telse:\n\t\treturn [\"Alarms\", \"Info\", \"Commands\"]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "currentTabIndex": 1, - "menuType": "modern", - "tabSize": { - "width": 1000 - }, - "tabStyle": { - "active": { - "classes": "", - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - }, - "inactive": { - "classes": "", - "color": "#B8B8B8", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - } - } - }, - "type": "ia.container.tab" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "670px", - "grow": 1 - }, - "props": { - "style": { - "border-top": "1px solid white", - "gap": "" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "800px", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "Buttons/Button-Menu" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/6cefd097cab5d8286aa4def76ba9ba26776b818c35e5d966c0e1c244942defe6 b/.resources/6cefd097cab5d8286aa4def76ba9ba26776b818c35e5d966c0e1c244942defe6 deleted file mode 100644 index 37073f4b..00000000 --- a/.resources/6cefd097cab5d8286aa4def76ba9ba26776b818c35e5d966c0e1c244942defe6 +++ /dev/null @@ -1,110 +0,0 @@ -{ - "custom": {}, - "params": { - "Display": true, - "Label": "value", - "Value": "RESULT_INSUFFICIENT_GAP_AT_INFEED" - }, - "propConfig": { - "params.Display": { - "paramDirection": "input", - "persistent": true - }, - "params.Label": { - "paramDirection": "input", - "persistent": true - }, - "params.Value": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 50, - "width": 140 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.params.Display" - }, - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "path": "view.params.Label" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "border-bottom": "0.75px solid black" - }, - "textStyle": { - "fontSize": 12, - "fontWeight": "bolder", - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "value" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.params.Display" - }, - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "path": "view.params.Value" - }, - "type": "property" - } - } - }, - "props": { - "textStyle": { - "fontSize": 12, - "overflowWrap": "break-word", - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/6d22e6e9cb94a81ac9ab85f833af4de2affbe25b30ba6ff187296edcbe5e7c2e b/.resources/6d22e6e9cb94a81ac9ab85f833af4de2affbe25b30ba6ff187296edcbe5e7c2e deleted file mode 100644 index 98512049..00000000 --- a/.resources/6d22e6e9cb94a81ac9ab85f833af4de2affbe25b30ba6ff187296edcbe5e7c2e +++ /dev/null @@ -1,592 +0,0 @@ -{ - "custom": {}, - "params": { - "tagProps": [ - "", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 212, - "width": 336 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "60px" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "backgroundColor": "#555555", - "borderBottomLeftRadius": 5, - "borderBottomRightRadius": 5, - "borderTopLeftRadius": 5, - "borderTopRightRadius": 5, - "marginLeft": 0, - "marginRight": 0, - "marginTop": 0 - }, - "textStyle": { - "textAlign": "start", - "textIndent": 10 - } - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "50px" - }, - "props": { - "style": { - "marginLeft": 10 - }, - "text": "AREA", - "textStyle": { - "fontFamily": "Roboto", - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "195px" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}" - }, - "tagPath": "{0}/Config/cfg" - }, - "transforms": [ - { - "code": " decode \u003d system.util.jsonDecode(value)\n area \u003d decode.get(\"Area\")\n sub_area \u003d decode.get(\"SubArea\")\n area_label \u003d str(area) + \"/\" + str(sub_area)\n return area_label\n\t", - "type": "script" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "marginLeft": 50 - }, - "textStyle": { - "fontSize": 12 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "80px" - }, - "props": { - "style": { - "borderBottomColor": "#555555", - "borderBottomStyle": "solid", - "borderBottomWidth": 0.5, - "borderLeftColor": "#555555", - "borderLeftStyle": "none", - "borderLeftWidth": 0.5, - "borderRightColor": "#555555", - "borderRightStyle": "none", - "borderRightWidth": 0.5, - "borderTopColor": "#555555", - "borderTopStyle": "solid", - "borderTopWidth": 0.5 - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "50px" - }, - "props": { - "style": { - "marginLeft": 10 - }, - "text": "STATUS", - "textStyle": { - "fontFamily": "Roboto", - "fontSize": 12 - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tself.session.custom.covert \u003d False\n\tnavigation.navigate_to_page.detailed_view(self, self.view.params.tagProps[0],self.view.params.tagProps[0], self.view.params.tagProps[3])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Label" - }, - "position": { - "basis": "236px" - }, - "propConfig": { - "custom.status": { - "binding": { - "config": { - "path": "/root.custom.status" - }, - "type": "property" - } - }, - "props.style.classes": { - "binding": { - "config": { - "path": "this.custom.status" - }, - "transforms": [ - { - "fallback": "State-Styles/State0", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "State-Styles/Background-Fill/State1" - }, - { - "input": 2, - "output": "State-Styles/Background-Fill/State2" - }, - { - "input": 3, - "output": "State-Styles/Background-Fill/State3" - }, - { - "input": 4, - "output": "State-Styles/Background-Fill/State4" - }, - { - "input": 5, - "output": "State-Styles/Background-Fill/State5" - }, - { - "input": 6, - "output": "State-Styles/Background-Fill/State6" - }, - { - "input": 0, - "output": "State-Styles/State0" - } - ], - "outputType": "style-list", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "path": "this.custom.status" - }, - "transforms": [ - { - "fallback": null, - "inputType": "scalar", - "mappings": [ - { - "input": 5, - "output": "HEALTHY" - }, - { - "input": 4, - "output": "DIAGNOSTIC" - }, - { - "input": 3, - "output": "PROCESS" - }, - { - "input": 2, - "output": "STOPPED" - }, - { - "input": 1, - "output": "FAULTED" - }, - { - "input": 6, - "output": null - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 5, - "borderBottomRightRadius": 5, - "borderColor": "#555555", - "borderStyle": "solid", - "borderTopLeftRadius": 5, - "borderTopRightRadius": 5, - "borderWidth": 2, - "marginBottom": 10, - "marginLeft": 50, - "marginRight": 10, - "marginTop": 10 - }, - "textStyle": { - "fontSize": 12, - "textAlign": "center" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "80px" - }, - "props": { - "style": { - "borderBottomColor": "#555555", - "borderBottomStyle": "solid", - "borderBottomWidth": 0.5 - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttags_to_read \u003d system.tag.readBlocking([\"Configuration/FC\"])\n\twhid \u003d tags_to_read[0].value\n\tcommandTarget\u003dself.view.params.tagProps[0]\n\tCommands.button_commands.send_request(whid, id, action)\n\tactionCode \u003d 1 #Start\n\tfunctionParameters\u003d{}\n\tfunctionParameters[\"commandTarget\"] \u003d commandTarget\n\tfunctionParameters[\"commandCode\"] \u003d actionCode\n\tfunctionParameters[\"commandParams\"] \u003d \"\"\n\tCommands.button_commands.send_request(whid,actionCode,functionParameters)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Start" - }, - "position": { - "basis": "80px" - }, - "props": { - "image": { - "height": 32, - "icon": { - "path": "material/not_started" - }, - "position": "top", - "width": 32 - }, - "style": { - "classes": "Background-Styles/Controller", - "marginBottom": 15, - "marginLeft": 5, - "marginRight": 5, - "marginTop": 15 - }, - "text": "", - "textStyle": { - "fontSize": 12, - "fontWeight": "bold", - "textAlign": "center" - } - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttags_to_read \u003d system.tag.readBlocking([\"Configuration/FC\"])\n\twhid \u003d tags_to_read[0].value\n\tcommandTarget\u003dself.view.params.tagProps[0]\n\tCommands.button_commands.send_request(whid, id, action)\n\tactionCode \u003d 2 #Stop\n\tfunctionParameters\u003d{}\n\tfunctionParameters[\"commandTarget\"] \u003d commandTarget\n\tfunctionParameters[\"commandCode\"] \u003d actionCode\n\tfunctionParameters[\"commandParams\"] \u003d \"\"\n\tCommands.button_commands.send_request(whid,actionCode,functionParameters)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Stop" - }, - "position": { - "basis": "80px" - }, - "props": { - "image": { - "height": 32, - "icon": { - "path": "material/stop_circle" - }, - "position": "top", - "width": 32 - }, - "style": { - "classes": "Background-Styles/Controller", - "marginBottom": 15, - "marginLeft": 5, - "marginRight": 5, - "marginTop": 15 - }, - "text": "", - "textStyle": { - "fontSize": 12, - "fontWeight": "bold", - "textAlign": "center" - } - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttags_to_read \u003d system.tag.readBlocking([\"Configuration/FC\"])\n\twhid \u003d tags_to_read[0].value\n\tcommandTarget\u003dself.view.params.tagProps[0]\n\tCommands.button_commands.send_request(whid, id, action)\n\tactionCode \u003d 3 #Reset\n\tfunctionParameters\u003d{}\n\tfunctionParameters[\"commandTarget\"] \u003d commandTarget\n\tfunctionParameters[\"commandCode\"] \u003d actionCode\n\tfunctionParameters[\"commandParams\"] \u003d \"\"\n\tCommands.button_commands.send_request(whid,actionCode,functionParameters)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Reset" - }, - "position": { - "basis": "80px" - }, - "props": { - "image": { - "height": 32, - "icon": { - "path": "material/refresh" - }, - "position": "top", - "width": 32 - }, - "style": { - "classes": "Background-Styles/Controller", - "marginBottom": 15, - "marginLeft": 5, - "marginRight": 5, - "marginTop": 15 - }, - "text": "", - "textStyle": { - "fontSize": 12, - "fontWeight": "bold", - "textAlign": "center" - } - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "JAM_Reset" - }, - "position": { - "basis": "80px" - }, - "props": { - "enabled": false, - "image": { - "height": 32, - "icon": { - "path": "material/sync_problem" - }, - "position": "top", - "width": 32 - }, - "style": { - "classes": "Background-Styles/Controller", - "marginBottom": 15, - "marginLeft": 5, - "marginRight": 5, - "marginTop": 15 - }, - "text": "", - "textStyle": { - "fontSize": 12, - "fontWeight": "bold", - "textAlign": "center" - } - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "333px" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_3" - }, - "position": { - "basis": "160px" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "propConfig": { - "custom.has_role": { - "binding": { - "config": { - "expression": "{session.custom.fc}" - }, - "transforms": [ - { - "code": "\trme_role \u003d value +\"-rme-all\"\n\troles \u003d (self.session.props.auth.user.roles)\n\tif (rme_role.lower() in roles \n\tor rme_role.upper() in roles):\n\t\treturn True\n\telse:\n\t\treturn False", - "type": "script" - } - ], - "type": "expr" - } - }, - "custom.status": { - "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": "if(isNull({value}), 0, {value})", - "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" - } - } - }, - "props": { - "direction": "column", - "style": { - "animationFillMode": "both", - "borderBottomLeftRadius": 10, - "borderBottomRightRadius": 10, - "borderColor": "#555555", - "borderStyle": "solid", - "borderTopLeftRadius": 10, - "borderTopRightRadius": 10, - "borderWidth": 1, - "classes": "Background-Styles/Controller" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/6d43ab220b19bb5a8df35d57c45a95082b7f86a432be29652cc75cd71f304334 b/.resources/6d43ab220b19bb5a8df35d57c45a95082b7f86a432be29652cc75cd71f304334 deleted file mode 100644 index d58772928521a3d37f7fa230bdbb569bb4afe2a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14345 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

ky63OC?$Np=Hn+sYt6BNgep?>Xw=>tS==+ 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 z zAj}Yh8zNGt12FP=zzrD8d61M6j^GAL9WiLJh)r;V*q;z^zfN#Nh!rBZpEvl>gfN5k ze}76e z%*@Rhb`nBZBMn%7|Naf}^z<|`Hueol6oK+nK59N@XlSV1p8+-**&*=F^NFdc?)v{@ zt0`#HlQ6Zo!6MmFRi(IZH1HG=5s^M3i6J&379k~57J3w_{XDb0?72Y;4u*WM>sifMfW-bORGT!5PUS78VC?|6}BX(~)I|IsCvb zg_o?XJLQ5W37I_+nIa^i!uUiI?8S}Q+Hhx!P0RjgXDJCIb8>R_IVsc*sr4QA3X`xC z4Y9weBTx>I`D9~kuwg=*)Nn0v{I97f+&(<8=0YYq{FuFLuBlPZ*78TBG%Jg6NY}gM z{a^oqk%`;``$g*~#v3rj0Ot!>&Qz=a(f<&fSp$d~`(L(b-w&ey$U$ zFvg)R{ZDK8{?l67Xtmjytu4pGHHS*wW+lqGdWFRqu!qe0&-@K_Az7H2!RYJjBV}0N zqEHT4|M$!@;=Et9loq4I|Hpikuk715+gxF~e!N>{r6p^FK#})}6DMXYHeJT}^3|)E z>EIGoev+8)<&6^GdHDFw8jD>&{N;;DR8$mjQ~QEv?QLxa!1|m+(Yz;9!{KiU7Jy1t9|vaqtYUVqB=?Afy!Sy{U@T^LwqPJ1lqbmHuVTeqzI)6bOl zonC2wWafm546`j;kb6XYq=J<~Z)#A;Hp^Jg-li;3p-P2cV^wzO=nDirPr#}tHqzrYiVH-a00fgo`DKEH5V_ZeLQR~JndVK zo;r2Psib5})@0Sw({dahJ$?+Vo`J0=XP=HKEj2TFI<}nj^7cOb_xt_+88ak8g_OSg z0)ttxMMu~~;d-WnO!ow^3;u54dSgTe~DWM4fU<3Xt diff --git a/.resources/532a380dd25ea4b0a449b61c0c076cd4db5dc47816b8c8122595ce987816c242 b/.resources/749d23499bb1b47d47712ebcbf1332d3ecb4d0697a8c5546ba74f89d53a82b79 similarity index 100% rename from .resources/532a380dd25ea4b0a449b61c0c076cd4db5dc47816b8c8122595ce987816c242 rename to .resources/749d23499bb1b47d47712ebcbf1332d3ecb4d0697a8c5546ba74f89d53a82b79 diff --git a/.resources/1090a14f4bf76c24852474be8fed57ffc2605130ae9620cbc82c0e2ebd5b12ca b/.resources/74f67461521183b28dea376ee7b007b1667410f1ecadadbfeb46ff460561df47 similarity index 100% rename from .resources/1090a14f4bf76c24852474be8fed57ffc2605130ae9620cbc82c0e2ebd5b12ca rename to .resources/74f67461521183b28dea376ee7b007b1667410f1ecadadbfeb46ff460561df47 diff --git a/.resources/1ee00106dfa7d921880d88035e6dde13ffa08e00a636a971ee8576348076acea b/.resources/74fe002c7e56e551a77ca9d2aa49c9c3dd02e2c4ea6265308a41de1670625ccc similarity index 100% rename from .resources/1ee00106dfa7d921880d88035e6dde13ffa08e00a636a971ee8576348076acea rename to .resources/74fe002c7e56e551a77ca9d2aa49c9c3dd02e2c4ea6265308a41de1670625ccc diff --git a/.resources/7736678defdf4234a69c97e6c743dd4927b17da4dda0ad09e209421e8950b9f3 b/.resources/7736678defdf4234a69c97e6c743dd4927b17da4dda0ad09e209421e8950b9f3 deleted file mode 100644 index 6cf9be13..00000000 --- a/.resources/7736678defdf4234a69c97e6c743dd4927b17da4dda0ad09e209421e8950b9f3 +++ /dev/null @@ -1,12 +0,0 @@ -{ - "base": { - "animation": { - "keyframes": { - "0%": { - "backgroundColor": "#FF0000" - }, - "100%": {} - } - } - } -} \ No newline at end of file diff --git a/.resources/779f3cb4ffd8dd2f67be07af3fbf2095f82391ae87ce1228a8dee248e52ecc40 b/.resources/779f3cb4ffd8dd2f67be07af3fbf2095f82391ae87ce1228a8dee248e52ecc40 deleted file mode 100644 index d2abf421..00000000 --- a/.resources/779f3cb4ffd8dd2f67be07af3fbf2095f82391ae87ce1228a8dee248e52ecc40 +++ /dev/null @@ -1,522 +0,0 @@ -{ - "custom": { - "alarm_message": null, - "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": "PLC01", - "state": 5, - "state_string": "Unknown" - }, - "params": { - "forceFaultStatus": null, - "forceRunningStatus": null, - "has_state": false, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.alarm_message": { - "persistent": true - }, - "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.forceFaultStatus": { - "paramDirection": "input", - "persistent": true - }, - "params.forceRunningStatus": { - "paramDirection": "input", - "persistent": true - }, - "params.has_state": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps": { - "paramDirection": "inout", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 40, - "width": 30 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Icon_0" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "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": { - "color": "#000000", - "path": "material/offline_bolt", - "style": { - "borderColor": "#000000", - "borderStyle": "none", - "borderWidth": "2px" - } - }, - "type": "ia.display.icon" - } - ], - "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" - } - }, - "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": "40:60", - "mode": "percent", - "style": { - "cursor": "pointer" - } - }, - "type": "ia.container.coord" - } -} \ No newline at end of file diff --git a/.resources/78026d4435652911b2c260ce5356485873f02c5d475473f3058e88290241817f b/.resources/78026d4435652911b2c260ce5356485873f02c5d475473f3058e88290241817f deleted file mode 100644 index 05f423e8..00000000 --- a/.resources/78026d4435652911b2c260ce5356485873f02c5d475473f3058e88290241817f +++ /dev/null @@ -1,87 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "height": 49, - "width": 171, - "x": 174, - "y": 182 - }, - "props": { - "style": { - "classes": "State-Styles/Background-Fill/State1" - }, - "text": "Label" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "height": 49, - "width": 171, - "x": 174, - "y": 246 - }, - "props": { - "text": "Label" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_1" - }, - "position": { - "height": 49, - "width": 171, - "x": 174, - "y": 328 - }, - "props": { - "text": "Label" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tvalue \u003d 1\n\tsystem.tag.writeBlocking([\"PLC1000/Cmd/inReset\"],[value])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "height": 54, - "width": 174, - "x": 100, - "y": 516 - }, - "props": { - "text": "Reset" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "root" - }, - "type": "ia.container.coord" - } -} \ No newline at end of file diff --git a/.resources/7845be9b07e34020885b58e7561a6bbcf844b6897c4cfce9462fc4e04c1b1583 b/.resources/7845be9b07e34020885b58e7561a6bbcf844b6897c4cfce9462fc4e04c1b1583 new file mode 100644 index 0000000000000000000000000000000000000000..1cc2cea695c570431e47412f56870932c3e18eab GIT binary patch literal 72398 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 Pbrd~a{an^LB{Ts5LuU}q literal 0 HcmV?d00001 diff --git a/.resources/785fa1dfd1f277c0b2ea55b9a6bed3b41f760fde41381e465afa65fe1b936878 b/.resources/785fa1dfd1f277c0b2ea55b9a6bed3b41f760fde41381e465afa65fe1b936878 deleted file mode 100644 index f4b2e136..00000000 --- a/.resources/785fa1dfd1f277c0b2ea55b9a6bed3b41f760fde41381e465afa65fe1b936878 +++ /dev/null @@ -1,631 +0,0 @@ -{ - "custom": { - "alarm_message": null, - "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": "PLC01", - "state": 5, - "state_string": "Unknown" - }, - "params": { - "directionLeft": false, - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.alarm_message": { - "persistent": true - }, - "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": "THEA" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "props.elements[1].elements[0].fill.paint": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "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": {}, - "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" - }, - { - "elements": [ - { - "id": "tspan1770", - "name": "tspan1770", - "stroke": { - "width": "0.60875" - }, - "style": { - "InkscapeFontSpecification": "\u0027sans-serif Bold\u0027", - "fontFamily": "sans-serif", - "fontSize": "12.9867px", - "fontStretch": "normal", - "fontStyle": "normal", - "fontVariant": "normal", - "fontWeight": "bold" - }, - "text": "THEA", - "type": "tspan", - "x": "64.152344", - "y": "64.152351" - } - ], - "id": "text1772", - "name": "text1772", - "stroke": { - "width": "0.60875" - }, - "style": { - "InkscapeFontSpecification": "\u0027sans-serif Bold\u0027", - "fontFamily": "sans-serif", - "fontSize": "12.9867px", - "fontStretch": "normal", - "fontStyle": "normal", - "fontVariant": "normal", - "fontWeight": "bold", - "lineHeight": "1.25" - }, - "type": "text", - "x": "64.152344", - "y": "64.152351" - } - ], - "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/787c2b88bdfe4be914ce79abb2daabc6bc792c4a1f9ba28ad0d5e10611b5653c b/.resources/787c2b88bdfe4be914ce79abb2daabc6bc792c4a1f9ba28ad0d5e10611b5653c deleted file mode 100644 index bc0f83b694ff9379e0ac8e023a62f7a4215bc0f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20387 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 U`qec(;cxS?XY9~bDDPYU1^W6Z2LJ#7 diff --git a/.resources/78985459ef234f12ea5b29539600a3a31de7cd16de13e20001aaf32a84f5b7c9 b/.resources/78985459ef234f12ea5b29539600a3a31de7cd16de13e20001aaf32a84f5b7c9 deleted file mode 100644 index c95f281afd9e5cbeaa2018172d362d2e393054f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20055 zcmY(qRa9I}*ELFTcXubay9IYAA-D#&#$6kCcXxMpXxuG8f;$A)#($poJ2&T|Wz-&{ zclEAXwdP!Nt_W3S85Bf9LO(;e@R&MY&Yzc;&9beJ)GcH_|pHa0f&cWbFZP|)xQnClxGBtbBVF5RZ* zCocQK-?@(@X@L+FT-r8?N7MLC(re{j|Eek-mbC8M3JNHS%gT_h@hGXNpycG_ENyK; zlWDAL!me0%bfAeHhdWVIQ&Wm}@$}40aeaM~(O8n9{e9}LGW(!+;7@+|h(1_y>i1I# z*;j4|ifb*hDsdky^@wIlB_*XpAzdrQvR{Z;SXhwuowOsgdTpMAugl=7aFxk0U1jII z8tnFiS>Lp$g-oZtg9C~8AB1^1;5!(XmX`d2f-lT=`uGIbhG#=D0V+Sl9^;1KI|X#+ zmX?h6=YKB;=f?7IH8&d@6{9gTGvnhE0*FQ-PwIHyF?W+5d6!mx{VJ51l)QRE4EWvf zh1p-p4nKj*MOH_^D^$ZO1D`-V>ME#{;B>zGxPNXAJ@XVa-G7DUaRu=Cv73cXc}jpk zBx=hWODY_cQ{Y$M%oQ5j%5!%Y9Hcfu)#Bo-F`J9_0?scip61$G`uXjU!;J(mI) z?i}fr4j|sU2By;1KnSO&1H1z=0P~>&oPNJ;rhG(Z zz5N(0yQ>s@#JwbZS36&f9xsHi>RXI}S^Bj=N7|;z&`_K+wWq|)!2A03t;54Z#qAJ1 z=8>FU^;K_y0y87{wWDC!HKP8(RS2DjP0MyyI4e5g9g>`gf(IXu7teg>8&q|w*ZhhS z1QHVA#LzV+(rU?Iuq~(zrdYzjXEw#B+wTqW@$w@;OB8uvSQW)$fg#>)22HoM60Y@nfQbmiPD8K z)IGdjbb*g`c_t<%m?89KJ586+wb=pz`SoUVeIy30^#~$ShvGMz47&LiW`ooTv}j(i z(sN}CVIwsK%7pnMRo|GIpLMaG6)~rMw^RnKv9^|$((i(#WgR-ECyKc_6PLfZ9`*4u zYDrKQuXFQ^@RgZD(_ zsyJ!z5ht?bW~-s>G`uAZRfd(_InS8LAUBozx2Cbv679(ca~;R5;4-ricg(6GU6pq8 z?$)J?=THBgeoKN^DN;FZ5hc2QO3@a%gYXw2CeK(2YpCFdjHTIoeC*FM%*!Xg=OFHm z%Wv{We|v)}pNS6ZI#P~)eT~H)Bs;E97%k|TmsEcooE*UK)w*F@QiE4<*DBU(F?F=W z=k1!KKXB;*17wybq+&MA|C@zv5EYNOM1Vk=6%+T z;KZtu_n~BtxoofKN!*##*!qu7+&T+f+#{>x|DsGN=xWfo#!y_y*0&I49 z?6+(KyP9ww3}*W0j6`9(vH)yz7(d=$=GVCcvZ#v6<+_6Oy$k2q*#Z*g0mZ|lz@rZ8 z=9S_BfjKkX;A+{)VfgtVMgOLwDCo}WXwfP*_1C2KqkdF@BT7K` z$H-Ow&B$`El?3K8uv6j&=CY3b%?riAZiG_V>KzC%vH=@>rF3{EBxt~Mq(9|D%~LWx zP)+tBz+;s*9_^J?O<-5m3c^tT*%!A&QPCLJ{u)s^C3zOH8d#c;R@|6J$w`kP_-5Ns z7P+*R1!xcPFp9t0Hjw#(=}aV>ZrHH5YP?S2ZnqMQp1p|px*C}Toec|lreCFNq`yNsatntLXP%aEW>VK&hN{!tC5cBG*=LnPy^?5DnswPO@JL; zi+4Hav5Z9o;@Od2hR8+7Jj71jn{9Kz*fWjm9uZqVWf^wgviml-$inace492g5m4rGo}2@(~T*q#xyEfiutM~F>j^Y%?X;MOw{V2%~` za2CKv$DYsrd%wB9Ms{~* za737>kx4y4m(Th5D=0v)H|HoPEqIwmgy7KfCY1lu(0KO&no7raLM^-MVzjG^ge@%% zBu(#m#)3ciV)$%arQjDePHCp{#RflTn!CKhL0Ul$F(^1l^|wfL*(_;dqoDGkGu%A8 zP=o~<9fmg_gkS`<|7{_hvKT48=L_ohBin}IRRsTd<+nc_NXH*fD3x_!Dj@pDMwEf1 zBzSi%i+2pcDR3ply8Fcy-A#uwe#1U0HsYw=w+bfC|AS-&)k924!F^5m(t=VXBRm~H zp1n($11T#W6D#7_<!m-OAKAz}i6G#0RjxSAiRLy?70>ctBA_%BPnrx;f?Kelx*Oqd zTNPE+C8=W-mJAeT`WC!{pk5`#-nb#z_HM4@Su8zB_lEU+UF?jXI6`=br+uCsR){co z^x?ez;bAC*Q;pA+JM9kdo5G;IxS{~50l!Ht;q^G%sBGN+hA-Z~VORw$3_`-t?p$w= zTM5ybveW?i%e!Nw@Cg2}a**v0bC?y@U3opB2a>Mnv|@DYg&7K;M+#yQCx|XolHqHt zgz}CztconUc2ZaDFcrz2i@M9}?moycBsr2Ef?%6+yb(FQ*_VlgWL>n05E25DeLN3$kbW1W>>{K*WjBULMd*`4gy0u%uHfZr6;F zr3ZA9u+)`Xo0yj;9Dzk_K}9F(^!F3K_7^5tItNqmAvy!+o{n~6#RX}a6D#x3D0IH;Whf36VwzD?AU39eTc z!T!1UgM<;8 z7IZGAWkS_+jAcT60>b!QU>@%DRx_zrNxcrpBLCU@S$W_0POc*(BV%AJAQg_;2FgI& zxkUiBIPliLDyfl!+O?=`=#5t5R<_0QOb~&QjCtYTDf-S3vx3f#PD$|9{jHC%2(y9+ zUbLru=d(2D9ax%)>8;fWRK>~7?V8T-Ng)vS08!^Su|=BM`8-K_sQQ_{G_LyA0Rz*= z$wZ4UGd?rRNh<%6j!w^xoU<}WMK{+@RQx-BU2qN}jc{wk&BjPD!-}B& zl55%KdQ(d^P9<;F$Nlv4izs9CH{Y41TcpqfXJZC3&R2F`1Cf(Qh(FG7IkV)#PK0MHlY^_ar6o;{fhC+>R$y{Q6JXgy_Cy49H2%8eBEk`S!`_DPR*Sd@w{OCREkq!>A|GP$c$L_YcytdX0P%6V>Bs ztmNg#l@H>c)l}2Vm^^;QgEeYAzrcrLn4J7%x`vtb6M+vcC{9b;`6ew!U=T<_9rLZc z%HFsqpg0{~k|$DJM;pg&MtN?vH-ig;-4>gIn%ekR2{n9%S${z>C8(6T1Ue z@7?syKfG`f!NF}4w5|Xt^6)}N`O$p8Ix}yIGKlN=+6YU zb?J|KjJ}slSUj{xP9u%Szll4Q<;d17lRaiu+Dclv)L5vHAh?rp?OU@K1~J zR?SUNY&5v>)3y5-)*;N@Sm2Qnfg!E1Joc;M+sQxH$ru77Zds6#QK+7s5Jq&Xw(;tr z;Lth-R|j#$0t4&Y*n+;wd?{^Z30F8BGSZ?4N%e)6x6^n@`$?U3yw$fhg#`xEtP2Tm z<8&jh(e_JhA^3h8cyoH}1e$3|yk>;)!^ajldNG4|lPcNQ9#7NO$M;P7<` zh}$(GQ}n%d@8_j~HJ#?fTU%R4Dm2Q_2?+S%)YQ~gJDllw95#i@>Yo5#)#*W<*=vd6 zezaw?&_jxWp*ZCp&smovXtOcixmSkxBGRu1zu}n42oNxAn^5|P=&0(~-bs2l$q@jQ z5xy*D1ts)o9S6&@6X9Y~Dy)=oB;uw@B#EYsYN-H%uE?zUbfWO~L>7KHuHbJc#X%o{Et5(y4^x|z-m)|}TUiqAb}ihBLMZ-|$O`s(~S z<||pIq)q@!Gct?m@reR94-a{r8)l2A#dS_3#)a^ygtY|;hY1PbS(+5_)>Ms?4_?cZ zW&w+@e`^b=%bv@my(_->GNdz9nTvL*sE67)5{$Az;<(xY<*ASJ^~_EZFd=7|HIm<# z#CT1AP1KdU?X^zd{xhqeZkNHHcRz4wUV3d>Z9isn@TWhGvP>B{4<`)s+lJ#RyP$~h zEu$qR<`&&&*mlS`_EclE`9Hy|l|j`9BJX|Of}YGW5!=;}Gchv*H6urZI6E~@-F86; zKdzd>Rcc)d8-~Y75Im*ID_Nz(mvO6gS*58HxO(3%1ltYdrA}e+d>+r+iUa2m60psR z#Srr`PVLDCffG}f;qQBfj=~uMRd};IyUTjS?k(gn zU-`?zz=`!gcUj9spu+^hC^-|nobX=b3}qB-zTC(&B&6epm0s(H3wYwAEbB$&B>@op zj*{4xG@@n(y1p{TO1*4&!@K?tY7OCh^%1TYEkkm5NF7*O!rIuNvXrwQ`euirY@wOo z`Uoo^4ZGuh$Chc|w##MJEL`(8Rzci9or@^`>Mtfah4@A#N-?KT_Hpn3Zpat%Yj<=& zr`)#T+e*<(yW$~YiFEC-w{#(gTP$JUQ;`C*iDBjV-Z6)lIVyd_rcF5zSB2(JY3 z;?~#Ii2yqo0A0cBQvr!43bJ>hzlHxSI=u$#Lf#r?d|Z`ceeA7 z;oY-n!ECF|U;N}^j?0;(r2dfX*b%`~M_L*pecmQ^KW}(#{tSG(8ZkRNVZ=C~gl`w_tNX=pPOJ1! z+3>x;F+|${Hk|Wc#bTOn6g*Riu@;SLTIo^Ur(dXH`4cnV{ZT)2q_^5ELIVwgHgEM7 z#OL`cn}m>;SSUn2)|1W`Hl0>3pkbg!&{%v_l8MjnDZuodoEk3#{+fsA?uTIp10VLELhemSy1XED^I%kx_CvPSIawxg67^c;%>4>z5oFtMZ^m zO*Al_&n8|SQ&XQoI(Hnfm`5j)$!i6u%=r`A9}kgk=@P@&st{Hqit{1&UB!LMK>|`bGP|`0~Sq)>>)kJTX{` zAC$k-^R@h%cAYGQ%mCG5P)r-G76Qkc^e3l*{Z@Wk}*y)iiMfJ}(y0HV9iNH$hh zp*Mze_V6#eePu}ONG^xh&}Lv5OZ4W5!=#ba%(t3s*wS<@|K@sxD6|2N_F3dAC&F9o zL3Vh7rp|$1piB6JH&aW-~qSfRKxavnOPCzhTk1<9l8@U#U2eAwS>Y`JsL-w!1jE-s8<%SX7kJ8X%7)1{xU=myroONr&me z{f)vN0qRk9*YKg|?j!2DdA;2;d0%~tX5+GV6MZb{sv|IywS?+MoG`y-qBQgG`TwIrXugoKSqv#on!K@Dk*(#aLa=3pum z{O{|uXwL{0G0~v8I0{YHsTI6g=oF^r_@fsO8qmTO`>qC4m52ujZ{AI8E7+UQ^^97F z$U8ncJ3?Z#D1IghoN}Mh?!iM+gmS=#9UnFGK-mr#N=bD>=;!gox!W^UuXZ*`s*JcB z3@XbH8M{z?JZc{Iv|{;AC^T8_g^q$=2v1WBK#An!Ptfy8&!iwe$w$s&&f=jQ9O6P?m)AJ9{(sUHV)G; zd^WBG-M?ddHp#pauIxzhM(8_b+x69Q%-x#&k!j7hPvIh9nf%@Gi#^ruzl#-IAjl9Z zALsf~)(16gs296V>OYC&>QdT=;e`Ig&ek?QJv|%<1aiYsT(3a9Z-lGdDwi4}W8y83_KVEND-1HUDKgW#NK}X6H=9ao5`JH<3XN=EqzsqJJ9n=LzeG}5< ze4b?@TGRU;FSqu3^7kyBb>qQ70=rM-_|oAed!`@@FAs5Q_DaLDE}C$s6)`nYpL?pj zrB`Y8w`lKQsSfIxidwV0a3#j(&&H4P@`_=s(rNEEyJi=+;5<(ppS(DXyu@t(Uypf# z*RNdAmnU06Aj4Qd6S~4ET!c!*XaX?3mHx)NGr=8zrrG+hFlF5^su}c*LPSnA`f?>X z%}ztTIw;&q6~xye@0_mIp4ve70P8)p`9yC0j{!i-fl0CHW$W44j2#xQm#rjS^2>~z zr4beJuM)cV8JFH2NrQtsK2L-_bxbT2YK=R+6>b}JSeIKaiua8eDCRg(zcRs&`COVcPG!r_pKeO1-8!cHf2vV} zT&QlcEoMct&Ub)24>dM=w%Kn+)5{o5KFl z#mI#Q9{c*MFzxBBs{U3?;-p}L=4NE&O_gOIcLbH1#k@-sD*MqM`%kSvD!f}YT~8`@JGR`(=`DVEx|OA`^WFQ$5=HIlH|Wy4cLpXWjLwS+}$`TYafnF*36zLSkzMcmS?nkII8a5ATLaT*) zC_3gwoYsPdG|Ro+Dgt?3d0&UzAzeFZ0nb{q5K4`KFpMn z#UoeGuE1wrzUa>CF^a;gsY%T8ihN8Q7BdlG2XI1_&`*W5fNQ(Fs{Zl1bv6cqM6Q%t?20oBnlN&$X3SUB%#;C#bD8&tT}o5Ac8A zWBdto0h*=qt;fU~=#$-1-%ZOw3HaC)Z%!`T^%;Pm2dQyw64I`~)h}ZYi4JqCi9Ad; z1H3F~V`=vrSULgacolM5Y#a;Wpc{rIoJ9Ue3*?K|RMS2S+*88F?F{Xx+Qhf|EBKL& ze=*?e1L|yKY;qQwKBkQ)lX|vmdXHOlsZF0y-oBk#z;S7%OA?DU&F~og(1uV-9r5yLheQrJt4+1mZwY|D@T-qc{P&dr2qa&gu(>ujabMw$?XS3LlPiFP zLnn%9Z}K)a>Vbn%Z1y!YuUJ_P^r5TpX|e`b61kN4e+2KU`u{f*TQs z^|6=UQ?q+yl^+F@2fn_(j&^a_>dnd2yczfinqZr>Ywep2`QIP=OocGf(-!V=jkZpc zJ4*H^y{s;bNOCvX7kh&V2li;}CCfYK1tQA_>b~4Es7}R`rI|z*&}q>_Rwe#peEQj^ z?Q)sK0(#rZ<`unJ7k?&s`|~|_P@&qBY=|o+5e{-B&pSu~O zOyBK&e~7?LSd@q@g59Zl`7)B`iee19JqGShX7fZ1HPX|-*pnRgxF*`4mqlO>hD(*Q z^2^G2kMMI_0zP9Y&-4AtTx7~-oe7lqANE9?AZx`Ax&j)kVEzvbU*P>881~oN)qubG zRkK|L!rQ&w+sXjj{9oZ7(|=e+7~2H(Klu6|s`SjUUTU>n8%#zL_aXfc!uHeoIXbfG zD$)q8z25%Mt|PWvRaG^#w3O^CguQ$F9}xbZgXcdTzz21A@v5{~!J=>cUSm%eo{1UO zz)JxF#ex$27xE5>r!Yv(hZB{`HT^&dr7yn_0@fWTgn>go*)QqssbE1Y!Va$s2r?p@6EILKds1uOG+ zG?%5rzyetI^7gZCx1iB7TUNbXfHU!dE>Wjoc*fn+ZhL6bS~7Y|apldj8Pvi*+u`>! zvpd9@^HK|uQN~AS$4gb?7BnVd)O_%j$Kem~jsFdTlzd8o#G24+?)TERoTWalvX%@| zrVy_Zr7<`6anIqMv)ywxlD@DnOG9|^3J;r@xHjEppLdKmTHelmlrFq0dl18QnbNND zf=(P4kA$$B%HGQFc^VWAGHYF)0gy1XONrmZCb?yK#b7@LzRD)##u{CIbukcXyr#cv zl#jp@8zF7Be?~G4xMB{tzAaSnv-x+LkSm?nZY8d@1uyN@Iak~>t4Wm;^+_YgzqyWg zxt*K99!%=w$i>-W=lE(;=^IRmT6s;BiyOfl+0rzr&Yh9~+x! zdNTyaME31EnR|#eB0m4Bl9nqfIjV9}kx$E=SahLM-Da`FJzz~qwHVb{aBe$BI9un# zDIJ;)Ub_@XyL)}Dp}t;T7M>HlM%6zM{Mi9#Xfx9F*tT<250gt_G0!O!I3A%pCbz0W z7>L3VDLAL69fz^|Tjx74XhJ}7olr{737dfBWZO}X2Nv#yeRUZ~WqdI=&kLlmVq&4d zTdhTSvTzqyT14O6BxU>ECaw1a1r|2^V-uAa#VJ_k3a5ExrJ$jg=(}gc)n89o2`W?k zPW~XRIzx(IS`czFXql&-vev!9hL^419I|K`Mh&)=Z&AQfBLyw|WDm4D@Pe*Tz7o_I z@3_QhNK#H>Nb(NZ!8wzD$O)TNJK>B%lu3Z5CSp=t7kqBhnR@))#e%8El|8IRS%$9z zBa>*x6!xo?m5@Yq7Pg6L!0>eHCe*}4Y>O0TiCF=fN2jybg%j?pyKMCoyT3aZdr|TA zY#x8p<6TmW{+%MmFh`!vL3aMm#Z=Le4;q%5zOke-vuIi{B}33o`Km3&+t}oIAeVdm z&goLqPAvnOIFVIQS%dnW%6T=xKADPs0Wy476Q+}u5L zJgJBE5iC^P!SJ-bCLnMk3UVq11rX{l^7uuK^oCN35ikY z2CI$41+vW>-Z5kj%M=0?@v^UvvY&D*b%)5E3)hZ2 zS5ol{e3$#>;A352bddo(GXc5%9z5E^KoM{M#slJ=&})thEXkPt868RqR+_r}Pr{8~ zD+!BUM50PO{XdmRM##R7ex@v9B&KIYaY<-5Z*{q;dCRshUFF(3q zNK9uF6dC%*)(H#@E>?@1QD|{duh0;IX<>rv!amza=dczkhG5Utc&=Z@W;?JSMxvIL z_MuZkWpK5h3(O@n$NxZ>^kx+fk0#?Z#JBmj5EV`(1`h025DSN)cCoz%Msvy!suVSR zXd!Ekehc2eUEy_zzp#O$>l1pt{s&>gve}<^X;{=%0=s;#WLY;B5Qjog8SjO-p`~c@ zLh=HC&Fk)JoXOTlXFMXe9!v``nQbOjKW<|*@gAuekSJP$C4}LAM{TPwGr#hDe}hgLyU1o zYIu9R2cWt1P$=+(O&n_=@hk(h z5{G?-uy5*0-x3`lpbcV%VVJxaP#U$`{+tssWzYzA1E#~Y}-F$*R z?pgxv%Fp0606;!Y8I%C+;px~sh$$q|cm6S0o9 zck#S24Z4#JM(l+ZI2e7SE$d`+M;Hp$>R$|m&5q~{zuQ;fbFGXY2C$z}dy#!aY{6Cn z*pmOXiuS`Ycqt!yKj5;4RspUVR)kI6$+@^(jqHu332VNn6Sj9z3LP^9%+N}m)zS6L zl2O4UJ(y$m^{{=R=z7>0ynbVAdKh8*o4y0{Kq>&dz`J{wA--!1ON||Xqw8Q)_Ib#T zzT`JMI|B%z&icRLtf&{xEv-O}<_N~Ge2-mE^jbPJ9C6P=x!RT^o1v!NecF5RkY#vV zo;!e&z(=sL%8YvYwKa9IyJCeUImf4R@$)OmIb=gQ6$^@YjIXG2Kf2@Sx znU38CA&oY%;ZrPP21_g)ZWq$e<8R?JQ;$1b0o^}y3x8srDK^c@i$-^s7MDYhE`D;9;e%SR#8zAN zaS9?}@K0GniYf#k<7kX5O%hWyI5SxBZI`8d43I*-qKqBv18r!0@oi@Un<{AUVl4cr z(jz{_tO^MdfrKK{`+6+Ac+5ULnrRf-aUqG$O$;z8Kk!iSoUeB!N6|$mUXt2R&K_A4 zW#gLBs%*`S@-17hE_7`-%l{oIwRZ>ncCF8`gdnM;MMjB6`tAJct5esXxkdGuhpf0c zRXxt|3HguVp z1LN{OObcs)c~vi1xnDJ76CJUy)y}F3uW;*e2YV}FZ&&q=(gXeaT%{nYwnj43d(-1n zTL~DsK9NVEN`cFr$TXVQ8-cmRe{qc8mCBX*A`(Z`lBI_C^vocw;c^Swm~zj5jpyCf z3SD=kYsJ-7pinKaA&&`b*$l0ms`h1q>O`Vrz+SFYwX~t3>>RYF4z<#uhf$$BRa__E z^A!D_X1T)sp`av6=Zy(Jt^K6{_H8RyWY1?$VNCNB<+)?PtwX*- zpTu$eD^XLZ*pOBH9altF13j;QCR3esF}t>keOkJ1dr7KL9JkrZ}Ep&we!(G!wCuMq6LtV#TE zqEaLg9_v9vZjpof@jI|Ck4$ev$f&fBAd+wd9uYMpsRh=Xj+uyVHS^!jzq&qJ{bqu* zGZG_vD>zd-6h1F#a_WAvL)y~%W&m)&4W~R)XJ|qa2lg9}U^;q@J1lTewxopjk@iX|{EeVq+Yf*Sz03*4=} zD}eE#zq_1C-Z{{GENFU5bKsz}TDD%fq8TG1}qe0^Vhj z+Rc`R;D@4(D>ZptIW#>2yAvxSy%m2Vt5ta76a4Z_y*`mFekL6Nfq(}!%^U#8udbf@ z+Z%r&$u!W)U#ycAL(R025O{$!K>;lFcKNhDIl4P;%R0Ne#+O_watjs4r)CK@yy=1P zOpJZv!J5pnvurw+ZDy56Wn>+PAK~0JDrF49@2U~{R)pOaobFqhULsPlXg>X)hiR7r z1_uXD3AVfG&kJSbrCAsJRI~^CZWnDrNCAJp?pI@?Tfticfb~}9iQ}SYZU+)H5$;W{ zii0iVPwB-=md|b!6NBB`>yooL(Z`|1G#Ig6q?J8?zt4&xZH)-z0Gl`y31@^#3l#$c z!`#YBUK33yI%6121S{w?K*gtE`utSvKPvnw;Ca7iONP%v{U`L`D)H zqs!pgG=%^CnuHI-yyyX&2>mm=vOH`fhdO$R#VP}X(wa2eUr7E>ml|O9i>gVN^z6Iz zK#UAPS||}61IHrlpVCX#y8(w`_9ArdCS)#Y1E|&4B1~Ixboi$B8y$Gzj0ojzTh@-Z zJqGxqyuMLW*7sMD`@(bLC;ES+o+%YPsVy!(PEJD$NtDNijcZO$Q-q#2ON;p0i1N3(P|c=;9m)RZw;bzqE7nM-=VQscoo-OXyNVmi5P?KAAhen5Sag|9w zl^AI`YoS*XwETh?kY^~Kg&n7#-+Um1zb>dOt*~)lz=x^L^sVim5kWmvU+lfaOO>mv z4bg~)n#h8Q^56srfrci7ZG$r6o=9@roi>kI?Se%p1mz=9Vk*X36NirCbyb9VKP~_2 z8HcY*cUw~tHj<$d{nTzk8HBC(%p4B$38*52u*x&g3A5^uQ^kG6B6{bX8P54li1PP3 zp;Y{i155sVZ1;Us#1v*4C-2{H+v_6OR_kBA1&et=dls43qpmPSv8^u#Ol2xBuyM@2 zzxfhha}Bo{`a}7~<#>41ke8~#m7-O{>-Vc@u@7e@j3QiiC4#zC! zfY!Ly1K!{s_Qq%Z^BDzU47|M1_4`mu?LT#=0TSxG7_kpoIOQC^$kbjjY%cerI$8w8 z!hiJ!IwU0|!DH>2;RRXDb4eSKe+u#vu&pCFpK9 zOYt_n9u9p9k#c>l(bIT-2~YLKT%L)}UUoBj5d$gpx4<_^AC}$ORB#*yK{cw}G+T6B z%#6q<#LoU z4)Tlxx&fmXNA%mn0ipWH*J-AR0>UF`GIE}@_GaI=v-_|Vryuh<7%?I#6X7EjWaIz{ znGAczrnaHSK=ov7gTSOTlvLl8ak& zcYUYI>=*;(7dt(!1${(Q0T(LEg?+dZ>o*fI3M=T;)o;`y!mD)!1+mfBtOdoTkOsfA zj0n>aUpWw>>=MEDMSSaVpKW9Gh(x{5aIdq}lr#^JEVPF^F&~+Lg1VM?Eua zOh@SA3nfFEP~?>2evEb@JyA%S-}hw&D5sPn@0CBzzdI~erAgG84qg!13$(sq7-0Y8 zTBgum|2GA)iTxf)xmTA#=`>OYT6=~p?A1ndZGufqn}zyfkX2@L0zFf2SVrJ5rvKXg zz{*H`L|!%5CAEk4MS**>&?A)&mJ&~Bls$>%M^psw)jDb@Gke}fr zOY_!wo#H#8zflL})Mlp?_0g2aYi2K;)|c!S5>eC?M%bJTxBCStcFT1m0;xC_Fq!IH z3MX^gok~*!7CR4B?1xK0a(?3u2n{M(>wb~Ig4rKatLvP|eWL9#su~(x>x5!|j2-YZ zGbQx3;8Guc&(ZauY}KzjCSkS`W)4mMjpM?U8LJ}NJ`Ra;Y-|k3i4ug2AS;?K?#JO7 zU?his@7-iu*;2k?QjlegT6$GpP%@`@^1=>6yBOMdR|96+3{7m{iIDQBt{sM#X2qeC zw2-BmAFkFGq3Fu&_J02|@<2+BX0N(MJL#2PlIYJ4Dm&=G47)~nNPWF~>MN_`ynxv? z2HfV--z-JEvfVP1S!j*qoE!yt`J5_$uW8?>dNx{5 zetkssFq*pv(gLmO-7p?|0=L&{jG+@p)K&F^k0r|HxY-f=Ol4#xETyM9ehPK+jv!A? z*2)ahHIceIv=%nBL0wzSzsSdcI`(p`omWqvd7u7=$xO>3d+>1{(SN+rM=E;y;|pV+>N-V_w83|{ z%}r}yb|QuV!u7ehgzBok7_H^}u}SEGmYQ}N!qyUEav7M4gPRPeL`!YqPbA}Y$nn>y ze$+A>;H&o66Z~)T`4p&SDMcdm>G6um*saKB$#)oOTftif%JB$`26t)L{j<+s8x?ld z7T17NoMmcizfr2TRhRDW2U(b)aU|~H5$Zw9ujVdGZB!in8Ln@d&+w@y;y;nE>47?} zDMK<5eM<$X=aD}KS6~16zheCm>$=u3MBSiw&8g*R(9_axMq<09>bRUn4T4ucNWwAde=W|`Vni$q|Atmx*{ShHSml6u1zPRzA5IjAACjPG*HSXc93yk){Pl_MaGXIQrlGSwot;bTCYvIgI}l zewwx5ygA0P!(u~7^vxPsh5*OY;@9-qaT_?dwW&7m53Q12JtKA$a9M?;pbT6 zN|vVvf#fzMS9BP5q+JX zY0T$UxAxA%KrBuqocT`n@{A@~NDPrd2+v-v^1`ae0!_doUN|JNh_|8<%? z{|BT$WvAt^c(4t`=b(rPBDv;&G`KR$3=VSj)%}` zsywiSk#Z#Udp)0}&z&ROW+$N2$D|0jmGyo*mt!L3hEG{@D*;-hA|JXRq{MB}$kpb;mE`ASvC^}-A(N5G44vW*b^kBN!AUfqr%wJB`>32zOpVjR+T)nubRGeK^P70E`KNy=LVs zLr#VKzeniLuYhYAQd11`+u@O}VRi;rIoDqGZ|NX)ZF)MBIy6&hFB!f>J}q44p&LBS zwKaN0&ssmRh@Tid;!R*DkCAgqM1oE-eq_BjTu8C+)za?o6+8IQLy4=*4~1?0zcQ{f8m_eq zUqbYf(XJL|7)GLt8jRjW2_ghh5+aB)N=6G|m|ze|L@(h}uNurn5Q7lGC}Fh0=vT|A zqkMcL_hzlT*7y6Iv(G;3-TQs^dd~B_1wb%B){?i++=Pc$cK|zlM61yAmA2UuRh1e9 zOJtPpuRb9@?s7yY9*$`7eX>CH6iNr-_Dfi;FISE{K7vo`nkwyq4B`wstg0eib3044 zH2Mr{o|z!wTYNzx_JU&7Nu+4U$1;IyKh$B%tMj;Rz(=d@`DxRu=%X5zGH>}_wA)qh zG!Mq4kA(Tjo25J3T}c}y1)cY4xP|mTCgFAT9&z`ysHBDwl^T5&9)3V`^EBrcRzj}4 zrKa;`+}E1M3VLC*&9M$q{i}s^M248Ii|ATG@>CXIXUS-@J zvAovBo9N*1+DMHN97mule|)lX4AihW8E%vhIh0q3w=a0MB)a*dsY`M0jA733uMcg( zfXQNA)&6QK#_#t)vieG6$CgAg>+*d+yIS&BKi)N_l<>oYHjo z7^QLGG^Z@`Z8s-;Ml@#zk=ExOB0bjl)phoSiIpQg8j-Xoo*?E9h2k=OqH{AOI<>R~ zC7UTIVsp@=0Zi9@8qG!6tk^;ogT_i~s{lohdWGMa1SxXc0hNT=2L}(`Iz5xN{6|t= z&r;go=JH4}RG#hEM?;2}v;S+bpy&tY))tuMl#F&q8rkU>L#|6ZABvSi9v|U_kkEy&V zz(ss6tN}8+216~Uo97&NyDTHks&%x!LLitp6NR!Od|M#f*ud69??Nqv0q9#YWon0u z*IiMN#4=d{DbizdT#8(PbAxSLaN63sh>RPr5>k8e^SgRga%k{0B96^7ry0#~YR>c` z_Sp!#CwS@lnUMLGfW`Nz_%{L()uLxF4#2LOWQI&zOpEiEnJOW%LTJ=)!GkKuO>rUU zA`q=SU9*rB{TdjprS;Iel0x~BX~^+0<_qTfyZ>DMp~M{*2W9E_Zb>=yE|-?x5&ziq zrtY^PrhoRCGW&6hGKdf`+Pje=gycr0F#Xd{lQAx&RLzZXNb=y>?0)NTN?xZ#G;d$& z6ERH2Vjt;XU4n0h3zgd^okk%~Ak8pv#;`ne^O%f9~6EFYo5AKC7M zf$Ojb7phKjeW`x*p`n6xG5KkM$RYno`L;860rrV0wdXb-&PWoc$ zSEQeciP<`zZF5nE3Di~xK00V@l?19Pyk=cyVKC_V5YS$y&bB&Kv|wSTHuko`LPjQP zvy)HtydYFp;pqwB5^)yE!era=cY!cSXVwgyIws{SW7LAeC1n?&7+O~oRgC8(nB^rA zCH4)?3JMt%Y3zFw5}eagImpKEg)Of(P?mf+9T}w#$lWYPVw+;o#6qux_e`U*Y(TT) z8M*FV3ZaFWoG5YP7v~{i<*xS1{jnYke;5WrXtVtF>}Asl$SJtK&Ks{Wd208cbb+BM zCC^yJUpdN=HOk#u|AxU!PU-TkK;d(q7i7?8x#W!gjilt-*t145Xi6ut8k52E64mn} zvR|jq8=xw&NtCq`KwQ!@~P6Q@GTz%jI6Bp&`~nrKF@pj@@n8!Oe+` zM=&o#KN$mGw5a9i-HvsHwMe-6Jl^Ol&|}Bitw>m~z8pZ)nJrkSNmb`RHs;H})Wj_W z{0qdW1i}e+Q^W~T)A>=-i5VF0qN>v0x#$lC6fN7T5C}7_tHqCsGRlB)Q(Oi{^@u(- zn2!%I+~@KW$P*9D7IX1|>BYHPtWV z3I;vr2oK~y`yGfYi1i7I0Iz^EtZ^IMiEB7sT1F;48(rlv%IK8rH2Q$z>H-1wxYI>` zY-;+8%p^APq=x*}O=R}pO64$^ESZ_P26Fi1r(8>`J1L_CKV$tRz7%ml1cwOM?LC|K z>g0IC?k*(z7o|U72s1Ut{im`aE&ZXMqpswx!J;g#@;4OUR_zMs*lNr_CB=D;!~I@Y zSLeIXNv(I{K9nmnBA^C`m1~B;;e#M`ewAK8UxkZHa^wF=7enfqkrS3!#~dcM7T?5K zPfbfx<(|x&KNho^(4*g@@Z&D=;Ro&U244EcMCx9M?V_E_RiA7q-LnfpxAexvOJQ;F zvZ~6fUB45TYdvv1DK^8XLlodvgJS;1Im8jltv@lqx#V!CCw7c#<~fY(?J?0~dt1jZ z6lzB=`S}3G?D(lAVSfpOwMnDV*E2Y~pdxb$Fp{jabO%Bnfj}sQ9*WDUE5p`Ug;d`j z?wgqt?qd6@${N%v9lXpHg9HX7`aA@#zxcB7vXsYL$KR8Fs=UtGix)MWHb6^%n{q0T z@!q|9rGBa7MW>51(QmU-i=St&l_LMZpc3RsPdr%F4)`Ih?-ApFD|QXMIR>+(I%bJB zIyvfb(q^GuR*4kV`dC$EBfAaL2RA%5^bh3OgBc6Nr&vM(uQUQ8zgY_)Y#hm$gh_C6 z1PzW-fm|M(x_p*B&iDn`KX{3qXFa>v%Gohy^W*z+kwy{tWP+pQNd{;*DmVhFqpVZMRJeG7; z%Mt19>>TQq*T38tEBfvFMICShHQ%UkQ3JQ8Mm4woKsVu4?yOtD>z~WNWhI8(_uUwz zX?pX?xmXWU^GD^2tlW>~)A0AP<6>(?^J&r6hx_T%Nk&4fL0JdhtsjfTE#)ghzLg8t zTY~joJk`*wPN19A@hMsPcHeY$|_6-70CuRDpl6HJS5nIf^w8+DIrFeIjz? z7zv{=cfS96>O{MC4A^JyZt7&09vkR)UVNP)Id+*?mg8N2`{4e2&PRmIhQQs^njlZt z4XgEm0omJDW^*%fQz6M)rZJ>5u^Z}|!EWm->`4oBJR__t?sj^h)R)g!6(SclPcGDf zU8_U61UB{}yAlYymfEL40nKAt;<4+^Hf7;jOmlL67&%5Qhf@a)P(3n+#HYuUpia7l)1guN1BV%Y>};mKcGs@L^p zGj!bDMeXS~k=-ujBY2wLlC3v+7q6Zf&0(=GB+COQM<`84slXcG@%3DqzGpUX8grer z$hW-iDtSU_C7-b}Kbp~2I2VmDIplAa)Ll@V3aewBGT_5*mp0$R=kwk$OaJ#$6AYCb;$ zd?aNK->vxkTOpGD-MC^+-9B}H-inN@YU05F)4m8O1yeE%Rf=!py~k=99^WNN2zn-f zI0?lTR>b!J42rJ~&yLe~qamHys9Bx(9TPqYbta3V9=$|&PU7jFed!1tRT6M$a@(Gi zc8c6~yDd_0Y-@iOFVH?N{XCLgO12;Oz)AD552eFIC~@KR#!CH8ZQ}{k6@K@`T&HD~ f&1;0)Y3)J1lr(^K{~YpxalaYr-qESjdKmpbzO(2c diff --git a/.resources/3607d10a318e68ff083d3f45cd28780380aa7ba1f70d881e51fd2811103f7b8d b/.resources/78e030b4b691b98a7565a843db5887574de6044c0ea1d457166196aabd8c9983 similarity index 100% rename from .resources/3607d10a318e68ff083d3f45cd28780380aa7ba1f70d881e51fd2811103f7b8d rename to .resources/78e030b4b691b98a7565a843db5887574de6044c0ea1d457166196aabd8c9983 diff --git a/.resources/ef4de5b26e3500a0117600375bfc01bcb6ea4aa3efa56fd21d5e2b96519f61f8 b/.resources/791324ccf4e1f6b0b34f1d276b964a7d4e6dfc121cef4dabe210044ec28e44f8 similarity index 100% rename from .resources/ef4de5b26e3500a0117600375bfc01bcb6ea4aa3efa56fd21d5e2b96519f61f8 rename to .resources/791324ccf4e1f6b0b34f1d276b964a7d4e6dfc121cef4dabe210044ec28e44f8 diff --git a/.resources/a24941d630f7eca180271fd5eff09fb8f3ab48a521ca712ee841eb13802ff134 b/.resources/79f0abe197798d5f7bf7915caca7009f0418ecb5851181bf11691ff6ccccef0e similarity index 100% rename from .resources/a24941d630f7eca180271fd5eff09fb8f3ab48a521ca712ee841eb13802ff134 rename to .resources/79f0abe197798d5f7bf7915caca7009f0418ecb5851181bf11691ff6ccccef0e diff --git a/.resources/7a10fb9ccf924cc33c7d51e86eb88f70a53a23ee2ea00d988889bd067790fe8e b/.resources/7a10fb9ccf924cc33c7d51e86eb88f70a53a23ee2ea00d988889bd067790fe8e deleted file mode 100644 index 434d8f1b..00000000 --- a/.resources/7a10fb9ccf924cc33c7d51e86eb88f70a53a23ee2ea00d988889bd067790fe8e +++ /dev/null @@ -1,18 +0,0 @@ -{ - "base": { - "style": { - "borderBottomStyle": "none", - "borderBottomWidth": "0.5px", - "borderLeftStyle": "none", - "borderLeftWidth": "0.5px", - "borderRightStyle": "none", - "borderRightWidth": "0.5px", - "borderTopStyle": "solid", - "borderTopWidth": "0.5px", - "color": "#808080", - "fontFamily": "Roboto", - "fontSize": "12px", - "fontWeight": "lighter" - } - } -} \ No newline at end of file diff --git a/.resources/7a25e1f739ebced2a733ec7594c2d13c43edcb241318d7834f585a0221650616 b/.resources/7a25e1f739ebced2a733ec7594c2d13c43edcb241318d7834f585a0221650616 deleted file mode 100644 index 868bc3205d22533d815df5d2e9541a36001a4c8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1927 zcmV;22YC32P)c;LZw^DtKu|JTxT2Bd<)YPN!V;x?- ztC6;GA@;qlG$a2*ZKv;n%+*MYFq?-_fvf*lJBd(P;34VUt zgtUTs#6K`eTlEuHOB(T8xebYbRw6m8TH5UE)!ZkQNP1Z%->($bW2v?a=59M41k=F5X{s$z_^b0ki-v9c^B46V8r(9lkq#e^+yfR=d8ut-as- zXS1R_|23Z6y@e|mQ*b0U1{yt;phHmi*L0Dm*SO)*?XjWB24_nv9L|=2VRt&wWV6F& zcYNmKaN_B+OeB1ti0_t0W7O!;2nh>=rfCQZ{|aA6L_#b5hyDa^c2}8(6$}G5YlBg8>5uVE+91*s)^=PMkP_)YMd5xNrd}DJeL6_AE}HK8=$n zPeQv}p$E!Ov5Fz!r?TdN2|9Ik+H5wD#I9ezj#;y2iL}Oz8;7l1x8l^PQ$i{^Ia%7r zk01Adgb5*-ucsGAc?Qz5f2$=NJPd#!CDz(XCj)YFau6LIEySiyor=AC_u~Bd^CBf~ zZY0wcG?ShKnSvPQ8A#*PO%e|1ZM`K(TjP%sJbd^t!o$NcV#EmS-o0ChB_$QG`wQ7|ZI*D~BDPItRfj9}Jr5xe*?c0cqjKq*3Ll7GqD@IRJ zy^)v^0TJ{jM`Ned=FOWYMo-BFLM&i{-sBPz5`^5cWy?fr$}5eV`2!EZ0zDowlUyz7 z89^htHEY&L*zniZe4*V*^dgbDn57P@nC=KFZ&hj~IZ9524dW((Kx3)RYL*4#{pSTz z_IxSKC~v)U=Z=tLoKxhCiw6T5?*S~eSzYH52*mMp>0 zp+hBg88`6Ua6j)4OQA~ZBqvQoFXSgDq^9HqBw*Dg=eH*VM)a6aok zn#tzPo295=oyfv<{rdHYiHT{qLEiX%m0NZ%8=Ns?1}0CQEGh^FIj$2I7bk>x@Y%Cx zi(M<*BXLSq<8y?sa;w?aF1?#KZ^|O9=Tv24+_Wd~R_Ufqn?#M{$B&nYz)Jh_<;!B% z-U0uMD(0nzwzp`}B8(X`Cg6a~xg@u8hOBgV!q&Fau;lqbx%9JS*2^d-^Aw`~t_FntUnKKwRY#3(FoGITsm0NrQ zdu(ZgtJ#Wgz8xjc5&nc1MS$sx(&HtHF?8+PwW3Da+J+4qJhwiMr|M}+eE#4Z=HpH( z=KCCYD5@MgcC6f+xd)}kHyO5R4wQH& zC%ID8An$UI@7|JA@F9n`&>Q?f47(1SUC3^bbVgTP6Si N002ovPDHLkV1joWtVjR= diff --git a/.resources/7a9e3cd1a83492963b6bf44a672bec0a185acf2a0cdcd1b9dcb806c0ce99f87e b/.resources/7a9e3cd1a83492963b6bf44a672bec0a185acf2a0cdcd1b9dcb806c0ce99f87e deleted file mode 100644 index f18f1b55..00000000 --- a/.resources/7a9e3cd1a83492963b6bf44a672bec0a185acf2a0cdcd1b9dcb806c0ce99f87e +++ /dev/null @@ -1,944 +0,0 @@ -{ - "custom": { - "PLC_list": [ - "MCM01", - "MCM02", - "MCM03", - "MCM04", - "MCM05", - "MCM06", - "MCM07" - ], - "running_state": -1, - "state": 2, - "views_data": [] - }, - "params": { - "tagProps": [ - "System/MCM02/Station/S_PB/UL21_3_S2", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.PLC_list": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" - }, - "transforms": [ - { - "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", - "type": "script" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.running_state": { - "binding": { - "config": { - "expression": "try(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),-1)\t\r\n" - }, - "transforms": [ - { - "expression": "if({value} !\u003d -1, try(jsonGet({value},\"state\"),4),{value})", - "type": "expression" - } - ], - "type": "expr" - }, - "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": "if(isNull({value}), 0, {value})", - "type": "expression" - }, - { - "fallback": null, - "inputType": "scalar", - "mappings": [ - { - "input": 3, - "output": 3 - }, - { - "input": 2, - "output": 2 - }, - { - "input": 1, - "output": 1 - }, - { - "input": 0, - "output": 0 - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.views_data": { - "binding": { - "config": { - "struct": { - "equipment_id": "{view.params.tagProps[0]}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\tproject_info \u003d system.perspective.getProjectInfo()\n\t#self.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\t#equipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ value.equipment_id)]\n\t#self.custom.views_data \u003d views_data\n\t\n\treturn views_data", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "width": 400 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "color": "#FFFF", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tsystem.perspective.closeDock(\u0027Docked-East-SS-BTN\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Icon", - "tooltip": { - "enabled": true, - "style": { - "cursor": "pointer" - }, - "text": "Close faceplate" - } - }, - "props": { - "path": "material/close", - "style": { - "cursor": "pointer", - "marginBottom": 5, - "marginLeft": 5, - "marginRight": 5, - "marginTop": 5 - } - }, - "type": "ia.display.icon" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px", - "display": false - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" - }, - "enabled": false, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "Labels/Label_1", - "marginTop": 20 - }, - "text": "No Active Alarms" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "AlarmStatusTable" - }, - "position": { - "basis": "400px", - "grow": 1 - }, - "propConfig": { - "props.filters.active.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "transforms": [ - { - "code": "\treturn value[1:]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "columns": { - "active": { - "displayPath": { - "enabled": false - }, - "priority": { - "enabled": false - }, - "source": { - "enabled": false - }, - "state": { - "enabled": false - } - } - }, - "filters": { - "active": { - "priorities": { - "critical": false, - "high": false, - "low": false, - "medium": false - }, - "states": { - "clearUnacked": false - } - } - }, - "refreshRate": 500, - "toolbar": { - "enabled": false - } - }, - "type": "ia.display.alarmstatustable" - } - ], - "meta": { - "name": "Active_tab" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "NAME" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "DeviceName" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "transforms": [ - { - "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "backgroundColor": "#FFFFFF", - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Name" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "LIGHT" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "PB_Light" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "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},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 0, - "output": "OFF" - }, - { - "input": 1, - "output": "ON" - }, - { - "input": 2, - "output": "ON" - }, - { - "input": 3, - "output": "ON" - }, - { - "input": 4, - "output": "OFF" - }, - { - "input": 5, - "output": "ON" - }, - { - "input": 6, - "output": "ON" - }, - { - "input": 7, - "output": "ON" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "ON", - "output": "#47FF47" - }, - { - "input": "OFF", - "output": "#FF0000" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Info_tab" - }, - "position": { - "tabIndex": 1 - }, - "props": { - "direction": "column", - "style": { - "margin-left": "" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Start_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" - }, - "type": "expr" - } - }, - "props.style.backgroundColor": { - "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": "if({this.props.enabled} \u003d false, 8, coalesce({value}, {view.params.forceFaultStatus}, 0))\r\n", - "type": "expression" - }, - { - "fallback": "#00A700", - "inputType": "scalar", - "mappings": [ - { - "input": 0, - "output": "#00A700" - }, - { - "input": 1, - "output": "#41E841" - }, - { - "input": 2, - "output": "#41E841" - }, - { - "input": 3, - "output": "#41E841" - }, - { - "input": 4, - "output": "#00A700" - }, - { - "input": 5, - "output": "#41E841" - }, - { - "input": 6, - "output": "#41E841" - }, - { - "input": 7, - "output": "#41E841" - }, - { - "input": 8, - "output": "#7DB17D" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/not_started" - } - }, - "style": { - "classes": "Background-Styles/Controller" - }, - "text": "START" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Start" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "padding": "" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Stop_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" - }, - "type": "expr" - } - }, - "props.style.backgroundColor": { - "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": "if({this.props.enabled} \u003d false, 3, coalesce({value}, {view.params.forceFaultStatus}, 0))\r\n", - "type": "expression" - }, - { - "fallback": "#CA0D0D", - "inputType": "scalar", - "mappings": [ - { - "input": 2, - "output": "#CA0D0D" - }, - { - "input": 1, - "output": "#CA0D0D" - }, - { - "input": 0, - "output": "#CA0D0D" - }, - { - "input": 3, - "output": "#BB5050" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/stop_circle" - } - }, - "style": { - "classes": "Background-Styles/Controller" - }, - "text": "STOP" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Stop" - }, - "position": { - "basis": "35px" - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "expression": "if(indexOf({view.params.tagProps[0]}, \"SS_PB\") \u003e\u003d 0, true, false)\r\n" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "padding": "" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "100px", - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "gap": 6, - "paddingBottom": 20, - "paddingLeft": 10, - "paddingRight": 10, - "paddingTop": 13 - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Commands" - }, - "position": { - "tabIndex": 2 - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "tabs" - }, - "position": { - "grow": 1 - }, - "props": { - "menuType": "modern", - "tabSize": { - "width": 1000 - }, - "tabStyle": { - "active": { - "classes": "", - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - }, - "inactive": { - "classes": "", - "color": "#B8B8B8", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - } - }, - "tabs": [ - "Alarms", - "Info", - "Commands" - ] - }, - "type": "ia.container.tab" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "670px", - "grow": 1 - }, - "props": { - "style": { - "border-top": "1px solid white", - "gap": "" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "800px", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "Buttons/Button-Menu" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/4bb7a708f014976fe79a5ad3b6ebd28e929afc048116ba781b8c37e3c1ac542e b/.resources/7ac3a5f33d6b1c835edc451321d36c2270460619e79c178ad4beafdd4d1466b5 similarity index 100% rename from .resources/4bb7a708f014976fe79a5ad3b6ebd28e929afc048116ba781b8c37e3c1ac542e rename to .resources/7ac3a5f33d6b1c835edc451321d36c2270460619e79c178ad4beafdd4d1466b5 diff --git a/.resources/ec46ffac3b3268d6c4e8b8acfca761c9a5084756255e83a70012f8ca5bf501fb b/.resources/7b7918a32768df3fc448db717f8d543cfb9bb2597470bbfcaece7aaee12b0a11 similarity index 100% rename from .resources/ec46ffac3b3268d6c4e8b8acfca761c9a5084756255e83a70012f8ca5bf501fb rename to .resources/7b7918a32768df3fc448db717f8d543cfb9bb2597470bbfcaece7aaee12b0a11 diff --git a/.resources/f09b685f5c9f59662568053172aa79a2f29c5136df1d254d8d38a4c0e97ecf49 b/.resources/7bd29453975bfed24bc9e14322c6c9655529671f607a367f32658287daa10c70 similarity index 100% rename from .resources/f09b685f5c9f59662568053172aa79a2f29c5136df1d254d8d38a4c0e97ecf49 rename to .resources/7bd29453975bfed24bc9e14322c6c9655529671f607a367f32658287daa10c70 diff --git a/.resources/7be40358447c1a8169c8c7ab28fd55f78be7739d80ed6ef1fd17477c38563e1b b/.resources/7be40358447c1a8169c8c7ab28fd55f78be7739d80ed6ef1fd17477c38563e1b deleted file mode 100644 index 79e3b5d6..00000000 --- a/.resources/7be40358447c1a8169c8c7ab28fd55f78be7739d80ed6ef1fd17477c38563e1b +++ /dev/null @@ -1,34 +0,0 @@ -import logging - -LOGGING_MAP_IDE = { - 'critical': {'level': logging.CRITICAL, 'value': 50}, - 'error': {'level': logging.ERROR, 'value': 40}, - 'warning': {'level': logging.WARNING, 'value': 30}, - 'info': {'level': logging.INFO, 'value': 20}, - 'debug': {'level': logging.DEBUG, 'value': 10}, - 'trace': {'level': 5, 'value': 5}, - 'notset': {'level': logging.NOTSET, 'value': 0} -} - -LOG_LEVELS = ['trace', 'debug', 'info', 'warn', 'error'] ## these are the valid logging levels for use with Ignition system.util.setLoggingLevel() function - -def getLoggerIDE(name='', level='info'): - ## insure basic logging is set-up - logging.basicConfig() - ## Grab a logger object for the given name - logger = logging.getLogger(name) - if level and level in LOGGING_MAP_IDE: - level = LOGGING_MAP_IDE[level]['level'] - logger.setLevel(level) - ## Check if any handler exists for this logger, if not, create a basic handler config. - ## TODO: Add a functionality to customize handlers, particularly for writing to Ignition gateway console or system.perspective.print() etc - # if not len(logger.handlers): logging.basicConfig() - return(logger) - -def getLogger(name='', level=None): - ## Grab a logger object for the given name from the Ignition system.util function - logger = None - if name not in ['', None]: logger = system.util.getLogger(name) - ## if logger created, level arg passed in and valid, set the logging level accordingly - if logger and level and level in LOG_LEVELS: system.util.setLoggingLevel(name, level) - return(logger) diff --git a/.resources/7c6c75b017bba3b1b4bc2b430f42d17f3db8c9dc35c48cb536a19af7eec985af b/.resources/7c6c75b017bba3b1b4bc2b430f42d17f3db8c9dc35c48cb536a19af7eec985af deleted file mode 100644 index 64275380..00000000 --- a/.resources/7c6c75b017bba3b1b4bc2b430f42d17f3db8c9dc35c48cb536a19af7eec985af +++ /dev/null @@ -1,141 +0,0 @@ -def send_message(**kwargs): - fc = system.tag.readBlocking("Configuration/FC")[0].value - payload = kwargs - message_type = kwargs.get("message_type") - scope = kwargs.get("scope") - source = kwargs.get("source") - try: - system.perspective.sendMessage(message_type, payload = payload, scope = scope) - except: - system.perspective.print(source, destination="client") - -def update_device_filters(devices): - payload= {} - payload["data"] = devices - system.perspective.sendMessage("update-device-filters", payload = payload, scope = "page") - -def reset_historical_filters(action): - payload = {} - payload["data"] = action - system.perspective.sendMessage("reset-historical-filters", payload = payload, scope = "page") - -def update_source_id_filters(source_ids): - payload= {} - payload["data"] = source_ids - system.perspective.sendMessage("update-source_id-filters", payload = payload, scope = "page") - -def send_http_response_code(response): - payload= {} - payload["response"] = response - system.perspective.sendMessage("http-response-code", payload = payload, scope = "page") - -def update_historical(historical_data): - payload= {} - payload["data"] = historical_data - system.perspective.sendMessage("update-historical-data", payload = payload, scope = "page") - -def update_historical_first_request(historical_data): - payload = {} - payload["data"] = historical_data - payload["initial_data"] = historical_data - system.perspective.sendMessage("update-first-request", payload = payload, scope = "page") - -def load_initial_data(request): - #Pass a boolean to load the initial dataset. - payload = {} - payload["data"] = request - system.perspective.sendMessage("load_initial_data", payload = payload, scope = "page") - -def update_token_array(token_array): - payload = {} - payload["data"] = token_array - system.perspective.sendMessage("update-token-array", payload = payload, scope = "page") - -def show_historical_filters(action): - payload = {} - payload["data"] = action - system.perspective.sendMessage("show-historical-filters", - payload = payload, scope = "page") - -def update_initial_token(number): - payload = {} - payload["data"] = number - system.perspective.sendMessage("update-initial-tokens", payload = payload, scope = "page") - -def set_source_filters(self): - filters = self.props.value - payload = {} - payload["data"] = filters - system.perspective.sendMessage("set-source-filters", payload = payload, - scope = "page") - - -def set_type_filters(self): - filters = self.props.value - payload = {} - payload["data"] = filters - system.perspective.sendMessage("set-type-filters", payload = payload, - scope = "page") - -def set_priority_filters(self): - filters = self.props.value - payload = {} - payload["data"] = filters - system.perspective.sendMessage("set-priority-filters", payload = payload, - scope = "page") - -def set_device_filters(self): - filters = self.props.value - payload = {} - payload["data"] = filters - system.perspective.sendMessage("set-device-filters", payload = payload, - scope = "page") - -def set_message_filters(self): - filters = self.props.value - payload = {} - payload["data"] = filters - system.perspective.sendMessage("set-message-filters", payload = payload, - scope = "page") - -def set_time_from_filters(self): - "This filter sets the time from for history" - time = self.props.value - payload = {} - payload["data"] = time - system.perspective.sendMessage("set-from-filters", payload = payload, - scope = "page") - -def set_time_to_filters(self): - "This filter sets the time to for history" - time = self.props.value - payload = {} - payload["data"] = time - system.perspective.sendMessage("set-to-filters", payload = payload, - scope = "page") - -def set_duration_filters(self): - filters = self.props.value - ms = filters * 1000 - payload = {} - payload["data"] = ms - system.perspective.sendMessage("set-duration-filters", payload = payload, - scope = "page") - -def update_page_number(page): - payload = {} - payload["data"] = page - system.perspective.sendMessage("update-page-number", payload = payload, - scope = "page") - -def update_client_id(client_id): - payload = {} - payload["data"] = client_id - system.perspective.sendMessage("update-client-id", payload = payload, - scope = "page") - -#Generic message handler scoped at view level -def view_message_handler(message, message_type): - payload = {} - payload["data"] = message - system.perspective.sendMessage(message_type, payload, scope = "view") diff --git a/.resources/1227c867b49c2793120ae1ff87144eb52a53edff5a7cc1e5c2b274a47e2f7bf1 b/.resources/7da962572652174a006c57d810e0cd60176fdaf2e9d863bda21915c02b3e48d3 similarity index 100% rename from .resources/1227c867b49c2793120ae1ff87144eb52a53edff5a7cc1e5c2b274a47e2f7bf1 rename to .resources/7da962572652174a006c57d810e0cd60176fdaf2e9d863bda21915c02b3e48d3 diff --git a/.resources/7fde3dfb2a36114aa94a185cc4f111e0e64fee6d2aabaca621f1d520bdaa4acb b/.resources/7fde3dfb2a36114aa94a185cc4f111e0e64fee6d2aabaca621f1d520bdaa4acb deleted file mode 100644 index 3c9a3839..00000000 --- a/.resources/7fde3dfb2a36114aa94a185cc4f111e0e64fee6d2aabaca621f1d520bdaa4acb +++ /dev/null @@ -1,122 +0,0 @@ -def send_request(whid,actionCode,parameters): - """ - Creates the request to send to the web socket from a button in SCADA. - Args: - whid = identifier of the warehouse ie MAN2 - actionCode : possible actionCode as per MAP data model (int values): - 0 -> Not used - 1 -> Start - 2 -> Stop - 3 -> Reset - 4 -> Get - 5 -> Set - 6 -> Enable - 7 -> Disable - parameters = dictionary with the parameters of the command - {"commandTarget":id, - "commandCode":action, - "commandTimestamp":time_stamp, - "commandParams":""} - Returns: - a messsage that inform the user about there status of the request - """ - import sys - try: - loggerName=whid+ "_SCADA" - logger = system.util.getLogger(loggerName) - tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) - messages_to_send = {} - message_payload = {} - message_list = [] - returnMessage="" - time_stamp = system.date.toMillis(system.date.now()) - - payloadParams={} - if not parameters["commandTarget"] or parameters["commandTarget"] == "": - returnMessage = "Missing commandTarget parameter. Command can\'t be executed" - logger.trace(returnMessage) - return returnMessage - payloadParams["commandTarget"]=parameters["commandTarget"] - if not parameters["commandCode"] or parameters["commandCode"] == "": - returnMessage = "Missing commandCode parameter. Command can\'t be executed" - logger.trace(returnMessage) - return returnMessage - payloadParams["commandCode"]=parameters["commandCode"] - payloadParams["commandTimeout"]=2000 - payloadParams["commandTimestamp"]=time_stamp - payloadParams["commandParams"]=parameters["commandParams"] - - message_payload["parameters"] = payloadParams - message_payload["action"] = "command" - message_payload["siteId"] = whid - message_list.append(message_payload) - messages_to_send["message_list"] = message_list - system.tag.writeBlocking([tag_provider + "System/wbsckt_messages_send"], [system.util.jsonEncode(messages_to_send)]) - return "Message sent correctly" - - except: - exc_type, exc_obj, tb = sys.exc_info() - lineno = tb.tb_lineno - exceptionMessage=str(lineno)+" -> "+str(exc_type)+" -> "+str(exc_obj) - errorMessage = "Error while sending a command : "+exceptionMessage - logger.fatal(errorMessage) - return errorMessage - -def send_request_old_to_be_removed(whid, id, action): - - """ - Creates the request to send to the web socket from a button in SCADA. - - Args: - id =Unique material handling equipment id. - request = Type of request i.e Start, Stop, Reset. - Returns: - N/A - """ - """{"action": "command", "parameters": {"": "Reset", "siteId": "DNG2"}}""" - messages_to_send = {} - message_payload = {} - message_list = [] - time_stamp = system.date.toMillis(system.date.now()) - parameters = {"commandTarget":id, "commandCode":action, "commandTimestamp":time_stamp, - "commandToken":"", "commandTimeout":2000, "commandParams":""} - message_payload["parameters"] = parameters - message_payload["action"] = "command" - message_payload["siteId"] = whid - message_list.append(message_payload) - messages_to_send["message_list"] = message_list - tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) - system.tag.writeBlocking([tag_provider + "System/wbsckt_messages_send"], - [system.util.jsonEncode(messages_to_send)]) - - -def send_download_request(whid, filters, session_id): - - """ - Creates the request to download alarm history - to the web socket from a button in SCADA. - - Args: - whid = four character whid for the project - filters = filter string for passing with the download request. - These a re similar to the url parameters but do not need encoding. - session_id = unique session id of the perspective session. - Returns: - N/A - Example: - {"action":"download", "parameters":{"siteId":"FED1", "sessionId":"bob2", - "filter": "MinimumDuration=360000&Type=1"}} - """ - messages_to_send = {} - message_payload = {} - message_list = [] - time_stamp = system.date.toMillis(system.date.now()) - parameters = {"siteId":whid, "sessionId": session_id, "filter": filters} - message_payload["parameters"] = parameters - message_payload["action"] = "download" -# message_payload["siteId"] = whid - message_list.append(message_payload) - messages_to_send["message_list"] = message_list - tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) - system.tag.writeBlocking([tag_provider + "System/wbsckt_messages_send"], - [system.util.jsonEncode(messages_to_send)]) diff --git a/.resources/80150cb0c87a25674a7d3e13bf80ca6bf61e2ca1bdf3e1f079f651f072c8674c b/.resources/80150cb0c87a25674a7d3e13bf80ca6bf61e2ca1bdf3e1f079f651f072c8674c deleted file mode 100644 index cecbc07989b804d78f0f0328e326d10cf3e09656..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10161 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 diff --git a/.resources/2aa45c925d1540add4f97d03cfa422cc657e485c103308ebde93c5777cbc601b b/.resources/837beb65e7424f2c754583a7117d493c2a99a13c0a5b9c2d6e0da63e07fc33b5 similarity index 100% rename from .resources/2aa45c925d1540add4f97d03cfa422cc657e485c103308ebde93c5777cbc601b rename to .resources/837beb65e7424f2c754583a7117d493c2a99a13c0a5b9c2d6e0da63e07fc33b5 diff --git a/.resources/8b82600d78191710b68f8158ee71f445607dfdb887c5dcc5bbbead0ba6fcdce3 b/.resources/83b4657c8295a2443f713ccc6b551b4cc228b190e08402653aba6fdfd485bfce similarity index 100% rename from .resources/8b82600d78191710b68f8158ee71f445607dfdb887c5dcc5bbbead0ba6fcdce3 rename to .resources/83b4657c8295a2443f713ccc6b551b4cc228b190e08402653aba6fdfd485bfce diff --git a/.resources/8244947656e8acf50d9b29843355f648631c00454c391597a1137dc7316bbcd9 b/.resources/83bf3cce4346b5d6e22e9bb646007b1601eaab8f5409ddf29dcff09e1a37fd26 similarity index 100% rename from .resources/8244947656e8acf50d9b29843355f648631c00454c391597a1137dc7316bbcd9 rename to .resources/83bf3cce4346b5d6e22e9bb646007b1601eaab8f5409ddf29dcff09e1a37fd26 diff --git a/.resources/83e82a468013cfc574b6be90ca897405c346f0b845d3e802cc12e887b62c57c1 b/.resources/83e82a468013cfc574b6be90ca897405c346f0b845d3e802cc12e887b62c57c1 deleted file mode 100644 index 3f0cd715..00000000 --- a/.resources/83e82a468013cfc574b6be90ca897405c346f0b845d3e802cc12e887b62c57c1 +++ /dev/null @@ -1,1142 +0,0 @@ -{ - "custom": { - "key": { - "alt_pageid": "library", - "pageid": "library", - "start_time": { - "$": [ - "ts", - 192, - 1702653666845 - ], - "$ts": 1702653102761 - } - } - }, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\t#############################################################################################\n\t# Purpose:\tThis script searches the current views in the parent project. Script compares \t#\n\t#\t\t\tthe information from S3 to make sure the correct paths and information is\t\t#\n\t#\t\t\tdisplayed to the child objects. Where the path is the key for the JSON\t\t\t#\n\t# Login: \t\t\tDate:\t\t\t\t#Comment:\t\t\t\t\t\t\t\tVersion:\t# \n\t# dmamani\t\t\t1/4/23\t\t\t\tRelease to Production\t\t\t\t\tV1\t\t\t#\n\t# \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t#\n\t#############################################################################################\n\t\t\n\t# - Params to Force Filters to show all symbols on the custom properties\n\tself.session.custom.alarm_filter.show_running \u003d True\n\tself.session.custom.alarm_filter.show_safety \u003d True\n\tself.session.custom.alarm_filter.show_diagnostic \u003d True\n\tself.session.custom.alarm_filter.show_gateways \u003d True\n\tself.session.custom.alarm_filter.show_low_alarm \u003d True\n\tfrom SymbolLibrary import list_categories, fetch_library, update_symbol_library\n\t# - Default Symbol JSON structure definitions\n\tdefault_symbol_info \u003d {\"description\": \"\",\t\"name\": \"\",\t\"category\": \"\",\"info\": \"\"} \n\t# - Get all Symbol Views and write them to tags\n\tproject_info \u003d system.perspective.getProjectInfo()\n\tviews \u003d project_info.get(\u0027views\u0027,[])\n\t# - Define criterias\n\tfilter_criterion \u003d \"Symbol-Views\"\n\tfilter_criterion2 \u003d \"Symbol-Library-Views\"\n\tfilter_criterion3 \u003d \"Controller-Views\"\n\tfilter_criterion4 \u003d \"Symbol-Views/Equipment-Views/Test\"\n\t# - Filter views that are not necessary for the symbol library and ensure the correct path\n\tfiltered_views \u003d [\n\t\tview for view in views \n\t\tif filter_criterion in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion2 in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion3 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\tand not filter_criterion4 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\t]\n\t# - Create JSON from the list \n\tjson_structure \u003d []\n\tsymbol_view_list \u003d []\n\tfor view in filtered_views:\n\t\tinstance \u003d {\n\t\t\t\"instanceStyle\": {\n\t\t\t\t\"classes\": \"\"\n\t\t\t},\n\t\t\t\"instancePosition\": {},\n\t\t\t\"Path\": view.get(\u0027path\u0027,\u0027\u0027),\n\t\t\t\"forceRunning\": 3,\n\t\t\t\"forceFault\": None\n\t\t}\n\t\tjson_structure.append(instance)\n\t\tsymbol_view_list.append(view.get(\u0027path\u0027,\u0027\u0027))\n\tjson_structure.sort(key \u003d lambda x:x[\u0027Path\u0027].split(\"/\")[len(x[\u0027Path\u0027].split(\"/\"))-1])\n\t# - Encode JSON for igniton variables to populate correctly\n\tjson_result \u003d system.util.jsonEncode(json_structure)\n\tself.params.Dataset \u003d filtered_views\n\tself.params.FilteredViews \u003d json_structure\n\tsystem.perspective.print(filtered_views)\n\t\n\t# - Get all Symbol Categories from JSON Dictionary\t\n\tremote_json \u003d fetch_library(username\u003dself.session.props.auth.user.userName)\n\tfor path in json_structure:\n\t\tif path[\"Path\"] not in remote_json:\n\t\t\tupdate_symbol_library(path[\"Path\"], username\u003dself.session.props.auth.user.userName, **default_symbol_info)\n\t\t\tremote_json[path[\"Path\"]] \u003d default_symbol_info\n\t# - Remove by key in case symbol does not exist in Folder Structure\n\tself.params.SymbolLibrary \u003d {k: v for k, v in remote_json.items() if k in symbol_view_list}\n\tcategory_data \u003d [{\"Category\": category} for category in list_categories(self.params.SymbolLibrary)]\n\tself.params.CategoryList \u003d category_data\n" - }, - "scope": "G", - "type": "script" - } - } - }, - "params": { - "CategoryList": [ - { - "Category": "ALL" - }, - { - "Category": "Control" - }, - { - "Category": "Device Status" - }, - { - "Category": "Equipment Status" - }, - { - "Category": "Field Device" - }, - { - "Category": "Machine" - }, - { - "Category": "Network" - }, - { - "Category": "Not in use" - }, - { - "Category": "Safety" - } - ], - "SelectedCategory": "", - "SelectedDescription": "", - "SelectedInfo": "", - "SelectedPath": "", - "SelectedRow": "ALL", - "SymbolDetails": { - "ARSAW": { - "category": "", - "description": "", - "info": "Test", - "path": "Symbol-Views/Equipment-Views/ARSAW" - }, - "AUS": { - "category": "A", - "description": "AUS DESCRIPTION AUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTIONAUS DESCRIPTION", - "info": "AUS INFO AUS INFO AUS INFO AUS INFO AUS INFO AUS INFO AUS INFO AUS INFO AUS INFO AUS INFO ", - "path": "Symbol-Views/Equipment-Views/AUS" - }, - "Camera": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/Camera" - }, - "ControlCabinet": { - "category": "", - "description": "", - "info": "### Symbol Information\nDate Created: 12/20/21\n\nCreated By: amazonuser\n\nSize: 10X10", - "path": "Symbol-Views/Equipment-Views/ControlCabinet" - }, - "DeviceStatus": { - "category": "B", - "description": "", - "info": "", - "path": "Symbol-Views/Device-Views/DeviceStatus" - }, - "DeviceStatus_old": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Device-Views/DeviceStatus_old" - }, - "Estop": { - "category": "C", - "description": "E-stop description, E-stop description, E-stop description, E-stop description, E-stop description", - "info": "E-stop info, E-stop info, E-stop info, E-stop info, E-stop info, E-stop info, E-stop info", - "path": "Symbol-Views/Equipment-Views/Estop" - }, - "GoodsLift": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/GoodsLift" - }, - "JAM": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/JAM" - }, - "Light_Curtain": { - "category": "B", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/Light_Curtain" - }, - "Main_Panel": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/Main_Panel" - }, - "Network": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/Network" - }, - "Pointer": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/Pointer" - }, - "PressureSwitch": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/PressureSwitch" - }, - "PullChord": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/PullChord" - }, - "PullChord_End": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/PullChord_End" - }, - "PullChord_Line": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/PullChord_Line" - }, - "PullChord_Line_Vertical": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/PullChord_Line_Vertical" - }, - "RFID": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/RFID" - }, - "Robot": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/Robot" - }, - "SLAMs": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/SLAMs" - }, - "SafetyGate": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/SafetyGate" - }, - "Stacker_Destacker": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/Stacker_Destacker" - }, - "Status": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/Status" - }, - "StatusNonPowered": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/StatusNonPowered" - }, - "StatusNonPowered_NS": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/StatusNonPowered_NS" - }, - "Status_NS": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/Status_NS" - }, - "THEA": { - "category": "", - "description": "", - "info": "", - "path": "Symbol-Views/Equipment-Views/THEA" - } - }, - "SymbolLibrary": { - "Symbol-Views/Device-Views/DeviceStatus": { - "category": "Device Status", - "description": "The Area status symbol, displaying different colors for running state\n\n", - "info": "### Device Status\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- width: 0.0146, height: 0.0565\n\n### Symbol Category\nDevice Status ", - "name": "DeviceStatus" - }, - "Symbol-Views/Device-Views/DeviceStatus_old": { - "category": "Not in use", - "description": "Deprecated", - "info": "### Symbol Information \n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- width: 0.0146, height: 0.0565\n\n### Symbol Category\nNot In use", - "name": "DeviceStatus_old" - }, - "Symbol-Views/Device-Views/Estop": { - "category": "Safety", - "description": "Standard symbol for an e-stop device in the field or on the control cabinet Initiated by a human action and is intended to shut down equipment in the case of an emergency. The emergency stop device is a manual control device. It is the method of initiating the emergency stop function.", - "info": "### Symbol Information \n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.0104, Height: 0.0185\n\n### Symbol Category\nSafety", - "name": "Estop" - }, - "Symbol-Views/Equipment-Views/ARSAW": { - "category": "Machine", - "description": "Amazon Robotics Semi Automated Workstation or ARSAW is a machine used in Amazon Robotics (AR) sortable buildings for the primary purpose of picking inventory items from the AR fields. An associate would pick items assigned to them on a VDU screen which would be scanned and transferred to pre-scanned totes stacked in a row along a flow rack. There are 5 totes per flow rack, once each tote is filled, it can be pushed through to the take away conveyor to be lifted by a four position carriage system. The tote would be then transferred across to a trunk conveyor for subsequent order consolidation.", - "info": "### ARSAW\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nMachine ", - "name": "ARSAW" - }, - "Symbol-Views/Equipment-Views/AUS": { - "category": "Machine", - "description": "Amazon Universal Sorter (AUS); a modular high-density matrix sorter which includes integrated container management. The AUS is wholly owned by Amazon and developed using commodity components which are already being maintained by RME", - "info": "### AUS\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nMachine ", - "name": "AUS" - }, - "Symbol-Views/Equipment-Views/Camera": { - "category": "Field Device", - "description": "Generic Camera Symbol for any Cameras used in the process flow of product", - "info": "### Camera\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nField Device", - "name": "Camera" - }, - "Symbol-Views/Equipment-Views/CognexCamera": { - "category": "Device Status", - "description": "OR ELSE", - "info": "DELETE THIS ", - "name": "" - }, - "Symbol-Views/Equipment-Views/ControlCabinet": { - "category": "Control", - "description": "Generic Control Cabinet for any panel used in the design ", - "info": "### Control Cabinet\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Remote control cabinets must use the following dimensions for smaller gateways width: 0.0104, height: 0.0185.\n- For larger remote panels width:0.013, height: 0.0185.\n\n### Symbol Category\nControl", - "name": "ControlCabinet" - }, - "Symbol-Views/Equipment-Views/Estop": { - "category": "Safety", - "description": "Standard symbol for an e-stop device in the field or on the control cabinet Initiated by a human action and is intended to shut down equipment in the case of an emergency. The emergency stop device is a manual control device. It is the method of initiating the emergency stop function..", - "info": "### E-STOP\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.0104, Height: 0.0185\n\n### Symbol Category\nSafety", - "name": "Estop" - }, - "Symbol-Views/Equipment-Views/GoodsLift": { - "category": "Machine", - "description": "Goods lifts or \"vertical reciprocating conveyors\" (VRCs) are systems which functionality is to move inventory or non-inventory between floor levels. In TNS buildings, they are a key player in the building throughput, as they are intended and used to move inventory to fill or empty the TNS pick tower. \n\nIn ARS buildings, they are used to move non-inventory (spares), non-conveyable items or even inventory as a contingency to conveyor capacity in the event of equipment failure. ", - "info": "### Goodslift\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nMachine ", - "name": "GoodsLift" - }, - "Symbol-Views/Equipment-Views/JAM": { - "category": "Device Status", - "description": "Jam indicator that initiate downtime events. ", - "info": "### Jam\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- width: 0.0146, height: 0.0565\n\n### Symbol Category\nDevice Status", - "name": "JAM" - }, - "Symbol-Views/Equipment-Views/Light_Curtain": { - "category": "Safety", - "description": "A safety device used when light beams are obstructed and the outputs turn off, which signals a stop to the associated hazardous movement(s).", - "info": "### Light Curtain\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.0104, Height: 0.0185\n\n### Symbol Category\nSafety", - "name": "Light_Curtain" - }, - "Symbol-Views/Equipment-Views/Main_Panel": { - "category": "Control", - "description": "Generic Control Cabinet for any panel used in the design ", - "info": "### Panel\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- width:0.013, height: 0.0185.\n\n### Symbol Category\nControl", - "name": "Main_Panel" - }, - "Symbol-Views/Equipment-Views/Network": { - "category": "Network", - "description": "Symbol used to display a Network Panel used in industrial control environments or as a remote network panel for other devices that need to be in the same network. ", - "info": "### Camera\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nField Device", - "name": "Network" - }, - "Symbol-Views/Equipment-Views/Pointer": { - "category": "Device Status", - "description": "The Pointer status symbol, displaying different colors for running state.\n\n", - "info": "### Pointer\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- width: 0.0146, height: 0.0565\n\n### Symbol Category\nDevice Status ", - "name": "Pointer" - }, - "Symbol-Views/Equipment-Views/PressureSwitch": { - "category": "Field Device", - "description": "Symbol for Pressure switches in the field, controlling the activation and deactivation of pumps in fluid systems when pressure thresholds are reached. They are also used in process control systems for maintaining steady pneumatic or mechanical pressure.", - "info": "### Pressure Switch\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- width:0.013, height: 0.0185.\n\n### Symbol Category\nField Device", - "name": "PressureSwitch" - }, - "Symbol-Views/Equipment-Views/PullChord": { - "category": "Safety", - "description": "Cable-pull safety rope switches allow operators to initiate an E-stop from any point along the installed cable length, providing protection for exposed conveyors or machines, or wherever equipment cannot be protected by guards.", - "info": "### Pullchord\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nSafety", - "name": "PullChord" - }, - "Symbol-Views/Equipment-Views/PullChord_End": { - "category": "Safety", - "description": "Cable-pull safety rope switches allow operators to initiate an E-stop from any point along the installed cable length, providing protection for exposed conveyors or machines, or wherever equipment cannot be protected by guards.", - "info": "### Pull Chord - END\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nMachine ", - "name": "PullChord_End" - }, - "Symbol-Views/Equipment-Views/PullChord_Line": { - "category": "Safety", - "description": "Cable-pull safety rope switches allow operators to initiate an E-stop from any point along the installed cable length, providing protection for exposed conveyors or machines, or wherever equipment cannot be protected by guards.", - "info": "### Pullchord Line\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nSafety", - "name": "PullChord_Line" - }, - "Symbol-Views/Equipment-Views/PullChord_Line_Vertical": { - "category": "Safety", - "description": "Cable-pull safety rope switches allow operators to initiate an E-stop from any point along the installed cable length, providing protection for exposed conveyors or machines, or wherever equipment cannot be protected by guards.", - "info": "\n### Pullchord\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nSafety", - "name": "PullChord_Line_Vertical" - }, - "Symbol-Views/Equipment-Views/RFID": { - "category": "Field Device", - "description": "Symbols for RFID devices. There is a device that reads information contained in a wireless device or “tag” from a distance without making any physical contact or requiring a line of sight.", - "info": "###RFID \n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- width: 0.0146, height: 0.0565\n\n### Symbol Category\nField Device", - "name": "RFID" - }, - "Symbol-Views/Equipment-Views/Robot": { - "category": "Machine", - "description": "Symbol for Robots used in FC\u0027s. One example would be the RWC4. Robotic Work Cell 4 (RWC4) is the Robotic Tote Palletizer seen in IXDs and FCs which is a robotic arm that eliminates the manual tote stacking process at the end of Transship lanes by physically and virtually palletizing totes by destination. In addition to the process efficiency gains, a RWC4 improves Amazonian safety by minimizing the bending/twisting motion associated with manual palletizing. ", - "info": "###Robot\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nMachine ", - "name": "Robot" - }, - "Symbol-Views/Equipment-Views/SLAMs": { - "category": "Machine", - "description": "Symbol used for SLAMs in FC\u0027s. SLAM (Scan/Label/Apply/Manifest) line is to collect package data including weight, dimensions, and barcode data, transmit this data to the Warehouse Management System (WMS) which performs various pre-ship validations to ensure the package has the correct items, labeling, and packaging. If all validations pass, a shipping label is printed and applied to the package via a Label Print and Apply unit (LPA), also called the printer assembly. Finally, the SPOO and shipping labels are scanned to confirm that the correct shipping label has been applied to the package. If the package fails any portion of the verification process it will be rejected at the kick-out line. ", - "info": "### SLAM \n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nMachine ", - "name": "SLAMs" - }, - "Symbol-Views/Equipment-Views/SafetyGate": { - "category": "Safety", - "description": "Access gate symbol that provides protection from falling regardless of the position of the doors.", - "info": "### Safety Gate\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nSafety", - "name": "SafetyGate" - }, - "Symbol-Views/Equipment-Views/Stacker_Destacker": { - "category": "", - "description": "", - "info": "### Tote Stacker \u0026 Destacker\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nMachine ", - "name": "Stacker_Destacker" - }, - "Symbol-Views/Equipment-Views/Status": { - "category": "Equipment Status", - "description": "", - "info": "### Status\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- width: 0.0146, height: 0.0565\n\n### Symbol Category\nEquipment Status ", - "name": "Status" - }, - "Symbol-Views/Equipment-Views/StatusNonPowered": { - "category": "Equipment Status", - "description": "Test ", - "info": "### Status Non Powered\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- width: 0.0146, height: 0.0565\n\n### Symbol Category\nEquipment Status ", - "name": "StatusNonPowered" - }, - "Symbol-Views/Equipment-Views/StatusNonPowered_NS": { - "category": "Equipment Status", - "description": "", - "info": "### Status Non Powered North and South\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- width: 0.0146, height: 0.0565\n\n### Symbol Category\nEquipment Status ", - "name": "StatusNonPowered_NS" - }, - "Symbol-Views/Equipment-Views/Status_NS": { - "category": "Equipment Status", - "description": "", - "info": "### Status North and South \n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- width: 0.0146, height: 0.0565\n\n### Symbol Category\nEquipment Status ", - "name": "Status_NS" - }, - "Symbol-Views/Equipment-Views/THEA": { - "category": "Machine", - "description": "THEA ", - "info": "### THEA\n\nDate Created: \n- 12/20/21\n\nCreated By: \n- MAP Team\n\nDimensions: \n- Width: 0.026, height :0.0463\n\n### Symbol Category\nMachine ", - "name": "THEA" - } - } - }, - "propConfig": { - "custom.key": { - "persistent": true - }, - "params.CategoryList": { - "binding": { - "config": { - "bidirectional": true, - "path": "/root/Dashboard.props.widgets[0].viewParams.Categories" - }, - "type": "property" - }, - "paramDirection": "inout", - "persistent": true - }, - "params.Dataset": { - "binding": { - "config": { - "path": "/root/Dashboard.props.widgets[3].viewParams.Dataset" - }, - "type": "property" - } - }, - "params.FilteredViews": { - "binding": { - "config": { - "bidirectional": true, - "path": "/root/Dashboard.props.widgets[3].viewParams.FilteredViews" - }, - "type": "property" - } - }, - "params.SelectedCategory": { - "paramDirection": "input", - "persistent": true - }, - "params.SelectedDescription": { - "binding": { - "config": { - "bidirectional": true, - "path": "/root/Dashboard.props.widgets[1].viewParams.Description" - }, - "type": "property" - }, - "paramDirection": "inout", - "persistent": true - }, - "params.SelectedInfo": { - "binding": { - "config": { - "bidirectional": true, - "path": "/root/Dashboard.props.widgets[2].viewParams.Information" - }, - "type": "property" - }, - "paramDirection": "inout", - "persistent": true - }, - "params.SelectedPath": { - "paramDirection": "input", - "persistent": true - }, - "params.SelectedRow": { - "onChange": { - "enabled": null, - "script": "\tfrom SymbolLibrary import search_items\n\tsystem.perspective.print(currentValue.value)\n\titems \u003d [{\t\"instanceStyle\": {\n\t\t\t\t\"classes\": \"\"\n\t\t\t\t\t},\n\t\t\t\t\t\"instancePosition\": {},\n\t\t\t\t\t\"forceRunning\": 3,\n\t\t\t\t\t\"forceFault\": None,\n\t\t\t\t\"Path\": item} for item in search_items(self.params.SymbolLibrary,currentValue.value)]\n\tsystem.perspective.print(items)\n\tself.params.FilteredViews \u003d items\n\t\n\t" - }, - "paramDirection": "inout", - "persistent": true - }, - "params.SymbolDetails": { - "binding": { - "config": { - "path": "" - }, - "enabled": false, - "transforms": [ - { - "code": "\tfrom SymbolLibrary import library_items\n\treturn library_items", - "type": "script" - } - ], - "type": "property" - }, - "paramDirection": "inout", - "persistent": true - }, - "params.SymbolLibrary": { - "binding": { - "config": { - "path": "/root/Dashboard.props.widgets[3].viewParams.SymbolLibrary" - }, - "type": "property" - }, - "paramDirection": "inout", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 786, - "width": 1196 - } - }, - "root": { - "children": [ - { - "events": { - "dom": { - "onDoubleClick": { - "config": { - "draggable": true, - "id": "editItem", - "modal": false, - "overlayDismiss": false, - "resizable": true, - "showCloseIcon": true, - "type": "open", - "viewParams": { - "btnTextPrimary": "Submit Changes", - "btnTextSecondary": "", - "editField1": "{view.params.SelectedCategory}", - "editField2": "{view.params.SelectedInfo}", - "editField3": "{view.params.SelectedDescription}", - "field1Description": "Category", - "field2Description": "Information", - "field3Description": "Description", - "message": " ", - "path": "{view.params.SelectedPath}", - "showCloseBtn": "False", - "title": "Update Symbol Details" - }, - "viewPath": "PopUp-Views/EditItem", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - } - }, - "meta": { - "name": "Dashboard" - }, - "position": { - "basis": "400px", - "grow": 1 - }, - "propConfig": { - "props.widgets[0].viewParams.Dataset": { - "binding": { - "config": { - "path": "view.params.Dataset" - }, - "type": "property" - } - } - }, - "props": { - "editingToggle": false, - "stretch": { - "rowCount": 5 - }, - "widgets": [ - { - "body": { - "style": { - "classes": "" - } - }, - "header": { - "enabled": true, - "style": { - "classes": "" - }, - "title": "Category" - }, - "isConfigurable": false, - "minSize": { - "columnSpan": 1, - "rowSpan": 1 - }, - "name": "Category", - "position": { - "columnEnd": 3, - "columnStart": 1, - "rowEnd": 3, - "rowStart": 1 - }, - "style": { - "classes": "" - }, - "viewParams": { - "Categories": [ - { - "Category": "ALL" - }, - { - "Category": "Control" - }, - { - "Category": "Device Status" - }, - { - "Category": "Equipment Status" - }, - { - "Category": "Field Device" - }, - { - "Category": "Machine" - }, - { - "Category": "Network" - }, - { - "Category": "Not in use" - }, - { - "Category": "Safety" - } - ], - "SelectedRow": "" - }, - "viewPath": "Symbol-Views/Symbol-Library-Views/Symbol-Filter-View" - }, - { - "body": { - "style": { - "classes": "" - } - }, - "header": { - "enabled": true, - "style": { - "classes": "" - }, - "title": "Symbol Description" - }, - "isConfigurable": false, - "minSize": { - "columnSpan": 1, - "rowSpan": 1 - }, - "name": "Description", - "position": { - "columnEnd": 9, - "columnStart": 3, - "rowEnd": 6, - "rowStart": 4 - }, - "style": { - "classes": "" - }, - "viewParams": { - "Description": "" - }, - "viewPath": "Symbol-Views/Symbol-Library-Views/Selected-Symbol-Description" - }, - { - "body": { - "style": { - "classes": "" - } - }, - "header": { - "enabled": true, - "style": { - "classes": "" - }, - "title": "Symbol Information" - }, - "isConfigurable": false, - "minSize": { - "columnSpan": 1, - "rowSpan": 1 - }, - "name": "Information", - "position": { - "columnEnd": 3, - "columnStart": 1, - "rowEnd": 6, - "rowStart": 3 - }, - "style": { - "classes": "" - }, - "viewParams": { - "Information": "" - }, - "viewPath": "Symbol-Views/Symbol-Library-Views/Symbol-Information-View" - }, - { - "body": { - "style": { - "classes": "" - } - }, - "header": { - "enabled": true, - "style": { - "classes": "" - }, - "title": "Symbol Library - All Available Symbols" - }, - "isConfigurable": false, - "minSize": { - "columnSpan": 1, - "rowSpan": 1 - }, - "name": "Description", - "position": { - "columnEnd": 9, - "columnStart": 3, - "rowEnd": 4, - "rowStart": 1 - }, - "style": { - "classes": "" - }, - "viewParams": { - "Dataset": [ - { - "path": "Symbol-Views/Device-Views/DeviceStatus" - }, - { - "path": "Symbol-Views/Device-Views/DeviceStatus_old" - }, - { - "path": "Symbol-Views/Device-Views/Estop" - }, - { - "path": "Symbol-Views/Equipment-Views/ARSAW" - }, - { - "path": "Symbol-Views/Equipment-Views/AUS" - }, - { - "path": "Symbol-Views/Equipment-Views/Camera" - }, - { - "path": "Symbol-Views/Equipment-Views/ControlCabinet" - }, - { - "path": "Symbol-Views/Equipment-Views/Estop" - }, - { - "path": "Symbol-Views/Equipment-Views/GoodsLift" - }, - { - "path": "Symbol-Views/Equipment-Views/JAM" - }, - { - "path": "Symbol-Views/Equipment-Views/Light_Curtain" - }, - { - "path": "Symbol-Views/Equipment-Views/Main_Panel" - }, - { - "path": "Symbol-Views/Equipment-Views/Network" - }, - { - "path": "Symbol-Views/Equipment-Views/Pointer" - }, - { - "path": "Symbol-Views/Equipment-Views/PressureSwitch" - }, - { - "path": "Symbol-Views/Equipment-Views/PullChord" - }, - { - "path": "Symbol-Views/Equipment-Views/PullChord_End" - }, - { - "path": "Symbol-Views/Equipment-Views/PullChord_Line" - }, - { - "path": "Symbol-Views/Equipment-Views/PullChord_Line_Vertical" - }, - { - "path": "Symbol-Views/Equipment-Views/RFID" - }, - { - "path": "Symbol-Views/Equipment-Views/Robot" - }, - { - "path": "Symbol-Views/Equipment-Views/SLAMs" - }, - { - "path": "Symbol-Views/Equipment-Views/SafetyGate" - }, - { - "path": "Symbol-Views/Equipment-Views/Stacker_Destacker" - }, - { - "path": "Symbol-Views/Equipment-Views/Status" - }, - { - "path": "Symbol-Views/Equipment-Views/StatusNonPowered" - }, - { - "path": "Symbol-Views/Equipment-Views/StatusNonPowered_NS" - }, - { - "path": "Symbol-Views/Equipment-Views/Status_NS" - }, - { - "path": "Symbol-Views/Equipment-Views/THEA" - }, - { - "path": "Symbol-Views/Equipment-Views/Test" - } - ], - "FilteredViews": [ - { - "Path": "Symbol-Views/Equipment-Views/ARSAW", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/AUS", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Camera", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/CognexCamera", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/ControlCabinet", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Device-Views/DeviceStatus", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Device-Views/DeviceStatus_old", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Device-Views/Estop", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Estop", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/GoodsLift", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/JAM", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Light_Curtain", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Main_Panel", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Network", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Pointer", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/PressureSwitch", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/PullChord", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/PullChord_End", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/PullChord_Line", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/PullChord_Line_Vertical", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/RFID", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Robot", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/SLAMs", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/SafetyGate", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Stacker_Destacker", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Status", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/StatusNonPowered", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/StatusNonPowered_NS", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Status_NS", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/THEA", - "forceFault": null, - "forceRunning": 3, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - } - ], - "SelectedValue": "", - "SymbolLibrary": "", - "key": "" - }, - "viewPath": "Symbol-Views/Symbol-Library-Views/Symbol-Icons-View" - } - ] - }, - "type": "ia.display.dashboard" - } - ], - "meta": { - "name": "root" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "UserClickInfo", - "pageScope": true, - "script": "\tfrom pprint import pformat\n\tSymbolPath \u003d payload[\"UserClickPath\"]\n\tsystem.perspective.print(pformat(self.view.params.SymbolLibrary[SymbolPath]))\n\tself.view.params.SelectedInfo \u003d self.view.params.SymbolLibrary[SymbolPath][\u0027info\u0027]\n\tself.view.params.SelectedDescription \u003d self.view.params.SymbolLibrary[SymbolPath][\u0027description\u0027]\n\tself.view.params.SelectedPath \u003d SymbolPath \n\tself.view.params.SelectedCategory \u003d self.view.params.SymbolLibrary[SymbolPath][\u0027category\u0027]\n\tsystem.perspective.print(SymbolPath)\n", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "UserClickCategory", - "pageScope": true, - "script": "\n\tSelectedRow \u003d payload[\"UserClickData\"]\n\tself.view.params.SelectedRow \u003d SelectedRow", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "UserClickRefresh", - "pageScope": true, - "script": "\tfrom SymbolLibrary import list_categories, fetch_library\n\t\n\t#Get all Symbol Views and write them to tags\n\tproject_info \u003d system.perspective.getProjectInfo()\n\tviews \u003d project_info.get(\u0027views\u0027,[])\n\t# - Define criterias\n\tfilter_criterion \u003d \"Symbol-Views\"\n\tfilter_criterion2 \u003d \"Symbol-Library-Views\"\n\tfilter_criterion3 \u003d \"Controller-Views\"\n\tfilter_criterion4 \u003d \"Symbol-Views/Equipment-Views/Test\"\n\t# - Filter views that are not necessary for the symbol library and ensure the correct path\n\tfiltered_views \u003d [\n\t\tview for view in views \n\t\tif filter_criterion in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion2 in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion3 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\tand not filter_criterion4 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\t]\n\t# - Create JSON from the list \n\tjson_structure \u003d []\n\tsymbol_view_list \u003d []\n\tfor view in filtered_views:\n\t\tinstance \u003d {\n\t\t\t\"instanceStyle\": {\n\t\t\t\t\"classes\": \"\"\n\t\t\t},\n\t\t\t\"instancePosition\": {},\n\t\t\t\"Path\": view.get(\u0027path\u0027,\u0027\u0027),\n\t\t\t\"forceRunning\": 3,\n\t\t\t\"forceFault\": None\n\t\t}\n\t\tjson_structure.append(instance)\n\t\tsymbol_view_list.append(view.get(\u0027path\u0027,\u0027\u0027))\n\tjson_structure.sort(key \u003d lambda x:x[\u0027Path\u0027].split(\"/\")[len(x[\u0027Path\u0027].split(\"/\"))-1])\t\n\t# - Encode JSON for igniton variables to populate correctly\n\tjson_result \u003d system.util.jsonEncode(json_structure)\n\tself.view.params.Dataset \u003d filtered_views\n\tself.view.params.FilteredViews \u003d json_structure\n\tsystem.perspective.print(filtered_views)\n\t\n\t# - Get all Symbol Categories from JSON Dictionary\t\n\tremote_json \u003d fetch_library(username\u003dself.session.props.auth.user.userName)\n\tself.view.params.SymbolLibrary \u003d {k: v for k, v in remote_json.items() if k in symbol_view_list}\n\tcategory_data \u003d [{\"Category\": category} for category in list_categories(self.view.params.SymbolLibrary)]\n\tself.view.params.CategoryList \u003d category_data\n\tself.view.params.SelectedRow \u003d \u0027ALL\u0027\n\tself.view.params.SelectedDescription \u003d \"\"\n\tself.view.params.SelectedInfo \u003d \"\"", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/3632e060a65bfddd35694bf00d376e40c0c00ad0e44c4aba6b6e004253206646 b/.resources/8429ef232c42199e85ea750b6f02b4539cc2a82886935406b025c81ef83d7f6e similarity index 100% rename from .resources/3632e060a65bfddd35694bf00d376e40c0c00ad0e44c4aba6b6e004253206646 rename to .resources/8429ef232c42199e85ea750b6f02b4539cc2a82886935406b025c81ef83d7f6e diff --git a/.resources/851f82225012db4f556cbf4fd734f5b8348b53b135539b8ddfd8ff91a7c8cacf b/.resources/851f82225012db4f556cbf4fd734f5b8348b53b135539b8ddfd8ff91a7c8cacf deleted file mode 100644 index fc50d9cbe93a22ca80caa132f165ce1d640c88d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16011 zcma)jWn5I>+O~xfBHf`wO2dG3NQ0EpjmQAfFi1%$44p$GrGS9a-CaXBNaxVq&AZ3{ zIp_DB_kBLRd|_tqJ!|c?*1hhyu4@IoRhGrZB*(mW?;f_ioRli?zvSM%2anMo1E2Pl z$7t@|6IGR$5?6OM+(`+DCmM^p+ZssFDP>qYPD-BZt#h;U7;qRTO$N#)luQw`C?q*>|o~EjFS5VcS2z&B6HXQGY={JgA5MsPT}x@!#wRT^g0G-8KSZr`wDw!LePDk2>e}mfS&IaRujfJF+a3ACv2S6} zS(|#u&Sl^5pFgBlAV;6L{K?(41(VO|tv%7NVi$6s(8PG^A&z?e_Ds1-Dk;yKUGGnkib?fy3Veo8QBxmi_^EF(9u`80kTS@v`FKhKMqyfUIL3-74Z7+o7_IP7t zc=S(9xh>@)osyCI3wkC3@X=(Ynp5_%M^%Y(ulcurIY~+1WV-t@cExxVx)(Zd z<|m9SO;k11r&Ge#KNu3~lX1%A9;=2<9<_eT)HjDIdM>(EBV4LaVU(+oCz~TsMh=(i zDd!$1O~ky`a|lKvCf-51jVyB6=?P@B!}oCYFa_*2M0^3+F-$C5{7%U(lx6A@c0}cn zr{Aa+POMc{>+q?}{xIYX^OV!E)eV()v2#F7jAn)2v$(=Z&`)HdGUXk^B61K9WG<+Z zsBA2)QI5%|&!ASI`P)-Lruz5qZwTnNRu3e$FgFLf zAixJ&XHWhu!t^|UnxmCuCvvFAxx0tOxvPie43S{k7`1le<{r#k9_q+8^LhKx6W94g z{AMF8b{tjr5@k`Nw=bSV#BB<`Ll(VE>zn^BG;Ao4AZX`Hcu9i$B%*O-AG*L1v%|uk zulm(5{^1?(Si{0PA=JmfocZaK!cFZk#l%`eGy;uq&zzjRacJzV-=gwc(ti)^O%GVY zOlWe>p6oQuM1LDAVj16Qri`+Mg+2b)twX;?d|a)otpHAPM2@Eu@);%5*ijEJtfvYZ z2)+9e8o70iMLWR@Z5SL%y^;2s_g6M9%c{FnbHbMrdXlZu731Rz{=8ARQm#=8*$#f{ zA=?|!or_d7sn_g{Mf0!|oPA-$I?XEUA)aC(IBVt>DbwitHG1HySxOEx`^NA%k3Q*| zKx@oaAfehdngeD@#b`##R7c70N*VcP{;(JuSjV^CZ&W%$+bPC;!2M+G(M(!}nvVWP z&!6!9ro8$>^n-Ez>|9d62;LUE>hyx@r-vuS9Yv6k z3@YC7ul-i&F%Ygye$p>H+E4?PrjPyXl@ZQ`{O0LN$;28jpin8NX0q$pb0Hxc5FXbx zgVdWEi{Y~ytHd|^I*`Nyj{6hz=V177_HeQ!|FC^nsiwFz-k|MHwDT^R-?3a#Pkq6A ze%RUVo>n;CqlQYYUCBmD#>#r={$l7DvnU%$`>!HU5>DVscM4SnIdGt5*VPyqf2y z5`Fh?hv@c?jFU;l)|OA6K+Yu^ODjiRxIA1Qcqi@+aLh1Wz4@KFsGhYJylh9RMIMm~ zsyDJ1dHuQYi9$qILCYI~x2tDW@wTxK=2Q694Krwo$DWpsj%{*=8n@jqJUF(nu(ciE zH?`MiC&2v`Yc?-9pi}ei*_G&kDFGWRE&Af`~OtMrU`j1J{ z&8mD2c}!Z*+gP!*J^&rtEk`r>Bh)MEGFec^D4J|CHDMeN3GCCS)Z=Qq!zvE76P(=T>{zeO?Sl!zv z?LTzmdUj0yLge%5gzWp%9kH3uM$8X7#6(A2b!iz>@W4cl(Yz^gt%xUcS!~nC8~0N8 z7tGwQO?E36Y%|D0cu~e@x|COld~2M@!;^ez2r5mMP3`XKF+JU$1b=8lC*%1T`IK7t z4`&VbysWLYry>)#fA2lV{JD)XcW*f5igK18#c_DnUMWJkt=4%bO7^*@x^3f)Gtt5R zVyo$&B4hs{8`s^6ss+-La9Wq)^7o>v=X^Y{Eyd%B%Sx>^2OseH!WM&ooW2G+h&Fq`BrIXentI~jaV5XG-1n02O)HfD8JR@O;DR?qztziG~4>CDL1 z!iR|L$ZE%M!Ur>%-U8o62^?#J2*D9TV+Y>`g>f3+;qa}H5E3H%u_@RSPqrqkJOdMJ zT6f4cUML{gOFEO*vN>j68m%yu1hms}^<>INucW%~4kaDg)$UXz@1tuZ*eAX?n{`PG zr4rJ7qoAPF%S5k$cn#T;dsp4S8;5S>B72Ijyn09wyp z-BCa9jQ8D*4w90!b|WhZa(jKTY5D0>ZRkp*8X|H4L5+0X-R$9LRNo3dFG@GYT`_Q( zrQd73Ysk~9RMyPbr8n}vDOXGcOZ$26)t{N=KV)qMt0eQktK9liY@##$o-Roaw8mYs z1`Fl1t3Mg%m2i%WQ)$}acisPoVd(@E{F$mTSNSu1#c(_?h2Dtf-~kO2B7 zh_HmfQPh7v9TrOJKv6X8GUE`SYvT2s-~RQqRAipQw50#jcex=625tn0I01h!$?#}9 zbV|*-f{9olD+u`Ix33!`*|{oxYSXr!Q}Z=Wxxxo+1efFw44;-ly6}k_9N82R8w_z0 zUi-~YoJN-t%~LJ%qgh$!kFwUSWgfJ^k7LpWYSuJy0qZ=&PG3N#NBKPb%08|5S8 z`b0v=V~WSZ5!y`Tu-wbAa*WTkq6jHej=n%zo%dlR!ZBtr=QLq&Q}|N?iwA)jO}%V2 z=?ER_Pa`O0>D-Ho!gpKrBPo0Mkyv0Bf}um}?v$uMln<{@oTZrTLFx{^YpvI=`SeTI zXiathCckoS_}&wrMr52GWTELRv#maMHy3NA=an-sF%izB`K9q*C9tPbr{To0Jq^C} z-^|KuY2A%M+?HR@&u=$#3x9`vIsceZRi#bswt`1g%@UwpX+1f-siNjJSLeoj8bJLS z;Xm(nZ-o%7AA~S;J>Th|up9kI+2gactWjR|B2;F9_ifw@j61p*$9FABb`3iD6*?=& z1WYR|WRs2=#51qktSn~}xC+p0TPx?ia!tDX(+sQZjmPu9jdp268@+DS*H>w?0Sgl1 zT5~_gc35JryFTn8_kZ?Sv?(Z&3t8B3`9=tK{cJ+M8jFN|-O6^B3W}OjA&`jx+1bu? zWg(>iRBFqtdTU!CL1m#e%<^>+CCRn@K`01(zM4&UU4v)?OoZ9 zOVy6q3p0sZT0&$ zr!)WZ^U3DVou)7MAC8jK&e#hCYzg-#3#f4X9I^DYn++HLv z5w~DrxxJ?Bkld3^S}WPT4>Tt)E^5LEX8v$y z;0P}^ix3O9q+!MRVZ>v^A(aJEUvS}N$7?@r6i7~}#vvnFfQoxIPm6~gNkE2>9ebEA*axXXYM_)yN0vy1BoiS;nVoMp&1SuukG;>$}c1=bRCx`1Sf z$G|0d8db!FV*Pv4_&1r68oj)h#&nNRp-2%S!~CC+AqUERtuiieBI(=93!>m+R6qb5 zx}12DJ4!Mx^8P#GSoQ8^TGLAlxCreou+>(${R)lsnc))35|G0Bvo^mTL-rPV*HBkn zCJ2#ZuPmEfV^b2Z0WaeMUlk?oq7yq>d?D=85qZj8Kp8{?-pSW4mYA0iGw-LoSPJ3b zp_)vW4q4eMY>W#I4(_>R)?xfmQV=B&OxU~#?uex=mdH|?vsG!ZoRjmOb(&ymJa6a7 zl#QT1?ByOngi{Hr_crgK*E|=8KbeiO*XyN~Cg0P&-EYM~%8FgWg)dg3Ym_}fO%{6K;c`@5VO{E| zpf9u?@2h-3NraR z?{#Hkyab~qR^^La3=*cRqC)QsvgwIq+w_SH^qj7+A#waU+I4$#HKw6c|G8XUQ}g%h zuf6Y9>dbWBy@NC4wdFUpzZaTmZ@xC|iL-Erq%65`4hhY>?9MP@5wk|R9j$h)_9dMp zh->%S>UC*Kr&v4kGgc18$$=(PrIO2;=lEq#lOrA27!(t}OE^4$=sm`v&Xb4AL{R6a zzo#0GhEqN{n741mhOVW!bTg)Tq)RY%qH89bqQ_q1z7*wS$1=q`9Q~z+Y`nW_eC0rI z(f?9Xw>;pvmv*J!XZb!5x+6i7 zCEcVpUHDK{8h3FJE&A>66tSS#_OTaR1U_cd#2kisja>>No|m7Tu;mQ=zmMnXWK4&w zGaXG?6bJ+V&ccx9R&kqEnT6hmsngsP<>c3D#PYwCF zKKP?X%=pJ)(kGjMXH>(AT8lS)Q&DP&*Ozl1KlgVqjX_5w&&v>j1aKN^L5~Qr+bUf? zsi|5QJGbK@*;lh1aRkLe-U)RRd6ga)(377I4~sUd*!thlyqQ|{N#u7(zcovnWM?O@ z2*dIwtGMLb!Kea&68Q$Erkt`Hw6pa&miu9_4*M# zJ^i=Ym`14o0%`gCvadGc2{F>gwjVwj1FL=rWP%nc=#TF&DHn;#PZcMJek}5?;!sBP zm%k@$G1a_TO|lz}Fs!sq(RI(e1yV=#ygY8`ikv|JhL&H`8*y>*@rGiK?dP|AJ!JLh z@my0;A3@7Thw)0bo51eM)oYrsR5%DhX0U388M8hLa2Gd!W)(UJ#B9q%VK-=Qgi^is z+iv6LuH@j@PSd6jLLjlb>my6g1EVfKrCDuHL9?o7`aG0a;aHMR`h?aKSR8fV#fhTo z@2=OxCJq86_xmgg5Qw+bh)UTjNJ*vOYfrg@&~-1NxMp_3P7TDQh9sf`voc~8ce z!|q{)tgoZfFy#HD;5Ku|W6`99(?arCXk6eTg6>Z{5A42F;Rz5^i6x!>N;zSkA7P(kLeubu|O_RvSiNc7V@+aByql`F^+B&=OSVGTCZyhNgD1tS~dYex4c z0!%|Wmf5RJ$WFry^v?g3`PC8{+LqA|NpuW@XdV&3Y<}z%y-qfDZVul!s(Hv&Thr1r zbIFca+BBuo;z(NzK~%FfSIpKd@=jUxAi_w9A$ksGH0};WV46T0ecn1{_8)7^B(KEk z@@P+-GZhOCshF-LJClk(W|VaTxCpY9ROa+4ZJ{-j()gEEBcZrk6WB#3YQVD-7Guy3ARLyUuLK- zseh}xbraTb?VWw~MM1;iHev!TB=n^cLMCdzU*AJGyDU#)*X^84r_Q6C=ZYrp*N-ni zczw*glGVXbZGT&L?D-kin_8*f&&!t-878$D=I$O9n!@>RcjF}V__Ie&jFvivSBW!_ zmdi-&`!{eZ8-Bj=OcXFLRzIidhbbRKdpe}%#EzUC0CC>GwKa_2`!;!wHYDVofkB1| zqGw_^a$waaQYVB@2Qm;SG6z)UaJ}6PMwMsOY-mXhBNVzt2zpZu@=2Bxv1~oy5rMgm zzWJ_iPD#j6XB4+hLzi5fu7O#bHUy|F)_Zh@8;C-)+t4DaHDOZ znlFcYr6aqx*pSv;nn+dGs~5;^whvtExhD7J!9#*N9*xk%&kHrP!pzl8u`g@5Prnp1~6^iDF zxE_F*mV7c4W5s8KM78ZFjQ6Jqy{e=VI72vAT8uE14>q4(gf|(0$=dnJRGrA`iJ&sH)fWXio?_+Ti0^#vt-o6hEXs|d%#bX#n^ZWZ zK>Cv8>zL^h(~#aIJ{5vjQKNW#u(mMU=|nyt+$M^+SHw95(WQ(riqpAe1K!TD4^;nY zLsdy}V+!4lV(W0=brMA8XNo>Dv`6xT-*(=CmXYUA%>>HPKrF6h!xwUS4Bk6|hd<*D zqk!DtZlrE#C9z@icP@|CtDcUC=Y?C5CYSycwu6`YmPT>3QtaUrc6G(&Pc2-#{QCT2 zdY-SjMt(kH6uSsotvA!FIdZ)o?7|1bMLa3izU_dW<{l@yah14K))rzMTY+=-Yz3CwXq0rl21?QQXL+7MFik^2kfGS>n!R=tduaVaU8xpLJCO9Mh_}mE2<^MXDR6~D`r&$?U1enGV)?Wep&0%}H zTA7;mSs-ci(u2Wj6CPA#XO{EO&I2Fm>FPpesvMXhu;AD%>I!!N6xozn7yze;c^i5n zf2n0#G8O_T2ddIbH>h(hjuQY-nHnB_&UX^4AEp~TYcD6=Pq&Ab3Fb(a58?cv<>w;~ zEgDq-oG_ZMsj1mLS!%BFwk!m#O?UYL01#?>)4rFXz!lkAW`9fl{A^s$P9wJ$(P33s zpVf$p`c90vba4r8RpeD1*D`H+zUv3MtykR#q}*nq;V~Y7`3SV5wii7_N>Q&0>$;qF z^laYSh|O9>kI&`o{(MRqI3%RBn|6G7Sd}XAy<9k!pBwuNpSKazBFssAc5$<{E?c*%VkcZ;tRJ4(b^+;d z*^Ye@u-Fa~kEOoSOTT~Dz-X$y+kJ0-a@=0Wd;^aImf_TlEXY{jv@4|T6x^}NaJZ1m zjJ)q4t<$1!I&+reiB6uR4Nb=+R9nBlr*+L0ax_B7TrV+}Tk3~>6a zhcvjc7v^ND1}jXr)E#zPCN{X5Tm7+@6vd%AX4RA!WJlJF%cxT%<3&p2?BhZoLeVit1{6fi0Q-r-rH%SBW|C zWFR+OLh~y?InSk`-eFe?lPrqUvUz&JqO+bTbl^bD49KZ2+*TJQ#oV_pqM|@s>%^j4I=-$_%S4k~DsyO+~N}VzyzxV-L`- z&Gzxl=cTPoT&+Z_=pN1A$Dr|@Ue2%`{2eL)=A!mGH|`U?Y{BBlF{LYB9{eHc zMEzl|#>vVGvv_sYtbCz>y0U&@I0f{c9fqpExPL8WEm-c85#n66d$7|*$FAGYeK~UP5I?+CqOHgClfpwk2$W@e%GMJ*fmnT3z4ViqTBeK zt(cfDPv`5!?NroAD-$}1m1Q^Iz-$IJiB=yr)s(g`QzF(_jTUoXY76={^6j&BgK_KQ zK6fRdDjwS_?KEC2EG#FXi-1HPi>TEpv*)voO6PyxGTOksNJ(c2a)~p>J8|z1S(`x1vxoySpr@Z)@(BOsq`5Y)Z)rbh6t4asW}^;^R{-% z+4*vW)us_tYu~rx8*Z9_NC-Mni^PXoGR|;{gaFC>b&MWV$oyu}bTa3;x$Ms@& z7Xz=nPk^c_zo3VEKsdw4gluQ%Spmk@@?2zJEH6+@Fsg`NWZFLL`MUFy9ltz)jr&S5 z>6papdinWQBS9y#$I}tHxX5VSNk>hxEtq#ODMBGE=kwWae$Y^{Zj89Pw#g$-=n6s; z=o7KBw|o%$b+jBIW~;Obtl_-AdXTP(-p_#TLyRV0D;vy`I8hkfH;YCp<~Pw zS&iNL*snCsV{N+1D^>JxRrx89^PmI zL&!Tfa1!HUDPARi(#Kd;O5#;QTY~ipdqCOPV0J{)@ zeIyt9JKM==c~+MN?eRcfamL8mgV*0jzv{v4lw`w;KYF-53Z8x~;5BlQ$?=-8`1|+Q z9F&{OMhx+h0;23i%cqM0ua{uk*G;i3TAM~f>CH5PTfJS*-i?ps>~V0xjbvR-P+I3l z{-o8U_E^agp`^umRn&oTaGbVqX$a4klj8I$F7#9oe;&i`qXvFSA9O-2&&3u$P0;fA z3$P1lSOA%BEb8MJm+IL}vig8r*tN)(Pr`i3$8+;n_NPWijL9(F?U`z|%A}B!Ct{X( zS|G;~eu2@jc4X$TK&vI_{n7H160Sm z`8Zx}ockZR3>dKism-i5XNx&H&Vd8hLIzFMRza=u9d>eLal$p$+b2%6+PBz$aAf$a z&_DLiXjS6JfD9Qb7+5@!lpK9aGVKJHgxQJRU^8_fZAM3u&4cpoVPu12|h?h zqThD__f`N!1JTpzrivjZN&XmdNEHLR@1Zs)jNf*KzdY-@kJhrGcIdHG4;s(M!52ie zTbb{~_~(;~^`;gjbjmGbofnGg&f9ErLJzGe?x>%(J1o9<>)}3SCLpnD^wkC;K=Q;E zjmE{x)qcHiEX1h4h#Gkjzy<2mMl{K18nm_k;rg&r81venBGI04N_zJhm0)IEWaCGe zy1stiR!K_CkL-c-G6FG^a)4JI7SvyhIDAc2eOqA>{rOjC80CI_Ss70*<+NOiJ{^E- zs#W?qf1K8_oiZlNU@UuLOVJ|Xd=;F8oWkKyVWFlacn8pOEZCtF9d8i}x4$jYqQg1Q zS0Mf>C8bN^KdNk8d?2ExGj`oIfz-&v=QH#Br~KN=A~6mm?+OkJl;cWw*qatBQdGtr zuaM&zls2#}$Eq8|n3?XuZ>#IZO!ROKbLH+{`UAp})|Bh-=ukZN=v?gU~tsdybh=fRT=DF_yj zA1rOsQuwzDO$^hJ^ruC0D=Cr4GK15@uX6m1A02ckC%hz>yHeNms8(jPH=wFt4ov{6 zP*ng9;5U4X{hXz8{tPC}yMXrV_lKvkASR$@rK~G8Px?7YLKS!Z!)u_sPMQU2?N~ZG z`WE1B=^hpa)pn38Z+*XNjSw-H;KdK(vp#<0w(I8r-Kvl1ik9p+U!wgM-y0sI(r_t@p$YQS=g_aUYX9jnf7|2EMt}`X`X9@L519;J8vV{kf}h+Sy_a z=lLWmLE6XFcRV8Vj4?w5PCzz8-G%`~CQO$!sAam^s?hqzIoksOVrE=BGfMg@`?Vo6 zSipb@>rkkMi`aE2N-5Vm+W#+fp```CQB8{pfNOx6HL7rD`*yw8=>eKJ4rEt@=>_4>QYQ(BtKvnCwrn~Z0)E60o)^l8s zldx4Fb^7>Rf*SlGW?OWKMlVDeQAuBpdVFH$_=~X6p%c;G$Ur?ER$Sh&R8P5w&n{1h6a9NElG zyEgX(sQ|WXmv58=`UA0IP!2X7U;;z}b!yq0W1gf(Q|^a%UY}CJ^%rPjwjABZR1F-{ zTj3%w;f0Otl}VD0z(V7TiaPNM4PJ7Y%4IyCRWB?VHeyyo`m59D_-$dFwfK|Evyj5N z>!`=tnLl+_JVJ~=30-FW=tY-arK*n?y!MZDOBubuq6us86CLpw=d4NLE$r=v{p8qL zRAYoNc#Q-BGKAHV#;ZO+D1h;A!UxEZ4Lm8bF(#|+_(*hV5i*#Hh z$E$(4SbVUt)6^Db9!0@`9I=jsbEHvWozJ5=#t(Mzu33j)1WvH6S5cCgk+XVRz+3iY zN8-Iu@s8GpA7f=|u0I7F!3ZqWIyXq58pwK=L@mE6yvF2=5{o(sl!`!=m<*wdM_1n| zBblw+gNcgmx&Ax`VB_mu*lEp`z7t;%G5Ec-{EFN-!{LIlF&-}&To5zyoxD(oRjV8y zu`Mm;nn}Q#q!wDDofhMIoL@YBkUDxIER6029yImF=Cp1x9Jo(3u*b2!f994Q>RbD2WHuUSb zL^6X)v8nKs>kNAFOW@h$5MFrRkp1Ft%fT9IX z3U4_l-nD~-W$vd zfGHUpZ5IC_2pS2x?rFSMP?|!tfh+oy${z04I)=z0dp-jwIuu;&HJFWUNLlbyttkJy zyMzE=^P;76AwT)>RvGL7* ziVp8666p`-<`R?)HijBTcPFeIi`^bXyxObC<)~|v2XrO!A=~W+h|D8Xnr0#P*2ded zMoZP>gXK2OhcpwKoB6x?f}T(N3*r~RM^Auf`e1d{e|L*|)wIATSOWrX0p!S*Zp8?6gpSlMPBRS+Cxf}gY)(6s z%ghf^wrOdK0xu714?R}!hfFppmF%cvvQbZ*MfL?%4UL}-LL|6q zqQItlFR|+rnR3MmB&g+3ShX)fA;neU-6e-OEXG^{@ko$gv^nTIrc<6lt)}-8Nkma{ zgd#Z!uGihZL-2`e>{>+soE6 z_cL1*z?R!1zf^|m$MA16rrgAs|Oe8^CN zohyIO2g9mgySVgEffBn+_|L1IsrR+G!dn7cR5Qd3`s9L69yQ4A=-kdQjne#4-`eIj zM%WpLyep$8C|V`rrC}^iTE6;tjz;(qKRA8S?%PXZcz*v(#M8W1Z8pA(Pcm)K*3$XK z1-I5tMP5P#9RMbLa9(*k2BV^jw}^G-ahffZs?nZIi*b4(?#ULEByL*MeCXFeSTG$? z;Sh;ALvW>X7NBAqAto#{{@hFJ{zapM{E%cj&)WR`b~(4LG`scyUh*DHk?>iX6QC`+ zq{t;_r^sUwF0ALB(o4;?uF@|6%hQ^`Ip(y)d2n*K-y6=bl`N|=^6`39i_eUQ(%F7f5-}(442tEyy1Z&_M-+IuZ?|h*VT20l}CQUsX$;UQTQXM`;h-gu*c<5sZLL@y%bE zA`^|@Qv<4U0HM3+05pmZfV>d1Mjl1vtiqFMv`>Zp!>}e?^|RT-J*!-zOukb*;3>nkm5}c-Wt1B9i#7#a2JC z_W?7}F~ESzFK@^=m~>&Ej8AeeMYv>bgodkfVtd_cTv&H_7|Zp`u!Yhs=FeAYG+fub z?od8|Yg?0BxIO3IRM|py1}qsJ+Fr#Kb-ep?vX?4iS5ekeC4D4Y7R9*ba30~7p|yeX z94m)YYld`lK5R1iRw0kfw;lB&@~DEYVs9p+)jr-5zQd~w%zx$FRf6y3d6yx&sGtLY+qZVb@YyR0%9gehwfn*1uZUrhY z6#JRg$5QHJf&kV>{!i_E=wES}c&$XifuEv%8_c>5@GZHo0TZQzB}<5Is2Msa1}o%d z9)5uAeE~>YQh-m5H@6cQ*zPMu(aR;UYb$Yc=nlvdSg|SsCP+JpqpuUd`U1c_O2dW; z^z$DL8_*4kUM8gR%X{DiuQvtm%>kM+xX9r)QLOr=p1?n3x6a?Eq)K3vZ61*S9ri~l z;>2?!Bi5RLHP8GmArn|f9@54q&Qszt1yrlo2d=Geb=(+&we+WmS7WtsCs~RBq~5Ad z#wfXG!Zvz~V#E503zY`bS~+KVSE+k(vf&3T6#8FhYhw00_N#Fntr7sy`mqOqW^Lc|MnRGl?`n1 zC_wACrT!iDNn9C3+dW*uETF6YW8g^12m&w%bHKqN1htBKrOYY2XsHVV7+ENwtjg7B zIG=oLCt8B%4XDbC`%#?u!+$sYA7P)fABucn0`hzWwcUy}N(^uhib?h^E=HpZo(}bN z9srt~0h+Ud*zG(6c$OfL0zy33V@WEXXLKSd!n!S04rHEJ3KaQW|8b`O9t#i+zL}#M zkO(9!=_xk{dcpu!GM$wvKc>|WNxlde$N%79E+#Z5N!EgN1#Ex^0lB1rNs7&Ai`?V? zXSS(7gtY*zs_r8e2>pO*%v?CoHzbrg1xyg~4fvk0+^1dkZpvglst=g74-s1KV7-_| zV)J}mW0d_ZkBw5Ep{=R4h7zDA1;4PmTBkq73XVGRSFjuNsQn)|xb_S0u<+WMkgjh{^dRy)B4~z3`+404d305JyhGbS^v6KYIbQLSu)-f`&ibSP^#^{ECiIy znG0~Ar$f7wE^l`M<%7<}*k^%}PcmzOq(ctVZ~(w1ni~eXIX)l9P0U@(r9EpFtEhA! zmv7Mn4(R3SH0l7UIWvHOeCxvqe#3$s90D_)iv1HPuKH(7tOmS({r(--(IMk7u$`}6 zD=C_0^rAH0IxYw`?r@hLk(-sQ+RJV>m$PUb(L_+TvZ?=k;CVG-&Kj7Agba9na4@ru zR*{BnO=(08nNovk#XBroc~|s;$pDLmL9LY|9W0)1z)wZNDnCwYf!*i8WWr0Ys!tj^ zk>BSxavRqT0sby?VRmGT3kNq4}Rdv~s$XMpymMBaC*G$FWHvk>j_PnqxPnAI>iG`#7 zG!@}@)F9*_u~({H+z;3abf0?jELq=iK z5~Cap-+#Q~%%<+>R7gYE3Lv@7IS}#?#xzXc#!v>?q(Ei+0=R#8GXcMFc34 z@pT-6C7QE+%}-I6?&IK5v$1RapcYnTe&R#P9!o2Y{JX6t)jg$K{P3zGVn%cMb|#{-CNG51()Er-qAcZIfX%`Tr}V{B@qF{SEAP zf=Qtt86?0LfC?4heuVNCWPrCwR0&$&5z?lS#q2>I`BCr;1LnB&<}WiWb%jdUjaX4` z#2esO5q0a+s^{cgfZvJx+$@I=5UgC&`$=%ze>)_Uhw_mF0Skn>`B%gQMai@MkR@lY ziz!8Q&45l%A*e$O00gR`v3%{h*@Ysef=s&;x|7kc8F}K(Po^<@K{S39; z0ruJ%Uazs`(j5w%;wb=T=20X)#1Y6wPzNmj`bjY0CkaY{WLN&bd?|1hcp7D4sI`+) z23bM&J|=F@8D&`p1?T_E-ueI@9ANbGOU+SlF7$UU9{ta` zco4Bz@iGs%jfN9Kf!1o*r^I`0*7n?P;44iK1UNUvj|vXAu5~ut!2+U=sBr&f&xx%c z$g1h?MLaWb>T@vq)OpiS#m#-Dr)>^Qsv&UrHn;$}t@Ep}kmM2S*wOI*t|#RC@iw=1 zN8M@a_N4n;@=c1iph;AoW!D_VVR}0A6AWpyf{qw?BAb3>09mSCM?Daqx|&d!deiZ7 zDM!~@DREBH;L2h6UQ>N4DTW^3$g6vywISB)Yhn6Rm&EJ-6FKtBhDm;zJNLbN@Bf{9 z&bjA}=f1YqTu)`JU}22Q<%ZYmK@ABkCV@?EAIv1Mfo@_f zE)S|&oH$ujr?riK#!QRfqX+uyh6ROnty-J=(lJ)B)fg5R3I)(;Z9!GN9WIX-4_uvS zcXw%Ybalh_z=1yttF^Y#&+vV2uNRlg8*sC(S!<_jtl%v*Xtdo&L4^eeZg=3cJ&0pA zACBAn8Yl1hk!SA4)+=_cZS*t8tUjD+4q|6XEB4-UXl?Er?by?F{}0z%u={2^PBi&& zxS<XbiPMsbi&=Vqh1_T8{ArzIC;M;BAVabwLFy-0jAcTlVA#8d$bHuPyvS08P@DuXn zkw|KUNC;zmYU^vUZO1m`&dZG#GhM*6+ywOt73yx{G;u+NsP4#&z;HN>o*0Xjl$BuJ zhwCu@$?=2MSuCJ_NkY!3FqN4g>ct>6L^W}#g%YKnt2hOmXbPk(kcIX4_iMr`Z&zaN zduyQzRSL@{QJ<5bb0p{v{WcSKiCaW@0ykMK9WR{aIgvKCIka?eb&LXIt>$z&v2oKz zjLRA)g}q3^wyRJ|6lo#04hy&uBc>t=b~*$32;wZyiF9j$T}uZXasNjk`&l%~(GQ%z za2`21Ia1hE61IheU00;F*iwe5L@~+G&cYP8*w|8TZ~kiYfa7Pqn+4^PF04`)Hk_q~ z!#I@38YIS+wzaik+45zYFlCwo(=PI{T3VoLjKb0(&=6N|uE*SYbEVZ5lhw}aem0VC zjh3+r38h< zPW?!gX~Reti3^PtqhRE-m`fe5Vn!0k(aHf~x7(33M@Fjpu`2zICrouq6X8;ut644> z^UKZHS=>5onlVy|-|xr5MGK|4_f?r_d9rkiWB5IQOKq-ZE9#rEx6(l+Q(saG8fWVI zPuEMIdm~Fu!YL#Z;+WBHvEg?Ie>o_{99w)8`TyO^~qV`uh6NXlcacDU+c* zr9jCeadjen(K;NXNi#-ZtX{KP`rT*h;}OR^N}#c|XV0CL;^vXK>q4fJO!-|bnh&zb zBxi9CRVR@sRl|V*7R+Cu)o`Z$CTYD)`kes>AHVSrS8n-((t3w}JtVESlq+2Ecr3@_ z*a-Z0MACALUT(sXC<4I%a_8qlQKd zkHdNlTkxV7AxNT>S}1Z?u3Ra%caI*qnYLamY>;FE`9+$X5N3-76P}&`C7beInUa|k zgXc3yb}gAee%t5Io}czf>#bJ@>$}8BQh^2VL*Ld(yv__gNqhqqeDkekP=o^Yu$unh zU~w#}l(?e9ViWJvf+XfFK4tf#xC`(&S}|$jRETL5Af=}CCT5<8{p%m0z3qt?i06sz zV(3mKmRmcDnzcV}t`}aC(Yq=GiJ9kWAT|kYjR9s0c}m6ldSbb?yS!Z!xbMgBwUa~L zoFV^X<`5zaCNMS7KC8C+wssCoaCK`n-=VAr6Io S3 manager. # -# Login: Date: #Comment: Version: # -# dmamani 1/4/23 Release to Production V1 # -# # -############################################################################################# - -from AWS.s3 import S3Manager -from datetime import datetime -from pprint import pprint -import json - -BUCKET_REGION = "us-east-1" -BUCKET_NAME = "map-ignition-parent-docs" -SYMBOL_LIBRARY_JSON = "symbol_library.json" - -def fetch_library(backup_path=SYMBOL_LIBRARY_JSON, username=None): - # - Create a client to interact with AWS S3 - s3 = S3Manager(username=username) - # - Fetch the object from S3. If backup path was provided, use that, otherwise fetch the primary file. Convert - # data response to a string - library_json = s3.download(backup_path or SYMBOL_LIBRARY_JSON, bucket=BUCKET_NAME, region=BUCKET_REGION) - return library_json - -def list_backups(username=None): - # - Create a client to interact with AWS S3 - s3 = S3Manager(username=username) - # - Fetch list of objects in S3 from the backups folder. List comp is used to convert response objects from - # aws to a simple list of S3 paths to each Backup object - backup_objects = [] - - for backup_object in s3.list_objects(bucket=BUCKET_NAME, region=BUCKET_REGION): - if backup_object['Key'] != SYMBOL_LIBRARY_JSON: - backup_objects.append(backup_object['Key']) - return sorted(backup_objects, reverse=True) - -def write_library(library, backup=True, username=None): - # - Check type of object to write. Raise exception if it isnt a dictionary - if not isinstance(library, dict): - raise ValueError("'library' argument must be a dictionary of the entire symbol " - "library dataset, not %" % type(library)) - # - Create a client to interact with AWS S3 - library = json.dumps(library).encode() - s3 = S3Manager(username=username) - if backup: - resp = s3.upload( - library, - "%s--%s" % (datetime.utcnow().strftime('%m-%d-%y %H:%M:%S.%f'), username), - bucket=BUCKET_NAME, - region=BUCKET_REGION, - content_type='application/json' - ) - resp = s3.upload(library, SYMBOL_LIBRARY_JSON, bucket=BUCKET_NAME, region=BUCKET_REGION, content_type='application/json') - return resp - -def update_symbol_library(path, username=None, **value): - # - Fetch the most recent library from S3 - current_lib = fetch_library(username=username) - # - Update the given path with the **value dictionary of key-value arguments - if path in current_lib: - current_lib[path].update(value) - else: - current_lib[path]=value - print(current_lib[path]) - print(value) - # - Write the modified library to S3 - resp = write_library(current_lib, username=username) - return resp - - -def delete_symbol(path, username=None): - current_lib = fetch_library(username=username) - try: - del current_lib[path] - return write_library(current_lib, username=username) - except KeyError: - raise Exception("path %s does not exist" % path) - -def rollback(backup_path, username=None): - # - Fetch the backup object - library = fetch_library(backup_path, username=username) - # - Write it to the primary location. Disable backup to prevent duplicate backups - write_library(library, backup=False, username=username) - - - # - Gets List of Categories -def list_categories(library_items): - # - Example of Entry: !!! insert example here bro - categories = list(set([entry["category"] for entry in library_items.values() if entry["category"]])) - categories = sorted(categories) - categories.insert(0,"ALL") - return categories - - # - Searches List of -def search_items(library_items, category): - if category == 'ALL' : - items = [name for name, entry in library_items.items()] - else: - items = [name for name, entry in library_items.items() if entry["category"] == category] - # - Obtains the last part of the path for example ( - items.sort(key = lambda x : x.split("/")[len(x.split("/"))-1]) - return items - \ No newline at end of file diff --git a/.resources/14affe727ae97148e81ec2fb5fcca26cc63be296456610bcaa2fe4f55e41fba0 b/.resources/865db9c8f73f22586f2c47cba4adbf58461a2727affe7c98f00c1b26320b9e51 similarity index 100% rename from .resources/14affe727ae97148e81ec2fb5fcca26cc63be296456610bcaa2fe4f55e41fba0 rename to .resources/865db9c8f73f22586f2c47cba4adbf58461a2727affe7c98f00c1b26320b9e51 diff --git a/.resources/2c03f6b8eb69e732cac1df82798fa38774513410f65a0c2bb135d892bf702604 b/.resources/8702fb229ffbe7360ce2e54d241332e6eb14e7d77df242c955bcab26ad9f84b7 similarity index 100% rename from .resources/2c03f6b8eb69e732cac1df82798fa38774513410f65a0c2bb135d892bf702604 rename to .resources/8702fb229ffbe7360ce2e54d241332e6eb14e7d77df242c955bcab26ad9f84b7 diff --git a/.resources/870f0edb8f5dbe3c4dc8d684f736bfbf3fd7220f4a82569d1236a5c1eef2a378 b/.resources/870f0edb8f5dbe3c4dc8d684f736bfbf3fd7220f4a82569d1236a5c1eef2a378 deleted file mode 100644 index 56232cda71077097f3d2cc0c41c714eb518927df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9344 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 BUN-;$ diff --git a/.resources/8886857da609b2f59d2dc58c4a6719d731fe0b135da52a308835b228134092dd b/.resources/8886857da609b2f59d2dc58c4a6719d731fe0b135da52a308835b228134092dd deleted file mode 100644 index f46bd052d31a32d88c5087f1f651770f498dc15d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 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 LNkvXXu0mjf8m`PI diff --git a/.resources/8bea784f50bb4437c055984057e55bc3f4e724ff0aa34057746047c1bbd0af7a b/.resources/8bea784f50bb4437c055984057e55bc3f4e724ff0aa34057746047c1bbd0af7a deleted file mode 100644 index 18564533..00000000 --- a/.resources/8bea784f50bb4437c055984057e55bc3f4e724ff0aa34057746047c1bbd0af7a +++ /dev/null @@ -1,578 +0,0 @@ -{ - "custom": { - "FillColour": "value", - "alarm_message": null, - "covert_mode": true, - "disconnected": false, - "display_icon": true, - "error": false, - "isMatch": 0, - "plc": "value", - "priority": 0, - "priority_string": "No active alarms", - "running": false, - "running_status": 0, - "searchId": "PLC01", - "show_error": false, - "show_running": true, - "state": 5, - "state_string": "Unknown" - }, - "params": { - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.FillColour": { - "persistent": true - }, - "custom.alarm_message": { - "persistent": true - }, - "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} || {session.custom.alarm_filter.show_running},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\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": { - "binding": { - "config": { - "expression": "{view.custom.running_status} \u003d 3" - }, - "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.show_error": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\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\tFalse)", - "type": "expression" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.show_running": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\r\n\t\t1, False,\r\n\t\t2, False,\r\n\t\t{session.custom.alarm_filter.show_running}\r\n\t\t)", - "type": "expression" - } - ], - "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.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": "Robot" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "props.elements[0].fill.paint": { - "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" - }, - { - "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": [ - { - "d": "m 25,50.5 a 25,25 0 0 1 -25,-25 25,25 0 0 1 25,-25 25,25 0 0 1 25,25 25,25 0 0 1 -25,25 z", - "fill": {}, - "name": "Circle", - "stroke": { - "paint": "#000000", - "width": 1 - }, - "type": "path" - }, - { - "d": "m 44.389999,19.040001 h 1.34 v 5.36 h -1.34 z M 36.349998,27.08 h 5.360001 v 1.34 h -5.360001 z m 4.689681,-7.370001 A 4.0196781,4.0196781 0 0 1 37.02,23.729677 4.0196781,4.0196781 0 0 1 33.000322,19.709999 4.0196781,4.0196781 0 0 1 37.02,15.690321 4.0196781,4.0196781 0 0 1 41.039679,19.709999 Z M 31.989677,12.52 A 4.0196781,4.0196781 0 0 1 27.969999,16.539679 4.0196781,4.0196781 0 0 1 23.950321,12.52 4.0196781,4.0196781 0 0 1 27.969999,8.5003223 4.0196781,4.0196781 0 0 1 31.989677,12.52 Z m 6.46398,5.472982 -3.445342,4.105998 -9.881972,-8.29196 3.445341,-4.1059977 z m -2.103659,1.717017 h 1.340001 v 8.04 H 36.349998 Z M 37.02,19.040001 h 8.04 v 1.34 H 37.02 Z M 20.329678,26.41 A 4.0196781,4.0196781 0 0 1 16.309999,30.429678 4.0196781,4.0196781 0 0 1 12.290321,26.41 4.0196781,4.0196781 0 0 1 16.309999,22.390322 4.0196781,4.0196781 0 0 1 20.329678,26.41 Z m 5.409585,-15.990011 4.105999,3.445342 -11.004525,13.114681 -4.105998,-3.445341 z M 13.63,26.41 h 5.36 V 37.139999 H 13.63 Z M 8.2799997,37.139999 H 24.36 V 42.5 H 8.2799997 Z", - "fill": { - "paint": "#000000" - }, - "name": "Robot", - "type": "path" - } - ], - "style": {}, - "viewBox": "-0.5 -0.5 51 52" - }, - "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" - } - }, - "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/39d32fe2ac87a4b44b2c6017ed039f9b497a2c933cc536ab3e50a60995a11a02 b/.resources/8c4fa4d2d27533a3b893366c969dce1e94fe4da39e1614588ef021da38833a7a similarity index 100% rename from .resources/39d32fe2ac87a4b44b2c6017ed039f9b497a2c933cc536ab3e50a60995a11a02 rename to .resources/8c4fa4d2d27533a3b893366c969dce1e94fe4da39e1614588ef021da38833a7a diff --git a/.resources/8cdb6d9bf5f22917271d647f00ff55dca81825dc0da06d1c036e7d406e2999ae b/.resources/8cdb6d9bf5f22917271d647f00ff55dca81825dc0da06d1c036e7d406e2999ae deleted file mode 100644 index f6f7490d..00000000 --- a/.resources/8cdb6d9bf5f22917271d647f00ff55dca81825dc0da06d1c036e7d406e2999ae +++ /dev/null @@ -1,66 +0,0 @@ -#from logging import raiseExceptions - - -class GetStatus(): - - def __init__(self, whid, alarm_data): - self.alarm_data = alarm_data - self.priority_dict = {} - self.id_to_status = {} - self.tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) - self.logger = system.util.getLogger("%s-Update-Visualisation" % (whid)) - - def convert_priority(self, priority): - #The alarm priority is converted into a status - #This is based on the highest active alarm priority - if str(priority) == "0": - return 4 - elif str(priority) == "1": - return 3 - elif str(priority) == "2": - return 2 - elif str(priority) == "3" or priority == "4": - return 1 - else: - return 6 - - def check_priority(self, alarm_id, priority): - #We check to see if the current priority is greater - #than the current priority in the priority_dict. This is - #because the status is based on the active alarm. With the - #highest priority. - controller_id = alarm_id.split("/")[0] - if self.priority_dict.get(controller_id) is None: - self.priority_dict[controller_id] = {} - self.priority_dict[controller_id][alarm_id] = self.convert_priority(priority) - - elif self.priority_dict[controller_id].get(alarm_id) is None: - self.priority_dict[controller_id][alarm_id] = self.convert_priority(priority) - - elif self.priority_dict[controller_id].get(alarm_id) < priority: - self.priority_dict[controller_id][alarm_id] = ( - self.convert_priority - (priority) - ) - - def run_status(self): - for i in self.alarm_data: - alarm_id = i - priority = self.alarm_data.get(i, {}).get("priority") - if priority != None: - self.check_priority(alarm_id, priority) - - def update_tags(self): - device_paths = [] - status_values = [] - if isinstance(self.priority_dict, dict): - for i in self.priority_dict: - device_path = "%sTags/%s/IdToStatus/json" % (self.tag_provider, i) - device_paths.append(device_path) - status_json = self.priority_dict.get(i) - status_values.append(system.util.jsonEncode(status_json, 4)) - self.logger.info("device paths " + str(device_paths)) - else: - raise TypeError("Not a python dictionary") - system.tag.writeAsync(device_paths, status_values) - diff --git a/.resources/8d01cda77df88c95698c41d7e08e7ad20e05a583df05fe3b75a433be41accc27 b/.resources/8d01cda77df88c95698c41d7e08e7ad20e05a583df05fe3b75a433be41accc27 deleted file mode 100644 index 94ae117c31cf073be7cd269dca5ac493b636994e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16526 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 diff --git a/.resources/8d28df51a673a7c0a62b1fb45f60fc36b378b7a29917de93a897ca30110943b6 b/.resources/8d28df51a673a7c0a62b1fb45f60fc36b378b7a29917de93a897ca30110943b6 deleted file mode 100644 index a547ea48d24b1d167f193bf8edd1bd1c9a594665..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62407 zcmeFYS5#Bq7d5J)AWD&<5<1dFq>Df(3WD^ebOJ~R0qKMQ0TGbiK`8;GDoyDn5PAtn z6NuDMMQR|F(2{)d_aAqRd*AQlcV3cl_8BMHYp*re+-uJjt*4_#eT(_ll`B`M)nBR@ zT)9H#aOKKX-J9g3JA9i9f>*ADUQt(h_9_6hgO5%DYI|h_BOLn*Y;r!*kSTLsk8_Ze z$hvX;BU?{5z!LEXxeQ%jgpNP&oWq_`z87(NACY{aNZcS^`V)`x z2){4{#j6zIoz|jEROF%Gi z--F_-iN`|D|6#*^-2Z;sy~ABEr#ty7R*}$8Jl#VRFQCMqq1Jkrhfu;Og3>IqNAWU> zxX*$oV2A{1FU-P!&l$riad?6n@h?X(PMY`!eYuChw;^!5EIjV2ND_8&1mQf0y9oTA zBEFP(Bplo~ZoUd7Vu<(!=$Qy{y_LAnLFjHgT6g?;p?FF`TuMwg1|T7QpTtG`EXG~( zkKaP~AP42ro)2(cgR$qv_y4`CQGO0Oyfp9ppWzz2m>ft5_b${m%@e~U0~DuXUj*Dz zEQ~Ga{jEer7D=~SfToI|y3?ludjR6-BlF6OateM-*h75}P7F#N=a-MXRk%yC27<6V z1EPtXBwpqb56xwaRtB*_5gTy*^>td}J}tCYsJMdavAv;=Zvks5HX*3nwjsq)4h)+4 zLN!+pl9*pB@Q40e91P(EO_)RD7cuxnf9QJkWxB^GY0<4k1MbDyJRt!z+H!-^wn#L@ zs8Hz5X_NR%CJOL3rUz8Tz$bCH*|QD%qV|Py14C3MhVKY*V6$+WBvT=XZEC`_3;F<~ zhgzy*=N7CG%a@0aiWf7|=Pb}wkDzjq^|l78jhDgSBKjsKP0< z=@ozGA}x7%WB-2^{vP&z}T6_ef%CbCTC2}*j*uS4oGkXOrQEAMdj8Pu$Fys=QgZ_Da5%k0sv`4 z+<%=2QJ8MA%8YJ#SdArOGZB|YA)^4dm+Z!cb-d}|`OA|_4}2x!INqpxuW%*jz-#ZU z8AHxN#`hoqH`r`=AyOJo5#Dc2RZGf$>o#B6BVbtAH5e+oYozRlRZK_G(QWP>7ama! zGo9b9jU?X!7y}KHf#R~*6uS9s!Z%p8=X_SRD?%{m-0nB%@Ta-n*?`lp$3O>w<(6Jk zoJ^l9PY}h&3dp1jD%g2LV!1dn)#IcsDx(5sFwb!nY^S$2Rnf-8G^@f<5f6l_%Lh4> zF$8Ia6u_6O&ckKp>oH!UOmNyhQ5Gt44tkv4Jtp%HtlcH@`i!lw3rgz@&2A~1HmZzx z46TIVNPaZeE)1)qLFexTI5g*$2l!P_CYQQMJ)Az0cqHDnHq%%oXe_MzcGS$X+H+?U zE|vQbU04=a7BZE3@@8@xCRiyfw}2ZBz9(RQ!F=$V;)m#SbNX_fZ?y2@kV#Wm2IQ#I zoKrhk*GgIOY*4p-T^)8TAN-TO3vq%X%r?q@z~mwvZ`c~;mT~XS_Na?@elWOrR$qU9 zq$QX4tvgfa3W;PK{s$Sr8+&2{9KAn;?kpH;33xKz!DT!ysjEf?Y2x(yUfpuJs58P$ zYAi~JBMjM#r%VK>Rl_`Dr3=UW;Y^(p6lQgkBNv6@RCqHz+LF`$o!u3>x2ktrThFpd#P+kLm<4xwG}$ z*1fvhbm*;dL>CkO<=G(5T2@49+8#0}CJ1zIC`>@eVNLLHTG!O~t!yAjO*O@_y}mBN zW-4XyHQg6hO8&MfrgEw@;dLB{y=Q8%v0(e-gKutv1ynU`t@^|`0q9BF@-pA`{iH#% z%MVP3yL7`!y&hDLV2qexOcuZ2x;oEZ29kXW1zFB|(#$t(d;>gDvukv<0(7#b19{c< z>m)A3`ZBPTXpuEQ0**$T|D1d8cY28?%eb+qDwBaQLZdm~$AEDf;JsO7ZIaRuE}k9M zb34O;zH(@>N5qnyd|Bd~fK+Q2G(kWS+ikA)+aMqd;?4SwNbtpyq=0F2Y( zX?B(H6dCZ3qk>To zz6yJD)ey%4Z96w=un~wyB~X%}`=8n0af2i}#1*gv(Ez45RN{RA?g%ko_r#Ag3pDn3 z)HLhOQU*E-?XK~5VNP7dzA@Rf8pkvurPE?geCzA_CD5^mjR_sV%-sdcGhHrs=TGnl z2M=RwzUjv3oiQ}wO(4oJRKqcG<;2q0fV9zM@ zNqDy%+7_6JRng}QDD1Yh)F)J?6)2nOsoX#^6k>cGL8HI|W=Z>&V1i zx5@h-raW{6r>yQa4t(J@JvA+W9^WSyrgZ#GT%u4seIgc#)|zdzt6q`vm1hd_`7gtd zbaA?T|9Qo=+7R-C>6WnN!4C6{gsUpc=0u^5>1UbAFFlJSAAlL7HmC}pRH>zf$9*Fp zqQ}=*jP19f74x^VahmhsZ`1Pk1uq0_OdVuMJQG|RNk!TIfM;$<% zRqmu_l)2MfM(m31?%8KLv>1(+(OT~mhlR+&dW?Bjh^mEQ2)>CIr46djIdXDFtMw*p z9kN($8fwQ$0lu&w$)g6mQ+)?f=||>X_>Abv#JH`)+H}`{wIF~WKOQw6|f5@lES!(z3pQ}9pqA1qK9Z9yAVnzZ$>YZKuiscGEDdDpT z8RTqOsgTnrKT3#9pg8AR(ggcm=z7eoe{Fj?>=Kl@H-GEQ7_&0Gw5w7#HSma5Uvos3 z%08~niubr6;Zd)lT4`Ea^|jzN=EPos*naXW1g^#bT6|q_#rDJZG@H-XY{a*?14q}u z@&(@OY_<_tKH{U-R=BHbTdsLZE-9R6^+Qby-;aN)0T1-?VoGugbqqSypL?iWt$-_o zog1D1b2aPlPU>$|KZiATHt>FQfXW{#(3)x7>>ST;8KFNs6&<#S@I6)Y6pcF}ZeJsV zhWnrGSHkNik+|*U8(a|&Z28waa2Zn{S0_0)@?Pg#MWlTLGjV{GvQtj|vAyqw} zzaDJHHEvlg{L)b}$#E^GCS?Yhe6T*t!zP2qZdpF5^f`LW?S{Loo^0HDl{Mv@>M}}m zSwKLxwv@B$t2zqt#7Xycn#VPW;xD}ahh8_yy4xw@#9jBDltz@jC7ZuWOP8_b1Uuj@LY#AqOrq#gR9XcTF)g?opfHy>5fLY7hjTx?KGF zJtA{)+&bWBr)}(Qd#9C*fqP`gF=JO^J`XMXZQy&yfz~)Wuj{m%#)CgzgKo~nTJD{?4qrEx~zbC-+N{T^W~bMV2eYf+9;H#~HhmSDFK1*eCYZs%(~dS11f_Zwm$mf>^AHg^a_^oSIC&6r0I{dp(;YS zchBe5DwiprP7&UWQuOq9$LPNrjMW`kMXtq~bo1+h5b7Y;j=xMnJtoeZvCjrLYdJDH zP5#>T8JbWh=!Czew5=Ui;!1&ajwmg>mhBjGS$ZB<*ClzgY7$oEE0}Ttle+W8QGUF- z;iu-=%^O>v1#U>t?h3;dPR(8p@>^y7Hn~WIh(9OtqY?r(oxZHmJw^6EG#13#f!1a1 zKgg5WcO-S9Sc_^hysN`q_ftF`U#;Hvdrf0|8_Ceh?9i7D{ILx)vGsszt_Is?N9&_I z&DVnWL&ie>O(Kt#S|`omIUF!ir7r>gNH;kVZFr~jYKc8B`RzVrWj`0fkMkf{;wv_J zym8M|qUjjwh_vT?>o5@Q#8ieyqQc_s7~wL<<#hiNsYGw%x)CEdags*v%&X;@pemZ@X}) zmYoFsnc0UJve&?CPk&=MFbZ80rJWbtunumcD?7n_tDJ=)_&*?l_O)%-l~FlvOu2Ml z@LD6~ZDRUM9pK@b_C?g8Wb*D>P^!z`pdDvw>Qv>3sL?0U9lIXxSLk-sNrXqW)QqP_ z2&=qYSN-nn-~f_er0>gdtLq9=ke1Wjzq*2MTtb#~k|j1r@}uu8S9rvO3D}Qd(WlII z(`a(Z@ciXu1uEu#>eMQGZ8HdZ}Q} zN5wn=1L@;!{t?SI`s4=ze2Y{{JnfDa6DD$XXO}_%hXYggj$USR<8{#wsb+$(XEiqr%o2)3IH7T6bG^FonV4bEZN$UIM`BZSN<>1$BeZd zvUj7{FM#jV*Ajj>UjM8vrNl&K0eH0{C0aq@cZX*iCRSSyP$CyICX4MH>rmyg7QK!> zQ-#fwgt9t@M#pWhn8!Pe!E zCRNTIM{cVKC?3Z{_+z~RsP0Wn$wpNyTR~F?Di*3AG$(y`go597bH0@K&H4=k1#?w z{dsV|PFv>V>a6p(rjAJHS^E9ac}4Eg!OY8GhX^fmpCCzlBlBh)E9?hpiEpUh@4bhv zfWLSGk80F{2S|Uu&+9!{bIkJ`|Jm^q6&dpB=SCeLse4T#JINI+=TlSM5In{vvF!V4 zKc3_daURpcSNa|tR7Dmw^k&CDE2q$#^T&Y8wSu5^9}b1Kv_@k{;mg5HnWA}Zec~c9 z2HDG0bD6Z<;p8GZLjhou<=UN{01na1y~o|V5fX2nv&&}g2rzueOqDSEoQW)Y+l4Vk z4Nj###6z6E94(DLfx{s&gH6?8nXV_0=GqPIh5)_Em2Z`px>@| zyZBB4u;cXdbLP9_4NV{wKa7y#7S7n>g zwq1_nS}A2EslVx0%1J=ala@_&`pb9XKke&3|iOGkC%)r7|?2A zUZ1q5Y>Y96k@1~!qqIKE#^h!!u~yj3>wBM~k*KLW6H5k3J71{>huP`fVvT#Jk^ z6R<9^5q63i+(2p@4&|tHHjX+5)R0eEZAl=AL}RCe={DMAedF`L&Gz1G=lME=E;SLC z+t&O%32o47q+Ih?Ey$%Zj(@jM+X67T`Czu1_vlnTdwuFiE{4clIOvg@VnjZf0m<5M zl3o+v8X^lPOym_=#X4@IIjBil6Gop&?$H&`^*l+mhstEPTw|<>*-p?gLN2S*Ouq$k zet~K15#D5tuxCA@7^ObBSQPTzXui4#5~P4IJ)&Qt#BlR2GafGxhPC#_RgdqcE4TNI zE0z2d7nnY^oKvd{pHPWjerXduxs-2Mu$~N%p^JlnagwA<~r{7|u;{?9;Tn)MzmUm*D5i zE!>Bm*;;w-ZNk&059%oAr%aB9KZT*RuB<)F(8WJ%#*XoM$D_hg|M1?>#`sD;G22WR zEpbz-Ts^4>&Oa~yh>5)`5aS|9@k~X(_>x~MVM0C%0&qd~c?u@3Q_vM{ZNCa2PyAIf z8Q-FH+K74N@^#pi9P4W>>sxgBHOPhAO$ZjOgfzj1MEMA8PgqjaEsVkYmSz#nDhD8R zQy*k&N!Vd-^s2~Oa2oCIw_QLbbr}SpaILsw64U98m}^3-kmaoW=o|`5oN8>*32E~0 zHQ#;h=D<$7qKKb3+~0BIu0GB^r)%yOs^$QsE|syCTPOr_3_QY1wlAK^!!qyt#`mb% zWR&uu{bXd00$jA-Rf{YY8i`LXs=2i%@_MKjlj7st>-;r)>(TrA(Z&b-!Bl4klL@j7=qou}3>b7A`?>AQy49u=T2GJ5VhUh8dZLbW}` zT2ntQEVFe@%=nYjU4QKv6X2AV1L*>{zzig+|+C@xwHaAH)++rxN7}-Qd}-$dxdrY#D7R5- z8c^00)f`IqG7S{=+-wSnq~?v@P{t30d)-8VvI~Jnk8XSgh^)y?dR#l6ZE0uZv)NTp z7QItb4<;86e_Hqkx7Cz6no(_8tMa{AeQT1#-te!Sk_uauMDRr1r4hweJyE~))wJd- zx#b^?k(U~=U8SrO#{L00ox5!t)nY9iFR=62W-4;GqWJN)yYH)S!eOkF_ftf`ed4F9 zc~u!N{;QAw`Jr-dR`adlLI05_;+Uv8#G1G^QyX4k{A7K4R4Y<&BU!we*>US41vdn- z4G-L5oEIC8ghfnLVyl+N(=i7S@%-WwHVi`f_v_IIbJ}}LXRj5c4raxN)?Udb6Zn5> zZqNY9NCpJ5!nw&s*eb3nlDS~^J=Dt&8foI>{oRx<#}h-2@Zg-&6GQTP2oum*0trWu)Z#eBP^?xe*Oeb)$<9OR&M*Vv}b zSU24~@H+Rid1%I9?e{GWI3WLeJ>~?c_s1-96EA4f4oWwb#co1;%Lqf+br%wE!Xwn* zOVOMixLw$vv@}Ofw;1*{vR_Y=Sp0}vvtpkNzO3Ikwtvn~wm_B;D3l(V71ZFlw1Fw;AfANO!uUM*i*QhDV?E%O}2>F)) zCKX@zT0}XQ&HhnNfpW7NWuAlAw7o4rlKM-l*L*7;j0s8&`ysL&2j>qmxVENEm^1G$ zGbEN31{;=~)D3w!|Iyc4)(v&Iekz>fajUfuFZi=8x->AQkul-JPFCI)XfYVAaND`d zJ&o?qVzs@db4BGCspy?7ERq}NCzPjQ$Wm4c_rQoT>3J1bju!u&PH4)H1Onr0GKRDN*0tDe`*u`UcZV@I8 zhldfa7BU62!>T~_`Pd?lx^*oWp}*W4Akc-kX+kH`|^O@S-gR%TD>Sj^U9$4hepR&xkV zj^Y*pv>Ty-gKT>Hs~p7BIqx84ol|^j-sM{MqYhNYLu|?vN8%b=_egq$DRmk*y9qkk z(sjNVHtA%HW4N`5o7gf~xe{%fdYZOJ_B|50-r{db|PDhVbS5mJ8p7@NnuAkrKzY=Bwv1yV z-J|OvR$Dd4e=y(GnN2R`_Cc+`S`@s8;Z)r;tK%RZ$N@$hCD|hDnKiL*sPv4`7nbO* z!U)5}MSHC;$RC+*B8A%^)w6eZ(aFFgt*m(6a;|{KKMM*HH3q|hE^7D{qY2{yKF_V% zwHaQ_srkQ6P4*RAn=M07qGKuJ&2T%i3z@>58NuZ#y3yGWTzz8$Os=1~s|_XexOkP> zB$rSnRe}O#rrt>EVs-e+k#I`plr?rl%Lj5YzmYsUM8~UQXeV$;sUMk$-f)PgwA##h z9+P{TE*Jjn?78YFJC3e6pmM0*U}X{ceJOXSbyDd>3;+GREM#4xm|ZtVR^aO5w~=;w zS?kh}uCep8Q7GZ(VR7D{h1rWFQh+5i#?d9cosSo196d(AuY!DX{Ti}1YZs*;AaVh! zeLDJ~ubFQ4x!z}kz^m7BbCW6e+DsR==0gw<@v z?2iEEK!dr3h@=X{(Jo2R#Zh{6-3!~+=19VOP`vM*`Ddo?9rFO9=^$sN z1U9W6z9Dt1M`HZj@DYUV(%7ZJXeKc&&AYC_{~#|b%;O{w8bX~ey_?Qu3UtkW%{OWW z^Ks^j>l6T8xa{wMA_^_MKh8F9 zZ{yu@yn2IdbZXS&$$#7E;&b&g^-Z`{o%cs3mLE&?q_e~d z1DV8r-%cF;?eRDnxP5r8urDceDCH|HDe0p%n2$Sw#oIh-0%WEE!ryoPz^gNc2G8`@ zri8UBD=_aU#_IbC@ur<@;7VN6t2OJG?Es;@t?Ww5(ZKp0=Lmb4@PWm$^o_#_>=$g^ z!>o&om+b;WX{xt)EVdj=m*mb`dsA^4j2zCH%S#tlVh0dS6D3y{#VimK2NS*0glIw-4XkBl~u>GbAEIz{X`1tvm=7 zlnT{1n3iWy<_O<6qVTGFTT`4m(28Ov`ygho!@QB9Q8k&OgC6J>d=Wk2a!t9(HLj1_ z&cer}L+Y$mx)SMq>!_t#2Tv-J$j5UHO%+vJj*Tx$Vx59VIx_OGC6!FnKVudpprh{@ zPiF@|+(<-e21I=6>M-!ncs@;DDzK_$0+PT%n9laA!lRM4coXx3fX1EXfZK&Z`IX04 z*DNVcZyL62bwco7qy1`Mi~^Rd)~l+-9dP^qO;G$$9{$hm+^>mT>-BiukhSnOwDx)u zYEbFfxZPjYp9un*!k8;wUM-ykuUmWnOT-446`)!*=K&VmUBt=Y9 z(SAT4>RZrh+vEC2^AC6YG4qwy0c%pf50CEEF~14fV6(z8ombMF_yq{Na5!%_PHdX^ zBL)SJ3lujZk~!Q2;sU+2pV<3Y4RLVXaFzc`fm&lX4c^Sp<&Htj_OG1=saBrg_85uk z#;v08fUn3QW>rXiWBrV?y{JucskT)NVodhn%cvCiy{ws>ZMDzJoFN$haF=(<=NEhM^#4}!b-pP5`KRP1>EBZMdt^Bq1Ds8?Eu$)e{Id6Ntk<$)4_?2VTkcMi z97-KwD>|T$$R4Z5-S#Nj!JPe8SG)t;x3Do#W?z*{6XQgKy+J9uf91ddiQ2>!T`sN1 zO~!oqk6+*%_5{)iy#Tv-pMh-9_s65D2<&>xo(*G_yuQ3QxeqATdtD_tt)-Bg2Q z&kwTm4jyR3SC(Jr;2yIrgEuc9wHuP_Zpw}8x9%>V8-eO6Knm|`DldznciRuj0!}0q zSSr^qckJ0nX?O~~h=e?eoLPG4BYEonp}4ikh0bEn^_3fs@JO za1U{hIvk@F(@(==LGeo-d7arbq$F7p>nlOr3(LQ*3+_OZGl&B zf4|(r>^!YhI^=2bfYk%^z{VCeS>Ff8fc-@id3BFuaG+0eJRxGx!Od%m6tllsB5E*rBghzcb&Pe&%CAu+QdYUbCk zlH@WW~ytPuCX^cWplfi@{%+igUZ)V?3-k=6+Ge zt4yv^3LyNGClOwC=SJs+36Npm_Wi~*>Vcv_y0Z~uuHu~GR7Cxr>B0BMEW6no%5od{ z-(V}&3@zv!YE%rI*6kV#qxuY2w=0O1_`Q1rwU_NTJWx=VsK!VA zl_t3CO7h^o%uC#ye7Ib3h+AG_3^(^+eN8Kt{3L4c^qg^&T_0}%-}-iRROxHFEftiR zEFfZc&>ZwpBwUlZ{csplAACH6()#kxzZRaaF@2td!cw%iZ8$~PIQm5|-iQY1&sWLI zUYhlNxz3U^hxT-CIB#=)eSJsybLRzE(3Xm$UMv6CElWxzq=f`#yCSfUHC)Rg%?DX# z_`G`kjN9Y^?_y#1txNaB+2k<3#8#V=j5~_OzSSs{o?Ai46l4=fwpOTK5TJHuY|8>2 z@K=2T8Vq#>%&Yaz(!}xD_jnv^%C@>nkpcd;IidzO16o?lb!ptbu2quj2OGr;?za8?*gKNkI3tT z8KidN>fCpv&D}Y54#b)ad_Xmh%WWU&^Dh~Fa2FQ^{rVaRA%zE%3856`IzkpmDMEKt z`Eq&^W1rk*;MVu|+^m#Sr@XASV!`(J>SLjwUH_;>i6&=v`fI?!%Hm$gs&0@?iVYMR^I=G{gdG*= zn!?lVK|Eot>{}rTD`Gw1SyaEft9&F6#7Gl6a?*H`>=rL=H#=_PO-TwSI%^uOH+t@> zQp)!7C6L!TL8&!y0>ywgD;=RfRcr?|!?y}wE(Q#qum1Ixs8z?0zd2~P7fi6Pg5Azq*d`Bt}_izN|t zRwtI>T9NCuE3f8qyEWToBD^mTjXJh>+a`5LS}ycywINe=IyAU+7uBtoHvVb(%=OfD zSDMCVMaC7n#O~)riXEx6GB04k?c*=`6ps^$#aP zM9(zU7nAHg7}v#+u<#W&_=|$!Po}zoa#5C7-8nur1%$ixwb`kdV0~lrsd8ocE2kvx zZAx@~guMP#Ek=Wh*oqVv##`zmBGbw*F9-(NKyE(;nd2Sq0(ka^jwtPvO1uldTeLC2 z0flt++{`=wGY*S}z|I9}@UKk+M)&A8{xuM22#1GMr(3Rlk{leftM@UM3A{zJITx!S zZ|nOxP;TK2iYhnvYF;vOgCtGG1S`%Vq5y$bF;MX@HwQAAA01TsNzGNooA*t1GIqTD zV$FA_m_PWr0ejZZt_?n+q^CjNTas!^pI2psXx5l}!i*fZ*W9L(@dGoelkA65)48g+$&D%rPADqoIQ(SZ>6!R6 zDl)R2eRtJDw&GxBaaPAQB)*hLuU@^5?gLFW+-gBeF^rMYM?1id{LI11KYWKw!tJrMp;1jN{&8H#f^E~XXoLk6xL?@u(G-6{hOe73r%x4PIcS=s+9sEe;L8FR0E9^%TzTpb7ZOqC_zlIa#6sA(C|6F&$rgW&19*u=VZRuC)1@ z*$xw^hm0Zn1lb9(EA2_}a@OEqlHUjzG>9_X@KOA}B>Z*#L*wuXNZI#g?yuqN>(5Jt z+X`@{0Wsg-TvjZ8Xfy!DX5xk(nL;HO+RNn=u~E7!{b|Z79Z$OJR|SX@zo~oFx|Z^x zXqQidtu1D4iQ%?A6#prWG2q>g(xC8_Ur%!Pn;U0jx=?(ATFe$H(OnsRS$=>0q2JC8 z0I*UjDCk_Vwt#e{55yAK`%NNdf4#_advt#~7}Aky*@bxJx68xUM-R}f+7&-EinBS1 z==5szxo*1<`%FY%L-dc-sqLDtl8y{WZb~XmzhqSm>0^Qz735U*(41226&f8f&sUGs z%)h?4CEpbebZ2xQx(~2~n4wCDH$@q#jf7FdOF$IDVAyimbm-)5hw-*P7S|&?vrlg; z!2R*+B$r&NU13wPCvsrNAIjzF3er2<)Ge{1?3PK zw$Y9eaX$(0C_c)uG-_ugdHu5yZcyEplwcRZH;Z4T~+^knMbj^F`_@3zhgt*@2*dX;VIgWxEy zLI_}5;&x|{*eRPgN*4=V-SxX$xh+0-3>X~ME*`b^%jNn&9xG~JUrRrcD||$|Ncj0L zFl8PT4s;ocs;fr&exzGqNU;);Vcm9m^D8)Nt?~dt{tp;U=3J88f`uYojDn=%_SD5h zl?A1%gRLB7F7NeS$dVT)i+kixI}1cHg-|!9YzU^d+y4doxjgw@TezW&<8}K*cW^K# z|6$5?Kg)N$oU_mIg3y$B<+xfGP{D-UJC<^L1=VNF>k6`U7DCr@l#CwS6m_|LNzG2UsWb_D)#3$>V?+?6py!9 zQB_KqUMsANUxTxidrW|ManTa1}fGdF|dx;wqY9O4`74e^s1?#>t)sLUf=o9t&)I{XiEL5|9S1+&I)s!n(16JAp(5v^K zj#(*Hl;x$4W9@;?>13ZnobQ>Qq7vjt+dPhN@rDVM-l!4y4-9C-SX|9EC?~ta3#i?C zu%L-^dXJ2Gf3%)}%B1l6rap7`$kh{^=l+g%!I4BTu7vYNxH>XvMSL|+dH!_~aC{HB zM6bKqJ4udq(DfB%k8{oVunS(~V%wbZ6zGc+IeRzyw>D@3_C#Ya5qi0bu^fXCqCjdW zW)Tb}cyR7K>j{5;ulI+5SC`iVHzl*BnL2n){V0PI8~0aaZ28!Ei2ILcoTNIX`q!)N zfSj!h)!?S|@AJS7%m=y#F}bs6 z)lS#in|kLI{BUXvYH}%76EpT@5a)4z?T5anbUQ6u^HKTTf5opWoQ-=|`o%~6dn5w7 zDiqDK3|_3!texl-2c_C+cL9twbYTLFu+Kc)u_C*^EX>U3pHxC5xjY{EXrm@K=+06W zXKo2#!*k4@Rlkk9TkU~&k4R8%-Z9;MHE(EZIy#4I*}k!o(H{plJg8{m8?Gcx?RK{r zv@dofRNePu9)8CWO~ry}_7ZFBmJPwC<^_!oP#5iG*WZZ@BNy8ejBIP9H?hFZhRCo@ zwS_5)-dSLvB{aq zq136Yb(+Mh;fC1&cdS!xQ=s5JJ?L$h>v}Wapn!~^S2?^K2ipv&$|N8* zl!KGO(?_oJHwMSH1s9zL>EUXv9G&#WaB!t~VDxm&vVUah1$3X5;N-nepa!+#N|rjk zxkLEn2FDq1LhcV3z)B%Uln2uKV>=SOyoBNIbgqxkM2C-w1E0p|2h8=FgQ~3rT7xQ6 zZ9iK0nf!w7k>GnHpDM?Yp$;G~k{p3cDkxnmK*O>pqb9&^fsJoS6(lZEs4JAkgt{hV z!*4|SSZk<$czD3k^;2@tAN=7SX{Wf(!N8-8D~QXaNe=J`BQFMU>~!IzRPqg<3RVdx z1MM&GJ{j#@a_!(r_w#sgTZHK)hFaWge&YGy*7p;6Fa1xsYKcz9-#`;l;9CI4xN(|K z6UNvgunylSGNPbhRDJDdyY#m3yVx)_8ZU(;4>fiP74~G~MBq(VQluwvmn3)!!kE&% z%2REor?0m5vo6jEeTRKJjnm7R7B_DPPjW@=DW9%>q)mXe@fsvy7N)_YIsm(5(aPv3 z++*UB*nrchsB3T7RkSy(3?jVSd_9&QCUeow4-0{U$b1x8Wgm< zETJgfKCj|k@vtl*vA8=4p9YsSKPMcB+K_+ll(cq|$YbhSf}u9s973$#Bj@sNn?F|u zBoSR@|BUUbBpq9EZdq8i_8YpD1&dT@B2R+a@2g*A819mDFdRq`&=es!x{xvc#amSE zIxl$22Tx8Q&r4A-Qo~*u+Cr}2i-#sR#yHg<;JR{Tk+mze{lUVf&-EWv{xv!~Smb2! zNR~z_tA4iQopYD@aqtfV8I)Jq#S%>y;>5!1I>)CxB4^y+MHkv0i)|H$E5N9KGBzT1 zl4H(|^S7kKGByO*HLW=g{>baW@pKp&-Xmf4=Jl|ekZ&S13ir?FlDPq?{K&g|KWSHN zc{W{-+jOXSM{yxPHpEuP+u8%Q30RFrTA5W%_JKLr-D*dGGj{3Yc3i!AS}}=RZWI~) z1PaNr*knRC1U^sE|7?Ugv61rW^1Li94%yz=mA?y>YBG76+cVbp%u82}YwI@j zk>|$6j4$9050)w&e-%ZIdeF7wisJNZy~C@?$n{c{x%njPC3+h!aK7 z){N%&LpQfrqSb?U==WwdyjG0@t>KB3K=qN7w!zteu+A{)Hb}YQ+v8F`rCElnAuPAW z1DTW^g0q25bw_^%^5nOR)a}hOB~Q`5zOU?KjO4kq&;2}`%CT^OKL;B%ubG6 z^Otsy0;vM50lj;!_Ze;&jw)9d+a(Nsc2xB$e|@b{>k6-kC8}vJUTj!_$xl^O;u)7) zZGGp+6-T9M^_!M90euN@+dMX^+LKp*Lm9~=YN_=g{VahT1~`Cjx%B-}gCk&nD{8;u zvyjF+^3z%-d%AYl4sk>OHD1;rizP+zCO}9 zA48m`LUAy$r4S+xN@UrDXirvxTb_8Fo2xCyA_)F#@%qM8&m%K|4m^{(-}v#r^Yn%` zwDQ{$Cei0sMLySkhhm-I)7Rhk-va+F{s0}IH*P8of(R`^TDpb%K4X)!_t5_~;!3}{ z$2!o&PNtn%L)(2h6xT@G#lX{2y)uq)y6(4BH5(7!Cp<@q&mEf_=%mff)%{Wt4F6E{ zZUsEuP#GuKgVp}b5d`ds-Q~a7)P@WehKRcuy5nFnMEo|IQO zX^U=v)ImK5$in%$BOCpsdgfU)r;F<$=h_5)lQl!r-c0{^`s#T;l{82B^l@?Z^+oE3 z2>i0o(0v@?2QHn4@hj9yoW7lzS9fyTj0jsTKRFhg)PCurrs3o(QgK0ZgMppnLSb}c zT)f||%A=lGH>6jm16&dGdc)T3FTjV=Ei}<|N#-Yv4{Slk0!ti;GJ1d8LQV@i-qhQ*@V=P*g;!nlmMI*FP^8`(e4% z=x5oSPOn{@bJVFYnI@i1Fn6jl8ibB6EKcB)lp82%sb(v}u^`pz5n3CuWIQ=Ic z(oT*jeA4?X0FtiE=rD>?|LFZRW=;Ym3f}4YF;O6?nd$kb`I#j_P)|^YN_2Fc_XS*h zFQ}E-t$D*V@U$+HH1fdl(!{^rG7gOh~nOntBpLeFt+!aQJz)LlaxSqPY@j#&u*!m$17 zBFjob(jgQ#B6Sp`!bC4S%V-3`z*atCze9=RAH9?Tvh|GMePF(*UZ`<#pM0}zO=uif z)HN9%s)z=8L&!y`lk`PkY>@PAVVao4refW}8Co{=12gJxi@u}VnNi#Ik%>oXnOrZ! zjGy4oc-i;jBz$}3GCUijE^fWD^qKIAoM=z;B<|faTkW8L-wZ$&DYNUQ-YGvQb(3Fp zb7dubbNfFeon=6i-`~aw1yMo}h0#im5ClPDfC!S(N~g3F=^QZlk&*%s2 zk(|V&84TFyJ@|j#?Df5K-{<>1=Q`K*IVbPlOMOc01NbMTk8`&V8-Rsv;?`NFtyM`a z2BS91_=g?|QVIBjzs!TeiL?WLcjAUr?_jqaYB7dOO2Eb-}VSeu7 z-djcAHCqCoO7pf~e4La%?L|5jG9$jN(3rK9)p_m9oezfQ3`iwzn@tyGhYwT}ELgpT zbsn?rRjT`ZEQUx2;~{B4pLkD7D8LtLbXkY$yHz7Uh1`0s9%O2;=sPaL5siELN{{5V z5hwc~y~?v85m%ftoj0Fy86Gb^B#1FHP0;jr6TG$5pH&yLZ*kb}&9Y|&8-j_4>LZ87 zt-d~dS^a1LV*DS9688JLHBNO%ZT0vg+?k>HY5D{*{su-)t>guZB({vZDMg|st8C;;Jeq@wNnbK+0*w+SxM85 zq+@LHL)OZyC-J@c9|zT($(Y96w=-B^XcWrkVgyib?vRqFqwd-?oMSZ4S= z3&*5QIpf*Pg~rou){H|-ku(rr@MbTs9S;e~j%^Ob_}OFg%Gze{q-Sz+%ZoR(t6yOR zD}|G0Qz>Jm(Tl_i@ws<8-hUrDd*SxQa7x;CB+WT{>+2%=1GW#}zSyA|L|YlGmW~~; zufJ1PV6YLutppcCILRH6=~SVP3w$0^v3O(g>+fR0cx+yK-AG(6W#EAG_PG*I_?6h# z!6u26%@vdin99l@yVU5Uf{|}9q|Asm!mYze6WX~nq&P}$K2PooB)|9vtfl4%h4`o@@p`qM|UzputqlJemeITt@AQq)zwIA?baTfxHiX~& zWxqF>gI8LJ{G%eb?|l_#4;yrPV{(&JCjXTD<_-jJe2O_oa^N-$I|1!m!LXBiB~0Qjr5KG5)hyA$z@fm$=jpJ zy+Z^;5AqmnhS-o8r*BnEqnT+wd2OuwF-(3;d&F)XfG_0EL&pIpt|XVL*6)W%-ztcM z@~Ey(ZrzwG&cLx`V7sD(NeuC}XJlFdY;Yun!C^@G=l-vOdc5Av2Z@w0kXDm-pOH?% zRW~cDr*S9vRV?J>)ZA4w6o_!V(AMq1IZR z7i5wr{fwQZlhOK-Dq%kzWz#_3&W7|#d~*3y+?vJf>v`ErJM+C4g9Za4z4tyoe8J0O zg?SBlTzKN7EfjiM;hL_qhdtZbEog>(h~?=uhg#h^P`i5Wk2m5)M08KX8+GqPhTvX1 zVO`IVJNM%3NnM&6LJ|qNqs6u@!jruv{n3ULwMj5Tc#?WXJT!x3YyQG+qY~bnw23`A zbiyw`mQ_3&y-;6|k<_1qF#3i!`aVZ4_?^!BuDm+^d3LtqShoq~bXa|GdXXTbwS>_i z@kkwJIS?oj{#Gz(a{g4%^z^QuyZbYoad3J-*%9QnJ{HLjM||rt;x2T)4PF>Gk^A#U z%JS&nk+pFsz&72p>Rco>Atp2H3E!2GKmsgu^aN@{aZK+>oWd94U$MvW1l%45FuqGv z^SMj!9PyD(_8xK)1d<1;YMc7ReEi5dqDCR&lg*?11|=Hmar#Ru0af5{va)}a{>-1F z;Ca^XACUbTqrH40%#@k zfyz;YaEP};mVW<&`1v{De^rK1p0RFc{Eiftm=>f`q(kwwzn-t))62aOyL-N2kIi1N zoy8nd-|enPeFZMW+rb@tJ`S~b8)H8{r0c^(EAjWxFR_+sE0S6Nww?y#U}4wzLC?CY z7Xj}kdYo)Gd&9jzJ>lfFrY;~QV8&YZpUsKo$4J^)kZ^R^|KwUsm%)Gge+s@gA>u@*&qmky^9T#?mHbOJnOzLs(2=zcD@Xz(-Ks@_0xkk$NL? zLmHih^R7-*C@_Z{9I>sCm-dwzxK zn-&z{}=$8!O8U0CZk%S1FLbNKzB@r95i+i?`Q91(7#+2!Fs3)-Jft<9pqM>hV!els%tyW z)7iu&^z#fnFov%9Tt4lz|T7mfwjKbGM zG^NWp>C7n@Ly%pT?`<#~Q*Hqb4!2q06;zOwl#Yp!#vOgD!Xz4PLkJ50I7o-DuoIWw1uleYq z50QFa$5(Nw$^D<%ffiHy&f>+pp z(he%@RcV0N!G&ERDf@X;Ji)SW9=)ZWUoUM>^XQZJCKL3|{IB77r?hydk@g!2SXBpN zf;HS@r%7>!wNR26JT9FCe%_D>Kz+?-)4B&7f{6_A0M<%B14GW*y|I36oE6&@9-FH1 zx|=@4RoZYbnj+6^j!iPz8Bh5t_R~nC(}aFL;(~&8!21QoGhGm!Y?X`BHpvAEz`sPW z!lh-F^r%PMw_v*+9z+TV6Y$Z?U)zK^?6bde_21`SH$K<5u0Cb;Ia3u! z`%U4M3cS$+JW@ZBaK@6}Otu$tQA0f|Y3A9rS(9WDEP zz)c(1bISn&)ekPSSt#%aVQDYHHffVHmU#9_57Q*u`>R#>iz?_aQdD)dvJK8zaDpMy z;dj#R)W^hJSVXiytFE9QCT({Wc$;@*mwC$11k75)a0u&3tSJbi$ z`b(Q1raF$k%WN;sYynw(L<2;4PGukQ#0)#xa8!7}a`XbW_2+ho8nON;5e+UoM%g6Y zj1q1uhevv>)c=<8qL`4aI>{1^MJ}B;A+MdNx>W@z#B)7}k8ZwDxb0jUw?PIk4}iKP zcTT4h!eKA|8%LA0-mynd3$FJxRsx>23i)#-;IKOew)TeKLBkL=Kw9(rTWdf-zI5IL z*?ojO_!2RyCzf3b-X28I+h&oH3tc6~XJNAUfs_k3v`!|u7nawsXB+|dGyF9GUoO3* z>U~zW+Q zXH4-^vj11jrp40<{KD(f|grf z_+CfzLE9mXs)TCSwotHIpBD1|CZou{`jU6%W~%nzYbxkjkCW=!h5r!ju=~XPBmAg; zPGF`NiP1yyngjE9xDdK#RI9kFm9!1{0P_}@_PNx6T$a-_J1Qx6*`e${KETZaVbyng z^~x&65v9+G7jD-m9l)BBu#&ka@|Ee_85WI}gGgSyl4duq1}}49?5R@u-+gO*P!+F^o5x_yIS+Y%`f5E?P^TTa{X-F9ay(5TLps3Z*v7zl zv@k|m#d);tcCjV7?fRTqF%fi8sFF0}?fN*}8TJQe_Dea>J-&p?^+!Q}2d#XVQBhw! z=|wQQUDM$gdSj6477>T0da>=Cs4?r$rz0l(4(|09Yeb_oJU%eObv`z8KE8VoTI!}o ze;uozn6>Xg6UJ02xOe1trzMoNjQB#G^uXJU6>BE@UTHATc&#HeQop5d(WA!BkqQ$W zkVEBpdY}V`eFe?qTSug}0drI88Zi@y*ndTu#r6vgIqlsHb5b}50i59j>mBp%#XpMQ zpB<8EyunZ7LmzTQ{P)ILs}lR@FN<7KUYF5|5iu0@YV{~wC~24Ge&R<}?c;VZi&CW9 zDRmMZuKP^->~{p+33p9+Zno)q6=azCc38X{5;r7sTW^OBS=SK*$`{Yjna0=}?);`v zy8l>yRCGn)z&iX&D*<3Sny#BVNaeEe9U;%f3KJm7ZBaEeKK9d0Al>Fu@)767bL!}M zl$c=3SIUl4e!V*B2O4ghWwi9G2_%|kf#aeRDLXo$PQ6M9g`L+Di{>-t6o1sNzJR_6 zrpaJuNy@JB!S!~}&sQ5a7s?-*qi+46Z$?mSjIP%0(U# z-3bh$w}Rfayw=gtrzKY{kj%5M_%BxLBtRO=c)y3QWTlF_#z|!%wJUFw3`{KgwiKy! zA7;lKP@TNZP+WxFQSR~YSR|e9q-Mpu)p2q~4*@KTGJ($wSjmGLq9ur5*({i`7CTMM!iG2Mzj! zF*l-)*V@X=qVRgAd2wCnsMd}k=}L{p4l5?dY4@_yF|l}`A+2gK%ITNO%jd^1fPB(~ zXw`yJ&%c`TRnk$_Q;@#y2LsKmY8a-`dT8VnaNINgvUx|ye^{`GzJHs_!6&8AUK*RxLk zP!34Vl=Yj;vFp~PIx?BQU2i^?g&u#gNMyp@Q+>o>DA&Uo2gOO2e(4gwa*UP#obWUl zBNxDs<@HjGk8$OpUTZ5$%pxNC-~3?^P*Hox1YDDcD(n=>9&$|Ilek~78NyufoQih! zH;G9fnLK;fZmVr8vK5{tTHyDhkNhMY&Bhs|cS{+cLjjgv%?Bx3VSHZtW%7GcOz12Y~fz1o^O{h;qp zqWPnlmG^K@K$W?6X2EyMhN&;bZ+o-)RZK4Q@aiakGZaV%!UQ&{yhxTz$fA6k zbB9-?Wz(B24x?r!+{xc4lE-D7LVYxro|P3<24ww&!K+4!9!$=B(+ zr3Y^X8dbGF&#Mi6zhXw^5tgHbX^}&FtYvuFRLaR^Gl zstlg~f?L342M3q7fo0?kaj2i`DDB%lvb$V10UE=qFh7S*X?=x(5?r!>&;qmVE>164 ziXXUY!Do~dSK)hUOh0R0vlz|%>_44RF-|jaW5uIT%ROe#kP+aF;%n9Eo66*+9aiQs zH*5ZOx*6HykFByPtd891&14{hTG}CP^1BIc+57)wWTU#V3%>iSb6R~Vm#~ymfGVLo zl3xgwXLzevumEw?Pq$U8_qJCObujrhuT_8FrXRd^XnD?4Ixs*4359B<9d-^_Dax>&FEEF0YNYZ04lu?mK^d1K zw#&?qn^N}$i7Pq%1c7r4uSAA6%sbQuKk4MlZr_4O^?jbPpqBAg)dd3}BRJ%%E0hA* z`ZB@mGGtgLXuZ)H0xGgk(a*~89^rKp_M>v6aB#Zv8KoIOyxED|G=yq-`WYh49PkI! z997nX1=tzSi)2^k(;|yW`R}3J4+gp@pG%#N*8XF26?IEE&5vJ4U?$4l73r*cMTTHq znyIjag4c3Vd^O76i%tJVsT7=nqQXqE{mths$f5j`(Hzii%)@NG~>uy9Q0}InV!A4D7k6>Pp;txIWMDv`Tu@2PT=j3&FCvZ zoxPK+{l?`}2kpaBz$cQ>dUek_TFjGmpRDc0!9QREVS+~eg05omt3m~uFO!AN7bJta zbC@LVYR>RASIzTBvji@s(ZOBRJP&X}BRZdXc$uFb`1t1t{Tqc<%g7z`vj@=COT0in z+q|(}2XCA6MI1a2-7xaXY7EE4t9q$d3W8BxH`+{08YPupF!rkXT5G#lfBx|rh+dn~ zTuxMP97qQP^Z1EfKHQ75aLBttT}u^xyU(rRSkM;z*kidgF?s z`u_VyOz4wm-nty zzb<>~s?mHx(MzEjjt#FLnZsd}&y{G~V!P1yzTh%k($*8#spM>=hAll(|3eIt%wCr2v3)(P&{iqfE>p zsaxsQ_=d6Zr_1EEm8sV66G>fb4A8n1BPovKtacU@HNI}MrVUc~xx&Op%(U3W02;5E z-@b37?j=W*uSd<{4%??l>2)w6AOvyxT-3*O9rowf?1ITR z*juu7*3AmrwE0feAaUPBi}e{(K}11avs2Ax0!+aQs-C?74VF5NGREH*@`n#4( zoTmwES$_S9v!Y<r{R4MPQ*tetNTT;VeoC#<#jio3*BA zENW3$OdHo#BY*eap&Cc!ho=$@5kPHPQ5&{uK*Z1lLA>3&AJ`^P+8-7Wi{R>4xI@iq zeWY&Uy^DOANu=B#pSA$i=F`PX-7p2bTYi>16BJp$H*6-XT0Vb^Y%I8`G8ftMo|P*2 ziPJtuuB(#>ndCzSFfvcAI!mrOCTSI~^<^RLE2?V)LSgMPml^sp=y$?j;+$girR^8% zW9NhdibBe&+Nc)Tnj6EBi>m;8!Cgr7>Wpz4U6$}PeFS-Caw=RY;LFqV2`J!I8DX<8 zeO8ITmnup8qutbwaN`nqE3Qh{fcs5d-pfHz|0=Sy$CqfOf8s=V|H8S@o;1lqj;uxq zmrY@Tq+_l*DV{b4me-~R-wu2joCOX`MqfQ)4VwR4)AbY2`lzx=Q2RWB>Q`E~qM>05 zgZ68n3dKmqv+YH8#P53I?mytXuTdEnwXSWR=yna-m#P9QPGJW4U$}i~V-@j4+M=5S zIXvIU7y4<$FEH@8%#JQ%uL4f+2fz zx!Sd$okoyYpE*m{1Z9}MBSu{DfxK6jv3%dzx=s4O z4Y_~;E70SP{nZ0?rFA8TS0pbcr}4GZA2?($8XG)WS<$PR@zd-w9Om9r3B+1we_3Ru#K)A3k)2 z2Z6v8pG|v%+BAJQgmmeD{mjhvpy2dAl2-+GweqSi53@ckGPzTSj->?9lj{lD9!~on zjtUHa+LFV9fk=n{Lqd`{;{kNqfzO zQiB3_mE(UTbll~%H*#UOz$r58Me=3^QUD01TB^7{Og_9N<*75gg)p152UorrV}6k6GL-!eAf@Edl<3Mb+Lpq#{w{R~ zjF(Y$;mniNLjAbKsRwwB?oMTe>;74cTMQCB;M-)G<1{+fO`E#`WF3*{#AUv1^%G>> z9c+gDK&xO9kMb&cm26_L=-aa;=6Et-ihT>Y#s%>V zFg|~nm5_6WePZb9^zWR0T&QytUem~Vs#;=9LHA!yJx*zrtjRWa7Q3B+2Hu6;LF>A* zBbR*@gjZFwBQF!=#ORmq6HCEIid8L_9@izmU*C=9$(L;^yw}*~Bx)ZE!_Qnsb);=S zPO$@o7m5Aqzr2_NzHO}eK4Q=j6#E@laieOPZ0Do>#Nn9BTk~i;JCfEJw^9Uq1xTdk z8Yx}6U-TJ$YFFK>X{+2gMU^z=Ps&@oxx?$@#*qbjgoP0q`d%M7@!gGGyZv*OlsFt} zu$7&->o{4i&k8K%-FK*~fs$Q|bE{)8>a7@E+zo^20<;q8COh#LM_c_`~!#4;!2 zP8pih_^naBA!7GE#9NRlp#87=%>S-Ppn4#ZFsi{y_ABS|Vb@!pO176ce@^ZDZ&ZyV zLl0p_st>v*R|zh&|1RnVF9B)9s#b1_W`nz=1D!OPi>r@64xy+EzODNYMHpK66Qlnc zYIHr;V|9hzZ}axCTl3LZ*e>|o>8pU(M(S`mWbDWW49i-D9@%`&b*+=_L27C-op=m+ zt4)MxdjSo~{%fAILWgwxrLsm6?WnK}G%X~ytu0%%9lrDK(9oy=tu{*H7_q)4U1zl6 zEi~pex}X_-mr`8bAn$4&Bc~WU)E|k1FjwvWk#cOhp*~{i*ML9PSOC;47_msLKEx-S zXD~#7l$aAU35)zD zPmYGJ-Lqn>hO9fQPJakNmw9{I@-rU&UP}tiaez0O0g;e=^!TyV+t|+K4k%DX-w)G( z8L)5`q^}0rH1g;v)$!h01D6=$i#E)%o-XoB)GF*$}gM{BP?iYo?L+(oh&$_b(;lo+VSOJ?!qX}r(bsN9m^g} zo14O>xvpwXY84f)ueOrZh^p+kUhKFQsJs~ZBxGx#AWg@8dtCrKB0%NJ?d2FKazpzD zrE54Ny*~0m)>OJYpcQ@iE%QOz=H>hOwWpSKF=E<+YbH307F$>bxXO+lr6*R?cP9?> zLVOz0a_2Wkd=fz`sO9b&+i@wYM*+o&6$1RA&2xt>AJ=!Q!caY6-btRS2>ZhQCVG6N zLKDc|$sj&kz0k$>F^i;&I~}W1{9|5|KJWT+F2T>J!TA%}gvB9E`6C+Ir&lphb)i44 zADY{ebk6*uaW@w%}UD4+_d^rRO(+&&0 z$mQ2P(Gf2jCXW&wW0uC577^SWhRa?R=Ig)#Anyv_(ckf5NciA48WLzrW*Is|So|;) zjqul>PfANUc@?n!3OiX2Nf*9(op^z?E&8;Gm#vd0y%yisS>Vgb`<&-xW<2|ObutyO5k1$Yr>Twka!OmV&qH-)6$9-Z zGEep>AwI35tfvYU736-amwrn#x@4vr42Q6cq+r;s0$pZn28ZS^hZKI!7FO;ij7h`Q z>iWM)%~vRm&>e?6+)dETSe`mE18>G12(5{)7xdh_DItHzpjb$ z4%E9g1#-&McL7_A){)ZYMV(TaSJ*BngumJb3odFG=1 z;@?j86v;zu^XvFSq4l>4ADP_lqEys5LfMM;1)IKMLYGpXwKXsId>%O_-HWW5J8g-N z5nhc~6+h)NJr8Ubm^HlifMy&DT>7; zKJ}@H;IEw+*MC8dgiJ8*Q3(DPct%mi+C+i_BC_YW&9Atnwc#L9eXa7#vvZ&(Pt_=I zKgL3+X~S>@HRw-z|HNDc!vTkTJw^kmwsyXMP>Sxkxur0P$P7<4A64N1Ne7FysdDwu zTBzW=eF3Uy5yzp2j|zhw>O=#Ejk!mok3{3vj$2(1w?6e?f2mj@`p1v8ua@piHYbWm z_tW)(uYaMv-B1)b@3t4$0x=vl-(EG>ole-LO*7w4yrw*^zie>wJ4c??5x%DyvUHUw2)V=%ge2Au=)R0T^?qRU zr##FPk$cT}uFIkra`j2j zS7F_BpW#DY?$?pS2`^8d-E=qR&-iaE>lzAgg{%@zH$>0OHEfPw#*0mv^{sNf(=#*n zc~F(U-h9Dk1|2k8F#b7oG^v-VdwoRxPhqwcQlsx+5gm|SjGq0oYmq_w$s8O8K#2&> z#ZS6WeAR4&Aw}EgEbs_nTx0rPYPloeHfO0Fe#O(e`K_yv{F-joh}$O*RP;-?8*8J+ zWx4=A?Ra@-JKd4!6$;$o%R4}jf* zD{3m*CsF9EZScFa3~~#17U&lW8R*dEIk2uQ0}U|3{iu2l8U7UsEun`mAGLa6au9Mr z^2!AWlKnXOKZww8>W=zfUoz&4zIpmCkM+-eLmzrwMjrGo+CqU^05aGnSd)p5id+Ka zD3*?StS4xQEG9Lh9XhYf*ZvQ)a{dMBZTO5Z+ez{_=lLB>AUr zuUCj?$E|=l>f2A<$rtXRL`FYSz@JN+u~ZeNE;7mkO)2V)$q?&D5c~_@OL#)!f%*M& zU0c-$=dI7#SB{6RZe0z@@gECs#&Trc1JwQDbiKqwHXZZ-vo0L(t&=HgqO`CY&-WNl zeYUL!Zo&^%Jbp4H?Gx_JOQ65I@|ctUu(yhA{7QDjQ|pzf-O$S!T~nCdcvazUf+&zU zVX9+z?_G1$1V?AQX#GmJUtxMAE`!am8;oD;e&7?fevS)qg>j$9$BD|eeuilNdtXAo zlVWb))k0$KczhR$Z|yN{m!0&O=VARfrTjtS;KpEDqrRr&69I+7Wn-YqPxR|}-QmAu zPkTcql!LbEJ^bDMp|qZ_cy`wJJ*0Geg#*$|k-OX9?@?(fNCjy%)3ZiD@|a##2xw%g z?Rfw2X40%1l%P(slqme`VQ91LxwHqvN5oYIA!4rOW3NAH^x^9hFT!154D+350x0A< ztFKupvY`kwP>Yr^dt1b%b415tU_)%yshe`q)2@B9zKFRMKz7(=!}=F0rAaJG4Ul=-5@=!-#W_pnl!eP-26+L|G^)5ZRd;bqhU zw6Rb2|Dz{Wb&J#ZbmaD%=ZCg9WhI`RgWW%Jy~cim zoyVf@$Q~Q$<^YY?-T>PYx*oKf8&xSLbGVpIcdcln*@5!mAtMb8oo*Q=u3jM*S1V;T zehq$!Ow~5FQT#`YDeet|QEl$d-6f8rEMJ(@wJs)=pKosVi#u~t?(?BBgNB|?=@gV& z0EGwM2nPnOMb$ijEo35auAX`Ix>}4`lRq8hdDEdZAF7=^NFuRD`VB~YXFgSTy*(sy zF`KYiQ`6igYo5q9YUQzZZnKENm5gEk$hJjvjO1p1L$mipuKv?8qJGz<4a(G*jEm;I zc1jUnF2jaAzjVR8g=8vXt8~tm-(>%xj%mYHK<*GvxWtybNpr7A|4gmg?n!((tBw*g zMb+n_;rSk``6N=UdfBMFsJ}H%@j^_!)EgxEx7ik-P8Im`ZT8^~Phv4+ot4SSbbAd; zY>V%qi9zfp(Lt1X6xhpiEU>#oxb<yB$h+zqY5dDdwuo{73;uH0Z`jEE`S8G%?vOR!FF3;~@4CuiX_xDcNi zf7_r;Od-Xn(4d=05u|fK${;Q4c$CA#KsvV8mC4Z2isU{UQTC8KWoMi|S529o>|!?ATMKWrJ5lasiYPqO?Mh*RQn?~Xiaf1s+uvpf42(~C~5XJ_xx z5}8DZMMOQ>kJmPFRkf9%@;|vUF@_P36TaFUfL#0}ZOC;yDQ&|(niik{qn#tU^#<2Yfhur}QW~K*YJb*FF z?>3OAc>zj3Qd{(*^rj?ncbWqc(pRfhNAv$1UceSXPMb*d6fmMQWr4E_~lOGLwN{m=$QI zsAUGl?J@R7ou4OKvtbDsFY;}5dv}9yl{!}MQvtruGwp-9KJsqUczA^{HOR8}r4>l#?c;)-4fVQ)pvZ@sV z0Cutc-yFG9z!YPI{KVmLWP5w;~fifjqWDdNP#s_bOtD#p3MbnjWg;_ zQD>A2aDkZjOA$TagD&kQBbjg$K3Gk1YB;gdSdhv-ya{p*Dj@8or2(s^Ahuj-oLxT2CAO5qo4xj}f3aTgG`8mZ(j5gN}F zd%5~+`D@ae4&0WAP8?!hPN8Ht8Row`Mn04C{m*9&2xYrSzu*DZ-&D0gzH%VrETKc9 zeMo^0{WBW#KA}(;iiRK|#2;-3t8bmr4T1ByMY=;dwW)J=1p_)p4nHB$RYVUFFZpo za*`y1;aWyCqnps3DS^6rmgF^4|5&YUHqn>$fme3a;vYH)f?J9;hz(qVp#f1-lQNF3 z_oj=zL{ulg_b{zZGA_D(K9;yDS>h*2ZcOI7kR{5V9M>i$Uq5v0xR*%LUX8d(F!+NyK*a_5`kd9J4;b9qxVL~y7q*=`G`0% z-L?3fe$?Ct_c8Z7-qRomCVroZjYwRo>48k9ho9r0)N?rT@fTHpr?WwPXYAok0WfJ8 zoz~tZXyJbD(cm%phiTb1v+gsjsH_ErrqL|#vN8aEu!lSw^~Vp`Y0|AJC{wVOVd=P#Gbw5!;d$Qu7JJlFV} zpzpS2n?>@>d9O{a;f9%rZYx7BPFaGLAX(Z((R1+RXAnt^=D|@Dlgn(J+V|R9lYs`q zf*U zt8DuO&K_{>Zuft+=}eH6{{01`onxF!mfhAF-Z=1AFAha5zCWL+J0R?Wbt`LMX4mY; z{`i`Ad;hxDyuRzcSFpL;m54r9z+aJjLSTYVQS<2kpO7bDiSCBJB)I+k&fig$UWL(P}mD_0ok^S-8lv}YdrMPw0Y-Np}7 z7xa6;Gbf7F7za=!k*(jdwAt-=tHo=05!T`c0rMI~Qev(h_7i1^^TIXh$0~hN%W>>~ zhJXZp0q4W!0j;Fl@3~h^l5b{p6i1GvKcFe4TazWVX;MY`o@u7@LU^7N#)P7#PrK~& zPb)IDYhBmop6pmuwo1>2*}B9MMjJ3pQr$ryvbuKUGRn}DCOT9Y?@!HRmfP`N(iUPn zQGW5G0j<7sZmtvLo9*tlM;_!aGhAQZuoQFzjyF;9n>vo$4s*E+3MDh$Jxm0GHd{CI z{1Sdru1Sc=dkOxpr{vI9Yj@B(4Q~ksFxzf@V(**UV(2d^cxT+_c{?$RHj>wc1YH>S zbuyr})V9=$8BLsVV~yX#Tu2mrndl@*%|&zw2;BZtQILD@z2kBn$Cme}b6+&pl!K+A zV1B5=snDf?;I-%0Z}ND%1&#I$qLC0fZZ^w~RlcCF);*YRTTH^J#Ga@Lv$9ngWvMR4 zp>XWBAUg=|F?%fk0b|-a=fT1N;m+Lsx>3=FUj9b!3+uaphnp*nw6$Frwmo~dc6|`V z>ydM8IbCS?^4Y;4J1qQr zpzf=jtl=0TM7ZWg2!T!9Z-mGFk{$^8P{i>!H+tu_D_llhGmDj_6#oXy=4%j*MR1}Q z{}p?4+xJ1KyD+n%AYiPJMEcZ`Nqd>Dhb9+A9g!Wq#j%Mv+VY6-^THn%-`X=tjqp#y zY8r-PPwc^%!Tv=CgRhEOT&AwG7R2Y4q=dd|EzdCRYF6^T*7Oaa>w;Kvb?(6xIvHh(&h?A#*Q&)PzQJU6zE#-pGV+$;~4i+0r zKw&(*S4XxOddkNn#U>9KJ#FvpCPYd^9Ut4d5)(@lA0LAy&UNi5>F0@RDQI50?MZOI z>|a1jIIT?BV*5t->(4w4E**>|J?))0m==gsmx&9>YX~e2THGHuIY~TYCVjGTt1ev}9u|9N%0!k#Ic5br6W{867SM|>NoBcj|XZAt6d|5<&(PH>fuW9h;WzjU$H zOj>j^@K12c_CjaFP6+HpZy6~Sdz%FLkE5f!kNn;86tUeqzrTd7x%0idbjvU zEznlQw;L;Kz#J! z4}Rj0KVTi%F3bL1XWKE#fLbEW4|L4dTV4gHL(wIdGGu@7eEi^%+Z%Ym*4}YJGPOn& z-^LJ1$v0=K2i9JcuY?Unhm$`e5Of`sVAh*dG5N+iLPyJ|BJ<*Ndcr3ZBDFQ2jY!Gc z>Hbxb@Mr8W#b99mL_IvkinfkgTXEfhwE7J6Dwq7BGkJRfplZ>IZ2Z-;!Ag` z&4i2|iGgERX`6V`TQeUlDpB6c1yWtftZhsB>q8r+o0@gqe?#XPag~>v4GkLZez4JI*uRpIqa5C|YSHG=Ks!}T zVbOOs2M`SOWE>;g2;4R>KeZqXGq^EZW)t+4{^X8Looed;{EmR&&(Ed46;5JBobz)x zZ^9@UVQIRv8jdQ1RGU5_SsQkk&cP84w7g2iP)a~z@!+tM^JFa-D;759xx#&<#{U;mB+Wzi@ z2Q>?J&VPkMr@q+wE^?I7e(Nz_+z-Df9SYVM?oA~(@L0SC7 zTCX4ie}%i5O@ZRCJMbt?=;5XL%}HFqDE=s};}W~aiXZ*Q=E7Ip{z9)8p{U`Gn_#35 z1dF~oMEjq=LSDBAU!mc69Q5XBcvud*(=`awYdUg;ehQHX%22Yp%IwbKjOZ_FLcI@Ant%@!se4e!pJN z=j-)+JyEfg{;2~+cRYoFK7N)Na)ggX2OULB&c}x2SY-86a3#C@{K0=&XN&hLenqH-7gNa#}?pYu1yWaX0Vbb6j!1Gl8QdZU*H*(YjE5q{tTJv?1hF{Itd!-9J&XaGHar7;c6fDu(P)|L;@W z*=|X&eK_TSYCYc@LLTy?o(2jz+QoBPQF>xdK$N=@)pn462wHMl@(pm4<>c_JWc~BW z35hZmvI9F#Jf$|w`Gbx)aYs{DXV|T?{+hF2aG#x!lS8WzXB1^el9KFhLrF&O;DV2E zX9HFU=K{#-i!m*8yD)p&YwY{H)Hpab!{V1CLl=NHls6Z*}&Rk3z8O zR=01yC5hXQMjzi%>&clpIKOn9v3r4FQU4_iN1lw9+PxdR+m)n=0Mz`gQa~)!RF71< z2e-Ntci(DlgsOP^{9qXQ527i>B|IPUaU9feGO7a1ADzp?xDlgiXYpaI+I=iNt4my`QJtzT6#Tyz3mcda;`!$SYGtETLurVZhD;w@!RmIh?l^NACTy&Nv(tW>kw9`7GeMHV0x`tpAG{e_&_F&9raHGWS(IqU+sG#*PUiKsq9eepo=8CYumj z%1J8=kW^fTq*wWAo$!e^fS=##rFF1CQ7WSIGfY#X2U5vcOz`1GO~i>qy7&)+cjBLx zn@itrrJH1=ft0rIWb9J@^~?{q-;FDu%r1HRl64KG*tHN3U6Ck+3qCKlusux^3rejgNHmh?fTfR7V}vBMjh@s%qx zco8Ao-w5L9EY}gl7ivk4WO_>LlZ8~0y$#e^yfL^rc40+$Eq5|ruHqQHUN*ALBfRK; zkQs%gK^hnu+D|-)@uAkc&@Xmrjf8egpvQacwd&<70^XVcf10bivcv~n25P1B%V_t0l2!SY@2D$wiqFW+tSn;8KtY~6Y|acJ}e z^6A%rkv#k~L1*iI@{Ig@&bh2Mch8o-K64?qtlilr)!PZ3T|d0FH!@JaqJ3?(p8zyTqaPY4 zKodKzKI5B_i%pW8#+5{_I8Sn!z2t(+ISU(lI=lX9%shYpuC;F)G=%=v#N?0laQ||_ z9=GwegxgMKq$c^SE49frY`L!3yw?4~?Uc-cBO}he;U?ItQC*=Ydl;nAGT#vaAOn(M0ViUFeQ5g6J^#C18Y%lDf#(mjX0OBHl14NGMmQ))+3`AbWKCshZ){E{@p?e9daRd z-~+|>#LWImab8LWO)uC2q48@hm1=q7xjLFq;C>Y4NiG4H_57=_VxNK^2THBI2+SHm zZNjBirmAEw)GTCd0ZJ6`$9e=W{L)oad5sIq_xovm4c#4EK04)4nL)9lI>0_VfB}^6 z&h;z7SANl#iK!L?sA1L%q8?aI%Fr=a$GDw* zd+UDX{4^}b^8%yZauW}j4shLpsRm;gOfg8ZQrfI*8D3^yu_l<5%(8D@-9G2oU9r6& zYu4hF0zH#0?g`iafS>}oueLIZ11<3f-mgZtS{@7TCtdKR`7H{v-kn|fR8x*H<9(dE z#c#W1FNitsgK*(+%s3k6Td#1pPBpPvTdGQ}w8agA+iB@5w8bql?XwYC@yX=#hrBB} zf6R_Rek<#@#UL4qns>*Z$a2$`OqP3j)=RQJR)x1!v7C zkygP~MJoLiXYw4}r1@v(?%%F`tHiMj788b-GF(Tf^o9yEUdyLl`WJ&3c(slI{-U2$ zkkJ#h>95C`C;iI7Ac2<7#k&>EsIf8)=u#B#T^FE}wTd#$edL ztZJR6*43$>mg%fZH*mIGNGa>KLLQ8n1(MHO|K!eb9+n6`tfsg6N#NZ*6jaPr{S$B> zdTUy6^2rJLVoTwO8os1WmFyk5>m8VLeDDAsMDPkdG28)Zpm7If2Q}h82Gy$v)4_ku zi~GmQ4jJ4ai#9f9g(`oq?Yn6*swn<E_KWx#SkB+kxh zX#fuF1Z6$|)}MIY(rBrKYFNI#e|>EDCZLO{Pdl%bv3+&P+(!YNCO!RCz2qT628(R@ zm=#6RkU`7`2+pkJAb7`Mc0@X5bjOd7bG^7)PT$}&7sKRhD$SPn7CiQ}`30r2b61n&kLPI;uAhcJ ziRS#^sMlfAxmmhLB4&uOV)1+u-gC{adw&9nQ~|cExVl0*1H>bfSyej{q;a7$^Zdey zm07`4BSO$cbUfw%f?wfjH@9=9wyfijf9{!!RPj8xI)EJk%m&y5SN{fI2^f)HZ449r zXo@|I`s0stnY64`t31%g(OlmXrfj;twW=g?KSK9uMBT$&6%4=EI-u=|S>f+gu+Rzt z?QBF0IelY{@IJcc-v`N5hJ|GPuAzfTLu>8Bs^Src_N(Z)nTWyaUXYzIs@nxHum0>6>@q-8$cu64H{61*rD+We}mxcW86? z+^3arxyQ+uE3t9rr9L3c6hOp>PiVhh`U z)IKUGd%G&p77n1B3>TZ;yAUqN9{!@Jv?CseSS2R@CZ7K2`~wN6tuPap#+bOTq)=$| z25Kp>j%q$YMy{@J*sH1!Qwd19?pvKNvbJU{1r_Lx!GUMv8QM=Gc|Uh@t6KC_)r7I{ zRJYo?5y*~#eU?m9%!WvLz5_HRPd}ZQUWTKEV7kqbq!jeR=d8f-ke-U5%F{VEnWKw^ zd+dhCBMn(@mZ9yVLyDaUB8cP-c=#b)Kj$>HduVDpF@C5ywo4!RwB7Gpz+Mn2!p z$Qu7*S9SlLE!O1&w=9KcPO63aWw`A#d1vfI4`IXI4GR61xJgT;*LZHG+Wq|oM1_(M zSBLoCgpEdUO@5!ijO^MCkI<>`H!wow?P%J31i|Qf@qUi}JAzcQM`*a9c8J0vi2;XvU8TR%jo`e^uxC@{^D3&K*&1b;E)c%Nj#G#6fJHez7+o)K(M_Mn?+S ziL`2Twm$qB5n_E&ofUv+N?A1!Uo&x*`6( zSTXz2>WwP+XmhjL31SXU-2~ziDwn*e5YE9>Fte6?`fW<}nuq=PCCb0aNJUouz|3vv-sk+uoC(Rb*~j`Ru<$oU3Ll#xsAN zC3nDj+UT_s${~ESpZSQ{dy-N9b-B@v%)#|fKP8Vcp^Y6uXgzKYq)T~jl9t<07X9E{ z|9T<5<)~j}pKXr1un|Wd-%(uhZ@P(Qv>v}wYBu@O-aem(1OUwgG$o(s85rJXY*mB1-i4%GJ-t;NeoMO+ieO zR;`OI`r+q`Y0?n1f%9bC7l{a1Pe;%Zbzg1PPu74%p2pVDUrok!qo<8EUPD&7|MD)^ z)9y^mKlK~DV()bFF;Y=B%6@1M5^P1bdE=n#IeOuOIvg0C`2*KdauREkL$mx7f6opht7E8VKL z8clC<501wwSTAxB-q1^S9$Sd{{4kFb567`PheVcy-EK~N$Rgct2J4snpY!m z|8tJ}lZ8eVe*3hJ%yut~W}Pr5j6St=1#dHtAI6juB6?CXYS7wz&1dAb8sFVUWLam@ z!)6EVJEQbqy8?*pf4Su|pcwG+K^IZxB2dvv$n{*&NCr&J%Q;CSefzX{@smzYJ$@~* zD>!3SdLXQS{=w>WhzoW?ra6-D389NyQA*NA?o%6g9!mA$0DFYVUj_qnEC-NKh%4zU zsqYkvNTd&OwtknGTru_PLPDVPIsk4&J{gb=Q;fu8oGS_(+h{tw0b?i{;wDEr-MiQC~xn}ep8|`!1>w= z{bAu>n-#TPiC6P^x;&i>W1RJu;IAQP;Y7;=jbd{oB*@SHqoi`c(yjeO&!6Vp4M~#G zx6E@SUbya2)+mZRgbiM zOXO1KPks~U0L+Zrk;_GN!0xSSZ-Q)CzIpV$>F=I`cUitod~hb|Il9%4RR=gRR!x_y zR1GP-zxSHA8YLUlyDwqC@p|l6){NLz65*~9g3z`1H&b&y?V3t{)7vpC-}?Eg>=%4f z>4}?tHhkT-;+>L zLDhrTTMB5^>^M~M!~qH;U_G@jGxqM_bKv+hrp6A|c6hOZn|JL4l!IcXSw?Y>Xz+Q0 z|8l4aBF>GauT;(s*LnI5TfM%O<3hQS6al~q7{NGV`X%WJ#pf{WcW???Gki-jXD+;4R2j_it!Zf3{nEBbPsVXVtp$uf7r zwd#>s&sNyCe@k;EU%;mzscp{V-8TNS?I~UOwDkDK6Q|e@est^$dr_ygjM=qGP;1|w z51yF0RlPH9km~%Ef%)0;Crjbt2&yF`sDvy$t-E1XAW}`f0LZ-Uv&8wLB$VUGsDwq~ zoW#>9cjQo6*t^ijo_!c7AR($^2(hCQ->D>$u0-HMXpm0t2w@rQF&t4!ozcHLDW#7B zDAi)D0^p8j^dht(1*n}BB7j$M)@dnK*rOCwXqt|>ZR;753}Qg35Ayb;f}%DR7PPcar&uC{4<9lH6s7le@w z=#VIYYVO^{yFGt+v=ZiA!I>AyqSY7bYPX?xCWdm+aFaawJNp;(22r^s9>8D9uq#H6Aq44ZA2 zhfJj%SO>me!+H->sqiu!~ul0 zbu-d2h{*@W(XTAS<1r%Xw!%>-ThV;LEbq9j%X;=)#p~;dW5ToWWkf|QD)Ap*Eb^G} zZSm!P$Cl$G?vK#T`|%yKyJ<$Zb1axUID{8ZRtrZZ)gnhl9en!J!~+@fCcx!~kB6I7 zxg$Qe*~xvFMP2%?V6K|U=B+(N-Tj**KQNxbKB1f{m;wJj?fo~A#x(n};`E5L@{&Ng zmE9aR`@w7_E0o{(vlXRxtM5H8r#4S~_tE~m@~##(-UyjJ#>Q*!%TsZTkOj6@U8A-S zJ)a8#4J3|&u3;5Bc5$>ffUY_*;0qO}=^HmHjC_hCyxn6IIrs-BqYe>2()CS{gGJP} zPLHdJ$`maN3G%!DPWb+leh@=!+%%Y5*!Gu#Obdy@VIeu+7FQhL^K;f)o3|k8;*EF4 z5g1+I7PS-=e#LE@Lk^RfIE0&f88p=Xxq#6AIC0$XYplo7rEq@$;Tf>jas^;_ys%t~ znWKrn{Ux@%Vegmvx-mb0vyg&PL^uAQpGr9LQMMemN+*ih4d`|M47FwP@OK&MNg@NE zXRkIs(+#i*=JX?y=C%?GtuuzGz$eI=2kPZk%wbOR!yMbF=wHV zBBBwrp6|!Y->S!E^L8ZZobTxpWc=x>^%ti15SSIuR+FvC);Wz2g z#3BXgn_q$U;Hrwvx|m+Q;`hI*ay#HLZ}CzZ=M}@ehQ1=$Qk@xYZA*hqc#TN#n^U%O zYpc@BE(4^}n8fhgMcUzw$;zMzd`?_2e)(})|K^b)AGD?J;KY=p=5VeB(t1PLE(8=6 z7Ud8wTUgX5Q&zN;s?}|V_;pdJ#6>h9K7`Vp>5;{ASrOJ*a$~?Q|M4NP6c(Zp{1&X7 zT=h#qQ3Yaj$JcsVa3#xkZ-B~*R?LL^5##+TGd;YA5nD);oW>f8N3PxF+OB1}^m-!C zzl@jvh52==EJN6iN2Y`OMaIX(ztvGIRbm6+GwFWPL&VYfAnvOMT$w)FcL~nLTk4T+ zPr7Hm+vaR~X7^=#GI?DERV35MZl%-y0S^j9MB3i$D-d&ad4qEYHX^?mUarlTSO$OR zWiSDoKQwVSc}KICqf(sivd+?X15>?3h%=vw2dXlLYQq*=@2|D~BAFoqHm|4bY57;a zSa$AiNx#?M<4d<_{*BbNY93Gx^Nzn=vAH@)dv{E^iJ$dp>S87qF3Qor8 zY79iL>1q4r)Ar>OXR0mOb3oR!Xuw+3~n4WtWxPWhizB* z&U55*f1$pHdFQ#1`{59CYFvw4uB55A&T0c9NANTK@A;t>&vPB_NuD2J%E}!JS8=n$ z@+*YLJkJP?_){yb7vxbx-s5cTJ`vg#rIaPod(UUc3Vm2Xa1 zOkR9EF%~Iv0D#7;P3|iA_BO!Oe}+q+X)0`&)flYviJ|SB)B$MZi!g8zl#`s*xK6MaIm=S?A{-h0uUF476%R*`(=y{QcG9zzIBV8j}c9O3efx2`uP@P@-r?Bk}blxU71c#5k`iQnc;lNyqp^*FWz+YYKwmN@NY!k{+(jWq zNL%`QE3qYLkW+zvv#$k6*BQx?skz9AA8Am%%1z>_onu}HDR(MFU}-QS{BOk@X+J_y zlfuD1^LNp!U+@{5iOo`A_?mBUNL1(j(^~lz{z>q576_<^>3>SbHG?r` zCSY?S|#*clNK+Eg9k2p@`N*}7wJzH=D6+GYw-THje=M=AI&rx#tLTIUi z9<9BC!KmKZcgCw`3f_z4xFM(rE_04H>3c2%3(i4wFN`y7^GSd2>H4#3 zF0As|2%swXn%hSsT$f=s?b%}Aefru&OVafldnowbCh8-g9u`vmw3F^q2D`S4EQB{T z=2e!@{#6c1WiD2*0)v(k#w4(PxMLxq2DYXEAC8YLy4TAJ?R6(ZByiUk4f2u34a$MZ zNxu~lj6bF$D^~EzN8BGQ8s5qxE@}IYB7J6NAsYp*I!BK^U3J_@%{soK!y)6iCI@X? zn8dmtG9deFYM@+4_W1xe0it>4poaILn7LD4`q@a`zhMI0rutrt!y?UU*X#uY^2Tgk zz!iw$ozS1<7Egf;8g87YX(~!my-8yWt&2uxly$TO@UNiH)@n_eo^r~qkxly~-D?kCm!P4MWKJ1F`+pBZ z^iMlDjQv>)`Qq&-ybU3bNe3u~lXz~Qiz%rqKXs;@BlL|CFE?&W?0#3le+i2lis>(B z>usRr@DvG`qOCLp7>w^^F7<@e_jCAj_9KrhQ6cX`u|_7!`*-)}!?2HYE?3>5jx5=> z|2dcIHU_GBvwTI(_ad!P62VyGWw(I(>?FH}5SK-VysB?hdvEC)vq!H%`-2iCXBe5Q zTVE)kij6w*uGvit;@9EB$A`Dy_`+zHm_aL=5e26m>+*(PA6A;!N%-csSyicPzHz(P zQ;|^&U)!C$yD_E@DENzgA^=4a9%seFB1)qG%Yw#}yS*#X<^5S0MwP~!z4`Tg$&>vy zFYSkl&5*6)Kfo>*mJNXncL~QOEe9hEu!`HO&rm;OM;xl5(yRK4lV8|B#FuFr&k*%H ze=*^HuH|a)jO;LIvgX~EC?DE|#$Q|b4)Gf^Z2eep3RiY0AdmJp1tqJam{Y#I`N8fi z%=e(NCd_nSMI>O}x^miH&No?#zI(6=v%#Se!|Zn@DJJ*!J3&llmlop4QSRj};B!rR zx*}sfE;yQWxbq=$zAW{044`VVe5 z8Vz_wUMA$b*6J@YwH(sk9#o14`=g?JR2h=)r8#iOr>J_HV6F`L+>u(*k`mMtX(Ht1 zD~yX>UP=k37u;JPbeYqBCRCc2DWa|s6#L6$hX6@dxI_V2_0g=X6$BW6GNA{6Rh{hm%Dfdg&G>z1=`0ABfmi(OxsWo8-YBxJkT##VslsZ`1Y?Y zDRx>lnLb=SlbuAy;??=+OY`@2-s*NT0828(BY)q3?9zn}v4OF#t_6-=q_G)Y`9d4B z8W>3z&te+w{S+uxpQUnNiswW2>ec0;a`i~z2l>VQ44Zo652|tJEpECu<>>dOxcPMX z{2_7O04h#{Kl0A5_G*QmtY}^L$#pP83~{KMd5heZw{v&KCLGIR>b)c)!_9GYDd){i zCylwaJ=X)1)nM6iu1-m-hGMhu2l{ez3GBQx=v&cd(#Kt_e{O1y|0y-=?k}o4G{X2_ zy4)o{H4WcqHgl#i=ZWoIxSZxFe?quUth-NIb}jL#Y|j}# zoiPa4I@oZS=0b~dRuD>TtFd=D^zTE-m`n=CP6~C(lrGlT`;$tm@@1^$B(Xh!GFLL) z+_FK-2~!g5bj?wMjT?nbi!rzAu1?}S2<*iSo42iGpRJBIO~`V;$&FvAgFQF09DT+( zTDb&ILVI^r<$Z+d(640qv@56CXH%AN0tF_UMc3paH+3$hAdjk4WsEgQ7Y_YHh6s0h zHvr<7Y7@Ah0@-pRB@%1o);IC)z1Z5@iSAB5!xn|M*8|pxV%)xKcz+cN3u#eC<@++ zm)Ki@X~i+8oq|5Tkt6(bP~;{Ow`oAR6A8WR z4nuWqBn|nwn}75aHCZ+ovx)W`=63oiNgj>JA4^9p5_uS*4r&v0F5^q0krXgHaHy>9 zDTnxVk$@!y$gBO#KGL&FaplGY9ufB>kroav_IJgDf^*B3hZiE#XXQukLm-KX4}c%k zj=PTi(8n|G$z?OPH0uV2HK4K_G4)f20^0ZDG~TR$_n1&6nz*1!Z#PLDmjc?7I&;jo z-5f2_x^T5C0mlm=z^=Hz~z{)^Ima|U9@_vlvxz-tX$>kF_>U{TA-zN$_ zKTj=&l9(&a{dkE7Zq{x?i;lDv5YAdTlwOxvRDu}UxV?12%f8C`}UYSrc%+iJJ zNiWsk&$2+O$c`|7^fCTYDlbFlN4j8L2PVai&&MOU2st$_%CzPr<9 zuRF|CIW5zq8l|1G$ih76Ku&?*vB1034f9g1=~X6iULWBBQE-*S{z3r@NTuB#TZZ6d z7<>e2Y5ii3cToL5B|$POsoIt59F8@x%nBgeXKRs3;4kToeJh*N z0veLT@w-MS?JX8Nxwe$ehF8v~-_8s&4N*P5j@j{&Lo&qGT>X1PqTPK^>NP$y{}Z)M zns3saxGG6bx%z1?!9xHh7|0?Uynr|Ff9HM%`HU6TfV(F&1De>}yoH<9+G|li*=b9L z(d-2* ze5r(Xu3PqHt&7JuBv6OFkZbh~ZxWv=X33ZhKZ&j>WOW766&}7lV1vsF^ZHiYa0#(4 zA`ukIYTw+JU8I>RU^^}@grD*MsyYt3Nf7^DJ9;W2Co<(jTpT6aRcEVpFH42hGz)cg z8#SvTI%s6c8>gz-hyENh=drn-{mSefSt?8h(;4^Z|?UAlcMq%(utW=RKh;x?{jqQD~FdC}l*EH3)WYT+{e z6L_zvO<$!#m(pj@ur|t9CiauG_E+}gEo*v26UUq6u)8y!YepSsPo$bEhGGx2wtV-$GWOsWR*g5t4FGA67 z;}sD~4ryy_nOcC4vq_XR(IgMT_A%|h>6IYbcE9(EyNwj(evaN#bwVF8 z_nR{U@bhu)5yp($NI@YgyfyWvi_Y1}C7Ui}DEb|=5?`fn8$5?f&DaSP_XX|;(7O`)HSQWkIupBj9 zXZ;)a!>|}5T9|QD`F-qw@=fQON#{G_2U9$&p7!1 zhJ3q`L6Bzr!amT5VMXRoA5zVvYq^ifK9ba-Ed|`s1@ywb`M~tO_Y&>b zubOH*B{BciqYSepSJK)uSe)LMnQmAZ9TF!iJ$gsPi+k^0CTKk=Ut zz=a_bEwtMUl^vy*)jL-VYt|X2%I^#Eo6Kap!9Y{aJov~4!pz~vA681ukmg11{5sn~ z!e7nwXGtLk^*+x>3a+HH=5CGQ#7(Y~Q*B*?M1P)D)!eJX8)ofCFWGDfWGrPPi(JA~ zP^UXtw3>(SqjHU~EMA^2IOFhEs<1ZOrDtSL1|)O|6*sQeLB;a|zzc#M*_F#7a=FPK zsxG}!4H5m!w7kp`)r@$mHz5hPdjk?X9iP}{-5#kXfI?)>7&;8f`^NzLr^?6+hcVi3 z;(iwL-ab+dlVt!1W*6z-@r2v-^9a2GsX! z(8(O-y)hODY`g)Z`rmb+?eBPfbA{RGZrD#OarPs(B|{A!uvzyMt?T-Z!iMP8NLyRF z?D`f6QEECkxw<=h!gB8*r)^k6oXvROd{}~{;8amt39`^)bs#J!Y2iTKAmzP1v+}2JP6eSQ|PC})Fq!1m3!Mi0fZO8*qeC8+_td0GB0>A_EN`VVG;^0 zTXowjoFFzG#LXk7unJqRQ>ME`uz$pBC2N0wyH!>`IZj+pUUoo|Y_ z@=Ron#EO$R=xSTiy({w&W&@-fNk*zV)3ev)p*$5n$YDE4bjf3U75x`Ctb4}+YPH}R z5c55!2@}v|wY!i?OSgfgS?Bd_@`iqbBAtqO%HjMd^Hy!iU&D zD8DEu)Ht;P1^15o<-p$R*ta`U`diq--yvT#7aD$SLZNKzBKSvG%qFY=Nh zWNCwIuvxw=fJ_{+>|!_3_vKZkog*EV^2eu#I#wJVv8pPg-!%0b`E!gh*afQmRS(t~ zYKqnPFGz)CUOlNZrEH{CC|tKguVrvQ=?DO@uZ=3NE%qVT9{mBdeHt$)mS=XaeYj}j;itVX&-i(X#QUQTLzAXHb5e%{f&{r z?b>rEIiJdBUK!Q~9;S;GG&qD@|Iim3kN|PTKDZ^mwg|b$g!nNaN*RArOk*{tMOC^Y zG*De<6_SEd@I(ia3J5f$Fe zwj^cWzuN}_XH>}IR@SPsmxWm6-;VCd0pKca~zEe9yuSgadL9?dKfp5 z%_u^uG9fMoROPbPR#*|PM8Pe>q=>Uchfn*DKKoUF2}^NaguKnmY0fp_b4!(&g26so zxcnI7T^?$@&m&^RYqWc>hsti8@G173UFRqv-<6bg#cwF<9vKZZ#b3hA!=l>Nlg6fI zzZk^cw6_!LdJ=HUO8kL(@$On3m-Z*BiEp z)E;QOO5nn1k7pz=ykrgK47xPu_x`uI>*1I9I|ZF)o&#UG?>K#LfUjsj0?>K)M>^5?h&7&!Nf z+z!7Vd#4`vS^Qm6+@9N7*V}Fz>x8vh1zyZ`5yUO~X;2OL$Ik3m!W9deuHr;B?Y97= zueOHJ+v$et{ZHD1Y}%2j_vTMHSuMOCe;6_kziDwC{kyFWL^9AI^Zeb-5(R!MfVG$H zE8co|Vg}8{g^$I`kdd+b?LU-y9`h^q`vOQzfcIWc@eb$Kx}VPf=_z7otq`1aSbH9! z394&ZddN36mJ{nAa_dF%1Rvd3V3SV%a;?={u!w)|?)QzU$c_$kQ`VGquYGJy5{nRN zGY)}?&3qWBb8~7Xt^8F3X`iLpY?wM($)TK59n}|9Lg9V(&WpFd-#@zV*AmhAru4wo zIo>E{?{_-28aNP&c`@Y>dRtSl_&iOdn;K0jEmOsvl#Cor`$6XIvN-!)?K6PX#IlBuUX2t?-bivhM6y( zUob)=`wmCz8yE?dJsAIoH-)MKF_srgW;(b5360~H6G=kp;;eSmt=Mj1t+84YeX8GV zVIavWADQ^NoIl`b%mV_Vy$1KJ_ zBWZpK(wOi*t|LHEiBP0pS4Ytz`VIa^IApZRt5@*oT#Oj25kG#cFQs%(#zRg$-Ez_r zG?+P%93SLz0S~=hZ3;B^+K!R~I`qw^XBzpczOwXHPKL+wXgSgtDn|+3>&TKsR8pZyTGRRom$H%K5JXw$>QExl$2;U0~W6kKkA0hOc_y}02d5pT`+G-cpm zhPWK1Z%1rTuu?)=bqzJd)6a(^aYJ!OkD5{)I^Q)bcuhyOumA0{DY37IZh>zUrQQq| z$q2T754ebMn#*@~yt=>Z==w6Ea&M_5^%Q;(msRGBl#ey9 zF;CC5aToh_XKKHx)`I1tlC4zB>V>0)wZY!q)ia0Ti2qLLd0kQX-T31x;r;Jdy}68H z&Mo$KRZA$VttroY>oI4gR%r~=c{1-f$OQF}*GK9&X0p6K#yd~IetHE#3F=&Aj}^Ty zYGN~<&vTKsEXDhcsSWx%=7r{qbA9H;`T^PnCm!$rBos+a$jl8f<3&q%s}kbEC%p_^ z7n-H8PtjwFihU+`-0d8cj2|8i#0ky+SqtTpXlD4VB72`lWnxNtTzmBevRVFTzc`-$ zdqQ~QKbb4rcnjTgjpQk_!yNuoB1^^(3@W`uJSqq7!Mn4Q@U%zB11IBa3q~p%K zo*P@-{fR4+jX5j=u`;SET~xAIMoPsV1y*`=PUpnny$srj}OT(W3T~wjITBAg@ue zE6=S0x`!2bGR2=@KAU;ojy>1dH@&O@Z$1a>$h33aCjTA6a_1W63WPTyo&NeV+I=wkXBPN`WWGvMa&C zZig3nEveDhlnM!mfubydpJxm^ydPnS$&Gi>9ziJR(#FvLMt=${r~SD}^#jihW!WC@ zE)nLGrrn(#ICsgH43zZ1I9xK2GODMMDF@Yn&ic478BdLb@7R@_K$j5_#*Ik9Xud4E zL$7hrCWAgruIH^r0?pX?SsvT1bC=)nJB%#-$m;`n^<=3Ll+nthsTS?y;zI`C0ejDr zbq5Hdmr!>QD8k?47g~e2ig3YmOh{y?s~Rc)+)J`{V%)&X*9F-t9{1#0=|{j%`4`DG zfa*YZ1BiM@7hC2n=l=DZ;0=@B>=iPoSLLl>iJ(+`R$zfuqdkAn#qN;&F9WWf-@du; zRm47Y7FndK<35E(M@`+J-{5xG=GNr68Nj6@w`g9|=%BJg1xRX-HlwL#8f4~2o%5s{ z#H|pj9uWO@K4>5No`xxanK;N6c#r;z_$CmbmorXKI5M83NyXmP{FH9;Su$L#$D2vX zAKe%;7q8;F!O6}*vZUm7{yJ{L9XHk7GrOal?{}f5egBh1{WVQBlO?1mrK+kt3$bcp zj*JsT1k*aJ>ICt2O@2|9HVapaJp2)OamlS}k*@#&KC@h_4-$n(v~h{q#CLIe9iV?* ztA2(G?$VArXzM0f$}ZAYF!*!^DZS1e3zJ;8B57pKbAD&VB)<3)dyiNKpil?A!u4?H zv2cZH+rGB}997-^=H)FdtGrw`IWNUsYdMrYqG)knp}tCyo0@hS4*hY0i`^>u;SwII z)6PfQLWybJPV9}^aTRn4H1Pa&_wMd3g%jI(lChG;>%?D{y4er1z$P2h*n-fBBo>AC z*52^l8k{WvEnWL+9cT*mACEvM4y(SH@bNz& zBf`yPqXWv8%q&U|T>e6b;{K&9a!dPjS#!{hoG$}^>%StnaYgd)D~q;;Gd)i91%%~$2Hn>+T%&Bq4&RfI zC(T_>;kS{qumW?J!P!tTUvw(+&?D;^Yw4JkTi%Yao^L>^JzB}crcJx11Riu~`ETwh zQbjoWU8GGfn|%V@bS8hv_Ag@SPo0;gH*d!6i2L_s3>j}(0jH48clj|&+jc`p#{_AC zDD$`*12wl*TC@S0p~8T|c^VT+w_uB$qC!s2BGAbttlV3IZ{#y%daLCV+g!$Na343~ zsuVlgJCyc-DP`vFGy7NQzLWK&!Wb;K{kGNA()aqG4y0w$fXxn9QOV4h2_je{Afx-V z$N_etvdaGtL|XwHpR@)|WvfjX#eR7qAQ)evqBhvD71tvlU~kL(s+7eHMI-DIkr!os zso)ZcMqciliX0+E3;nV2MHYbhE9>qo()t;J zC0ySK@3NjDWb*g!L;G1#%y<*LHc(#lGSj8U=f~YWUC_Jl&87-ujkLFzm;hKVYb~Yq z4Dw~hL$p`z=MS36(BNAOQ3a7EoDOa@*-gd~lXHnbf+ifU-vZemKfncF$~fOM3<>-a z+!5I48;6Dh3w4i{>_<~~R)c$^v8tpnPOlb?GL-lel*9O};D6wm@f$Nw=;$oZyG&iV zUD(xNxpxzKJ5pbV7hQ+~T)}`VIiK0aMDE>1*%aqEo-<`^`=RnEXOF(!gsxi^J^)e~ z|GMV5UF#V*)R~`D$LrNXuWCk0KVOzm8i!Abl2c=-joTU;+DR|u4&81He`0=0Fc|zr z?LkMlqtT?Mt)`Wgj0p`&lWgp3T$-k)3cY*{4Gi>dRSy)J++_b|cqT1CDbbl{N51zv zb571Gr3%qoN>UutuA|Xj@f08+%XlT^-m@5J9Q3IKqB81*nhoWmR!Z~Mq;lOKHvkm_ z24#KjPD8U9BK~~PC%cqCte$k%yo3D(z}duu^X|_WSj{@6F6BH1ExqM)VdLpx?UJ|v z>N(Bw-?v{@!piE z*d1GjYhA$X2XdX<0_BPI`CDWze`9 zu8^Hu{D;>kWiuIO17+NKj)>yT_7oR)eSsVU(3;^3l;GycrQV>oJ)D0Gnh$x%C8r4& zYP_;<2jG!0es){PL+*;Q5Z#Cf?_aV9C9^7YV}50zr3=8d3YM;M*28GEz-Q3U4Q0iD z>1fk!J#nv}=Hw;sI$8S!OT^OZ%@aL)hu@Z9D8m0`ef|^~mkb7mXj(bCEa`72%#$EN zyL_(oB;CG&ca&&zxUoVxl0%O!eA99)-$KT-9xt?i|shb)E;d8Mf0IF^9UJ zFl-rhGV;Bl zF`H+LJ$4wW3NZdho9d`u&76NZN`~nGuKZ6;*B#Gh`@M}8Z3#Nmh|zjg)gIL(_N%B- zbQ!gxNT`^xiBT zUrtj0ccWdS>k?SGbmGv!IJg*=LjSni$L%sWc(zh5Ht=nK$%j3lQ-_yZyur$vYn`$3 zB|+X5-JPW17xPp{1iEn5^HM_}L|8r{66e^iyZGB^2Cr7`E9AE9sD3zGz0Y$Xt}?k* zu=I5@8SX}-vD)Y9sFHC8;CY<9Q|egdE-%WNl|c9`fQYO!;4|0qJtf`epd@88MC4Eu z*^K@BSq?Y-L};XGE)^IVjHQ>u7;o~&*2bO%A`;I-vv_f~a5jqL4TSm>HFoCXu6rcO4zH~p&fJQf})+^O*&&dot| z9+9qWTfXVDqeqx^ahiMcJfn{mQbt+$fF;RjVNFlZm*IHAk}N-?V%~x(6K~hyel#ctkE2D9n)2#HY3Q z%q>ZLu6=9fb+_Oe*bDp^oDR7_v{(Y{C5cIbUA9jr4OX9fC=U+V#$%Dwg$R zPoL-2DCh<_=7-tP;AAXpb7S2DqbP|qC09KN@BSKU&{$TPi7WDWYcudRzr_r=qhOM%SURwSQ#n}~KilZG zULs@OjK1)t?c8L+zi|4jTpr}V>t2+mkv7F;8W>Mc*3&w?)**07L0_faDl|ecs%w5F zS!%P8FHJ<}to>OQ`RNyY$O+ugH%3`uJZqzBoz|mxX7UQ-$(N}9RQT6-Rr1|`@3z_Y z+(Rupbw&7_Ef+!M#iwOf%yzC2!%&-_ZXQaDw$oT8K<5puO?JF1eIm9a`uBRgMw=E~LA z7MvjqOc}4gO}+**lCCCubl;iTmJ6>-C8QbBNzn#IY>XrqB4# zhuZJB9hAy5m<$doEn|-@b^a8w%a#jsUNDPYvHwgjc#ppy`-tu(oh$ZPgMsHqkO;8I zMi;x$0)FMxW30?OK?mp0jI-k90Z+v>>^S_;Wbn(b-P z7rZ*D*Hs6@x0Wp!)FBe1>Qf%>)b#op`_5k7y$~Wk?Rzm&D}Y>d;)zUg9K`|3s$>Yn zjc!4y6nO7I{^*aS7>6Ca{sS=1N*qm7K8raSJ z=QcpEGpOtB^VvT8we0AJW8b?s!9V9;?Wju}x306~T$(x{c-LEetvPQAaO=8Cv7JBx zAX@5y%TN8`W1;1gjdHO`2IIZpX9qOXMR`%dUnmo-Pw|`SKY`*|PiuoSrYh;|$MS`~ zj3LjdMlZq?=4s>Ac0o&8X08&%Us`3$l8=u*_hlYRgvM;XrAtre)Agb$4?gmbi$-ok z03TO!=yO${)92?nkX21vsB+TEj?O^ zK)X@%C=gi>X2IfyoYwvIxbmH``B=rzr&K|dJTVkBc0En4*l#*m(#(VFnG3I2f3OawZjEz8iCu|7 zhc1=EaPgZeB1*c^HhQn%_36HhoKWONx&NMHvP&KE`_p)%ZLsu7kFGHarwXq63T|!4 zJ~qS5eKrrDaGQ)eB+j5qq?g5cxD=ufC{?^&*~3CzEr*~Lv942k?K#Al*gb!e1&xie zz3n`W`BCk>P&h9e-A$Mh_eCO>s>~nhd%|VB6Q;z^LPpw)l%lP-6b*#kMTB>wq zV0Q|OtIjkI9R&2oUo@D}IVJv3I$ZW|2LG8!=Maaa$>>8unCD0)RJ|0j;76Fxm@sx1 zm#$;NXEEniJsk8PFTe$?-pHRL(d{p3Y(nNv5UW{~LT}^Uyj?cO;cefa=q?=zGGg)X zW1qOQ#?U@$*l&@nSCYPllrgXvyKP|?>q38-ws~^*xFE5Y1C@vndnh#21o;LPd{vtJuwhGrSo;D)1aGk~$aQwyhjq zmCz!tTpC6iHmaL=uLbVo^Y>h>S1cSY8IKL@oMsqDZRmBEt{C#GYbI!C!pvw6dbKL} zIe7if*qb?~*6t1n2aOrsARKrQD1W=_Wy>#K2*^~FhPtsJp{;pnUSooY zvfPiLh?Xb7Im^^kWELnFf?Pn_?R(ye>NM5tTZ!BBG{t96{eyWe&r6Xwce#D?L!H5o z@6neeGkm>r_g@P>`4OW_1gx*24~sU6>)^AShVe*7xn|Ko-BUoGo8wn!&@B@#e3m!x z3~UE#WiVT=lK(#N75gKxW02HpStG*VBd)SMs=u4v7F)p})2j5et^I>}Fw>}zv3UPC zD=&T}U5rj;;@uql5z9X{Q)0t+n~j!nqp%g_e0*irpG^GRL*98E3HH4=7+|+1C47nDsmY`N>lPqUBpVpOYGC8DF-=L;!68c}rvik$0+o zE1+n?o6Wb#p-=vJ{@ z7uY{GRy;gz9Oz$zEd+P-`BTL!1nCIQA%ep+^x@7Swj(&a_a+h6SlC^_Qk zezy|&W%?*erI*A_C%a13fYs>}AN{Est6uBqfjqfGCfIMP;?rJCdhwmbv7EErhD`@~ zkLW+`M*H5;gc(~!&^HRV(_-y|9F&Ba{^(~ceS62zA4O`-8My1m_-Q>J)PS}#IBE8G z24z8*QLh%#uc;`xZq88$*zL|zO|5VSBV>rZiw_p`F6hD_8h8{YXiH8#tVN}-ifWyb z6R=2{XL5VDD1|HWc|Vhy*B$W{#y@lYplLJx+&QelUt`SIAGBi?pz@IL9DRNSHkN`us(q8p? zbsEDJ8e}&AD+x|;UkjqwAjSznpwLeSbN^6Qw9gVl>etkJg%0ZG(~a}~d(6^Y#rCl_$}iP4O9+2Y!y=zP20NU!6Lbxh^sxczXm$B*kB$ zI-wJuexC!*znf=;l8+KX|E(BNn8YcVQ44oIAn3Lfozz*#UAG<{0M7=~DQvLQs{w_ zUPkKqaJU0(R6h4xMX>k-j#PDg`#x?Zls42>@*rz?zQA=(!4{tMc~Vz$k+PxIB6;?w z-#vwB`!l0^?-$O6-1*p*UXz^r?AEqR!$h_Vm8whyIOz|$puAd)H~zc^Ac5u?>j|#h z(XF@&f*xbzBb#Gz4^V3Jd)w%XW8?TLfwKoL| zysgNNHz_-a<loSFV#2xw^zmMSVOb#ru9X&;LF(rBt5hshEQ^<-0G zy&r|ibH#qc-ZlnYXLRO6@%Qf_GFmQ?cUk0X2j5EgWy)2~9G@k=t#yA_L0)3RU6}`F zT@1d)Xo^cFqbE7fr80`XpwR2gDhcxoCgXY?SSC7HajdEd{1qK86@;@?(tI}7)J zUDr=hKG*$$dQJW%>o+zopmf;dkcdJM#f0mymBY_KrhGXt*DCKxH&#e;zE+u0NHR$- zo+wS?Jk7u{bp32URH}ZGsk_AUdw|;0SDobeJI`<5n_c=D@S(c}8SbjP$UJKG16;!V zfj4Z%=VXGnC;(W6GFbHHMm zQY8kISSoWCW@hl=^zQ)~jtpcqjG3d`cCp~(tt`l~kv)%+v4Yg}-LsVaWi#U6OJW_k zH|$+1$U-7@pNjtvHN?$T)5eSccGrb9nGnkz}5@n zJSR!v`Vl-+jum?8WdV+!5ULo6J6V&>4IS?-^ROOli506Rs{Jkq1-sY#ZT14EUvilU z?%1SwByL1!Dy7W5SkTrSSgIOQI%D4ry+*DDI}9f&wp9mo8KOc=!T-hBF}j zm5?sj!2e)dIj7S5To6&bi`&3{M^7u|XD4k!W?xA_4mtmNBdJ&T1@(NW1&e5xt}2{k z^=RIy>rLIRj~?+l_B@=Wd{$k`5Q|QKpUOwDcHR3IyvJZQOGecT0|<7yH)i=@9^0#8xYOt^?%0qnH(%6Aod58Kw}gttDAS?D##Wjml8>i36`opr6s<^} zt6TnKDMJOFshkzcpRlF!JmZdFt=n2{i6QrRV8r$t!c0E&7|kUFAQY^*E}Qyu-otGI z-?zdkZdDR}|CnZ!|7?rD!BgkEzLp8W2!qIZ-*xbuY(ExXuCL+fRfS4j|8SG|gR@9r z__Q+N9kBmeNv1iR9%ScXGgPWoT5F;YmRuQ|tKag{8Hp{`HY?o-H-WH>h}9G=a|-d0 z^M&4)D#qry4J88UbaQGw4`;;fvFY@O?OPv04C%3E)v>=~zB#JRY32Oy8Muus0%nsG zqop=<)s(`PN+&t`RI467-lsX;Cd+nL&xDtP+oX#B}{N?smD-?xD_&F#W)wnp1+fn0-&t}VM-8H!JQWa>yWP8q# zMtOSUYOuRxl5k@z%LoJ#VC(yI$jxdMeDHOmTZ&J#vbG#wFdB9DNyW1HO`NU0ZbgS8 zgL3=(kQ99{a)y6K&J(+Dt{ziM_RT^7s19Tyr=D0Im~di0ZKK;jmq^l-g@tb~jDA>( zSRcRiQ@-fQ=FHBe|4JjabbcT~UA-V$diWIKfRICaCXw*+8FK+ z#zbvo(sk+(%k#|oW_)BO(cgWzovwP3m_@yZ3o$ZD#-6vB$JRg`;??I5FotO-TAiO? zGQ0=GpTN+|S4@TT8PxiAZ5t@C1Fz^wCzce&xRvbGI^~ZjynIJK*S?K_b0m=#woS)o zc6p4kBbmj-LqbTF_M0iJ|H-!IP{IE6bd4Y5gPb+o1=JLzAV_M6$u;9;_R`y{^R55zI&VUce-Tt7zAYy~Pi3!M)~W2?&y6oNZ=H`ll~>n1rODN;hie+-3U!k;%ujbN zK*(CvssgULDhzl)NQueB4_dvTJ$TSw63i~ItB>&u_fxt?Jeq4>O4MFJN0F3LWM+5O z5=d)&urrzem%u1KmWvk5>6pHIIf@G`&~cKaaQCO2!tEtj{Tcp~UjDi~>DFY~Tv@4q zr?xeHUHOSy>78{!x~gFYTWr0Wnouo%t2CbtRm9E$r0-iS)nj*VO;_FPS zVe|{TF{STHtyW*SG^~mQFsImQ4ctBYZr}T-7R?jgApyoM4F_PFF8}PiId>@Sr#?(0 zGt8i_BdY>+2}2FASNzQS1bQb-rySfhOM5uRAz*+o-s}xJ%Zpm1y(2(SSm;&wHo^aQ z;3GS<`2d=t6_X%Hhvm9qLpBfjNJBtGu)2j!6(sh0=fKf>MxX_Y zZ@xj%;9yAnUh<$dp0_PqWBBsY92?X0e2g}4V51{z`*&h5*v>(!juyXo6b*F{H4xTw z?oKM!7!|d1k52E1O`B7EQ)&#H5{HJZoZQvl%GU7Dof;n>2Hpc@xzu}DB?d;KuftI; zkcG2}VH{(rGF8FAcf7>ZXnA=mq&PT5H2ud31xuW15FJ}Hd$aW9`}VWFA9Zy9MHh<~ zDO@F^pJb||d`wFkducxwNPFAW(m&d%@fQ=*iV3mvfrYBL^Qxy4kB_gJOeSbpNR|2X zHcg&rMCyN-#}QS~lx(-=?`jcBbr(n}7IO(sA?c4=M`;9?!pXaq=9U!wH)26x?~GB_ zoQ%byr6LM|R@R|h%&|Ay?2(^S6(5(vP{YS~RZNi$5Em0DS|d#ro4jYw)iL~CC*0r$ zvz4l^bR+EGrdOu(oVe?~C#6V+Pw!0??jx1D&o;IH3mW(AHxe!!46SnVGz zH5UpZO4cdd1VqTfK)pOF_D6P%p}RS!AlJ?oHN@g!FMQayiWb`HQm$a`n{mZ|gMDYvpPV z$+sY0%AIIx?GsX_Z=lG*%2DC%a#x0e_zLX&7SP!mdp`-{HoFM0KBek5-@U(hXh;^z zGy_h5h{QIC_YB%sq~6&M=w=?s)2kelTwKkN>HL<@e&7}#dunKkP94TBn~ z_+F=j!xR`@IQ63BCG_{>Y9r$cP+dA4AEO+r1TK?fcP&=zS4~(lvxaSBLT=fCIrs#0 z8{Ev~_;x$e{^rv%ZD#r$k1w+KWK@S9@Zvf)ZNik`hQjV7rd0}l^+Wvc0hg`<56!Way*py_!cjH!~qn zIphMaO+1qM*g3C~`gaxK5?mv1#spF!o8Mb=I-SW(r^dTjYHG~c{wPNNln7Dkn(P7V zUPj$N9Z-wO$QR6V5v_ISXxOfX@yxdcZ7RQz5BPhkIbqT!2srgH zY^4g`9YNewdDSK8y1YtHMledPtQy9pE}qs4OSNQTgi+PL3=dI=RQGDG ztg87GAAwaY7e!qR0F5J<+yc=78xr3C|MW08Mrd@jl0D*! zI#E1ogU6ooN70ZBe34X8hn?&DSCMXjL5&8o*Se|OX|reubgV%1<~U&29lRWp zh$(n){Hf46drq-hh7{jq-uK3#!1pI>m6T;<7ReHo<>Mp*JsP3&YWvIp*(l(;X`st&x`Y{x={5aCi;c8o_i^IF46ePLV z)Z&ZaZr=lQ{tk;N?dKkVsIGXegIRKqTH4A=uG-~NLvnGb%CdE-J*=mBM-O_-V(&u; zuigFuG3a!GD&ufCIz3c zrmpy(R0qC6N4o)US}#9G9e=1lWs9^~WAcMKl^L`=yw1axoxePAY^e*Y9=Rm{M*OJ@ zLOa~!8NgS36M5plXh~COhx7TyYW0U=p;6NelF~;%3X{>g6;60ix@NCOG0}>d*;Ysb z{JtU4^^UU<4hj7BW3{vwQp&rkUgy1Po|8N1xa+bqmaWmdTpOF#>zjpKueqsZ8-aEE z2j<&MGhVtY10AB}PYFzMz)2<=n4aJSNnMkDq)tJ7K$Z{K#%vFNM0QDU{JuQ+DX-d0 zhL7>;@enZs5*Zo{E+NYI+#9BOenLzlBuJd3QBWUMGVZ2{*Sfb`@xSM2I2#7;Tf6FH zv^)$-4C&^9|L%;ILIg|oxeUfA&Z>@zbTx|xc?z)Z<#C^jBQW>;hZAqvWpRFBcGV0M z{K+Nra^k@uBBH{_W10I6>$3ESW&zi1Z`C2m9A}I|r)Lqe^EisnfRCM88>5}7mUkY@ zsKOxcxck9`Aw{;5B`B>skpX5B*m3a3q^0s$^b!uP2(tI$q;y_|M@lK=I>Qv6R!6;; z{PmoCM~=@KsW;TITjft+?qkS;Xp9_f9I#~h7#-U1<>FjkuDJO1-{sG0x>0|g_e$pe zFZvhyU|ZZZ6>$py-t$vZZ6vO~UkMV`$=W!UML=jZuW$wDPArY6Z_-;Badv2lS~rhc z%KgWcq4p3p4O_turq%-JN7gY^Q7ZW*&W}nP{tq2x^(q}YUD)!Z@icyF&N<7a2bjZ!P8g5(WkXGM|?HJT!3C+NA_JOofT z#+T!08DtGf;XY(pz#@fU%(6jVOt00X?Dxk#osN1a9MR%u*@>Dt4Mn36X%Z) z_H7-Ls({R??>%Af~ z!C6WBwD3k&Gj$bK7JHvt2HOV2W;NEdUYAxZ8X#Wc6IsR+qxr{rVBT zvox^6(*|n2V6+hNY^!|0jp2ptUvw+{!Pk`5rbXbcPBZAenvI-+MZHf%OYf=7ib>LI z$-6$0LGgoILzm+;GSkq8-g*HT%~0{c{;t!S62>1>bmWOw3ppqOtfa4O5i*}v5Kjfa zV5bqL!y8Lf#X9)qqe)WFWJae+rb1?nkBHN*XdeS1Sj9Ixtt~>I{$J8VdI9lF1nccz zT4oNG>f$F_E#gF2Kb`mB`1j^5Ltd9+3WS8Hz_ozsi&Ouy?ysuVrHB>&(uhK>^Mh-b|B zt9ELydYeZ6@zH_3pS}Q(LQAjhxdq3e;6>0Nhq`V^Quv{_3^1_NBm0X*R>Fez8q-4Y zwSP416AjpYln{wT&!W~Psu$nds)?)89MH}DTrzN6S>Az%bVciSG{v6yOXLz{aw!mK zSO0_A@D-L@E{hU=5uYuIB8S=PzJHs`#qe#JZ;h$5$2%a-=E0GQA>CUiRbmnAg;#4; zljpRT6Jm^CLOB}R8}%M>+~MTY361O4mU?4~uCYVuH~R~F|9rQbZXm+|W*bLyDGqg=H!?Oqub%dxI!9oaa954tI_`F;N>|S#I)2L?u8$Xky+Ul-W#789cFM!;tsd{$seZ(!l|eA+T0y-o z9dSJnHlIoMCzt6m|A`p)48M#Ku@RcGXvm}ypL>~{-kbq-S=(ki zi-3|(PXj$YJxaaLoD9g0cH}T!7ur@lLALTV7v2q-w{zY&nSof>x*O{_P+=ufJb%7?m zXH(4+1H&rS*jvhJ^^sevCKivjB7a*QCOmo}+%J$@F0B3Tah~CD`S|akxT`-;&8@7y z%_w!5z@Z;+Uy7Bl8LD{8M~}U&!+C*b6#|wxzJ)Uy$_DDYcD7GHwxnOVAF%`o zm#m$B+)?@Wdf8Uo3d8&X?3u~r-`s(*3*wg8npy)u9lcGq`h$%#j=tu&5Vt}S1U zQe(RRebLu0DLm`kQKKIj?R0v4Kq)Bm0AK~Drl!`6FRRK;O(Q>zSGYQZi6dQj9rq1T zrUNu?A(6Y_nZ$^+-KCo)ic-~_DIaq4JS`+}YJq8oM_umA`I(68IA)>+JoyXzFe!yuxXi-Dm6g zL7bI^xuTL%VMb=A#(nCtrSeN^3;6i>hMKsVOzxQ5ax=Aqhz=pdl5?Wt1TJuM#?Rc)GiAKFYdu*FHQ+P2=A*SgYSJ|m6))y)=H^XV(Y2w26 zzYh%4f;dwic4aN{mk)l7__Oeg8D^R_$6t*$WhBnQohV)PA){7(P|>u#%NNpVs7qTz L|Nhs1p|AcAq%?QY diff --git a/.resources/8d7c8e8040bacc6a0dc4af95e8f183dcf710217eac98a5227b99bef912aa8b12 b/.resources/8d7c8e8040bacc6a0dc4af95e8f183dcf710217eac98a5227b99bef912aa8b12 deleted file mode 100644 index c8bd125a..00000000 --- a/.resources/8d7c8e8040bacc6a0dc4af95e8f183dcf710217eac98a5227b99bef912aa8b12 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "paddingBottom": "4px", - "paddingLeft": "18px", - "paddingRight": "18px", - "paddingTop": "4px" - } - } -} \ No newline at end of file diff --git a/.resources/8d97d23b3bce1a26352ea99aaf5a561700173898c145e0aae0635a296f99898f b/.resources/8d97d23b3bce1a26352ea99aaf5a561700173898c145e0aae0635a296f99898f deleted file mode 100644 index 46da093c..00000000 --- a/.resources/8d97d23b3bce1a26352ea99aaf5a561700173898c145e0aae0635a296f99898f +++ /dev/null @@ -1,8 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FFFF00", - "color": "#008000" - } - } -} \ No newline at end of file diff --git a/.resources/8dff6417a71477446a40b2516b6ccabb3d5ae8d0dc51d839caa8d623b3c95ec3 b/.resources/8dff6417a71477446a40b2516b6ccabb3d5ae8d0dc51d839caa8d623b3c95ec3 deleted file mode 100644 index 45b722d4..00000000 --- a/.resources/8dff6417a71477446a40b2516b6ccabb3d5ae8d0dc51d839caa8d623b3c95ec3 +++ /dev/null @@ -1,15 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FF8000B3", - "borderColor": "#000000", - "borderStyle": "solid", - "borderWidth": "0.5px", - "color": "#000000", - "fontFamily": "Arial", - "fontSize": "14px", - "fontWeight": "bold", - "textAlign": "center" - } - } -} \ No newline at end of file diff --git a/.resources/8ec1c8fbc6b5d117579c88bb0a804bed7240e2c7b45d981cfd117c66c4dae55b b/.resources/8ec1c8fbc6b5d117579c88bb0a804bed7240e2c7b45d981cfd117c66c4dae55b deleted file mode 100644 index cd20fdd3..00000000 --- a/.resources/8ec1c8fbc6b5d117579c88bb0a804bed7240e2c7b45d981cfd117c66c4dae55b +++ /dev/null @@ -1,226 +0,0 @@ -{ - "custom": { - "alarm_filter": { - "magnificaiton": "x2", - "orderby": false, - "show_buttons": true, - "show_camera_jams": true, - "show_diagnostic": true, - "show_fio": true, - "show_gateways": true, - "show_low_alarm": true, - "show_map": true, - "show_running": true, - "show_safety": true - }, - "alarms": [], - "aws": { - "prefix": "eu", - "region": "eu-west-1" - }, - "colours": { - "Fallback": "#00FF00", - "colour_impaired": false, - "state0": "#8C8C8C", - "state1": "#FF0000", - "state6": "#CCCCFF" - }, - "command_auth": { - "auth_time": { - "$": [ - "ts", - 192, - 1674052360661 - ], - "$ts": 1674052360661 - }, - "enabled": false, - "timeout_sp": 500 - }, - "covert": true, - "deviceSearchId": "", - "download_url": "https://scadacloud-storage-prod-downloadbucketdc1a1095-17r7vrw051y3t.s3.amazonaws.com/history/DNG2/58b56f26-c115-41b5-badb-a3394f312630-1672826106.csv?AWSAccessKeyId\u003dASIAVDEI3U6Y3J5KB2NA\u0026Signature\u003dzucRF2nCigK4y5M%2BNbjoI06UUng%3D\u0026x-amz-security-token\u003dIQoJb3JpZ2luX2VjEKL%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCWV1LXdlc3QtMSJIMEYCIQCy78peP6YRJ1gyf9RROmmcfk%2BRHyPhxv6ejHJgyEG0KQIhALXnJXYIyDiWzr9vxehoDIa2c7sx818gUyuiFXYY6rb2KsoDCOv%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQABoMMzUwMzI2ODU5Njk3IgzVrdKyNsVjl%2BNjqWQqngOJCTFOLVppHMmo1otgHZCXlVISlnBz6rz6ykr8SHgGQPc0EsaL9a1I0oQmS42i%2BlRHpEpQfMdjUbP3dr2OnVKXmopkkUJZ592SPzA3MZzS95SHXMvbbPDs0OAw5mKdS6LHQAQb90ZdQdeoEj%2FG1bPEIiifVT07PhHMA0JMS7ExgXmHzq1c6W%2Fjc%2BdfQOjl41qnWcE1GH5MaVfU%2FOKW5PffN6pLf%2BJ61YjjbXqPIpPHimJSGqMI5BmFzAfSlsYAtgFT8bMyJhbUDaPlDF7X42SSYLs1CeAbddPFMvrhDIUk%2BYTA3oV69SMjX91LrKBNqRhFS%2F0R4U8nbA4rSd%2BhMkdr5RSwa9Q22ZQpbzuqQU1H%2B4oQy6419lQg3lkBF5SBNGdvQajD6mav2ipHYe7OkX5GKq2pNzBLzJsqGGnsJvISB83ShA6SnuiZFx%2F2LXvDtEu3jTCS4yRjDegxiKRBs%2FiwH0dN2ztb8a3vnSJN0EqaoORf2eVb%2BozzAv1EBaqnUEZZAoOKb8iaxpbZtqLaUNOOd7VsHsUPoBQRkKqH2RAw95nVnQY6nQFAgIr2YAjgyrsuAfVgr2b41jc3Dj83zJ6I9LI%2BglDMgQFyfL0RNPmoxEu3DDfq5yLy8MtiPlYcs71J3J8Z%2B7xIkH%2BIPWKwmKLsvaEtN7Io1kOfvFgEcMhhIPRwwEj70AVokPncUQ8HtKQhXnq7l1YZ4yyAw2poT%2Ff%2FgJwv7suOu2dZeh%2BH%2B9OwE4M%2BRmVoFO7tTWIakPgODw2ZFzqs\u0026Expires\u003d1672829705", - "enable_activity_logging": false, - "fc": "", - "id_to_state": "{\"PLC01/0820_06_09\":1,\"PLC02/0820_91_16/B4510\":1,\"PLC03/0820_82_04/B312_3\":1,\"PLC09/0120_33_01/B425_0\":1,\"PLC09/1210_03_27\":3,\"PLC02/0820_07_39_BT1\":1,\"ARSAW1501/05_10/B12_6\":3,\"PLC09/0110_13_40\":1,\"FSC10/TRZ_0850_01/CAS_0850_01_0299\":2,\"PLC02/0820_05_31/B4000_2\":1,\"PLC09/1210_03_30\":3,\"PLC09/1210_03_36\":3,\"PLC1000/1000_43_01\":1,\"PLC09/0120_35_18/B505_2\":1,\"PLC02/0820_05_20/B3804_6\":1,\"PLC01/0820_06_05\":1,\"PLC01/0820_06_07\":1,\"PLC1000/1000_22_02/B501_3\":1,\"PLC01/0820_01_41/B6103_2\":1,\"PLC1000/1000_42_04/B517_7\":1,\"PLC09/2210_08_60/B911_1\":1,\"PLC02/0820_05_06/B3702_6\":1,\"PLC09/2210_08_60/B911_5\":1,\"PLC09/0110_23_40/B304_2\":1,\"PLC09/1210_02_01/B705_0\":1,\"PLC09/1210_03_25\":3,\"PLC01/0820_01_75/B6401_6\":1,\"PLC01/0820_64_03\":1,\"PLC02/0820_07_29_BT1/TN12A\":1,\"PLC02/0820_05_03/B3701_2\":1,\"PLC01/0820_06_14\":1,\"PLC09/2210_03_45/B1007_4\":1,\"PLC01/0820_06_17\":1,\"PLC01/0820_06_18\":1,\"FSC10/OFZ_0850_31/CH_0850_31_06\":2,\"FSC10/OFZ_0850_31/CH_0850_31_07\":2,\"FSC10/OFZ_0850_31/CH_0850_31_04\":2,\"FSC10/OFZ_0850_31/CH_0850_31_05\":2,\"FSC10/OFZ_0850_31/CH_0850_31_08\":2,\"FSC10/OFZ_0850_31/CH_0850_31_09\":2,\"PLC09/1210_03_06\":3,\"PLC09/1210_03_04\":3,\"PLC02/0820_05_41/B4100_2\":1,\"FSC10/OFZ_0850_31/CH_0850_31_02\":2,\"PLC02/0820_91_08/B4318\":1,\"FSC10/OFZ_0850_31/CH_0850_31_03\":2,\"FSC10/OFZ_0850_31/CH_0850_31_01\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0148\":3,\"PLC02/0820_01_07\":1,\"PLC09/1210_03_13\":3,\"PLC09/1210_03_12\":1,\"PLC26/0513_11_02/B118_1\":3,\"PLC09/0120_52_23/B528_6\":1,\"PLC09/0120_51_01/B510_0\":1,\"ARSAW1303\":3,\"PLC09/2210_02_01\":1,\"PLC09/1210_02_30\":3,\"PLC1000/1000_42_04\":1,\"PLC09/1210_03_02\":3,\"PLC1000/1000_43_01/B525_0\":1,\"PLC26/0513_31_30/M1\":3,\"PLC01/0820_02_02/B6500_6\":1,\"FSC10/OFZ_0850_31/CH_0850_31_28\":2,\"FSC10/OFZ_0850_31/CH_0850_31_29\":2,\"FSC10/OFZ_0850_31/CH_0850_31_26\":2,\"PLC09/0110_23_40\":1,\"PLC01/0820_01_47/B6200_6\":1,\"FSC10/OFZ_0850_52/CH_0850_52_01\":2,\"FSC10/OFZ_0850_31/CH_0850_31_27\":2,\"FSC10/OFZ_0850_31/CH_0850_31_20\":2,\"FSC10/OFZ_0850_31/CH_0850_31_21\":2,\"FSC10/OFZ_0850_31/CH_0850_31_24\":2,\"FSC10/OFZ_0850_31/CH_0850_31_25\":2,\"FSC10/OFZ_0850_31/CH_0850_31_22\":2,\"FSC10/OFZ_0850_31/CH_0850_31_23\":2,\"FSC10/IFZ_0850_68/PCO_0850_68_98\":2,\"PLC09/0120_33_10\":1,\"PLC09/2210_09_60\":1,\"PLC09/0110_01_20\":1,\"FSC10/OFZ_0850_31/CH_0850_31_17\":2,\"FSC10/OFZ_0850_31/CH_0850_31_18\":2,\"FSC10/OFZ_0850_31/CH_0850_31_15\":2,\"FSC10/OFZ_0850_31/CH_0850_31_16\":2,\"FSC10/OFZ_0850_31/CH_0850_31_19\":2,\"PLC09/0120_52_08/B526_7\":1,\"FSC10/OFZ_0850_31/CH_0850_31_10\":2,\"PLC02/0820_91_14/B4422\":1,\"FSC10/OFZ_0850_31/CH_0850_31_13\":2,\"FSC10/OFZ_0850_31/CH_0850_31_14\":2,\"FSC10/OFZ_0850_31/CH_0850_31_11\":2,\"FSC10/OFZ_0850_31/CH_0850_31_12\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0147\":3,\"PLC01/0820_06_05/B6902_2\":1,\"FSC10/OFZ_0850_51/CH_0850_51_50\":2,\"PLC09/0120_33_01\":1,\"PLC09/1210_03_60\":3,\"FSC10/OFZ_0850_31/CH_0850_31_48\":2,\"FSC10/OFZ_0850_31/CH_0850_31_49\":2,\"PLC01/0820_02_04/B6501_6\":1,\"FSC10/OFZ_0850_31/CH_0850_31_42\":2,\"PLC02/0820_07_09_BT1\":1,\"FSC10/OFZ_0850_51/CH_0850_51_43\":2,\"PLC01/0820_03_18/B6802_6\":1,\"FSC10/OFZ_0850_31/CH_0850_31_43\":2,\"PLC09/1210_03_48\":3,\"FSC10/OFZ_0850_31/CH_0850_31_40\":2,\"FSC10/OFZ_0850_51/CH_0850_51_41\":2,\"FSC10/OFZ_0850_31/CH_0850_31_41\":2,\"PLC02/0820_91_18/B4518\":1,\"FSC10/OFZ_0850_31/CH_0850_31_46\":2,\"FSC10/OFZ_0850_31/CH_0850_31_47\":2,\"FSC10/OFZ_0850_51/CH_0850_51_44\":2,\"FSC10/OFZ_0850_31/CH_0850_31_44\":2,\"FSC10/OFZ_0850_31/CH_0850_31_45\":2,\"PLC01/0820_55_03/B420_1\":1,\"FSC10/OFZ_0850_31/CH_0850_31_39\":2,\"FSC10/OFZ_0850_31/CH_0850_31_37\":2,\"FSC10/OFZ_0850_31/CH_0850_31_38\":2,\"PLC09/1210_03_39\":3,\"FSC10/OFZ_0850_31/CH_0850_31_31\":2,\"FSC10/OFZ_0850_31/CH_0850_31_32\":2,\"PLC09/0120_32_02\":1,\"FSC10/OFZ_0850_31/CH_0850_31_30\":2,\"PLC09/0120_35_10/B504_1\":1,\"FSC10/OFZ_0850_31/CH_0850_31_35\":2,\"PLC09/2210_02_01/B905_0\":1,\"PLC09/0110_23_40/B305_1\":1,\"ARSAW1501\":3,\"PLC09/0110_23_40/B305_0\":1,\"FSC10/OFZ_0850_31/CH_0850_31_36\":2,\"FSC10/OFZ_0850_31/CH_0850_31_33\":2,\"PLC09/0110_23_40/B305_2\":1,\"FSC10/OFZ_0850_31/CH_0850_31_34\":2,\"PLC09/1210_03_42\":3,\"PLC01/0820_06_07/B6903_2\":1,\"PLC26/0513_11_02\":3,\"PLC09/1210_03_45\":3,\"PLC09/0120_32_11\":1,\"ARSAW1303/05_22\":3,\"PLC09/0110_01_20/B102_3\":1,\"PLC09/0110_01_20/B102_2\":1,\"PLC09/2210_03_45\":1,\"PLC01/0820_01_73/B6400_6\":1,\"PLC02/0820_07_49_BT1\":1,\"PLC80/0632_05_40/B113_3\":1,\"PLC80/0632_05_40/B113_4\":1,\"PLC26/S01/A902\":4,\"PLC80/0632_05_40/B113_5\":1,\"PLC26/S01/A901\":4,\"PLC26/0513_31_23\":3,\"PLC09/0120_43_01\":1,\"PLC80/0632_05_40/B113_2\":1,\"PLC80/0632_01_07/B103_6\":1,\"PLC14/0580_01_01\":3,\"PLC09/0120_51_08/B510_7\":1,\"PLC09/0120_41_20/B521_3\":1,\"PLC26/0513_31_19\":3,\"PLC01/0820_02_05/B6502_2\":1,\"PLC02/0820_07_29_BT1\":1,\"PLC02/0820_91_12/B4414\":1,\"PLC82/0640_21_02/BT1\":1,\"PLC01/0820_02_01/B6500_2\":1,\"FSC10/OFZ_0850_53/CH_0850_53_02\":2,\"PLC81/0631_05_40/B113_5\":1,\"PLC02/0820_91_13/B4418\":1,\"PLC09/1210_02_30/M1\":3,\"PLC81/0631_05_40/B113_4\":1,\"PLC81/0631_05_40/B113_3\":1,\"FSC10/OFZ_0850_55/CH_0850_55_04\":2,\"PLC1000/1000_22_02\":1,\"PLC69/0330_07_20/B118_4\":1,\"FSC10/OFZ_0850_55/CH_0850_55_02\":2,\"FSC10/OFZ_0850_55/CH_0850_55_03\":2,\"PLC69/0330_07_20/B118_3\":1,\"PLC16/0580_21_01\":3,\"PLC01/0820_01_43/B6104_2\":1,\"PLC1000/1000_33_12\":1,\"PLC01/0820_55_03\":1,\"PLC27/0514_04_20/B106_5\":1,\"PLC09/2210_04_22\":1,\"PLC02/0820_05_14/B3801_6\":1,\"PLC26/0513_31_30\":3,\"PLC26/0513_32_01\":3,\"PLC09/1210_03_27/B805_2\":3,\"PLC02/0820_05_24/B3901_6\":1,\"PLC09/1210_03_04/B802_3\":3,\"PLC82/0640_21_03\":1,\"PLC82/0640_21_04\":1,\"PLC82/0640_21_01\":1,\"PLC26/0513_31_23/B320_6\":3,\"PLC82/0640_21_02\":1,\"FSC10/OFZ_0850_53/CH_0850_53_20\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_1180\":3,\"PLC02/0820_91_06/B4310\":1,\"PLC09/0110_21_20\":1,\"PLC1000/1000_33_01\":1,\"FSC10/OFZ_0850_53/CH_0850_53_29\":2,\"FSC10/OFZ_0850_53/CH_0850_53_26\":2,\"PLC01/0820_01_71/B6306_6\":1,\"PLC09/0120_35_26/B506_2\":1,\"PLC09/0120_51_01\":1,\"PLC09/0120_51_08\":1,\"PLC09/0120_41_14/B520_5\":1,\"PLC09/0120_41_20\":1,\"PLC09/0120_32_11/B423_2\":1,\"PLC82/0640_21_01/BT1\":1,\"PLC09/1210_09_60/M1\":3,\"PLC80/0632_05_40\":1,\"PLC09/0120_41_14\":1,\"FSC10\":4,\"PLC01/0820_57_03\":1,\"PLC02/0820_05_02/B3700_6\":1,\"PLC09/0120_51_15\":1,\"PLC02/0820_91_51/B5210\":1,\"PLC27/0514_04_20\":1,\"PLC09/1210_03_45/B807_4\":3,\"PLC09/1210_03_39/B806_6\":3,\"PLC01/0820_57_03/B421_1\":1,\"PLC09/0120_41_08\":1,\"PLC02/0820_91_52/B5214\":1,\"PLC09/0120_51_23\":1,\"PLC09/2210_03_12\":1,\"FSC10/TRZ_0850_01/CAS_0850_01_1174\":3,\"PLC09/0120_52_15/B527_6\":1,\"PLC01/0820_01_77/B6402_6\":1,\"PLC01/0820_06_18/B7003_6\":1,\"PLC02/0820_91_02/B4214\":1,\"FSC10/OFZ_0850_33/CH_0850_33_21\":2,\"PLC26/0513_31_19/B320_2\":3,\"FSC10/OFZ_0850_33/CH_0850_33_25\":2,\"PLC09/0120_52_01\":1,\"PLC02/0820_91_53/B5218\":1,\"FSC10/OFZ_0850_75\":2,\"FSC10/OFZ_0850_73\":2,\"PLC09/0120_52_08\":1,\"PLC01/0820_02_03/B6501_2\":1,\"PLC09/2210_07_01\":1,\"FSC10/OFZ_0850_54/CH_0850_54_08\":2,\"PLC01/0820_06_14/B7001_6\":1,\"FSC10/OFZ_0850_54/CH_0850_54_06\":2,\"FSC10/OFZ_0850_54/CH_0850_54_03\":2,\"PLC82/0640_21_04/BT1\":1,\"FSC10/MAZ_0850_98/CCO_0850_98_98\":3,\"PLC09/0120_52_15\":1,\"PLC02/0820_07_19_BT1/TN8A\":1,\"FSC10/OFZ_0850_33/CH_0850_33_13\":2,\"PLC02/0820_04_28/B3601_6\":1,\"FSC10/OFZ_0850_33/CH_0850_33_14\":2,\"FSC10/OFZ_0850_33/CH_0850_33_12\":2,\"PLC01/0820_06_09/B6904_2\":1,\"PLC09/2210_06_29\":1,\"FSC10/OFZ_0850_33/CH_0850_33_15\":2,\"PLC09/2210_03_12/B1003_3\":1,\"PLC81/0631_05_40\":1,\"FSC10/OFZ_0850_33/CH_0850_33_19\":2,\"FSC10/OFZ_0850_54/CH_0850_54_19\":2,\"PLC02/0820_07_39_BT1/TN16A\":1,\"FSC10/OFZ_0850_54/CH_0850_54_17\":2,\"PLC69\":1,\"PLC09/2210_09_60/B912_5\":1,\"PLC09/0120_52_23\":1,\"PLC02/0820_05_41\":1,\"PLC01/0820_01_49/B6201_6\":1,\"FSC10/OFZ_0850_55\":2,\"PLC09/2210_07_27\":1,\"FSC10/OFZ_0850_54\":2,\"FSC10/OFZ_0850_33/CH_0850_33_05\":2,\"FSC10/OFZ_0850_53\":2,\"PLC01/0820_64_03/B425_5\":1,\"FSC10/OFZ_0850_52\":2,\"FSC10/OFZ_0850_51\":2,\"PLC02/0820_07_19_BT1\":1,\"FSC10/OFZ_0850_75/CH_0850_75_08\":2,\"FSC10/OFZ_0850_54/CH_0850_54_20\":2,\"PLC02/0820_91_07/B4314\":1,\"PLC69/0330_09_30\":1,\"PLC69/0330_09_30/B120_2\":1,\"PLC69/0330_09_30/B120_4\":1,\"PLC07/0320_31_20/B520_1\":1,\"PLC80\":1,\"PLC09/0120_51_15/B511_6\":1,\"FSC10/MAZ_0850_98\":3,\"PLC03\":1,\"PLC01/0820_02_04\":1,\"PLC01/0820_02_03\":1,\"PLC01/0820_02_13/B6600_2\":1,\"PLC09/2210_04_22/B1011_5\":1,\"PLC01\":1,\"PLC01/0820_02_02\":1,\"PLC01/0820_02_01\":1,\"PLC02\":1,\"PLC07\":1,\"PLC02/0820_05_20\":1,\"FSC10/OFZ_0850_33\":2,\"FSC10/OFZ_0850_32\":2,\"FSC10/OFZ_0850_31\":2,\"PLC02/0820_05_24\":1,\"PLC02/0820_05_27\":1,\"PLC82/0640_21_03/BT1\":1,\"PLC09\":3,\"PLC01/0820_02_05\":1,\"PLC14\":3,\"PLC01/0820_01_47\":1,\"PLC01/0820_01_46\":1,\"PLC01/0820_02_13\":1,\"ARSAW1501/05_10\":3,\"PLC01/0820_06_17/B7003_2\":1,\"PLC01/0820_01_43\":1,\"PLC02/0820_91_17/B4514\":1,\"PLC01/0820_71_03/B428_1\":1,\"PLC01/0820_01_41\":1,\"PLC16\":3,\"PLC02/0820_05_31\":1,\"PLC1000/1000_12_02/B308_7\":1,\"PLC01/0820_01_50/B6202_2\":1,\"PLC01/0820_59_03/B422_1\":1,\"PLC09/1210_03_60/M1\":3,\"PLC03/0820_82_04\":1,\"PLC01/0820_01_49\":1,\"PLC26\":4,\"PLC01/0820_02_20\":1,\"PLC27\":1,\"PLC01/0820_71_03\":1,\"PLC01/0820_01_50\":1,\"PLC02/0820_05_03\":1,\"PLC02/0820_05_02\":1,\"PLC02/0820_91_28/B4718\":1,\"PLC02/0820_91_33/B4818\":1,\"PLC02/0820_05_06\":1,\"PLC1000/1000_12_02\":1,\"PLC80/0632_03_01/B106_0\":1,\"PLC02/0820_91_15/B4430\":1,\"PLC01/0820_03_07\":1,\"PLC01/0820_03_08\":1,\"PLC01/0820_01_63\":1,\"PLC02/0820_05_14\":1,\"ARSAW1303/05_22/B11_4\":3,\"PLC02/0820_05_15\":1,\"PLC09/2210_06_02\":1,\"PLC01/0820_59_03\":1,\"PLC09/0120_51_23/B512_6\":1,\"PLC09/1210_03_12/B803_3\":1,\"PLC09/1210_03_06/B802_5\":3,\"PLC09/2210_07_01/B1025_0\":1,\"PLC01/0820_03_18\":1,\"PLC01/0820_03_07/B6703_2\":1,\"FSC10/OFZ_0850_32/CH_0850_32_03\":2,\"PLC01/0820_01_79\":1,\"PLC09/0120_41_08/B519_7\":1,\"PLC01/0820_01_77\":1,\"PLC02/0820_91_18\":1,\"PLC02/0820_91_17\":1,\"PLC01/0820_01_75\":1,\"PLC02/0820_91_16\":1,\"PLC01/0820_01_73\":1,\"PLC02/0820_91_15\":1,\"PLC02/0820_91_14\":1,\"FSC10/OFZ_0850_31/CH_0850_31_64\":2,\"PLC01/0820_01_71\":1,\"FSC10/OFZ_0850_31/CH_0850_31_65\":2,\"PLC02/0820_91_13\":1,\"PLC02/0820_91_12\":1,\"FSC10/OFZ_0850_31/CH_0850_31_62\":2,\"FSC10/OFZ_0850_31/CH_0850_31_63\":2,\"FSC10/OFZ_0850_32/CH_0850_32_09\":2,\"FSC10/OFZ_0850_32/CH_0850_32_06\":2,\"FSC10/OFZ_0850_31/CH_0850_31_68\":2,\"FSC10/OFZ_0850_31/CH_0850_31_69\":2,\"FSC10/OFZ_0850_31/CH_0850_31_66\":2,\"PLC26/S01\":4,\"FSC10/OFZ_0850_31/CH_0850_31_67\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0694\":3,\"FSC10/OFZ_0850_31/CH_0850_31_60\":2,\"FSC10/OFZ_0850_31/CH_0850_31_61\":2,\"PLC02/0820_07_49_BT1/TN20A\":1,\"PLC02/0820_91_36/B4910\":1,\"FSC10/OFZ_0850_32/CH_0850_32_13\":2,\"FSC10/OFZ_0850_32/CH_0850_32_14\":2,\"FSC10/OFZ_0850_31/CH_0850_31_59\":2,\"FSC10/OFZ_0850_32/CH_0850_32_12\":2,\"PLC02/0820_91_08\":1,\"PLC02/0820_91_07\":1,\"FSC10/OFZ_0850_73/CH_0850_73_13\":2,\"PLC02/0820_91_06\":1,\"FSC10/OFZ_0850_32/CH_0850_32_10\":2,\"PLC80/0632_03_06/B106_5\":1,\"FSC10/OFZ_0850_73/CH_0850_73_11\":2,\"PLC09/2210_07_27/B1028_2\":1,\"FSC10/OFZ_0850_31/CH_0850_31_53\":2,\"PLC02/0820_91_02\":1,\"FSC10/OFZ_0850_31/CH_0850_31_54\":2,\"FSC10/OFZ_0850_73/CH_0850_73_18\":2,\"FSC10/OFZ_0850_31/CH_0850_31_51\":2,\"FSC10/OFZ_0850_73/CH_0850_73_15\":2,\"PLC02/0820_05_27/B3903_2\":1,\"FSC10/OFZ_0850_31/CH_0850_31_52\":2,\"FSC10/OFZ_0850_32/CH_0850_32_17\":2,\"PLC02/0820_04_28\":1,\"FSC10/OFZ_0850_31/CH_0850_31_57\":2,\"FSC10/OFZ_0850_31/CH_0850_31_58\":2,\"FSC10/OFZ_0850_32/CH_0850_32_18\":2,\"FSC10/OFZ_0850_32/CH_0850_32_15\":2,\"FSC10/OFZ_0850_73/CH_0850_73_19\":2,\"FSC10/OFZ_0850_31/CH_0850_31_55\":2,\"FSC10/OFZ_0850_31/CH_0850_31_56\":2,\"PLC07/0320_31_20\":1,\"FSC10/OFZ_0850_32/CH_0850_32_16\":2,\"FSC10/OFZ_0850_31/CH_0850_31_50\":2,\"PLC26/0513_03_10/B104_7\":3,\"PLC02/0820_01_07/B3103_2\":1,\"PLC69/0330_07_20\":1,\"FSC10/OFZ_0850_73/CH_0850_73_02\":2,\"FSC10/OFZ_0850_73/CH_0850_73_03\":2,\"FSC10/OFZ_0850_73/CH_0850_73_01\":2,\"PLC02/0820_91_36\":1,\"FSC10/OFZ_0850_73/CH_0850_73_04\":2,\"PLC02/0820_91_33\":1,\"PLC09/0110_13_40/B204_2\":1,\"FSC10/IFZ_0850_68\":2,\"PLC26/0513_03_10\":3,\"FSC10/OFZ_0850_31/CH_0850_31_80\":2,\"PLC09/1210_03_48/B807_7\":3,\"PLC80/0632_03_06\":1,\"PLC02/0820_91_28\":1,\"PLC09/2210_08_60\":1,\"PLC80/0632_03_01\":1,\"FSC10/OFZ_0850_31/CH_0850_31_75\":2,\"FSC10/OFZ_0850_31/CH_0850_31_76\":2,\"FSC10/OFZ_0850_31/CH_0850_31_73\":2,\"FSC10/OFZ_0850_31/CH_0850_31_74\":2,\"FSC10/OFZ_0850_31/CH_0850_31_79\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0557\":3,\"PLC1000/1000_33_12/B419_3\":1,\"FSC10/OFZ_0850_32/CH_0850_32_37\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0556\":3,\"FSC10/OFZ_0850_31/CH_0850_31_77\":2,\"FSC10/OFZ_0850_31/CH_0850_31_78\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0565\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0564\":2,\"FSC10/OFZ_0850_31/CH_0850_31_71\":2,\"FSC10/OFZ_0850_31/CH_0850_31_72\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0680\":3,\"FSC10/OFZ_0850_31/CH_0850_31_70\":2,\"PLC02/0820_05_15/B3802_2\":1,\"PLC09/0120_33_10/B426_1\":1,\"PLC09/1210_09_60\":3,\"FSC10/OFZ_0850_32/CH_0850_32_47\":2,\"PLC09/0120_35_26\":1,\"PLC81\":1,\"PLC82\":1,\"FSC10/TRZ_0850_01/CAS_0850_01_0891\":4,\"PLC09/1210_03_30/B805_5\":3,\"PLC09/0110_13_40/B205_1\":1,\"PLC02/0820_91_53\":1,\"PLC09/0110_13_40/B205_0\":1,\"PLC02/0820_91_52\":1,\"PLC09/0110_13_40/B205_2\":1,\"PLC02/0820_91_51\":1,\"PLC09/2210_06_02/B1018_1\":1,\"FSC10/TRZ_0850_01\":4,\"PLC80/0632_01_07\":1,\"PLC09/0110_03_40\":1,\"PLC1000/1000_33_01/B418_0\":1,\"FSC10/OFZ_0850_32/CH_0850_32_54\":2,\"PLC09/0120_35_18\":1,\"FSC10/TRZ_0850_01/CAS_0850_01_0780\":2,\"PLC09/0110_03_40/B105_2\":1,\"PLC09/0110_03_40/B105_0\":1,\"PLC01/0820_01_79/B6403_6\":1,\"PLC09/0110_03_40/B105_1\":1,\"PLC26/0513_32_01/B405_4\":3,\"FSC10/TRZ_0850_01/CAS_0850_01_0300\":2,\"FSC10/TRZ_0850_01/CAS_0850_01_0779\":2,\"PLC09/1210_03_13/B803_4\":3,\"FSC10/OFZ_0850_33/CH_0850_33_43\":2,\"PLC01/0820_01_46/B6200_2\":1,\"PLC09/0110_21_20/B302_3\":1,\"PLC09/0110_21_20/B302_2\":1,\"PLC1000\":1,\"PLC09/0120_35_10\":1,\"PLC09/1210_03_36/B806_3\":3,\"PLC09/1210_02_01\":1,\"PLC09/1210_03_42/B807_1\":3,\"PLC09/2210_06_29/B1021_4\":1,\"PLC09/0120_32_02/B422_1\":1,\"PLC09/0110_03_40/B104_2\":1,\"PLC09/1210_03_25/B805_0\":3,\"PLC02/0820_07_09_BT1/TN4A\":1,\"PLC01/0820_01_63/B6302_6\":1,\"PLC01/0820_02_20/B6603_6\":1,\"PLC09/1210_03_02/B802_1\":3,\"PLC26/S01/A999\":4,\"PLC09/0120_52_01/B526_0\":1,\"PLC01/0820_03_08/B6703_6\":1}", - "page_id": "value", - "product_metrics": { - "enable": true - }, - "searchId": "PLC01", - "sources": [], - "view_in_focus": "/" - }, - "propConfig": { - "custom.alarmId": { - "persistent": false - }, - "custom.colours.state2": { - "binding": { - "config": { - "expression": "if({this.custom.colours.colour_impaired},\u0027#F00077\u0027,\u0027#FF8000\u0027)" - }, - "type": "expr" - } - }, - "custom.colours.state3": { - "binding": { - "config": { - "expression": "if({this.custom.colours.colour_impaired},\u0027#FF6000\u0027,\u0027#FFFF00\u0027)" - }, - "type": "expr" - } - }, - "custom.colours.state4": { - "binding": { - "config": { - "expression": "if({this.custom.colours.colour_impaired},\u0027#FCC400\u0027,\u0027#007EFC\u0027)" - }, - "type": "expr" - } - }, - "custom.colours.state5": { - "binding": { - "config": { - "expression": "if({this.custom.colours.colour_impaired},\u0027#007DFA\u0027,\u0027#00CC00\u0027)" - }, - "type": "expr" - } - }, - "custom.command_auth.auth_timeout": { - "binding": { - "config": { - "expression": "if({this.custom.command_auth.enabled},toInt(dateDiff({this.custom.command_auth.auth_time},now(),\u0027seconds\u0027)),0)" - }, - "type": "expr" - }, - "onChange": { - "enabled": null, - "script": "\tif currentValue.value \u003e self.custom.command_auth.timeout_sp:\n\t\tself.custom.command_auth.enabled \u003d False" - } - }, - "custom.command_auth.enabled": { - "onChange": { - "enabled": null, - "script": "\tif currentValue.value:\n\t\tself.custom.command_auth.auth_time \u003d system.date.now()" - } - }, - "custom.covert": { - "access": "PRIVATE" - }, - "custom.deviceSearchId": { - "access": "PRIVATE" - }, - "custom.downloads": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{this.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/download" - }, - "transforms": [ - { - "code": "\tvalue_decoded \u003d system.util.jsonDecode(value)\n\tdownloads \u003d value_decoded.get(\"data\",[])\n\tfor i in downloads:\n\t\tsession_id \u003d i.get(\"session_id\")\n\t\turl \u003d i.get(\"url\")\n\t\tif session_id \u003d\u003d self.props.id:\n\t\t\tself.custom.download_url \u003d url\n\t\t\treturn True\n\t\telse:\n\t\t\treturn False", - "type": "script" - } - ], - "type": "tag" - } - }, - "custom.fc": { - "access": "PRIVATE" - }, - "custom.has_fc_role": { - "access": "PRIVATE", - "binding": { - "config": { - "expression": "{this.props.auth.user.roles}" - }, - "transforms": [ - { - "code": "\tuser_roles \u003d value\n\tfc_role \u003d self.custom.fc\n\trme_role \u003d fc_role.lower() + \"-rme-all\"\n\thas_role \u003d False\n\tfor roles in user_roles:\n\t\tif roles.lower() \u003d\u003d rme_role:\n\t\t\thas_role \u003d True\n\t\t\t\t\n\treturn has_role\n", - "type": "script" - } - ], - "type": "expr" - } - }, - "custom.id_to_state": { - "access": "PRIVATE", - "persistent": true - }, - "custom.show_south_dock": { - "access": "PRIVATE" - }, - "custom.state": { - "access": "PRIVATE" - }, - "custom.state_messages": { - "access": "PRIVATE" - }, - "custom.state_view": { - "access": "PRIVATE" - }, - "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", - "appBar": { - "togglePosition": "hidden" - }, - "device": {}, - "geolocation": {}, - "locale": "en-US", - "timeZoneId": "Asia/Tbilisi" - } -} \ No newline at end of file diff --git a/.resources/8effb167218f26e74a929f3e301855236d83e69331ec41d8aad46d491fd2929c b/.resources/8effb167218f26e74a929f3e301855236d83e69331ec41d8aad46d491fd2929c deleted file mode 100644 index 7304b534..00000000 --- a/.resources/8effb167218f26e74a929f3e301855236d83e69331ec41d8aad46d491fd2929c +++ /dev/null @@ -1,8 +0,0 @@ -{ - "base": { - "style": { - "paddingRight": "4px", - "textAlign": "right" - } - } -} \ No newline at end of file diff --git a/.resources/8fb2113ee9d23c697336c0a3077bbae0558fcc761c89b7744470de74d9095e3d b/.resources/8fb2113ee9d23c697336c0a3077bbae0558fcc761c89b7744470de74d9095e3d deleted file mode 100644 index ca1fa73a7dc1b55a9896f1021e5b70a1973b2436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 848 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

}4j#@r~^}O%vuQ(5m8O{iX$? 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 diff --git a/.resources/49555dadf99ea0675e21a7839fd3497b27b3c6a37dd6229f329ea14959ca5271 b/.resources/92ad66c43be2e728944ed6d02ad7bc9b3722f76d115e0f8fcd1f6d1d3d4d2889 similarity index 100% rename from .resources/49555dadf99ea0675e21a7839fd3497b27b3c6a37dd6229f329ea14959ca5271 rename to .resources/92ad66c43be2e728944ed6d02ad7bc9b3722f76d115e0f8fcd1f6d1d3d4d2889 diff --git a/.resources/dc1926fae837c12ba22fa2e7029c5e4bc6a1ceb14926e118ba36c811c53469c5 b/.resources/92d8628a3fd0fe659e1559ff280e80674cddc47789ad62e3c2fd6a6bb8fe12fc similarity index 100% rename from .resources/dc1926fae837c12ba22fa2e7029c5e4bc6a1ceb14926e118ba36c811c53469c5 rename to .resources/92d8628a3fd0fe659e1559ff280e80674cddc47789ad62e3c2fd6a6bb8fe12fc diff --git a/.resources/935a310f74086fd7c3548680f806a3402734655a0e064b3cebda913ff8364070 b/.resources/935a310f74086fd7c3548680f806a3402734655a0e064b3cebda913ff8364070 deleted file mode 100644 index 67a28121cfa67cda0cd66ad9fa6c7e2fde3a7cba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10667 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 JRtp;h{12kNi(vo& diff --git a/.resources/93beaffbfc1910f53620ad71eb4b5c6f650b6452dfef54399351538445cc74c8 b/.resources/93beaffbfc1910f53620ad71eb4b5c6f650b6452dfef54399351538445cc74c8 deleted file mode 100644 index 198a4d1e..00000000 --- a/.resources/93beaffbfc1910f53620ad71eb4b5c6f650b6452dfef54399351538445cc74c8 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#007EFC", - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontWeight": "bold" - } - } -} \ No newline at end of file diff --git a/.resources/93fce84c7f4d53b8a690b3bc02eb40b8c43bd39bb802488874dbf38b4771a639 b/.resources/93fce84c7f4d53b8a690b3bc02eb40b8c43bd39bb802488874dbf38b4771a639 deleted file mode 100644 index 668d6793dc4ae6996bdd2f6913f5370303688934..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21151 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 P0sP{8^D#h z*<+nrjFR3^N(@ZZg{97IMce9YX0p;<|3?U#EXnTVNh!GB7a{!Ti6gpoQ51oCp661^wgO1eY-4{d54Ila0vgY<45Xnz c9LH_yZ|F=!ZnKoXbpQYW07*qoM6N<$f|Vb6&;S4c diff --git a/.resources/968d9ca07c41d80bc54d2b481f0087fa8846f205828549d76104b56cf040963d b/.resources/968d9ca07c41d80bc54d2b481f0087fa8846f205828549d76104b56cf040963d deleted file mode 100644 index c2f5f042..00000000 --- a/.resources/968d9ca07c41d80bc54d2b481f0087fa8846f205828549d76104b56cf040963d +++ /dev/null @@ -1,628 +0,0 @@ -{ - "custom": { - "FillColour": "value", - "alarm_message": null, - "covert_mode": true, - "disconnected": false, - "display_icon": true, - "error": false, - "isMatch": 0, - "plc": "value", - "priority": 0, - "priority_string": "No active alarms", - "running": false, - "running_status": 0, - "searchId": "PLC01", - "show_error": false, - "show_running": true, - "state": 5, - "state_string": "Unknown" - }, - "params": { - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.FillColour": { - "persistent": true - }, - "custom.alarm_message": { - "persistent": true - }, - "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} || {session.custom.alarm_filter.show_running},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\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": { - "binding": { - "config": { - "expression": "{view.custom.running_status} \u003d 3" - }, - "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.show_error": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\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\tFalse)", - "type": "expression" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.show_running": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\r\n\t\t1, False,\r\n\t\t2, False,\r\n\t\t{session.custom.alarm_filter.show_running}\r\n\t\t)", - "type": "expression" - } - ], - "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.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": "SLAM" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "position.rotate.angle": { - "binding": { - "config": { - "path": "view.params.directionLeft" - }, - "enabled": false, - "transforms": [ - { - "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", - "type": "expression" - } - ], - "type": "property" - } - }, - "props.elements[0].fill.paint": { - "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,if({view.custom.running},{session.custom.colours.state5},{session.custom.colours.state0}),\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)", - "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": [ - { - "d": "M 25.072251,49.491677 C 8.305025,50.18642 -4.5893078,30.832553 2.4672281,15.562464 8.2437711,-0.23935905 31.006999,-4.7804171 42.373386,7.6015452 54.088036,18.389216 50.750821,39.438697 36.798277,46.490083 33.221446,48.453809 29.149949,49.49602 25.072251,49.491677 Z", - "fill": {}, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1.5 - }, - "type": "path" - }, - { - "d": "m 25.27,19.376563 c -3.799453,0.197118 -4.03784,-6.218759 0,-6.053125 3.946982,-0.08033 3.946979,6.133451 0,6.053125 z m 7,0 c -3.799453,0.197118 -4.03784,-6.218759 0,-6.053125 3.946982,-0.08033 3.946979,6.133451 0,6.053125 z m -0.240001,-0.316562 c 0,2.383333 0,4.766667 0,7.15 -2.173333,0 -4.346667,0 -6.52,0 0,-2.383333 0,-4.766667 0,-7.15 2.173333,0 4.346667,0 6.52,0 z M 17.07,23.24 c 0,4.116667 0,8.233333 0,12.35 -0.666667,0 -1.333333,0 -2,0 0,-4.116667 0,-8.233333 0,-12.35 0.666667,0 1.333333,0 2,0 z m 25.119999,4.220001 c 0,1.3 0,2.6 0,3.9 -8.69,0 -17.38,0 -26.07,0 0,-1.3 0,-2.6 0,-3.9 8.69,0 17.38,0 26.07,0 z M 12.079999,8.75 c 0,10.833333 0,21.666667 0,32.5 -1.086667,0 -2.173333,0 -3.26,0 0,-10.833333 0,-21.666667 0,-32.5 1.086667,0 2.173333,0 3.26,0 z", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 0.5 - }, - "type": "path" - } - ], - "style": { - "overflow": "hidden" - }, - "viewBox": "-0.5 -0.5 51 51" - }, - "type": "ia.shapes.svg" - }, - { - "meta": { - "name": "SLAMs" - }, - "position": { - "height": 0.005, - "width": 0.005, - "x": 0.0225, - "y": 0.0277 - }, - "props": { - "params": { - "tagProps": [ - "", - "", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "path": "Symbol-Views/Equipment-Views/SLAMs" - }, - "type": "ia.display.view" - } - ], - "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" - } - }, - "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/970e44b330610bfd6e2e52e4726e89d0b0d43413177120ef9760a1b0a9d015a2 b/.resources/970e44b330610bfd6e2e52e4726e89d0b0d43413177120ef9760a1b0a9d015a2 deleted file mode 100644 index e703988f..00000000 --- a/.resources/970e44b330610bfd6e2e52e4726e89d0b0d43413177120ef9760a1b0a9d015a2 +++ /dev/null @@ -1,16 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FFFFFF", - "borderColor": "#000000", - "borderStyle": "solid", - "borderWidth": "0.5px", - "color": "#000000", - "fontFamily": "Arial", - "fontSize": "14px", - "fontWeight": "bold", - "lineHeight": "20px", - "textAlign": "center" - } - } -} \ No newline at end of file diff --git a/.resources/9711bb102b302258e40c8b5c525f013d021eb5d729d117120f311cb86c50595d b/.resources/9711bb102b302258e40c8b5c525f013d021eb5d729d117120f311cb86c50595d deleted file mode 100644 index 6520bf94..00000000 --- a/.resources/9711bb102b302258e40c8b5c525f013d021eb5d729d117120f311cb86c50595d +++ /dev/null @@ -1,1122 +0,0 @@ -{ - "custom": { - "activityLogger": { - "alt_pageid": "home" - } - }, - "params": { - "viewFocus": "value" - }, - "propConfig": { - "custom.activityLogger": { - "persistent": true - }, - "custom.activityLogger.pageid": { - "binding": { - "config": { - "expression": "{page.props.path}" - }, - "transforms": [ - { - "code": "\tif value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n\t\treturn self.custom.activityLogger.alt_pageid.lower()\n\telse:\n\t\treturn value[1:].lower()", - "type": "script" - } - ], - "type": "expr" - } - }, - "custom.activityLogger.start_time": { - "binding": { - "config": { - "expression": "now()" - }, - "type": "expr" - } - }, - "params.viewFocus": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 326, - "width": 400 - } - }, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "36px", - "shrink": 0 - }, - "props": { - "style": { - "background-color": "#555555", - "fontWeight": "bold", - "textAlign": "center" - }, - "text": "Status Filters" - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "custom": { - "buttonid": "status_filters/all" - }, - "events": { - "component": { - "onActionPerformed": [ - { - "config": { - "script": "\tpayload \u003d {}\n\tif self.props.selected:\n\t\tvalue \u003d True\n\telse:\n\t\tvalue \u003d False\n\t\n\tpayload[\"data\"] \u003d value\n\t\n\tsystem.perspective.sendMessage(\"select-all-filters\", \n\t\t\t\t\t\t\t\t\tpayload \u003d payload, \n\t\t\t\t\t\t\t\t\tscope \u003d \"view\")" - }, - "scope": "G", - "type": "script" - }, - { - "config": { - "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)" - }, - "scope": "G", - "type": "script" - } - ] - } - }, - "meta": { - "name": "Select-All", - "tooltip": { - "delay": 250 - } - }, - "position": { - "basis": "36px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" - }, - "enabled": false, - "type": "expr" - } - }, - "props.selected": { - "binding": { - "config": { - "expression": "if({session.custom.alarm_filter.show_diagnostic} \u0026\u0026 \r\n{session.custom.alarm_filter.show_gateways} \u0026\u0026\r\n{session.custom.alarm_filter.show_low_alarm} \u0026\u0026\r\n{session.custom.alarm_filter.show_running} \u0026\u0026\r\n{session.custom.alarm_filter.show_camera_jams} \u0026\u0026\r\n{session.custom.alarm_filter.show_fio} \u0026\u0026\r\n{session.custom.alarm_filter.show_safety}, True, False)" - }, - "type": "expr" - } - } - }, - "props": { - "checkedIcon": { - "color": { - "disabled": "#FFFFFF", - "enabled": "#FFFFFF" - } - }, - "style": { - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 12, - "fontWeight": "bold", - "marginLeft": 10, - "marginRight": 10 - }, - "text": "Select All" - }, - "type": "ia.input.checkbox" - }, - { - "custom": { - "buttonid": "status_filters/low_alarms" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Low Alarms", - "tooltip": { - "delay": 250 - } - }, - "position": { - "basis": "36px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" - }, - "enabled": false, - "type": "expr" - } - }, - "props.selected": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.alarm_filter.show_low_alarm" - }, - "type": "property" - } - } - }, - "props": { - "checkedIcon": { - "color": { - "disabled": "#FFFFFF", - "enabled": "#FFFFFF" - } - }, - "style": { - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 12, - "fontWeight": "bold", - "marginLeft": 10, - "marginRight": 10 - }, - "text": "Show Low Alarms" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "select-all-filters", - "pageScope": false, - "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data\n\tsystem.perspective.print(data)", - "sessionScope": false, - "viewScope": true - } - ] - }, - "type": "ia.input.checkbox" - }, - { - "custom": { - "buttonid": "status_filters/diagnostic_alarms" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Diagnostic", - "tooltip": { - "delay": 250 - } - }, - "position": { - "basis": "36px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" - }, - "enabled": false, - "type": "expr" - } - }, - "props.selected": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.alarm_filter.show_diagnostic" - }, - "type": "property" - } - } - }, - "props": { - "checkedIcon": { - "color": { - "disabled": "#FFFFFF", - "enabled": "#FFFFFF" - } - }, - "style": { - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 12, - "fontWeight": "bold", - "marginLeft": 10, - "marginRight": 10 - }, - "text": "Show Diagnostic Alarms" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "select-all-filters", - "pageScope": false, - "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data", - "sessionScope": false, - "viewScope": true - } - ] - }, - "type": "ia.input.checkbox" - }, - { - "custom": { - "buttonid": "status_filters/running_status" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Running", - "tooltip": { - "delay": 250 - } - }, - "position": { - "basis": "36px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" - }, - "enabled": false, - "type": "expr" - } - }, - "props.selected": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.alarm_filter.show_running" - }, - "type": "property" - } - } - }, - "props": { - "checkedIcon": { - "color": { - "disabled": "#FFFFFF", - "enabled": "#FFFFFF" - } - }, - "style": { - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 12, - "fontWeight": "bold", - "marginLeft": 10, - "marginRight": 10 - }, - "text": "Show Running Status" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "select-all-filters", - "pageScope": false, - "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data", - "sessionScope": false, - "viewScope": true - } - ] - }, - "type": "ia.input.checkbox" - }, - { - "custom": { - "buttonid": "status_filters/low_alarms" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Show-Buttons", - "tooltip": { - "delay": 250 - } - }, - "position": { - "basis": "36px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" - }, - "enabled": false, - "type": "expr" - } - }, - "props.selected": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.alarm_filter.show_buttons" - }, - "type": "property" - } - } - }, - "props": { - "checkedIcon": { - "color": { - "disabled": "#FFFFFF", - "enabled": "#FFFFFF" - } - }, - "style": { - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 12, - "fontWeight": "bold", - "marginLeft": 10, - "marginRight": 10 - }, - "text": "Show Buttons" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "select-all-filters", - "pageScope": false, - "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data\n\tsystem.perspective.print(data)", - "sessionScope": false, - "viewScope": true - } - ] - }, - "type": "ia.input.checkbox" - }, - { - "custom": { - "buttonid": "status_filters/estops_pullChords" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "E-Stops", - "tooltip": { - "delay": 250 - } - }, - "position": { - "basis": "36px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" - }, - "enabled": false, - "type": "expr" - } - }, - "props.selected": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.alarm_filter.show_safety" - }, - "type": "property" - } - } - }, - "props": { - "checkedIcon": { - "color": { - "disabled": "#FFFFFF", - "enabled": "#FFFFFF" - } - }, - "style": { - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 12, - "fontWeight": "bold", - "marginLeft": 10, - "marginRight": 10 - }, - "text": "Show E-Stops \u0026 Pull Chords" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "select-all-filters", - "pageScope": false, - "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data", - "sessionScope": false, - "viewScope": true - } - ] - }, - "type": "ia.input.checkbox" - }, - { - "custom": { - "buttonid": "status_filters/gateways" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Show-DPM-MCM", - "tooltip": { - "delay": 250 - } - }, - "position": { - "basis": "36px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" - }, - "enabled": false, - "type": "expr" - } - }, - "props.selected": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.alarm_filter.show_gateways" - }, - "type": "property" - } - } - }, - "props": { - "checkedIcon": { - "color": { - "disabled": "#FFFFFF", - "enabled": "#FFFFFF" - } - }, - "style": { - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 12, - "fontWeight": "bold", - "marginLeft": 10, - "marginRight": 10 - }, - "text": "Show DPM \u0026 MCM" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "select-all-filters", - "pageScope": false, - "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data", - "sessionScope": false, - "viewScope": true - } - ] - }, - "type": "ia.input.checkbox" - }, - { - "custom": { - "buttonid": "status_filters/camera_jams" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Show-Camera-Jams", - "tooltip": { - "delay": 250 - } - }, - "position": { - "basis": "36px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" - }, - "enabled": false, - "type": "expr" - } - }, - "props.selected": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.alarm_filter.show_camera_jams" - }, - "type": "property" - } - } - }, - "props": { - "checkedIcon": { - "color": { - "disabled": "#FFFFFF", - "enabled": "#FFFFFF" - } - }, - "style": { - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 12, - "fontWeight": "bold", - "marginLeft": 10, - "marginRight": 10 - }, - "text": "Show Camera Jams" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "select-all-filters", - "pageScope": false, - "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data", - "sessionScope": false, - "viewScope": true - } - ] - }, - "type": "ia.input.checkbox" - }, - { - "custom": { - "buttonid": "status_filters/fio_sio" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tif not self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Show-Fios", - "tooltip": { - "delay": 250 - } - }, - "position": { - "basis": "36px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "if ({session.custom.alarm_filter.show_map}\u003dTrue \u0026\u0026 {session.custom.view_in_focus}\u003d\u0027/MAP-Home\u0027, True, False)" - }, - "enabled": false, - "type": "expr" - } - }, - "props.selected": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.alarm_filter.show_fio" - }, - "type": "property" - } - } - }, - "props": { - "checkedIcon": { - "color": { - "disabled": "#FFFFFF", - "enabled": "#FFFFFF" - } - }, - "style": { - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 12, - "fontWeight": "bold", - "marginLeft": 10, - "marginRight": 10 - }, - "text": "Show FIO \u0026 SIO" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "select-all-filters", - "pageScope": false, - "script": "\tdata \u003d payload[\"data\"]\n\tself.props.selected \u003d data", - "sessionScope": false, - "viewScope": true - } - ] - }, - "type": "ia.input.checkbox" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "grow": 1 - }, - "props": { - "direction": "column", - "justify": "space-between" - }, - "type": "ia.container.flex" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.closePopup(\u0027\u0027)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "30px", - "shrink": 0 - }, - "props": { - "box-shadow": "5px 5px 5px", - "style": { - "backgroundColor": "#555555", - "classes": "Background-Styles/Controller", - "marginBottom": 5, - "marginLeft": 20, - "marginRight": 20, - "marginTop": 5 - }, - "text": "Close" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Status" - }, - "position": { - "basis": "200px", - "shrink": 0 - }, - "props": { - "direction": "column", - "style": { - "borderColor": "#FFFFFF", - "borderStyle": "solid", - "borderWidth": 1 - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "36px", - "shrink": 0 - }, - "props": { - "style": { - "background-color": "#555555", - "fontWeight": "bold", - "textAlign": "center" - }, - "text": "Accessibility" - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "custom": { - "buttonid": "accessibility/color_blind_icons" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tif self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Alt Colours" - }, - "position": { - "basis": "36px" - }, - "propConfig": { - "props.selected": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.colours.colour_impaired" - }, - "type": "property" - } - } - }, - "props": { - "checkedIcon": { - "color": { - "disabled": "#FFFFFF", - "enabled": "#FFFFFF" - } - }, - "style": { - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 12, - "fontWeight": "bold", - "marginLeft": 10, - "marginRight": 10 - }, - "text": "Colour-Blind Friendly Icons" - }, - "type": "ia.input.checkbox" - }, - { - "children": [ - { - "meta": { - "name": "Label_0" - }, - "props": { - "style": { - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 12, - "fontWeight": "bold", - "marginLeft": 10, - "marginRight": 10 - }, - "text": "Magnification:" - }, - "type": "ia.display.label" - }, - { - "custom": { - "buttonid": "accessibility/magnify" - }, - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "80px", - "shrink": 0 - }, - "propConfig": { - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.alarm_filter.magnificaiton" - }, - "type": "property" - }, - "onChange": { - "enabled": null, - "script": "\ttry:\n\t\tif previousValue.value !\u003d currentValue.value:\n\t\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, self.custom.buttonid)\n\texcept:\n\t\tpass" - } - } - }, - "props": { - "options": [ - { - "label": "x1", - "value": "x1" - }, - { - "label": "x2", - "value": "x2" - }, - { - "label": "x3", - "value": "x3" - }, - { - "label": "None", - "value": "None" - } - ], - "placeholder": { - "text": "" - }, - "style": { - "marginBottom": 3, - "marginTop": 3 - } - }, - "type": "ia.input.dropdown" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "36px" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": 80 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "36px", - "shrink": 0 - }, - "props": { - "style": { - "background-color": "#555555", - "fontWeight": "bold", - "textAlign": "center" - }, - "text": "Home Card View" - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "custom": { - "buttonid": "status_filters/orderby" - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tif self.props.selected:\n\t\tbuttonid \u003d self.custom.buttonid\n\t\tactivityLog.logger.callLogger(self.view, \u0027click\u0027, buttonid)\n\t\tactivityLog.productMetrics.callLogger(self.view, \u0027click\u0027, buttonid)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Order-By" - }, - "position": { - "basis": "36px" - }, - "propConfig": { - "props.selected": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.alarm_filter.orderby" - }, - "type": "property" - } - } - }, - "props": { - "checkedIcon": { - "color": { - "disabled": "#FFFFFF", - "enabled": "#FFFFFF" - } - }, - "style": { - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 12, - "fontWeight": "bold", - "marginLeft": 10, - "marginRight": 10 - }, - "text": "Order Cards By Area" - }, - "type": "ia.input.checkbox" - }, - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px", - "display": false - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.viewFocus" - }, - "transforms": [ - { - "code": "#\tvalue \u003d value.split(\u0027/\u0027)\n#\tvalue \u003d value.pop()\n\n\treturn value", - "type": "script" - } - ], - "type": "property" - } - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": 65, - "grow": 1 - }, - "props": { - "direction": "column", - "justify": "space-between" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Accessibility" - }, - "position": { - "basis": "200px", - "shrink": 0 - }, - "props": { - "direction": "column", - "style": { - "borderColor": "#FFFFFF", - "borderStyle": "solid", - "borderWidth": 1 - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "style": { - "classes": "Background-Styles/Controller" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/97586e8c8ebde3aa2d87c31b191778a022ab54509ec059cca51424cdfdfa2c31 b/.resources/97586e8c8ebde3aa2d87c31b191778a022ab54509ec059cca51424cdfdfa2c31 deleted file mode 100644 index 6c1f3dc7e8895501011a7581254ef6fa6802baae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6204 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 diff --git a/.resources/984f655f871ede2bf498edbc6ea8aee5b4d50f802c3e2315dc3ef45834b52ab6 b/.resources/984f655f871ede2bf498edbc6ea8aee5b4d50f802c3e2315dc3ef45834b52ab6 deleted file mode 100644 index 25364625a5f121b23500ee566f8cd551431f3dfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 473 zcmV;~0Ve*5P)3Wx8P8}fL>-G3f^AHh5w}66u3GqmN;9SiSnwA*bo z8Vz(h9hA#uB$A2YZX($T#JPYnpeK6vMd3k{2n2Gl6iB43*=!=8&qEcX8nG+DZ>VPA zOJ=DF3*_M7+U<5xsZ@|mB}X+GsyU^aKGnSVqVUjZf`IXwLZJX2@lKk?G>Eo<4lqtc8mr&6u*B( P00000NkvXXu0mjf@f6ze diff --git a/.resources/98849b6d71af7964add1f30024e145f3a2848529a85068445ea7f275b47077fb b/.resources/98849b6d71af7964add1f30024e145f3a2848529a85068445ea7f275b47077fb deleted file mode 100644 index 1a0e828bac4a86c917a3f88a611a96c0a09abaae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4875 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 diff --git a/.resources/98ae8f1136beee40ff5186478a4653521c220e7d2953b9901c94cefbb9bddbe0 b/.resources/98ae8f1136beee40ff5186478a4653521c220e7d2953b9901c94cefbb9bddbe0 deleted file mode 100644 index 159fc797..00000000 --- a/.resources/98ae8f1136beee40ff5186478a4653521c220e7d2953b9901c94cefbb9bddbe0 +++ /dev/null @@ -1,471 +0,0 @@ -{ - "custom": { - "alarm_message": null, - "disconnected": true, - "plc": "System", - "priority": 5, - "priority_string": "No active alarms", - "searchId": "PLC01", - "state": 0, - "state_string": "Stopped" - }, - "params": { - "forceFaultStatus": null, - "forceStatus": null, - "tagProps": [ - "System/MCM01/Station/SSPB/UL6_1_SS1", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.alarm_message": { - "persistent": true - }, - "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.forceFaultStatus": { - "paramDirection": "input", - "persistent": true - }, - "params.forceStatus": { - "paramDirection": "input", - "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/.resources/9900c4193e023ede2ddb7838572711192d433f702ad82db0dfecd4c6e55d1253 b/.resources/9900c4193e023ede2ddb7838572711192d433f702ad82db0dfecd4c6e55d1253 deleted file mode 100644 index 3de2c5a3..00000000 --- a/.resources/9900c4193e023ede2ddb7838572711192d433f702ad82db0dfecd4c6e55d1253 +++ /dev/null @@ -1,12 +0,0 @@ -{ - "base": { - "style": { - "color": "var(--neutral-70)", - "fontSize": "12px", - "fontWeight": "300", - "lineHeight": "16px", - "marginRight": "10px", - "textTransform": "uppercase" - } - } -} \ No newline at end of file diff --git a/.resources/5c9d6f1491a70d5e06938cc25d0f0a13961a8a10a14b4d8896eb8b789d7a8179 b/.resources/990716c5751d7de2a791929d05ce947c92824c0e9dcb29a06f275a0dc9d229a2 similarity index 100% rename from .resources/5c9d6f1491a70d5e06938cc25d0f0a13961a8a10a14b4d8896eb8b789d7a8179 rename to .resources/990716c5751d7de2a791929d05ce947c92824c0e9dcb29a06f275a0dc9d229a2 diff --git a/.resources/9a7e7f577e8c98d52d993df8662b89daf798f7fc6e697b2d7ad424db703a4024 b/.resources/9a7e7f577e8c98d52d993df8662b89daf798f7fc6e697b2d7ad424db703a4024 deleted file mode 100644 index 8aa1a0f8..00000000 --- a/.resources/9a7e7f577e8c98d52d993df8662b89daf798f7fc6e697b2d7ad424db703a4024 +++ /dev/null @@ -1,64 +0,0 @@ -def main_alarm_table(): - """ - Returns alarms states to filter - the main alarm table - - Args: - None - - Returns: - Returns a list of filters. - - Raises: - None - """ - return["Active", "Not Active"] - -def shelved_alarm_table(): - """ - Returns alarms states to filter - the shelved alarm table - - Args: - None - - Returns: - Returns a list of filters. - - Raises: - None - """ - return["Shelved"] - -def docked_alarm_table(): - """ - Returns alarms states to filter - the docked alarm table - - Args: - None - - Returns: - Returns a list of filters. - - Raises: - None - """ - return["Active", "Not Active", "Shelved"] - -def information_alarm_table(): - """ - Returns alarms states to filter - the information pop up - alarm table. - - Args: - None - - Returns: - Returns a list of filters. - - Raises: - None - """ - return["Active", "Not Active", "Shelved"] diff --git a/.resources/9b524b5b232b4ccd4457a3fa257db17282d28405b9ed255ffd4b73ddb368cce1 b/.resources/9b524b5b232b4ccd4457a3fa257db17282d28405b9ed255ffd4b73ddb368cce1 deleted file mode 100644 index 27ac20ce..00000000 --- a/.resources/9b524b5b232b4ccd4457a3fa257db17282d28405b9ed255ffd4b73ddb368cce1 +++ /dev/null @@ -1,8 +0,0 @@ -{ - "base": { - "style": { - "paddingLeft": "4px", - "textAlign": "left" - } - } -} \ No newline at end of file diff --git a/.resources/9bedb8614d5dfe6720c1c5a849a05616a028ee518c5c69e00842779188c8cee4 b/.resources/9bedb8614d5dfe6720c1c5a849a05616a028ee518c5c69e00842779188c8cee4 deleted file mode 100644 index 1503a501..00000000 --- a/.resources/9bedb8614d5dfe6720c1c5a849a05616a028ee518c5c69e00842779188c8cee4 +++ /dev/null @@ -1,293 +0,0 @@ -import sys, os, datetime, hashlib, hmac -from StringIO import StringIO -import gzip -import urllib -import urllib2 -import json - -def get_filters_2(**kwargs): - filter_stack = [] - canonical_querystring = "" - url_encoding = kwargs.get("url_encoding") - - sources = kwargs.get("sources") - if sources: - source_string = "SourceId=" + ",".join(sources) - filter_stack.append(source_string) - - devices = kwargs.get("devices") - if devices: - device_string = "Device=" + ",".join(devices) - filter_stack.append(device_string) - - priorities = kwargs.get("priorities") - if priorities: - priority_string = "Priority=" + ",".join(str(item) for item in priorities) - filter_stack.append(priority_string) - - types = kwargs.get("types") - if types: - type_string = ("Type=" + ",".join(str(item) for item in types)) - filter_stack.append(type_string) - - time_from = kwargs.get("start") - if time_from: - time_from_string = "StartTimestamp=" + str(time_from) - filter_stack.append(time_from_string) - - time_to = kwargs.get("end") - if time_to: - time_to_string = "EndTimestamp=" + str(time_to) - filter_stack.append(time_to_string) - - duration = kwargs.get("duration") - if duration: - duration_string = "MinimumDuration=" + str(duration) - filter_stack.append(duration_string) - if filter_stack: - if url_encoding: - canonical_querystring += "Filter=" - for i, j in enumerate(filter_stack): - if i == len(filter_stack)-1 and url_encoding == True: - canonical_querystring += urllib.quote(j, "") - elif i == len(filter_stack)-1: - canonical_querystring += j - elif url_encoding == True: - canonical_querystring += urllib.quote(j + "&", "") - else: - canonical_querystring += (j + "&") - - return canonical_querystring - -def get_filters(**kwargs): - #Build filter string, filters are passed as key word arguments into the function - #Check if any of the filters have been passed means we need to add Filter=. - #Each filter is then converted using the urllib_parse. - canonical_querystring = "" - sources = kwargs.get("sources") - devices = kwargs.get("devices") - priorities = kwargs.get("priorities") - types = kwargs.get("types") - time_from = kwargs.get("start") - time_to = kwargs.get("end") - duration = kwargs.get("duration") - url_encoding = kwargs.get("url_encoding") - filter_list = [sources, devices, priorities, types, time_from, time_to, duration] - if any(filter_list): - canonical_querystring = "Filter=" - if sources: - source_string = ("SourceId=" + ",".join(sources)) - if url_encoding == True: - canonical_querystring += urllib.quote(source_string + "&","") - else: - canonical_querystring += source_string + "&" - if devices: - device_string = ("Device=" + ",".join(devices)) - if url_encoding == True: - canonical_querystring += urllib.quote(device_string + "&","") - else: - canonical_querystring += device_string +"&" - if priorities: - priority_string = ("Priority=" + ",".join(str(item) for item in priorities)) - if url_encoding == True: - canonical_querystring += urllib.quote(priority_string + "&", "") - else: - canonical_querystring += priority_string +"&" - if types: - type_string = ("Type=" + ",".join(str(item) for item in types)) - if url_encoding == True: - canonical_querystring += urllib.quote(type_string + "&","") - else: - canonical_querystring += type_string +"&" - if time_from: - if url_encoding == True: - canonical_querystring += urllib.quote("StartTimestamp=" + str(time_from) + "&","") - else: - canonical_querystring += "StartTimestamp=" + str(time_from) +"&" - if time_to: - if url_encoding == True: - canonical_querystring += urllib.quote("EndTimestamp=" + str(time_to) + "&","") - else: - canonical_querystring += "EndTimestamp=" + str(time_to) +"&" - if duration: - if url_encoding == True: - canonical_querystring += urllib.quote("MinimumDuration=" + str(duration) + "&","") - else: - canonical_querystring += "MinimumDuration=" + str(duration) +"&" - system.perspective.print("filtered string = " + canonical_querystring ) - canonical_querystring = canonical_querystring.rstrip("&") - return canonical_querystring - -def get_response(response): - if response.info().get('Content-Encoding') == 'gzip': - buf = StringIO(response.read()) - f = gzip.GzipFile(fileobj=buf) - data = f.read() - return (response.getcode(), data) - else: - buf = StringIO(response.read()) - return(response.getcode(), buf.read()) - -def build_url(credentials, **kwargs): - # ************* REQUEST VALUES ************* - method = 'GET' - service = 'lambda' - - # This is a lookup in secrets to a return the function url for the lambda that needs called. - # This allows beta and prod to be dynamically retrived. - whid = kwargs.get("fc") - region = kwargs.get("region") - API_ID, STAGE, ACC_ID, FUNC_URL = AWS.secrets_manager.get_secret(str(whid), 'scada/api/endpoint') - api_id = FUNC_URL - host = "%s.%s-url.%s.on.aws" % (api_id, service, region) - endpoint = "https://%s" % (host) - - - # Key derivation functions. See: - # http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html#signature-v4-examples-python - def sign(key, msg): - return hmac.new(key, msg.encode('utf-8'), hashlib.sha256).digest() - - def getSignatureKey(key, dateStamp, regionName, serviceName): - kDate = sign(('AWS4' + key).encode('utf-8'), dateStamp) - kRegion = sign(kDate, regionName) - kService = sign(kRegion, serviceName) - kSigning = sign(kService, 'aws4_request') - return kSigning - - # Read AWS access key from env. variables or configuration file. Best practice is NOT - # to embed credentials in code. -# access_key = os.environ.get('AWS_ACCESS_KEY_ID') -# access_key= 'ASIATVSVCYSV2JJJMDPP' -# secret_key = os.environ.get('AWS_SECRET_ACCESS_KEY') -# secret_key= 'Hc0G/0eACBlgplGSBnfsB98Y6DPqwpvyb4nc1Rvs' -# session_token = os.environ["AWS_SESSION_TOKEN"] -# session_token= 'IQoJb3JpZ2luX2VjEJr//////////wEaCWV1LXdlc3QtMSJHMEUCIQCbrPQoj4OM0SXIo6QtcNAblnplgXfvSYIcA+k8xkXmZwIgN1Pi7Nyc66T8p0HkZSMmuW8pu1qPEVJii41YgYCuiBYqngIIo///////////ARAAGgwyNTI1MDc3Njc5NzkiDKGV69tLNcKNVcoeryryARkU2Lmnj0aa+ilLOrg35FIb81jvmj6bpPR3+5zJ3Wna+vOBgz6cqphyn28+Q8Ryw/lzM6gM0vWH+gV26CuQZtKd1U4ETo9eL9QuluLBqLnZYfT5q+F9hzJy3OQQl0c3VvwcaCjOPrMdbvWnJGEoEZTKe7Xm5v3ok3huJDgKLEIVlE6Z4c2kKNy/N/JfbxB5a33A2eaE9YaGj1V0cQgUFCCkn9uDq8W4TzOPZ3NgKAyj8RoBR6KAC8gEtWXFEwwZR3ZMwYIXryEepcU7HQSHpp66JAFm/X5+HNxRe7WUwTETAveYMNi5ssFzl3rneKh9+U37MPW58psGOp0B11BghSma0KZHgCfXqdsgfGyD7/sBEyYE9wdnzmi8fOpel5EDQoUoYilRSXod2E9wlaXj3h8S+dtBJjGVqsIbHEIrW7WKOEYELxoW4VSDw5hDjZaUuZ5fA3z59c4CEeAz3v5EA6NN6+ulEb7/4pbWF8s3fezNk9T73NpmKnjaMFukcBX8DofesZGJFpfGij2Sx4hQ3qlmG91uac8kMw==' - access_key = credentials["AccessKey"] - secret_key = credentials["SecretKey"] - session_token = credentials["SessionKey"] - - - - if access_key is None or secret_key is None: - system.perspective.print('No access key is available.') - sys.exit() - - # Create a date for headers and the credential string - t = datetime.datetime.utcnow() - amz_date = t.strftime('%Y%m%dT%H%M%SZ') # Format date as YYYYMMDD'T'HHMMSS'Z' - datestamp = t.strftime('%Y%m%d') # Date w/o time, used in credential scope - system.perspective.print("creating header") - system.perspective.print("datestamp = " + str(datestamp) + " region = " + str(region) + "service = " + str(service)) - - # ************* TASK 1: CREATE A CANONICAL REQUEST ************* - # http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html - - # Because almost all information is being passed in the query string, - # the order of these steps is slightly different than examples that - # use an authorization header. - - # Step 1: Define the verb (GET, POST, etc.)--already done. - - # Step 2: Create canonical URI--the part of the URI from domain to query - # string (use '/' if no path) - fc = kwargs.get("fc") - canonical_uri = "/history/%s" % (fc) - - # Step 3: Create the canonical headers and signed headers. Header names - # must be trimmed and lowercase, and sorted in code point order from - # low to high. Note trailing \n in canonical_headers. - # signed_headers is the list of headers that are being included - # as part of the signing process. For requests that use query strings, - # only "host" is included in the signed headers. - canonical_headers = 'host:' + host + '\n' - signed_headers = 'host' - - # Match the algorithm to the hashing algorithm you use, either SHA-1 or - # SHA-256 (recommended) - algorithm = 'AWS4-HMAC-SHA256' - - credential_scope = datestamp + '/' + region + '/' + service + '/' + 'aws4_request' - - # Step 4: Create the canonical query string. In this example, request - # parameters are in the query string. Query string values must - # be URL-encoded (space=%20). The parameters must be sorted by name. - #canonical_querystring = 'Action=CreateUser&UserName=NewUser&Version=2010-05-08' - #canonical_querystring = 'NextToken=' + urllib.parse.quote("1669217267.5230844/PLC09/T00049",'') + '&PageSize=50' - #canonical_querystring = 'PageSize=50&PreviousToken=' + urllib.parse.quote('1669217267.5824845/PLC09/T00099','') - canonical_querystring = "" - #Build filter string, filters are passed as key word arguments int the function - #Check if any of the filters have been passed means we need to add Filter=. - #Each filter is then converted using the urllib_parse. - #Including client id for timestream api. - client_id = kwargs.get("client_id") - if client_id: - canonical_querystring += 'ClientId=' + client_id + '&' - PAGE_SIZE = "200" - filters= kwargs.get("filters","") - if filters != "": - canonical_querystring += filters + "&" - - next_token = kwargs.get("next_token") - - previous_token = kwargs.get("previous_token") - if next_token != None: - canonical_querystring += 'NextToken=' + urllib.quote(next_token,'') + '&' - system.perspective.print("created string " + canonical_querystring) - - if previous_token != None: - canonical_querystring += 'PreviousToken=' + urllib.quote(previous_token,'') + '&' - - else: - canonical_querystring += 'X-Amz-Algorithm=AWS4-HMAC-SHA256' - canonical_querystring += '&X-Amz-Credential=' + urllib.quote_plus(access_key + '/' + credential_scope) - canonical_querystring += '&X-Amz-Date=' + amz_date - #canonical_querystring += '&X-Amz-Expires=30' - canonical_querystring += "&X-Amz-Security-Token=" + urllib.quote_plus(session_token) - canonical_querystring += '&X-Amz-SignedHeaders=' + signed_headers - - - # Step 5: Create payload hash. For GET requests, the payload is an - # empty string (""). - payload_hash = hashlib.sha256(('').encode('utf-8')).hexdigest() - - # Step 6: Combine elements to create canonical request - canonical_request = method + '\n' + canonical_uri + '\n' + canonical_querystring + '\n' + canonical_headers + '\n' + signed_headers + '\n' + payload_hash - - - # ************* TASK 2: CREATE THE STRING TO SIGN************* - string_to_sign = algorithm + '\n' + amz_date + '\n' + credential_scope + '\n' + hashlib.sha256(canonical_request.encode('utf-8')).hexdigest() - - # ************* TASK 3: CALCULATE THE SIGNATURE ************* - # Create the signing key - signing_key = getSignatureKey(secret_key, datestamp, region, service) - - # Sign the string_to_sign using the signing_key - signature = hmac.new(signing_key, (string_to_sign).encode("utf-8"), hashlib.sha256).hexdigest() - - - # ************* TASK 4: ADD SIGNING INFORMATION TO THE REQUEST ************* - # The auth information can be either in a query string - # value or in a header named Authorization. This code shows how to put - # everything into a query string. - canonical_querystring += '&X-Amz-Signature=' + signature - - - # ************* SEND THE REQUEST ************* - # The 'host' header is added automatically by the Python 'request' lib. But it - # must exist as a header in the request. - request_url = endpoint + canonical_uri + "?" + canonical_querystring - - system.perspective.print('\nBEGIN REQUEST++++++++++++++++++++++++++++++++++++') - system.perspective.print('Request URL = ' + request_url) -# r = requests.get(request_url) - request = urllib2.Request(request_url) - request.add_header('Accept-encoding', 'gzip') - try: - response = urllib2.urlopen(request) - except urllib2.HTTPError as e: - return(e.code, None) - except urllib2.URLError as e: - return(e.reason, None) - return get_response(response) - diff --git a/.resources/9c1a31fd6cada9cdde75bb9b6967f5f2cff28187cf25a0198ba0effe700c56df b/.resources/9c1a31fd6cada9cdde75bb9b6967f5f2cff28187cf25a0198ba0effe700c56df deleted file mode 100644 index e4d037f9..00000000 --- a/.resources/9c1a31fd6cada9cdde75bb9b6967f5f2cff28187cf25a0198ba0effe700c56df +++ /dev/null @@ -1,1099 +0,0 @@ -{ - "custom": { - "PLC_list": null, - "running_state": -1, - "state": 5, - "views_data": [] - }, - "params": { - "tagProps": [ - "PLC01/PS1-9/101SN01_ES", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.PLC_list": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" - }, - "transforms": [ - { - "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", - "type": "script" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.running_state": { - "binding": { - "config": { - "expression": "try(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),-1)\t\r\n" - }, - "transforms": [ - { - "expression": "if({value} !\u003d -1, try(jsonGet({value},\"state\"),4),{value})", - "type": "expression" - } - ], - "type": "expr" - }, - "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": "if(isNull({value}), 0, {value})", - "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.views_data": { - "binding": { - "config": { - "struct": { - "equipment_id": "{view.params.tagProps[0]}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\tproject_info \u003d system.perspective.getProjectInfo()\n\t#self.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\t#equipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ value.equipment_id)]\n\t#self.custom.views_data \u003d views_data\n\t\n\treturn views_data", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "width": 400 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "color": "#FFFF", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tsystem.perspective.closeDock(\u0027Docked-East\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Icon", - "tooltip": { - "enabled": true, - "style": { - "cursor": "pointer" - }, - "text": "Close faceplate" - } - }, - "props": { - "path": "material/close", - "style": { - "cursor": "pointer", - "marginBottom": 5, - "marginLeft": 5, - "marginRight": 5, - "marginTop": 5 - } - }, - "type": "ia.display.icon" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "200px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "session.custom.command_auth.enabled" - }, - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "expression": "\u0027Control Enabled Timeout: \\n\u0027 + ({session.custom.command_auth.timeout_sp} - {session.custom.command_auth.auth_timeout}) + \u0027 seconds\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "color": "#000000", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "marginBottom": 5, - "marginLeft": 5, - "marginRight": 5, - "marginTop": 5, - "whiteSpace": "pre" - }, - "textStyle": { - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tif self.session.custom.command_auth.enabled:\n\t\t\tself.session.custom.command_auth.enabled \u003d False\n\telse:\n\t\t#self.session.custom.command_auth.enabled \u003d True\n\t\tsystem.perspective.openPopup(\u0027command-auth\u0027, \u0027PopUp-Views/Command-Authenticate\u0027, showCloseIcon \u003d False, draggable \u003d False, modal \u003d True, overlayDismiss \u003d True)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_0", - "tooltip": { - "enabled": true, - "location": "bottom", - "style": { - "whiteSpace": "pre" - } - } - }, - "position": { - "basis": "170px", - "shrink": 0 - }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "expression": "//if({this.props.enabled}, \u0027Re-Authenticate to Enable Command Controls\u0027, \u0027Insufficient Privileges - User Role Required: \u0027 + {session.custom.fc} + \u0027-rme-all\u0027)\r\nif({session.custom.command_auth.enabled},\u0027Click to Disable Controls.\u0027, \u0027Re-Authenticate to Enable Command Controls \\nUser Role Required: \u0027 + {session.custom.fc} + \u0027-rme-all\u0027)" - }, - "type": "expr" - } - }, - "props.image.icon.path": { - "binding": { - "config": { - "expression": "if({session.custom.command_auth.enabled},\u0027material/lock_open\u0027,\u0027material/lock\u0027)" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "expression": "if({session.custom.command_auth.enabled},\u0027Disable Controls\u0027,\u0027Enable Controls\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": {} - }, - "primary": false, - "style": { - "marginBottom": 5, - "marginRight": 25, - "marginTop": 5 - } - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "50px" - }, - "props": { - "justify": "flex-end" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "EmbeddedView" - }, - "position": { - "basis": "400px", - "shrink": 0 - }, - "propConfig": { - "props.params.value.tagProps[0]": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "type": "property" - } - } - }, - "props": { - "params": { - "value": { - "tagProps": [ - null, - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - } - }, - "path": "Symbol-Views/Controller-Views/CommandControlActions" - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "50px" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "100px", - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "transforms": [ - { - "code": "\n\tplcList \u003d self.view.custom.PLC_list\n\n\tshowCommand \u003d False\n\n\tfor i in plcList:\n\t\tif value \u003d\u003d i:\n\t\t\tshowCommand \u003d True\n\n\treturn showCommand", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "direction": "column", - "style": { - "classes": "Buttons/Clear-Background" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "Labels/Label_1", - "marginTop": 20 - }, - "text": "No Active Alarms" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "AlarmTable" - }, - "position": { - "basis": "733px", - "grow": 1 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "if({this.props.params.length_of_table_data} \u003e 0, True, False)" - }, - "type": "expr" - } - }, - "props.params.tagProps[0]": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "type": "property" - } - } - }, - "props": { - "params": { - "alarm_states": [ - "Shelved", - "Active", - "Not Active" - ], - "length_of_table_data": 0, - "show_severity_column": true, - "show_state_column": true, - "table_type": "Docked-East", - "tagProps": [ - null - ] - }, - "path": "Alarm-Views/AlarmTable" - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "Active_tab" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "NAME" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "DeviceName" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "backgroundColor": "#FFFFFF", - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Name" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "PRIORITY" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Priority" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "expression": "if({session.custom.colours.colour_impaired} \u003d False, {view.custom.state}, {view.custom.state} + 300) " - }, - "transforms": [ - { - "fallback": "State-Styles/Background-Fill/State0", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "State-Styles/Background-Fill/State1" - }, - { - "input": 2, - "output": "State-Styles/Background-Fill/State2" - }, - { - "input": 3, - "output": "State-Styles/Background-Fill/State3" - }, - { - "input": 4, - "output": "State-Styles/Background-Fill/State4" - }, - { - "input": 5, - "output": "State-Styles/Background-Fill/State5" - }, - { - "input": 6, - "output": "State-Styles/Background-Fill/State6" - }, - { - "input": 0, - "output": "State-Styles/Background-Fill/State0" - }, - { - "input": 301, - "output": "State-Styles/Alt-Background-Fill/State1" - }, - { - "input": 302, - "output": "State-Styles/Alt-Background-Fill/State2" - }, - { - "input": 303, - "output": "State-Styles/Alt-Background-Fill/State3" - }, - { - "input": 304, - "output": "State-Styles/Alt-Background-Fill/State4" - }, - { - "input": 305, - "output": "State-Styles/Alt-Background-Fill/State5" - } - ], - "outputType": "style-list", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.tag_path_to_lookup": { - "binding": { - "config": { - "expression": "\"[\\\"\" + {view.params.tagProps[0]} + \"\\\"]\"" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "expression": "{view.custom.state}" - }, - "transforms": [ - { - "fallback": "", - "inputType": "scalar", - "mappings": [ - { - "input": 0, - "output": "Stopped" - }, - { - "input": 1, - "output": "High Priority" - }, - { - "input": 2, - "output": "Medium Priority" - }, - { - "input": 3, - "output": "Low Priority" - }, - { - "input": 4, - "output": "Diagnostic" - }, - { - "input": 5, - "output": "Healthy" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - } - }, - "props": { - "style": { - "paddingLeft": 10, - "textAlign": "left" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Priority" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "RUNNING STATUS" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Priority" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "expression": "if({session.custom.colours.colour_impaired},\r\n{view.custom.running_state} + 300, {view.custom.running_state})" - }, - "transforms": [ - { - "fallback": "State-Styles/Background-Fill/StateUnknown", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "State-Styles/Background-Fill/State1" - }, - { - "input": 2, - "output": "State-Styles/Background-Fill/State0" - }, - { - "input": 3, - "output": "State-Styles/Background-Fill/State5" - }, - { - "input": 301, - "output": "State-Styles/Background-Fill/State1" - }, - { - "input": 302, - "output": "State-Styles/Background-Fill/State0" - }, - { - "input": 303, - "output": "State-Styles/Alt-Background-Fill/State5" - } - ], - "outputType": "style-list", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.tag_path_to_lookup": { - "binding": { - "config": { - "expression": "\"[\\\"\" + {view.params.tagProps[0]} + \"\\\"]\"" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "expression": "{view.custom.running_state}" - }, - "transforms": [ - { - "fallback": "Unknown", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Faulted" - }, - { - "input": 2, - "output": "Stopped" - }, - { - "input": 3, - "output": "Running" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - } - }, - "props": { - "style": { - "paddingLeft": 10, - "textAlign": "left" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Running Status" - }, - "position": { - "basis": "35px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "{view.custom.running_state} \u003e -1" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "100px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Info_tab" - }, - "position": { - "tabIndex": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "len({../Views_list.props.data}) \u003d 0" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "Labels/Label_1", - "marginTop": 20 - }, - "text": "No Configured Custom Views" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onRowDoubleClick": [ - { - "config": { - "script": "\trow \u003d event.value\n\tcustom_view \u003d row.get(\"path\",\"none\")\n\tif custom_view !\u003d \"None\":\n\t\tequipment_id \u003d custom_view.split(\"/\")[1]\n\t\turl_to_navigate \u003d \"/CustomView/%s/\" % (equipment_id,)\n\t\tsystem.perspective.navigate(page \u003d url_to_navigate)\n\t\tsystem.perspective.sendMessage(\"plc-to-display\", payload \u003d {\"device\":\"none\",\"show_controls\":False,\"area\":\"none\"}, scope \u003d \"page\")\n\t\tsystem.perspective.closePopup(id\u003d \"StatusPopUP\")\n\t\tself.parent.parent.parent.getChild(\"tabs\").props.currentTabIndex \u003d 0\n\t\t\n\t" - }, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "W1H0Nole", - "modal": false, - "overlayDismiss": false, - "resizable": true, - "showCloseIcon": true, - "title": "InfoPopUp", - "type": "close", - "viewPath": "PopUp-Views/Controller-Equipment/Information", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Views_list" - }, - "position": { - "basis": "915px", - "grow": 1 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "len({this.props.data}) \u003e 0" - }, - "type": "expr" - } - }, - "props.data": { - "binding": { - "config": { - "path": "view.custom.views_data" - }, - "type": "property" - } - } - }, - "type": "ia.display.table" - } - ], - "meta": { - "name": "Views_tab" - }, - "position": { - "tabIndex": 2 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px" - }, - "props": { - "style": { - "classes": "Labels/Label_1", - "marginTop": 20 - }, - "text": "For Future Development" - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "OEE_tab" - }, - "position": { - "tabIndex": 3 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "tabs" - }, - "position": { - "grow": 1 - }, - "props": { - "menuType": "modern", - "tabSize": { - "width": 1000 - }, - "tabStyle": { - "active": { - "classes": "", - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - }, - "inactive": { - "classes": "", - "color": "#B8B8B8", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - } - }, - "tabs": [ - "Alarms", - "Info", - "Views", - "KPI\u0027s" - ] - }, - "type": "ia.container.tab" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "670px", - "grow": 1 - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "800px", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "Buttons/Button-Menu" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/f87b74535a326fc3764cdc01b7d6ea9312ab318b45773cae5cdbdbab62d846b9 b/.resources/9c8e0cd533a7540160ffe2a18a965e9d4a2ca6bdeabcc4fc38319c064419be05 similarity index 100% rename from .resources/f87b74535a326fc3764cdc01b7d6ea9312ab318b45773cae5cdbdbab62d846b9 rename to .resources/9c8e0cd533a7540160ffe2a18a965e9d4a2ca6bdeabcc4fc38319c064419be05 diff --git a/.resources/9cc58bd9d770e83b955a02a963ab41373b5b65552c391da3134e365d0058b9fe b/.resources/9cc58bd9d770e83b955a02a963ab41373b5b65552c391da3134e365d0058b9fe deleted file mode 100644 index 8f4561b5634fa01c6e0c7bd00b5b14d19b4b0a4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9222 zcmcIqcUY78vSxKX?Aj0k>9PwVMI;K+OFU};m6akOAWZ@o!Ds;K2}C@*kbr=Qz#QRICkwSWRBXhK!w}gml`MtL}&N290r?Vwdqks3|15*BL*2A_oqcRbWQpwPa zt}OGS#&2F(3l%6}uVfsSnh1d5SvJK+b%f98{bK-t&bKr4EKIXIhH@a z^(&f_$hL)@FO}~9;juQVc-J|W*)A(znpwCEu$f-M=8wBK;A99!NK7nA)o|7W_?yei zgal3ZiBDgYt`L5vVXPbPZD$lH`c2_fXLUW`2gkyi$QU;^nZ zTc{AOfA3CiU^>_89+fEC#>NDj(PN7||NAsk2`UkkF3~W!i;?SLI(=X5Y_+h=c>{%8d>=By(>#%LR@$a$h#AzYf&tu1u{Uhrp&caJn)8`#q!8aW7{}XF9$R7SDU5Oul z+-Q2r*mmmRpE&E5@y@TQDLd4~D#(v*oZIXc_Vg(W(EN}Cf4mckIWVFSt@DC^ZlCwCKlS%tkAT-l{;{;QL|N^U+@bNm zkUH?F6*$?OxkV*@erw~;$1?j46bik2_e(XW*vF+hVTYw{*V2;$)IT6fr{6d=#@G=2 zd3HKfhWywhV2hTPmdY?{#k^uU+UjA6WH(o<=1S9AkDZv?+8hFnymxQP<-z6FZAdPA zMny$M-ULALhI9g!oW}DuW+LZHr1HOpYs_O_-F|ncdUK%?Z6=?#(+Q2tr=R;UXp@NI z(V$Q1{SV9L8toX%{?tLLIeN{!Xvpur+*@&c#YR`&e1FkGEtbdJ4u}ZQNnfS7gRsTA z!@iS=+&bJ>xsCBYA(#C&rqdm^JdhHfXOe?Ym&#gg?ta7=(peuRHQAaZ=FCf5CF?qN zB{8Ox>KbH}8*r{2H&k+L%QwCvOF*F+LqkJA{B4X&*N0Fm&0xkjIQ+8gaHDQ^!hG>~ zcndDif9^iFIdurR(A(QPG2yrgG0)#=;-x-ijlj?q}Q#54CEZTg#%V(U+ zZSUylFnM&s$=p&~v{7OQCNjT3i_Ye!b9Vnmn4Lh=WKA1kVPWh&TU6Ec)jtdNvEktQ z`Z}!h2gcIv*70YJln04BhM?Suuq}o3`ucj4bb~}yH>kX&0twTQZ|r3|TO}=>G;dzyRVDw$T$2!0cO!sDA z6&4i4ZV1#-d*xx$KX%sV7@XDldkN1?OMTCVvBhp@jR=kQfxo@W%Ug(p;jmJ^f^T;7 zQX9M6k2~!*mCW48V}?XG0F@%yw%;Sbcz(Y|fWC$cE^DM;OifxZFUetuzL5`=FUrG!t1#MGn)ysEofn zP1Lm}n9hRK_=9WfAW<*emVGepcCXhfoIBotP@_kJxx~WlWr|Td9#@)Zl~doz`PWyN^9}1;K81RZ4OLoQ$Op22yqTyL5wjF^dfIP zFOjhr4E{*zyPqoe`vQ+jxvdWzmiNBhl}Op4zTKMzG`X9dv5#fa2}0BRX^ z(0dq7C!%ZLW_`5d%gV5$kMZL#gphl{%oQ+Vuyn0X81YmNdo)xFudvCWR*G>8WTnK# z#i@=Wm=px@M`4wRz#Eml!^2{e=;eATi4^ftulWIAqNq0nGU(B9Bk~D%FnGP1Yb=nl zHO%zy$+amOaMyS2=i5nW?d1Gteyiap~(0kY@NJuT?(2-LR2tgqW z(z&|o0qJZ6Rf_biVlqA@`%D4+G6}F_#KBb6+*!P$_*X;5grWFZi6rQ2J~ve~gZ>Xr zuDZ@>{%xYvPA;C(8-n+}pDqfRDT4mUhdtT&k`T(DXH_&mW5?VWX3P!i{-E=8t6Gd+ zeJ%`4uK~*;Zj>__oA?aBB?7;L#4Ryfz(2PUmA8;KPe_KFcACZ7{b-n)zR_H^4XjAtvIdJ)Kt9UU7`@)Sbau48qcl7 ztxSv`7Uc`YVcrA56R3MDO^Mx5eMf&@`B}1ECUgXwg-VdR>tKjRqcy{>R;&6tS4c;= z`!aNCyJT@&eQ@;k5l!(QDUho#9%JX~b z9|opXAX#ZZh3WK)0Ao&35f#WSNrAI3DIq7Ni1D`A{K}7kyfxCcr5@8C9`r+XE_Myb zj?sy-2<>Polbh#*5S3eAz6T_K(C3YQ{4`NY$XHQbT`0o#;_ID`azW2fYt8iAE`Y4f zvn?(vD4gu+#$*-O#=ejR5p|w<*v7`+vrP>RtFEqQFc_j5UbT|m<8@)@%yUHq1f(aQ zR$)vCjQTfZ(1FZs{Du(s`AWuGo_Wq~&xucw%dXp8)v$b^*C&;i*s|;>?lX2x_elkP zxlytzcJ@L6At9}#`OrNyPxx~(RM1^4Nw6sOBt9=3mNM9_`Z>`ImI!odS)~iMY zti-GO{&FJ$j5BoXP0!O@8~AEwG@FCiCwe6Kz<+)v~oA`XZqed zo22Py-^L+c5KLx$M}OtFMJ*9}F_QYpjgB zs2IZNVOK+{LNA3qehLqj?Cj35lK85gr{!gN%9w0&hht)F*?+7So3u3x!+T-R!K?=) ze!>N8Oj~q7a%(-o2hPfG;lT}K?qU~tlKGNP-hWZtSEr=%T&7zkQr+!Nnt?SYRpF#~ zj4HR3hSx0S0utax@zw@$ndcHMf+g;YBh{)85@b(a3>mLdy5Iex%MhaPI01Q-y6U6A zecP>sNd}<>ow#F`YU}Fi#8aTM%lV!3ujZ8@`R2lIZ-F$#^!^r7TROWlxegHc&?($m zaTci}>K^xim2tc|uU8rY2~(=PKW?#d+z19c+UPIlheS5&!q5q4Zps>*?8mEyUXs;M z%IBR)NRyNDn(O1ME&#UpPajm%=q=$lMf3=GykhRU+wWVO)ClFG_n1jR8vmw)M0kkQ ziC9KHSh=CT@nGW0Bd^^h`AcrcEhC``Xxz=0OAU;AT^Z?X-7jSmJqrw#+CA{GQ7?kZ zv2TcZkFJt%F6!U&gKX(QJB_xQi{3oltZnG4kjN9`An^;dz1x`*|L{esy5XA@X){M| zJ|-ZGxXMTds;hOt;E#3VnZZ(ys`4x)`5gbzAW?AILI|(UVi3d6)11vBc8O@-8sG-C;7e z5@Ef*AIOi46BTzAqQ?eW8 zoFJQ+keh01YK+m@^#wjt03k_Zh+$dGI}UH1_2f$UIO{0=VT#}zH!LB5RFi9Syh`VV z+0``tGi@L=tr0MT5WSk2j@uxB0`T@VLB1WV-taEhUf@UeNHb}KI$6Ox8Kbp2>7$gToOo!=fN@Q&DMlQWRC-&a>x zM@H_{{`{>O#5DU^irkYQV?g+B>`P3Dg>X4A4rZC>g*Rbdg($wD#-(U?TN$6IaS!q- zp2Q*LTTYnIUCmZK6Jr^v;&vyyUc6NN8T6Xz=ZE(tZc5>FH3znt*`j~#63+KaoKH|B z47^Ed9jgcC9(ml)zMlB4D_-WOjPG}6JI5Y;_Vwdy-q`i;(mut1m-FelfENReh8rp+ zxrY281LCSPwGM5>lQ$h#XlX#D6R9o6qbE{!qgSrQq5W!J8j`2Uw1`v|D) zxxqqrV`F1awHeSQSSeNbXtHIm6zHs~y1W+s?^ktuM(STTX6%Il z=og5+ZZeJ?KmK7?Y4=-cR$(b!e?)zAll{SekllMm%Quivt198f7SleWg#Fs|My!$)*(Ya<6$goSQ`BHL3@hl zfU@?7v#Dhqrl#U9v}H1|hSHOC;k8CUFNoHG=m?#+DZK=pE(9I{n{vPhiQ8%C3<$<3)JM2S?FBCvbo8@NhM%%KBxb-#T)1mS88t8EMc*k^$s0T7ZZL{SLPN@FOt8B z@;oZ_(#%vqP|!E`A|ORltQ8g1y-+TGW4#kiSe_++7eDoiFWPWXjo8uEpH+g0XAA6Q z!V~dYNH5AeC1fENOnb(jUe81b8TkKhzmha%4V%0mhaL<{nqKVH6RP`li9U+Y%;Yj? z`lzJpyU;H+xd8SZZi&j;fDOe1A39D9$hK!lOn?{Cl@bKSn2Wzwe3uhhhrj#1r+P{Z zD8OlPQKN&$fzx{-Ax>ZhJ!!-&D_5L6ZdH&TjPxoD>JW3HtS$}?!F}GWx6P84+V#1J zdJf2u!J$ln`9Yhzt;buNaPmWC$hU%&B#nN-7*Y#9XY5EzjQzr|K?h;s-BYF4L3OM$WsY@e&VBw8iawA~4ROAeggblr+X==-IMZ zL&_{5jJuh|scRsUM}16CQ&m`paZZf_e&KLCsA?N^zP4<$XVnmlp6KLEH^>pvDs-J} z%gk)|FLUr(JwT**1vSs=1oO+|)L@hmwN~1ySW7S%aHD&+1pS=0I4g!+QCS~NdPIj1 zr3{J2Q8%5II!VP}>iE3}DPNNjxq>B>lDT1PE!52Ot);cFt{OWZO3r$~%$PsFh;95) zWKh06FSuxH^_`|s6AnBpsE&jSDi_!#)hy05FX}fhmMRt`+TZ_hv=Kiyx}wn{qpkR{ zYW8jQ5#Br@O_*2LNNfWh7E}s{BS2Kh4zHAPOJ&hr0bc{}q@egUkC}TAd zCiJ?J0)9c9%<1*z5@O7#b!e>UQ>Kr+f<_z8#%nRg!zXYImkjqw9%Duw2fHjim~0v9 z)~sLW?`%3g^kKG*H2SuBJ>9=?mgLwgi|b#EpX5ra{N&m`1gFr)lqAUDcKzdsiZ(b6 z=E-=+Yv)dxfdzRtJM}7h+*S44P;mF6{8VGG)YtA_u8#KUPZ?BM6|w6?%fb^?*Jw@$ zhiz9z3FjFBAlKQKp-1(XB!eWxw6mPjnU`9$C%J-Q=&Ax1;_udorwfWIy{7tNsR4*h z$hSkiz3a4G-`Tl#v2vx=n)7;MgWB{@Zz_DPHpgc;vJRfVlQ+!?&__O3_5sFgt;9vxN9_hFe*&A?gOJm7!ee~Eut=H^FdQkAV zuPw@}+jZ+uC`bX$hn}#XF{Q%tYEQI^=CW~+*t97Pt^lVrc~a=3Fmw32<+1p%l9qskvGtb%r=K!61?_+;CnI60 zv;eQlQNBx>Zg3P7?&0X+fr78r;zo{(l8{KZE2VmNp~7mZ%eR^=3jCG)6B$@t zqExtO(n}$sa4~txQ{uAB=X0jpFlaGleFY;=taW!{3_y{ioG zeFtddfUE`Fvp$W8;5y4~Hjg@PZ7KfR)_={6n-DFjFb!N&SQXrD25uort^&7=nd^Dx zkm@d7h@0d~QDgmB`9vJ90s<+t)8@$i)^=+AIxn}9qGAEC<9te2D{nIoP~&uUvaCSS zo=fTjTB=M+asG?4tF;?4%g))f3&8D80UFHddT4rXPE=)2gZ z$?+ok-Q}GE9!xixpW3v2kenU!YT2nB?pi;NoUA^cq~vpl6@s=W3d7mc7%uRX= z>RBhSZ2D-?zpUe+rsn+6}Ltla$k&e@rr zR#V~x+OT7ed-f3pB^3=VB_%b*&Q6u3OLqKZSzWF6WY=v*Ne8`UQc;S9g@THTf{BU> goGFV>U*cwD(5=2E+T!1O3g}-3Pgg&ebxsLQ05r325C8xG diff --git a/.resources/9e2485351974e4c29f14fe9dc9e7a749db4637ad0085346729b055b5bb8a628a b/.resources/9e2485351974e4c29f14fe9dc9e7a749db4637ad0085346729b055b5bb8a628a deleted file mode 100644 index e2c3bc9b4f18c13339f145b38582a53eb759cfc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1810 zcmV+t2krQYP)3$g6uvW4Vl*~Hu+Vm*NM#w?(oQL&3ABn(kW~w%K%r5=gvcUoW$j8g3M~;@Xweuj z(HPg(Y781phyp4<8pO)JNZEoY2tqsUte@w+H?O?TyqV6ljojqxo4$MRx!*nK+;h)) z0@Svhcfw|~^$P9n?PzUn?S#!{$Ih!PU2e7402e(i7E9-twzf7{tyV8tY6vFx&IJdY z4jT>j9^elwoQW|!o6}*(mLu1Zcc=v$5B!1B!1s1|jZWj7o|MB~nH+w1~hDJk#Jp~cJ65@qD5E=U+UONi0 z{4B)Ea}di;K)ieyVooDOQU%1&7oi^%19SXnl;o|!iDS)Oh$^O+2nGU0Yuq|$*YDPD zM_lwsh)3ceo~?p-{Ui)!fT6;TazI~7D0ZWS!2O%u{aXOB@h(LAJ_yrdghmX*(#-id z)_hc2!{Km9+6;)Gq;?|6?a+_=@l5b;W6j$EG8}6op@pH2Ei}nDoX!w~#t*B57?b#Om`fY*lH?YtbG; zl4p@D5yBcxuE1d95Z?q@bKI_8y@tf-DDsm`gp|3Yow6XW1^No^jq6zni@wt)$mG~b z|Gse(iKB?z=w%3D^-BW!P;36cW@o?lB*&*!@;mamSyP{b7_k^3ib;FqXT1Qg=SfiU zyTbL^lFx;dxer3V)my;-0WESr9sB|M2Ooug^*Qo6XWt%%V4*gxM6$z*u^i_n?~)xg zH;4nFoNRaK@Cl`#E#oP}6Q0`Jv%6Xf!iG|3@MdMFE)NjwIz>)z8JR*Vi!b8B}B|Th}Z@6O!p1$k6TPZ`M5mK-{Dhhui=vqNPBT~cRFa2 z#$aFIjj&b*#mb9MBP&eWOm4Ep8~mR89|(n5&?wLIrwEy#9F)^$rBDQ~l&_p%g0Vs{ zVhlv)_YiNpnDFFC~ycCj|Z$%_n~= zV3`4o)k5_pNY$4qCPAtpI8E;hAJi96HbUf{fBPni8!w>$W+(k`gPu1Z3_^+T@-@-4A}>WzFCk}8^!mQ#(eDvAtiE%MbFEWuo=Te&pk>Z{iT(;K9WIK0w{ z$Qnx7YR@A*cQ3}g2Sii>{mX6g1_C8ma~UY1qB@G|RxS;>2QC*;Mkb`vlo!eAY$4hl9mxethsEZ(iX$>&$ zB+b>F!i1_*NG;ok6e2mR_6(BA+>`45lE((BK`y>Id*+H?q&CW7rnje<4_cl>GUfQH zvzU>+8{swlj*x2$&Igr1{c6TshzS+magb9kCEfRh+%_WP>|9hwiyHD-4oP~wJdfvl%2c2btlLhR#*o?WL_tMx6aCKz#~+FaoZLo`73SB= zCX|v=8;n&pB=2>>P-O3_?ZMu8@Rg zU7+xDjB>Y=gcI7}{+x4iy0!4Du4ZGCuG6?lj88*Mua)OX@-^f#lw`Ht(k^|-5$WI1 zZQ_#E&c2keL|!;DQ8tS&L{d>da3sXipXGUOKh_o6U?^1i6u;;GxJ*h;qUCv>vee*w zkUuJN+q5AIV%UOvW@Zhp`4b}hBJK1NJ^euG=Z*0^PiI$y``2FYI?orFAlJbhZcZNm z9S;vMLYH+Bx=ox_lam&?WIqfP-H}res9dFJQa*LOvM?1QewFxx?D~iZ~hGrg${&%#VNTa4mN1_H57vC;wf+K8+6L1c*n&10X0FTcyDd9Al4KG zk+c>1%KJ=GO;CMcjvi@((KrOUMc+bKa{o;IA2Q2qFV$00I{*Lx07*qoM6N<$f-UP| A3IG5A diff --git a/.resources/9e3df2aa730257f851fb07797cc180594efd976a8381ac2a72a66ad6752f35ef b/.resources/9e3df2aa730257f851fb07797cc180594efd976a8381ac2a72a66ad6752f35ef deleted file mode 100644 index b9b1bb67..00000000 --- a/.resources/9e3df2aa730257f851fb07797cc180594efd976a8381ac2a72a66ad6752f35ef +++ /dev/null @@ -1,431 +0,0 @@ -{ - "custom": { - "box_shadow": "0px 2px 4px rgba(0, 0, 40, 0.15)", - "expanded": true, - "show_content": true - }, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\tself.custom.expanded \u003d self.params.open_expanded\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "params": { - "anchor_position": null, - "content_shown": true, - "open_expanded": true, - "params": {}, - "path": "Objects/Templates/S3/Management/file", - "show_box_shadow_on_expanded": true, - "title": "Card Title", - "useDefaultHeight": false, - "useDefaultWidth": false - }, - "propConfig": { - "custom.box_shadow": { - "binding": { - "config": { - "expression": "if(\r\n\t{view.params.show_box_shadow_on_expanded}\u0026\u0026{view.custom.expanded},\r\n\t\u00270px 2px 4px rgba(0, 0, 40, 0.15)\u0027,\r\n\t\u0027\u0027\r\n)" - }, - "type": "expr" - }, - "persistent": true - }, - "custom.expanded": { - "persistent": true - }, - "custom.show_content": { - "persistent": true - }, - "params.address": { - "paramDirection": "input", - "persistent": true - }, - "params.anchor_position": { - "paramDirection": "input", - "persistent": true - }, - "params.content_shown": { - "binding": { - "config": { - "path": "view.custom.show_content" - }, - "type": "property" - }, - "paramDirection": "output", - "persistent": true - }, - "params.open_expanded": { - "paramDirection": "input", - "persistent": true - }, - "params.params": { - "paramDirection": "input", - "persistent": true - }, - "params.path": { - "paramDirection": "input", - "persistent": true - }, - "params.show_box_shadow_on_expanded": { - "paramDirection": "input", - "persistent": true - }, - "params.system": { - "paramDirection": "input", - "persistent": true - }, - "params.title": { - "paramDirection": "input", - "persistent": true - }, - "params.useDefaultHeight": { - "paramDirection": "input", - "persistent": true - }, - "params.useDefaultWidth": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 600, - "width": 500 - } - }, - "root": { - "children": [ - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t# toggle \u0027show_content\u0027 view custom prop\n\tself.view.custom.show_content \u003d not self.view.custom.show_content" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "props.image.icon.path": { - "binding": { - "config": { - "expression": "if({view.custom.show_content},\"material/chevron_left\",\"material/chevron_right\")" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": {} - }, - "primary": false, - "style": { - "borderStyle": "none", - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer Anchor Left" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "{view.params.anchor_position}\u003d\u0027left\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "direction": "column", - "style": { - "classes": "Framework/Card/Title_transparent", - "margin": "0px", - "padding": "0px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.title" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Framework/Card/Title_transparent" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.custom.expanded \u003d not self.view.custom.expanded" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "propConfig": { - "props.image.icon.path": { - "binding": { - "config": { - "expression": "if({view.custom.expanded}, \u0027material/expand_less\u0027, \u0027material/expand_more\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": {} - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "24px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "EmbeddedView" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.custom.expanded" - }, - "type": "property" - } - }, - "props.params": { - "binding": { - "config": { - "path": "view.params.params" - }, - "overlayOptOut": true, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "path": "view.params.path" - }, - "overlayOptOut": true, - "type": "property" - } - }, - "props.useDefaultViewHeight": { - "binding": { - "config": { - "path": "view.params.useDefaultHeight" - }, - "type": "property" - } - }, - "props.useDefaultViewWidth": { - "binding": { - "config": { - "path": "view.params.useDefaultWidth" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Framework/Card/Embedded_transparent" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "100%", - "grow": 1 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.custom.show_content" - }, - "type": "property" - } - } - }, - "props": { - "direction": "column", - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t# toggle \u0027show_content\u0027 view custom prop\n\tself.view.custom.show_content \u003d not self.view.custom.show_content" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "props.image.icon.path": { - "binding": { - "config": { - "expression": "if({view.custom.show_content},\"material/chevron_right\",\"material/chevron_left\")" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": {} - }, - "primary": false, - "style": { - "borderStyle": "none" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer Anchor Right" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "{view.params.anchor_position}\u003d\u0027right\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "direction": "column", - "style": { - "classes": "Framework/Card/Title_transparent", - "margin": "0px", - "padding": "0px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "propConfig": { - "props.justify": { - "binding": { - "config": { - "expression": "if({view.params.anchor_position}\u003d\u0027right\u0027,\u0027flex-end\u0027,\u0027flex-start\u0027)" - }, - "type": "expr" - } - }, - "props.style.boxShadow": { - "binding": { - "config": { - "path": "view.custom.box_shadow" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Framework/Card/Card_transparent" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/9ea06676d3f8d2efa2a53e4045aa92a3143be2f1cea2cfce8bc0fed9c489d315 b/.resources/9ea06676d3f8d2efa2a53e4045aa92a3143be2f1cea2cfce8bc0fed9c489d315 deleted file mode 100644 index d11dd64d..00000000 --- a/.resources/9ea06676d3f8d2efa2a53e4045aa92a3143be2f1cea2cfce8bc0fed9c489d315 +++ /dev/null @@ -1,195 +0,0 @@ -import time -from datetime import datetime -startTime = datetime.now() - -def convert(duration): - current_seconds = round(time.time()) - seconds_duration = (current_seconds - (duration/1000)) - m, s = divmod(seconds_duration, 60) - h, m = divmod(m, 60) - return seconds_duration - - -def get_timestamp(duration): - timestamp = system.date.fromMillis(duration) - return timestamp - -def check_device_in_device_list(device, device_list): - if len(device_list)== 0: - return True - for i in device_list: - if device.startswith(i): - return True - return False - -def edit_alarm_id(alarm_id): - new_alarm_id = alarm_id.replace("/", " / ") - return new_alarm_id - -def create_shelve_key(source_id, alarm_id): - """ - Creates a formatted key as Ignition ui - wont allow "/" and spaces to be stored as - key values. Formatting allows easy conversion - back to the origional sourceId and message string. - - Args: - source_id: The sourceId of the alarm. - message: The alarm message. - - Returns: - The formatted key.. - - Raises: - None. - """ - source_to_check = source_id.replace("/", "---") - key_to_check = source_to_check + "----" + str(alarm_id) - return key_to_check - -def unformat_shelve_key(shelved_key): - shelved_items = shelved_key.split("----") - source_to_check = shelved_items[0].replace("---", "/") - alarm_id = int(shelved_items[1]) - return source_to_check, alarm_id - - -def check_alarm_in_shelved_alarms(source_id, message, alarms_to_shelve): - key_to_check = create_shelve_key(source_id, message) - if key_to_check in alarms_to_shelve: - return key_to_check - return False - -def get_alarm_table(self, active_alarms, severity_filters, no_filter, - device_list, alarm_states, alt_colour, table_type): - alarms_data = [] - alarms_critical = [] - alarms_high = [] - alarms_medium = [] - alarms_low = [] - alarms_diagnostic = [] - alarms_disconnected = [] - alarm_temp_dict = {} - shelved_alarms_to_keep = {} - unshelved_alarms_to_keep = {} - shelve_alarms_dict = self.custom.alarms_to_shelve - unshelve_alarms_dict = self.custom.alarms_to_unshelve - if alt_colour: - style_props_critical = {"classes":"Alarms-Styles/Alt-Colours/Critical"} - style_props_high = {"classes":"Alarms-Styles/Alt-Colours/High"} - style_props_medium = {"classes":"Alarms-Styles/Alt-Colours/Medium"} - style_props_low = {"classes":"Alarms-Styles/Alt-Colours/Low"} - style_props_diagnostic = {"classes":"Alarms-Styles/Alt-Colours/Diagnostic"} - style_props_disconnected = {"classes":"Alarms-Styles/NoAlarm-Black"} - - else: - style_props_critical = {"classes":"Alarms-Styles/Critical"} - style_props_high = {"classes":"Alarms-Styles/High"} - style_props_medium = {"classes":"Alarms-Styles/Medium"} - style_props_low = {"classes":"Alarms-Styles/Low"} - style_props_diagnostic = {"classes":"Alarms-Styles/Diagnostic"} - style_props_disconnected = {"classes":"Alarms-Styles/NoAlarm-Black"} - - for i in active_alarms: - source_id = active_alarms[i].get("sourceId","Unknown") - alarm_id = active_alarms[i].get("id","Unknown") - severity = active_alarms[i].get("priority", 0) - family_type= active_alarms[i].get("type", 0) - site_id = active_alarms[i].get("siteId", "Unknown") - state = active_alarms[i].get("state", "Unknown") - state = alarms.alarm_state.get_alarm_state(state) - duration = active_alarms[i].get("timestamp", 0) - time_stamp = get_timestamp(duration) - active_duration = convert(duration) - message = active_alarms[i].get("message", "Unknown") - expiration_epoch = active_alarms[i].get("shelveExpiryEpoch") - duration_in_minutes = active_alarms[i].get("durationMinutes") - family_type_Dict={'1':'Jam','2':'Safety /Emergency','3':'Power circuit','4':'Communication', - '5':'Drive/Motor','6':'Pneumatic','7':'Mechanical','9':'Operational','10':'Scanner', - '11':'Controller','12':'Unexpected Container','20':'Miscellaneous','0':'Undefined'} - type_description= family_type_Dict.get(str(family_type)) - - if expiration_epoch != None: - expiration = system.date.fromMillis(expiration_epoch * 1000) - else: - expiration = "0" - - device_in_list = check_device_in_device_list(source_id, device_list) - if (int(severity) in severity_filters or no_filter == True) and ( - device_in_list == True and state in alarm_states): - if str(active_alarms[i].get("priority")) == "5": - style_class = style_props_critical - severity = "5. Critical" - key = "Critical" - alarm_list = alarms_critical - - elif str(active_alarms[i].get("priority")) == "4": - style_class = style_props_high - severity = "4. High" - key = "High" - alarm_list = alarms_high - - elif str(active_alarms[i].get("priority")) == "3": - style_class = style_props_medium - severity = "3. Medium" - key = "Medium" - alarm_list = alarms_medium - - elif str(active_alarms[i].get("priority")) == "2": - style_class = style_props_low - severity = "2. Low" - key = "Low" - alarm_list = alarms_low - - elif str(active_alarms[i].get("priority")) == "1": - style_class = style_props_diagnostic - severity = "1. Diagnostic" - key = "Diagnostic" - alarm_list = alarms_diagnostic - - elif str(active_alarms[i].get("priority")) == "6": - style_class = style_props_disconnected - severity = "Disconnected" - key = "Disconnected" - alarm_list = alarms_disconnected - - else: - style_class = style_props_diagnostic - severity = "Unknown" - key = "Diagnostic" - alarm_list = alarms_diagnostic - - if table_type == "Docked-East": - source_id = edit_alarm_id(source_id) - - shelve_alarm_id = check_alarm_in_shelved_alarms(source_id, alarm_id, shelve_alarms_dict) - if shelve_alarm_id: - shelved_alarms_to_keep[shelve_alarm_id] = "" - shelve_alarm = True - else: - shelve_alarm = False - - unshelve_alarm_id = check_alarm_in_shelved_alarms(source_id, alarm_id, unshelve_alarms_dict) - if unshelve_alarm_id: - unshelved_alarms_to_keep[unshelve_alarm_id] = "" - unshelve_alarm = True - else: - unshelve_alarm = False - - row = row_builder.build_row( SourceId = source_id, Priority = severity, Type = type_description, - Timestamp = time_stamp, State = state, - Message = message, Expiration = expiration, - Duration = active_duration, Alarm_id = alarm_id, Shelve = shelve_alarm, - Unshelve = unshelve_alarm, StyleClass = style_class) - alarm_list.append(row) - - - for k,v in shelve_alarms_dict.items(): - if k not in shelved_alarms_to_keep: - self.custom.alarms_to_shelve.pop(k) - - for k,v in unshelve_alarms_dict.items(): - if k not in unshelved_alarms_to_keep: - self.custom.alarms_to_unshelve.pop(k) - - return alarms_critical + alarms_high + alarms_medium + alarms_low + alarms_diagnostic + alarms_disconnected diff --git a/.resources/9ec91d33e2aaedbe2f7980ed67f5253d9ac489f67f668b176f160693561a5f65 b/.resources/9ec91d33e2aaedbe2f7980ed67f5253d9ac489f67f668b176f160693561a5f65 deleted file mode 100644 index bd342cbd6c4a16683c782a408a58212409ce6041..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131471 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

4EkAfobOc6P&iK0e9a>e6b6LvOQg8i)wSi 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 Y6UNWpu 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 -o`2CxV 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 diff --git a/.resources/dc4b4a406e51483c83946e29c8b7a343558717a76128bf2b316dba8a41543ce8 b/.resources/9eeb895ea48869f1e4e33e76c80398c713ade055a87588593ff14daf85ce5feb similarity index 100% rename from .resources/dc4b4a406e51483c83946e29c8b7a343558717a76128bf2b316dba8a41543ce8 rename to .resources/9eeb895ea48869f1e4e33e76c80398c713ade055a87588593ff14daf85ce5feb diff --git a/.resources/9f39f5c6d22831b84b8b46c317e54f7f0ff41b9cf8faf7dc58dcadcc44e4cd6c b/.resources/9f39f5c6d22831b84b8b46c317e54f7f0ff41b9cf8faf7dc58dcadcc44e4cd6c deleted file mode 100644 index 8cca7fc7..00000000 --- a/.resources/9f39f5c6d22831b84b8b46c317e54f7f0ff41b9cf8faf7dc58dcadcc44e4cd6c +++ /dev/null @@ -1,2552 +0,0 @@ -{ - "custom": { - "bucket": "maps.c4.rme.logistics.a2z.com-441697794360", - "current_flow_view": "AFE 1 MINISORTER", - "current_stage": "prod", - "enabled_whids": [ - "ABQ1", - "AGS1", - "AMA1", - "AUS2", - "BDL4", - "BOS3", - "DEN4", - "DEN8", - "DET3", - "DET6", - "ELP1", - "FAR1", - "FAT2", - "FOE1", - "FSD1", - "FTW5", - "FWA6", - "GEG2", - "HOU6", - "HOU8", - "HSV1", - "ICT2", - "IGQ1", - "IGQ2", - "ILG1", - "LFT1", - "LIT1", - "LIT2", - "LUK2", - "MLI1", - "MQY1", - "MTN1", - "OKC2", - "ORD5", - "ORF3", - "PAE2", - "RIC4", - "ROC1", - "SAN3", - "SAT3", - "SAT4", - "SAV4", - "SCK6", - "SMF6", - "STL3", - "SYR1", - "TEB4", - "TLH2", - "TPA4", - "TYS1", - "YEG2", - "YOO1", - "YOW3" - ], - "flow_view": "AFE 1 MINISORTER", - "flow_view_copy_operation": null, - "flow_view_copy_option": "both", - "flow_view_copy_tooltip": "", - "flow_view_destination": "AFE 1 MINISORTER", - "flow_view_destination_options": [ - { - "label": "AFE 1 MINISORTER", - "value": "AFE 1 MINISORTER" - }, - { - "label": "AFE TRAY SORTERS", - "value": "AFE TRAY SORTERS" - }, - { - "label": "AR FIELD", - "value": "AR FIELD" - }, - { - "label": "EMPTY TOTE LANES", - "value": "EMPTY TOTE LANES" - }, - { - "label": "INBOUND SORTER", - "value": "INBOUND SORTER" - }, - { - "label": "OUTBOUND", - "value": "OUTBOUND" - }, - { - "label": "PACK", - "value": "PACK" - }, - { - "label": "RSP LEVEL 2", - "value": "RSP LEVEL 2" - }, - { - "label": "RSP LEVEL 3", - "value": "RSP LEVEL 3" - }, - { - "label": "RSP LEVEL 4", - "value": "RSP LEVEL 4" - }, - { - "label": "RSP LEVEL 5", - "value": "RSP LEVEL 5" - }, - { - "label": "SHIP SORTER", - "value": "SHIP SORTER" - }, - { - "label": "SMARTPAC", - "value": "SMARTPAC" - }, - { - "label": "TOTE SORTER", - "value": "TOTE SORTER" - }, - { - "label": "TRANSHIP SORTER", - "value": "TRANSHIP SORTER" - }, - { - "label": "WASTE", - "value": "WASTE" - } - ], - "flow_view_edit_mode": { - "active": false, - "admin_enabled": true, - "enabled": true, - "reviewer_enabled": true, - "sadmin_enabled": false - }, - "flow_view_file_suffix": "_FlowView.svg", - "flow_view_options": [ - { - "label": "AFE 1 MINISORTER", - "value": "AFE 1 MINISORTER" - }, - { - "label": "AFE TRAY SORTERS", - "value": "AFE TRAY SORTERS" - }, - { - "label": "AR FIELD", - "value": "AR FIELD" - }, - { - "label": "EMPTY TOTE LANES", - "value": "EMPTY TOTE LANES" - }, - { - "label": "INBOUND SORTER", - "value": "INBOUND SORTER" - }, - { - "label": "OUTBOUND", - "value": "OUTBOUND" - }, - { - "label": "PACK", - "value": "PACK" - }, - { - "label": "RSP LEVEL 2", - "value": "RSP LEVEL 2" - }, - { - "label": "RSP LEVEL 3", - "value": "RSP LEVEL 3" - }, - { - "label": "RSP LEVEL 4", - "value": "RSP LEVEL 4" - }, - { - "label": "RSP LEVEL 5", - "value": "RSP LEVEL 5" - }, - { - "label": "SHIP SORTER", - "value": "SHIP SORTER" - }, - { - "label": "SMARTPAC", - "value": "SMARTPAC" - }, - { - "label": "TOTE SORTER", - "value": "TOTE SORTER" - }, - { - "label": "TRANSHIP SORTER", - "value": "TRANSHIP SORTER" - }, - { - "label": "WASTE", - "value": "WASTE" - } - ], - "flow_view_source": "AFE 1 MINISORTER", - "flow_view_source_options": [ - { - "label": "AFE 1 MINISORTER", - "value": "AFE 1 MINISORTER" - }, - { - "label": "AFE TRAY SORTERS", - "value": "AFE TRAY SORTERS" - }, - { - "label": "AR FIELD", - "value": "AR FIELD" - }, - { - "label": "EMPTY TOTE LANES", - "value": "EMPTY TOTE LANES" - }, - { - "label": "INBOUND SORTER", - "value": "INBOUND SORTER" - }, - { - "label": "OUTBOUND", - "value": "OUTBOUND" - }, - { - "label": "PACK", - "value": "PACK" - }, - { - "label": "RSP LEVEL 2", - "value": "RSP LEVEL 2" - }, - { - "label": "RSP LEVEL 3", - "value": "RSP LEVEL 3" - }, - { - "label": "RSP LEVEL 4", - "value": "RSP LEVEL 4" - }, - { - "label": "RSP LEVEL 5", - "value": "RSP LEVEL 5" - }, - { - "label": "SHIP SORTER", - "value": "SHIP SORTER" - }, - { - "label": "SMARTPAC", - "value": "SMARTPAC" - }, - { - "label": "TOTE SORTER", - "value": "TOTE SORTER" - }, - { - "label": "TRANSHIP SORTER", - "value": "TRANSHIP SORTER" - }, - { - "label": "WASTE", - "value": "WASTE" - } - ], - "instances_file_prefix": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/", - "instances_file_suffix": ".json", - "instances_files": [ - { - "ETag": "\"d5ab88e5aac79f0270c4df38fc76211b\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/AFE 1 MINISORTER.json", - "LastModified": "2023-07-06 19:13:31", - "Size": 169491, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"2d52b3ac56baf2c347b3cc5a83b3ba41\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/AFE TRAY SORTERS.json", - "LastModified": "2023-07-06 19:11:33", - "Size": 52706, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"aef77756bf27a4660051d2965d7238b4\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/AR FIELD.json", - "LastModified": "2023-07-08 01:54:18", - "Size": 459044, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"d4824a32702674453e14ea98e98a0392\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/EMPTY TOTE LANES.json", - "LastModified": "2023-07-06 19:08:48", - "Size": 30929, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"0dc3e31b34b442cc8a32611766ad829b\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/INBOUND SORTER.json", - "LastModified": "2023-07-07 14:56:13", - "Size": 85953, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"31678c5ee092b6cd6b066fcfe34d0637\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/OUTBOUND.json", - "LastModified": "2023-07-08 01:53:03", - "Size": 217082, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"897aed13d0ecb923a0642251375ee2e4\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/PACK.json", - "LastModified": "2023-07-07 14:51:27", - "Size": 96022, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"6b66dcbf14174ef5cb4488beb9c6b95d\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 2.json", - "LastModified": "2023-07-07 14:46:03", - "Size": 38208, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"03e388834bcb2960fd20a81ba93be712\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 3.json", - "LastModified": "2023-07-07 14:46:21", - "Size": 38439, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"96b1d70d6b14e9f9a03cbf1fde7f3258\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 4.json", - "LastModified": "2023-07-07 14:46:34", - "Size": 38333, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"6c8b4a21227a76151bfca40c25abc186\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 5.json", - "LastModified": "2023-07-07 14:46:46", - "Size": 38273, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"f2c10f54de8dbc30179f8cef737825ec\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/SHIP SORTER.json", - "LastModified": "2023-07-06 19:10:26", - "Size": 25374, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"99d01fcc3f3c62e32c5a4c98b320b91f\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/SMARTPAC.json", - "LastModified": "2023-07-06 19:07:29", - "Size": 19099, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"7a117bc9cf00e644518b06981e736f52\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/TOTE SORTER.json", - "LastModified": "2023-07-07 14:41:36", - "Size": 82727, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"32c23ced5bb7a4ff7d0f166f85f006dd\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/TRANSHIP SORTER.json", - "LastModified": "2023-07-08 01:47:48", - "Size": 13327, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"f0e92545033d5f070cd8884c7a16dac1\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/WASTE.json", - "LastModified": "2023-07-08 01:47:36", - "Size": 7784, - "StorageClass": "STANDARD" - } - ], - "loading": false, - "migrate_enabled": false, - "selected_flow_view": "OUTBOUND", - "site_files": [ - { - "ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/", - "LastModified": "2023-06-22 15:10:22", - "Size": 0, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"3b31b83ba6617e83ef2a98edcedf9d9d\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/AFE 1 MINISORTER_FlowView.svg", - "LastModified": "2023-07-06 19:13:31", - "Size": 319635, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"db37b5cb4a0a74b4a46e3c65f968fbbf\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/AFE TRAY SORTERS_FlowView.svg", - "LastModified": "2023-07-06 19:11:33", - "Size": 105788, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"cdd14f701d2256a26ecad94e7c118f30\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/AR FIELD_FlowView.svg", - "LastModified": "2023-07-08 01:54:18", - "Size": 448282, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"4086b694863b38489bd980a40a3d686e\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/EMPTY TOTE LANES_FlowView.svg", - "LastModified": "2023-07-06 19:08:47", - "Size": 47625, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"9974714836554c5aa21683db6d7190a8\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/INBOUND SORTER_FlowView.svg", - "LastModified": "2023-07-07 14:56:13", - "Size": 170813, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"e86f2757a16dce8aa9160b4508f06257\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/OUTBOUND_FlowView.svg", - "LastModified": "2023-07-08 01:53:03", - "Size": 410568, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"8f64bed5643c9db4f7c0a57d506fe819\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/PACK_FlowView.svg", - "LastModified": "2023-07-07 14:51:27", - "Size": 185917, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"f1e70ba02a7b9e66a6391b67fd4a9166\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/RSP LEVEL 2_FlowView.svg", - "LastModified": "2023-07-07 14:46:03", - "Size": 105170, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"35aa4d02852470107a6af6a5ca87e7d3\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/RSP LEVEL 3_FlowView.svg", - "LastModified": "2023-07-07 14:46:21", - "Size": 105126, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"f47a62e8f45dc6d322a242ef7a12612a\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/RSP LEVEL 4_FlowView.svg", - "LastModified": "2023-07-07 14:46:34", - "Size": 105122, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"496a0b6c937eef0bb3fd62a4e35b98da\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/RSP LEVEL 5_FlowView.svg", - "LastModified": "2023-07-07 14:46:46", - "Size": 105118, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"8f8b7b0fff1b9fb3c6f04b6a8a3ddc7e\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/SHIP SORTER_FlowView.svg", - "LastModified": "2023-07-06 19:10:26", - "Size": 67640, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"e8f87755974bd51d7e9b287daa1e9c57\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/SMARTPAC_FlowView.svg", - "LastModified": "2023-07-06 19:07:28", - "Size": 36300, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"2923edb101a98c30ad62429ac22d423c\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/TOTE SORTER_FlowView.svg", - "LastModified": "2023-07-07 14:41:36", - "Size": 167519, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"6ec75cac9a4da963f90fa05e765c67e5\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/TRANSHIP SORTER_FlowView.svg", - "LastModified": "2023-07-08 01:47:48", - "Size": 39505, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"62b9a05376699daab936fe799139435f\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/WASTE_FlowView.svg", - "LastModified": "2023-07-08 01:47:36", - "Size": 19002, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/", - "LastModified": "2023-06-22 15:10:28", - "Size": 0, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"d5ab88e5aac79f0270c4df38fc76211b\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/AFE 1 MINISORTER.json", - "LastModified": "2023-07-06 19:13:31", - "Size": 169491, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"2d52b3ac56baf2c347b3cc5a83b3ba41\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/AFE TRAY SORTERS.json", - "LastModified": "2023-07-06 19:11:33", - "Size": 52706, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"aef77756bf27a4660051d2965d7238b4\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/AR FIELD.json", - "LastModified": "2023-07-08 01:54:18", - "Size": 459044, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"d4824a32702674453e14ea98e98a0392\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/EMPTY TOTE LANES.json", - "LastModified": "2023-07-06 19:08:48", - "Size": 30929, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"0dc3e31b34b442cc8a32611766ad829b\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/INBOUND SORTER.json", - "LastModified": "2023-07-07 14:56:13", - "Size": 85953, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"31678c5ee092b6cd6b066fcfe34d0637\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/OUTBOUND.json", - "LastModified": "2023-07-08 01:53:03", - "Size": 217082, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"897aed13d0ecb923a0642251375ee2e4\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/PACK.json", - "LastModified": "2023-07-07 14:51:27", - "Size": 96022, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"6b66dcbf14174ef5cb4488beb9c6b95d\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 2.json", - "LastModified": "2023-07-07 14:46:03", - "Size": 38208, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"03e388834bcb2960fd20a81ba93be712\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 3.json", - "LastModified": "2023-07-07 14:46:21", - "Size": 38439, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"96b1d70d6b14e9f9a03cbf1fde7f3258\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 4.json", - "LastModified": "2023-07-07 14:46:34", - "Size": 38333, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"6c8b4a21227a76151bfca40c25abc186\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/RSP LEVEL 5.json", - "LastModified": "2023-07-07 14:46:46", - "Size": 38273, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"f2c10f54de8dbc30179f8cef737825ec\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/SHIP SORTER.json", - "LastModified": "2023-07-06 19:10:26", - "Size": 25374, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"99d01fcc3f3c62e32c5a4c98b320b91f\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/SMARTPAC.json", - "LastModified": "2023-07-06 19:07:29", - "Size": 19099, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"7a117bc9cf00e644518b06981e736f52\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/TOTE SORTER.json", - "LastModified": "2023-07-07 14:41:36", - "Size": 82727, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"32c23ced5bb7a4ff7d0f166f85f006dd\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/TRANSHIP SORTER.json", - "LastModified": "2023-07-08 01:47:48", - "Size": 13327, - "StorageClass": "STANDARD" - }, - { - "ETag": "\"f0e92545033d5f070cd8884c7a16dac1\"", - "Key": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/instance_configs/WASTE.json", - "LastModified": "2023-07-08 01:47:36", - "Size": 7784, - "StorageClass": "STANDARD" - } - ], - "site_folder": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/", - "site_folder_destination": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/", - "site_folder_source": "na-rme-scada-maps-hc/FlowViews-prod/YEG2/", - "stage_destination": "prod", - "stage_map": { - "alpha": { - "endpoint": "https://alpha.rmesdflowview.c4.rme.amazon.dev/", - "region": "us-west-2" - }, - "beta": { - "endpoint": "https://beta.rmesdflowview.c4.rme.amazon.dev/", - "region": "us-east-1" - }, - "prod": { - "endpoint": "https://rmesdflowview.c4.rme.amazon.dev/", - "region": "us-east-2" - } - }, - "stage_options": [ - { - "label": "Prod", - "value": "prod" - }, - { - "label": "Beta", - "value": "beta" - }, - { - "label": "Alpha", - "value": "alpha" - } - ], - "stage_source": "prod", - "title_text": "FlowView Management", - "whid": "YEG2", - "whid_destination": "YEG2", - "whid_destination_options": [ - { - "label": "ABQ1", - "value": "ABQ1" - }, - { - "label": "AGS1", - "value": "AGS1" - }, - { - "label": "AMA1", - "value": "AMA1" - }, - { - "label": "AUS2", - "value": "AUS2" - }, - { - "label": "BDL4", - "value": "BDL4" - }, - { - "label": "BOS3", - "value": "BOS3" - }, - { - "label": "DEN4", - "value": "DEN4" - }, - { - "label": "DEN8", - "value": "DEN8" - }, - { - "label": "DET3", - "value": "DET3" - }, - { - "label": "DET6", - "value": "DET6" - }, - { - "label": "ELP1", - "value": "ELP1" - }, - { - "label": "FAR1", - "value": "FAR1" - }, - { - "label": "FAT2", - "value": "FAT2" - }, - { - "label": "FOE1", - "value": "FOE1" - }, - { - "label": "FSD1", - "value": "FSD1" - }, - { - "label": "FTW5", - "value": "FTW5" - }, - { - "label": "FWA6", - "value": "FWA6" - }, - { - "label": "GEG2", - "value": "GEG2" - }, - { - "label": "HOU6", - "value": "HOU6" - }, - { - "label": "HOU8", - "value": "HOU8" - }, - { - "label": "HSV1", - "value": "HSV1" - }, - { - "label": "ICT2", - "value": "ICT2" - }, - { - "label": "IGQ1", - "value": "IGQ1" - }, - { - "label": "IGQ2", - "value": "IGQ2" - }, - { - "label": "ILG1", - "value": "ILG1" - }, - { - "label": "LFT1", - "value": "LFT1" - }, - { - "label": "LIT1", - "value": "LIT1" - }, - { - "label": "LIT2", - "value": "LIT2" - }, - { - "label": "LUK2", - "value": "LUK2" - }, - { - "label": "MLI1", - "value": "MLI1" - }, - { - "label": "MQY1", - "value": "MQY1" - }, - { - "label": "MTN1", - "value": "MTN1" - }, - { - "label": "OKC2", - "value": "OKC2" - }, - { - "label": "ORD5", - "value": "ORD5" - }, - { - "label": "ORF3", - "value": "ORF3" - }, - { - "label": "PAE2", - "value": "PAE2" - }, - { - "label": "RIC4", - "value": "RIC4" - }, - { - "label": "ROC1", - "value": "ROC1" - }, - { - "label": "SAN3", - "value": "SAN3" - }, - { - "label": "SAT3", - "value": "SAT3" - }, - { - "label": "SAT4", - "value": "SAT4" - }, - { - "label": "SAV4", - "value": "SAV4" - }, - { - "label": "SCK6", - "value": "SCK6" - }, - { - "label": "SMF6", - "value": "SMF6" - }, - { - "label": "STL3", - "value": "STL3" - }, - { - "label": "SYR1", - "value": "SYR1" - }, - { - "label": "TEB4", - "value": "TEB4" - }, - { - "label": "TLH2", - "value": "TLH2" - }, - { - "label": "TPA4", - "value": "TPA4" - }, - { - "label": "TYS1", - "value": "TYS1" - }, - { - "label": "YEG2", - "value": "YEG2" - }, - { - "label": "YOO1", - "value": "YOO1" - }, - { - "label": "YOW3", - "value": "YOW3" - } - ], - "whid_options": [ - { - "label": "ABQ1", - "value": "ABQ1" - }, - { - "label": "AGS1", - "value": "AGS1" - }, - { - "label": "AMA1", - "value": "AMA1" - }, - { - "label": "AUS2", - "value": "AUS2" - }, - { - "label": "BDL4", - "value": "BDL4" - }, - { - "label": "BOS3", - "value": "BOS3" - }, - { - "label": "DEN4", - "value": "DEN4" - }, - { - "label": "DEN8", - "value": "DEN8" - }, - { - "label": "DET3", - "value": "DET3" - }, - { - "label": "DET6", - "value": "DET6" - }, - { - "label": "ELP1", - "value": "ELP1" - }, - { - "label": "FAR1", - "value": "FAR1" - }, - { - "label": "FAT2", - "value": "FAT2" - }, - { - "label": "FOE1", - "value": "FOE1" - }, - { - "label": "FSD1", - "value": "FSD1" - }, - { - "label": "FTW5", - "value": "FTW5" - }, - { - "label": "FWA6", - "value": "FWA6" - }, - { - "label": "GEG2", - "value": "GEG2" - }, - { - "label": "HOU6", - "value": "HOU6" - }, - { - "label": "HOU8", - "value": "HOU8" - }, - { - "label": "HSV1", - "value": "HSV1" - }, - { - "label": "ICT2", - "value": "ICT2" - }, - { - "label": "IGQ1", - "value": "IGQ1" - }, - { - "label": "IGQ2", - "value": "IGQ2" - }, - { - "label": "ILG1", - "value": "ILG1" - }, - { - "label": "LFT1", - "value": "LFT1" - }, - { - "label": "LIT1", - "value": "LIT1" - }, - { - "label": "LIT2", - "value": "LIT2" - }, - { - "label": "LUK2", - "value": "LUK2" - }, - { - "label": "MLI1", - "value": "MLI1" - }, - { - "label": "MQY1", - "value": "MQY1" - }, - { - "label": "MTN1", - "value": "MTN1" - }, - { - "label": "OKC2", - "value": "OKC2" - }, - { - "label": "ORD5", - "value": "ORD5" - }, - { - "label": "ORF3", - "value": "ORF3" - }, - { - "label": "PAE2", - "value": "PAE2" - }, - { - "label": "RIC4", - "value": "RIC4" - }, - { - "label": "ROC1", - "value": "ROC1" - }, - { - "label": "SAN3", - "value": "SAN3" - }, - { - "label": "SAT3", - "value": "SAT3" - }, - { - "label": "SAT4", - "value": "SAT4" - }, - { - "label": "SAV4", - "value": "SAV4" - }, - { - "label": "SCK6", - "value": "SCK6" - }, - { - "label": "SMF6", - "value": "SMF6" - }, - { - "label": "STL3", - "value": "STL3" - }, - { - "label": "SYR1", - "value": "SYR1" - }, - { - "label": "TEB4", - "value": "TEB4" - }, - { - "label": "TLH2", - "value": "TLH2" - }, - { - "label": "TPA4", - "value": "TPA4" - }, - { - "label": "TYS1", - "value": "TYS1" - }, - { - "label": "YEG2", - "value": "YEG2" - }, - { - "label": "YOO1", - "value": "YOO1" - }, - { - "label": "YOW3", - "value": "YOW3" - } - ], - "whid_source": "YEG2", - "whid_source_options": [ - { - "label": "ABQ1", - "value": "ABQ1" - }, - { - "label": "AGS1", - "value": "AGS1" - }, - { - "label": "AMA1", - "value": "AMA1" - }, - { - "label": "AUS2", - "value": "AUS2" - }, - { - "label": "BDL4", - "value": "BDL4" - }, - { - "label": "BOS3", - "value": "BOS3" - }, - { - "label": "DEN4", - "value": "DEN4" - }, - { - "label": "DEN8", - "value": "DEN8" - }, - { - "label": "DET3", - "value": "DET3" - }, - { - "label": "DET6", - "value": "DET6" - }, - { - "label": "ELP1", - "value": "ELP1" - }, - { - "label": "FAR1", - "value": "FAR1" - }, - { - "label": "FAT2", - "value": "FAT2" - }, - { - "label": "FOE1", - "value": "FOE1" - }, - { - "label": "FSD1", - "value": "FSD1" - }, - { - "label": "FTW5", - "value": "FTW5" - }, - { - "label": "FWA6", - "value": "FWA6" - }, - { - "label": "GEG2", - "value": "GEG2" - }, - { - "label": "HOU6", - "value": "HOU6" - }, - { - "label": "HOU8", - "value": "HOU8" - }, - { - "label": "HSV1", - "value": "HSV1" - }, - { - "label": "ICT2", - "value": "ICT2" - }, - { - "label": "IGQ1", - "value": "IGQ1" - }, - { - "label": "IGQ2", - "value": "IGQ2" - }, - { - "label": "ILG1", - "value": "ILG1" - }, - { - "label": "LFT1", - "value": "LFT1" - }, - { - "label": "LIT1", - "value": "LIT1" - }, - { - "label": "LIT2", - "value": "LIT2" - }, - { - "label": "LUK2", - "value": "LUK2" - }, - { - "label": "MLI1", - "value": "MLI1" - }, - { - "label": "MQY1", - "value": "MQY1" - }, - { - "label": "MTN1", - "value": "MTN1" - }, - { - "label": "OKC2", - "value": "OKC2" - }, - { - "label": "ORD5", - "value": "ORD5" - }, - { - "label": "ORF3", - "value": "ORF3" - }, - { - "label": "PAE2", - "value": "PAE2" - }, - { - "label": "RIC4", - "value": "RIC4" - }, - { - "label": "ROC1", - "value": "ROC1" - }, - { - "label": "SAN3", - "value": "SAN3" - }, - { - "label": "SAT3", - "value": "SAT3" - }, - { - "label": "SAT4", - "value": "SAT4" - }, - { - "label": "SAV4", - "value": "SAV4" - }, - { - "label": "SCK6", - "value": "SCK6" - }, - { - "label": "SMF6", - "value": "SMF6" - }, - { - "label": "STL3", - "value": "STL3" - }, - { - "label": "SYR1", - "value": "SYR1" - }, - { - "label": "TEB4", - "value": "TEB4" - }, - { - "label": "TLH2", - "value": "TLH2" - }, - { - "label": "TPA4", - "value": "TPA4" - }, - { - "label": "TYS1", - "value": "TYS1" - }, - { - "label": "YEG2", - "value": "YEG2" - }, - { - "label": "YOO1", - "value": "YOO1" - }, - { - "label": "YOW3", - "value": "YOW3" - } - ] - }, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\t# initialize form via message handler\n\tsystem.perspective.sendMessage(\u0027request_initialize_form\u0027, scope\u003d\u0027view\u0027)\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "params": { - "selected_flow_view": "OUTBOUND", - "selected_site": "MTN1", - "selected_stage": "prod" - }, - "propConfig": { - "custom.bucket": { - "binding": { - "config": { - "path": "session.custom.flow_view_config.site_config.s3.bucket_name" - }, - "type": "property" - }, - "persistent": true - }, - "custom.current_flow_view": { - "binding": { - "config": { - "path": "session.custom.flow_view_config.site_config.selected_flow_view" - }, - "type": "property" - }, - "persistent": true - }, - "custom.current_stage": { - "binding": { - "config": { - "path": "session.custom.flow_view_config.stage_config.stage" - }, - "type": "property" - }, - "persistent": true - }, - "custom.enabled_whids": { - "binding": { - "config": { - "path": "session.custom.flow_view_config.site_config.enabled_whids" - }, - "type": "property" - }, - "persistent": true - }, - "custom.flow_view": { - "binding": { - "config": { - "path": "session.custom.flow_view_config.site_config.selected_flow_view" - }, - "type": "property" - }, - "persistent": true - }, - "custom.flow_view_copy_operation": { - "binding": { - "config": { - "expression": "if(isNull({view.custom.stage_source})||!len({view.custom.stage_source})\r\n\t||isNull({view.custom.stage_destination})||!len({view.custom.stage_destination})\r\n//\t||{view.custom.stage_source}\u003d{view.custom.stage_destination}\r\n\t||({view.custom.stage_source}\u003d{view.custom.stage_destination}\r\n\t\t\u0026\u0026{view.custom.whid_source}\u003d{view.custom.whid_destination}\r\n\t\t\u0026\u0026{view.custom.flow_view_source}\u003d{view.custom.flow_view_destination})\r\n\t,null,\r\n\tif({view.custom.whid_source}\u003d\u0027ALL\u0027,\u0027migrate_stages\u0027,\r\n\tif({view.custom.whid_source}\u003d{view.custom.whid_destination}\r\n\t\t\u0026\u0026{view.custom.flow_view_source}\u003d\u0027ALL\u0027,\u0027migrate_stages\u0027,\r\n\tif({view.custom.flow_view_source}\u003d\u0027ALL\u0027,\u0027migrate_sites\u0027,\r\n\t\u0027migrate_flowviews\u0027))))" - }, - "type": "expr" - }, - "persistent": true - }, - "custom.flow_view_copy_option": { - "persistent": true - }, - "custom.flow_view_copy_tooltip": { - "binding": { - "config": { - "expression": "{view.custom.stage_source}+{view.custom.stage_destination}\r\n+{view.custom.whid_source}+{view.custom.whid_destination}\r\n+{view.custom.flow_view_source}+{view.custom.flow_view_destination}\r\n+{view.custom.flow_view_copy_operation}+{view.custom.flow_view_copy_option}" - }, - "transforms": [ - { - "code": "\toperation \u003d self.custom.flow_view_copy_operation\n\tif not operation:\n\t\treturn \u0027\u0027\n\tsrc_stage \u003d self.custom.stage_source\n\tdest_stage \u003d self.custom.stage_destination\n\tsrc_whid \u003d self.custom.whid_source\n\tdest_whid \u003d self.custom.whid_destination\n\tsrc_flowview \u003d self.custom.flow_view_source\n\tdest_flowview \u003d self.custom.flow_view_destination\n\tcopy_option \u003d self.custom.flow_view_copy_option\n\tmsg \u003d \u0027\u0027\n\tif operation \u003d\u003d \u0027migrate_stages\u0027:\n\t\tmsg \u003d (\u0027Migrate all flow view files for whid: %s \\n\u0027\n\t\t\t\u0027From %s stage to %s stage? \\n\u0027\n\t\t\t\u0027This operation may take several minutes\u0027) % (\n\t\t\tsrc_whid, src_stage, dest_stage)\n\telif operation \u003d\u003d \u0027migrate_sites\u0027:\n\t\tmsg \u003d (\u0027Migrate all flow view files for whid: %s to whid: %s \\n\u0027\n\t\t\t\u0027From %s stage to %s stage? \\n\u0027\n\t\t\t\u0027This operation may take several minutes\u0027) % (\n\t\t\tsrc_whid, dest_whid, src_stage, dest_stage)\n\telif operation \u003d\u003d \u0027migrate_flowviews\u0027:\n\t\tif copy_option \u003d\u003d \u0027both\u0027:\n\t\t\tcopy_prompt \u003d \u0027both svg image and config json files\u0027\n\t\telif copy_option \u003d\u003d \u0027svg\u0027:\n\t\t\tcopy_prompt \u003d \u0027svg image file\u0027\n\t\telse:\n\t\t\tcopy_prompt \u003d \u0027config json file\u0027\n\t\tmsg \u003d (\u0027Copy %s for flowview: %s to flowview: %s \\n\u0027\n\t\t\t\u0027From whid: %s to whid: %s \\n\u0027\n\t\t\t\u0027From %s stage to %s stage?\u0027) % (\n\t\t\tcopy_prompt, src_flowview, dest_flowview, \n\t\t\tsrc_whid, dest_whid, src_stage, dest_stage)\n\treturn msg", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.flow_view_destination": { - "persistent": true - }, - "custom.flow_view_destination_options": { - "binding": { - "config": { - "expression": "{view.custom.bucket}+{view.custom.site_folder_destination}" - }, - "transforms": [ - { - "code": "\tfrom s3 import S3API\n\tbucket \u003d self.custom.bucket\n\tprefix \u003d self.custom.site_folder_destination\n\tstage \u003d self.custom.current_stage\n\tusername \u003d self.session.props.auth.user.userName\n\t# DEVNOTE 2023-04-21: force API call to prod\n#\ts3m \u003d S3API(stage, username)\n\t# fetch all files in site folder\n\ts3m \u003d S3API(\u0027prod\u0027, username)\n\tsite_files \u003d s3m.list_objects(prefix\u003dprefix, bucket\u003dbucket)\n\t# parse out flow-view files from the site files\n\tsuffix \u003d self.custom.flow_view_file_suffix\n\tflow_view_files \u003d [x for x in site_files if x[\u0027Key\u0027].startswith(prefix) \n\t\t\t\t\t\tand x[\u0027Key\u0027].endswith(suffix)]\n\t# build-out options from flow-view files, prepending with \u0027ALL\u0027 if user is sadmin\n\tif self.custom.flow_view_edit_mode.sadmin_enabled:\n\t\toptions \u003d [{\u0027value\u0027: \u0027ALL\u0027, \u0027label\u0027: \u0027ALL\u0027}]\n\telse:\n\t\toptions \u003d []\n\toptions.extend([{\u0027value\u0027: x[\u0027Key\u0027].replace(prefix,\u0027\u0027).replace(suffix,\u0027\u0027), \n\t\t\t\u0027label\u0027: x[\u0027Key\u0027].replace(prefix,\u0027\u0027).replace(suffix,\u0027\u0027)} \n\t\t\tfor x in flow_view_files])\n\treturn options", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.flow_view_edit_mode": { - "binding": { - "config": { - "path": "session.custom.flow_view_config.edit_mode" - }, - "type": "property" - }, - "persistent": true - }, - "custom.flow_view_file_suffix": { - "binding": { - "config": { - "path": "session.custom.flow_view_config.site_config.s3.flow_view_file_suffix" - }, - "type": "property" - }, - "persistent": true - }, - "custom.flow_view_files": { - "binding": { - "config": { - "path": "view.custom.site_files" - }, - "transforms": [ - { - "code": "\tprefix \u003d self.custom.site_folder\n\tsuffix \u003d self.custom.flow_view_file_suffix\n\treturn [x for x in value \n\t\tif x.Key.startswith(prefix) and x.Key.endswith(suffix)]", - "type": "script" - } - ], - "type": "property" - } - }, - "custom.flow_view_options": { - "binding": { - "config": { - "path": "view.custom.flow_view_files" - }, - "transforms": [ - { - "code": "\tprefix \u003d self.custom.site_folder\n\tsuffix \u003d self.custom.flow_view_file_suffix\n\tif self.custom.flow_view_edit_mode.sadmin_enabled:\n\t\toptions \u003d [{\u0027value\u0027: \u0027ALL\u0027, \u0027label\u0027: \u0027ALL\u0027}]\n\telse:\n\t\toptions \u003d []\n\toptions.extend([{\u0027value\u0027: x.Key.replace(prefix,\u0027\u0027).replace(suffix,\u0027\u0027), \n\t\t\t\u0027label\u0027: x.Key.replace(prefix,\u0027\u0027).replace(suffix,\u0027\u0027)} \n\t\t\tfor x in value])\n\treturn options", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.flow_view_source": { - "persistent": true - }, - "custom.flow_view_source_options": { - "binding": { - "config": { - "expression": "{view.custom.bucket}+{view.custom.site_folder_source}" - }, - "transforms": [ - { - "code": "\tfrom s3 import S3API\n\tbucket \u003d self.custom.bucket\n\tprefix \u003d self.custom.site_folder_source\n\tstage \u003d self.custom.current_stage\n\tusername \u003d self.session.props.auth.user.userName\n\t# DEVNOTE 2023-04-21: force API call to prod\n#\ts3m \u003d S3API(stage, username)\n\t# fetch all files in site folder\n\ts3m \u003d S3API(\u0027prod\u0027, username)\n\tsite_files \u003d s3m.list_objects(prefix\u003dprefix, bucket\u003dbucket)\n\t# parse out flow-view files from the site files\n\tsuffix \u003d self.custom.flow_view_file_suffix\n\tflow_view_files \u003d [x for x in site_files if x[\u0027Key\u0027].startswith(prefix) \n\t\t\t\t\t\tand x[\u0027Key\u0027].endswith(suffix)]\n\t# build-out options from flow-view files, prepending with \u0027ALL\u0027 if user is sadmin\n\tif self.custom.flow_view_edit_mode.sadmin_enabled:\n\t\toptions \u003d [{\u0027value\u0027: \u0027ALL\u0027, \u0027label\u0027: \u0027ALL\u0027}]\n\telse:\n\t\toptions \u003d []\n\toptions.extend([{\u0027value\u0027: x[\u0027Key\u0027].replace(prefix,\u0027\u0027).replace(suffix,\u0027\u0027), \n\t\t\t\u0027label\u0027: x[\u0027Key\u0027].replace(prefix,\u0027\u0027).replace(suffix,\u0027\u0027)} \n\t\t\tfor x in flow_view_files])\n\treturn options", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.instances_file_prefix": { - "binding": { - "config": { - "expression": "stringFormat(\u0027%sinstance_configs/\u0027,{view.custom.site_folder})" - }, - "type": "expr" - }, - "persistent": true - }, - "custom.instances_file_suffix": { - "persistent": true - }, - "custom.instances_files": { - "binding": { - "config": { - "path": "view.custom.site_files" - }, - "transforms": [ - { - "code": "\tprefix \u003d self.custom.instances_file_prefix\n\tsuffix \u003d self.custom.instances_file_suffix\n\treturn [x for x in value \n\t\tif x.Key.startswith(prefix) and x.Key.endswith(suffix)]", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.loading": { - "persistent": true - }, - "custom.migrate_enabled": { - "binding": { - "config": { - "expression": "!isNull({view.custom.flow_view_copy_operation})\r\n\u0026\u0026\r\n({view.custom.flow_view_edit_mode.sadmin_enabled}\r\n||({view.custom.flow_view_edit_mode.admin_enabled}\r\n\t\u0026\u0026{view.custom.flow_view_copy_operation}\u003d\u0027migrate_flowviews\u0027)\r\n)" - }, - "type": "expr" - }, - "persistent": true - }, - "custom.selected_flow_view": { - "persistent": true - }, - "custom.site_files": { - "binding": { - "config": { - "expression": "{view.custom.bucket}+{view.custom.site_folder}" - }, - "transforms": [ - { - "code": "\tfrom s3 import S3API\n\tbucket \u003d self.custom.bucket\n\tobj_key \u003d self.custom.site_folder\n\tstage \u003d self.custom.current_stage\n\tusername \u003d self.session.props.auth.user.userName\n\t# DEVNOTE 2023-04-21: force API call to prod\n#\ts3m \u003d S3API(stage, username)\n\ts3m \u003d S3API(\u0027prod\u0027, username)\n\treturn s3m.list_objects(prefix\u003dobj_key, bucket\u003dbucket)", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.site_folder": { - "binding": { - "config": { - "path": "session.custom.flow_view_config.site_config.s3.site_obj_prefix" - }, - "type": "property" - }, - "persistent": true - }, - "custom.site_folder_destination": { - "binding": { - "config": { - "expression": "stringFormat(\u0027na-rme-scada-maps-hc/FlowViews-%s/%s/\u0027,\r\n\t{view.custom.stage_destination},{view.custom.whid_destination})" - }, - "type": "expr" - }, - "persistent": true - }, - "custom.site_folder_source": { - "binding": { - "config": { - "expression": "stringFormat(\u0027na-rme-scada-maps-hc/FlowViews-%s/%s/\u0027,\r\n\t{view.custom.stage_source},{view.custom.whid_source})" - }, - "type": "expr" - }, - "persistent": true - }, - "custom.stage_destination": { - "persistent": true - }, - "custom.stage_map": { - "binding": { - "config": { - "path": "session.custom.flow_view_config.stage_config.map" - }, - "type": "property" - }, - "persistent": true - }, - "custom.stage_options": { - "binding": { - "config": { - "path": "view.custom.stage_map" - }, - "transforms": [ - { - "code": "\treturn [{\u0027value\u0027: x, \u0027label\u0027: x.capitalize()} for x in value]", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.stage_source": { - "persistent": true - }, - "custom.title_text": { - "persistent": true - }, - "custom.whid": { - "binding": { - "config": { - "path": "session.custom.flow_view_config.site_config.whid" - }, - "type": "property" - }, - "persistent": true - }, - "custom.whid_destination": { - "persistent": true - }, - "custom.whid_destination_options": { - "binding": { - "config": { - "path": "view.custom.stage_destination" - }, - "transforms": [ - { - "code": "\tfrom s3 import S3API\n\tusername \u003d self.session.props.auth.user.userName\n\t# DEVNOTE 2023-04-21: force API call to prod\n#\ts3m \u003d S3API(api_stage\u003dvalue, username\u003dusername)\n\ts3m \u003d S3API(\u0027prod\u0027, username)\n\tbucket \u003d self.custom.bucket\n\treturn s3m.fetch_site_list_by_stage(bucket, value)\n\t", - "type": "script" - }, - { - "code": "\tif self.custom.flow_view_edit_mode.sadmin_enabled:\n\t\toptions \u003d [{\u0027value\u0027: \u0027ALL\u0027, \u0027label\u0027: \u0027ALL\u0027}]\n\telse:\n\t\toptions \u003d []\n\toptions.extend([{\u0027value\u0027: x, \u0027label\u0027: x} for x in value])\n\treturn options", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.whid_options": { - "binding": { - "config": { - "path": "view.custom.enabled_whids" - }, - "transforms": [ - { - "code": "\tif self.custom.flow_view_edit_mode.sadmin_enabled:\n\t\toptions \u003d [{\u0027value\u0027: \u0027ALL\u0027, \u0027label\u0027: \u0027ALL\u0027}]\n\telse:\n\t\toptions \u003d []\n\toptions.extend([{\u0027value\u0027: x, \u0027label\u0027: x} for x in value])\n\treturn options\n", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.whid_source": { - "persistent": true - }, - "custom.whid_source_options": { - "binding": { - "config": { - "path": "view.custom.stage_source" - }, - "transforms": [ - { - "code": "\tfrom s3 import S3API\n\tusername \u003d self.session.props.auth.user.userName\n\t# DEVNOTE 2023-04-21: force API call to prod\n#\ts3m \u003d S3API(api_stage\u003dvalue, username\u003dusername)\n\ts3m \u003d S3API(\u0027prod\u0027, username)\n\tbucket \u003d self.custom.bucket\n\treturn s3m.fetch_site_list_by_stage(bucket, value)\n\t", - "type": "script" - }, - { - "code": "\tif self.custom.flow_view_edit_mode.sadmin_enabled:\n\t\toptions \u003d [{\u0027value\u0027: \u0027ALL\u0027, \u0027label\u0027: \u0027ALL\u0027}]\n\telse:\n\t\toptions \u003d []\n\toptions.extend([{\u0027value\u0027: x, \u0027label\u0027: x} for x in value])\n\treturn options", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "params.selected_flow_view": { - "paramDirection": "input", - "persistent": true - }, - "params.selected_site": { - "paramDirection": "input", - "persistent": true - }, - "params.selected_stage": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 140, - "width": 900 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Source Stage:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown", - "tooltip": { - "location": "bottom", - "style": { - "whiteSpace": "pre" - }, - "text": "Click here to select a different \nstage folder to manage" - } - }, - "position": { - "basis": "150px", - "shrink": 0 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": "view.custom.stage_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.custom.stage_source" - }, - "type": "property" - } - } - }, - "props": { - "search": { - "searchParam": "ou" - }, - "style": { - "margin": "2px", - "marginRight": "5px" - } - }, - "type": "ia.input.dropdown" - } - ], - "meta": { - "name": "FlexContainer Source" - }, - "position": { - "basis": "50%", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Destination Stage:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown", - "tooltip": { - "location": "bottom", - "style": { - "whiteSpace": "pre" - }, - "text": "Click here to select a different \nstage folder to manage" - } - }, - "position": { - "basis": "150px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "{view.custom.flow_view_edit_mode.admin_enabled}\r\n||{view.custom.flow_view_edit_mode.sadmin_enabled}" - }, - "type": "expr" - } - }, - "props.options": { - "binding": { - "config": { - "path": "view.custom.stage_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.custom.stage_destination" - }, - "type": "property" - } - } - }, - "props": { - "search": { - "searchParam": "ou" - }, - "style": { - "margin": "2px", - "marginRight": "5px" - } - }, - "type": "ia.input.dropdown" - } - ], - "meta": { - "name": "FlexContainer Destination" - }, - "position": { - "basis": "50%", - "shrink": 0 - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer Stages" - }, - "position": { - "basis": "30px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Source WHID:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown", - "tooltip": { - "location": "bottom", - "style": { - "whiteSpace": "pre" - }, - "text": "Click here to select a different \nstage folder to manage" - } - }, - "position": { - "basis": "150px", - "shrink": 0 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": "view.custom.whid_source_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.custom.whid_source" - }, - "type": "property" - }, - "onChange": { - "enabled": null, - "script": "\tif not missedEvents and origin \u003d\u003d \u0027Browser\u0027:\n\t\tif currentValue.value:\n\t\t\tself.view.custom.whid_destination \u003d currentValue.value\n\t\t" - } - } - }, - "props": { - "search": { - "searchParam": "smf" - }, - "style": { - "margin": "2px", - "marginRight": "5px" - } - }, - "type": "ia.input.dropdown" - } - ], - "meta": { - "name": "FlexContainer Source" - }, - "position": { - "basis": "50%", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Destination WHID:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown", - "tooltip": { - "location": "bottom", - "style": { - "whiteSpace": "pre" - }, - "text": "Click here to select a different \nstage folder to manage" - } - }, - "position": { - "basis": "150px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.flow_view_edit_mode.sadmin_enabled" - }, - "type": "property" - } - }, - "props.options": { - "binding": { - "config": { - "path": "view.custom.whid_destination_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.custom.whid_destination" - }, - "type": "property" - } - } - }, - "props": { - "search": { - "searchParam": "sm" - }, - "style": { - "margin": "2px", - "marginRight": "5px" - } - }, - "type": "ia.input.dropdown" - } - ], - "meta": { - "name": "FlexContainer Destination" - }, - "position": { - "basis": "50%", - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "!isNull({view.custom.whid_source})\r\n\u0026\u0026len({view.custom.whid_source})\r\n\u0026\u0026{view.custom.whid_source}!\u003d\u0027ALL\u0027" - }, - "type": "expr" - } - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer Whids" - }, - "position": { - "basis": "30px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Source Flowview:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown", - "tooltip": { - "location": "bottom", - "style": { - "whiteSpace": "pre" - }, - "text": "Click here to select a different \nstage folder to manage" - } - }, - "position": { - "basis": "250px", - "shrink": 0 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": "view.custom.flow_view_source_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.custom.flow_view_source" - }, - "type": "property" - }, - "onChange": { - "enabled": null, - "script": "\tif not missedEvents and origin \u003d\u003d \u0027Browser\u0027:\n\t\tif currentValue.value:\n\t\t\tself.view.custom.flow_view_destination \u003d currentValue.value\n\t" - } - } - }, - "props": { - "search": { - "searchParam": "ou" - }, - "style": { - "margin": "2px", - "marginRight": "5px" - } - }, - "type": "ia.input.dropdown" - } - ], - "meta": { - "name": "FlexContainer Source" - }, - "position": { - "basis": "50%", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Destination Flowview:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown", - "tooltip": { - "location": "bottom", - "style": { - "whiteSpace": "pre" - }, - "text": "Click here to select a different \nstage folder to manage" - } - }, - "position": { - "basis": "250px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.flow_view_edit_mode.sadmin_enabled" - }, - "type": "property" - } - }, - "props.options": { - "binding": { - "config": { - "path": "view.custom.flow_view_destination_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.custom.flow_view_destination" - }, - "type": "property" - } - } - }, - "props": { - "search": { - "searchParam": "ou" - }, - "style": { - "margin": "2px", - "marginRight": "5px" - } - }, - "type": "ia.input.dropdown" - } - ], - "meta": { - "name": "FlexContainer Destination" - }, - "position": { - "basis": "50%", - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "!isNull({view.custom.flow_view_source})\r\n\u0026\u0026len({view.custom.flow_view_source})\r\n\u0026\u0026{view.custom.flow_view_source}!\u003d\u0027ALL\u0027" - }, - "type": "expr" - } - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer Flowviews" - }, - "position": { - "basis": "30px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Copy:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "RadioGroup" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "!isNull({view.custom.flow_view_source})\r\n\u0026\u0026len({view.custom.flow_view_source})" - }, - "type": "expr" - } - }, - "props.enabled": { - "binding": { - "config": { - "expression": "{view.custom.flow_view_edit_mode.admin_enabled}\r\n||{view.custom.flow_view_edit_mode.sadmin_enabled}" - }, - "type": "expr" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.custom.flow_view_copy_option" - }, - "type": "property" - } - } - }, - "props": { - "radioStyle": { - "fontSize": "12px" - }, - "radios": [ - { - "selected": true, - "text": "Both Files", - "value": "both" - }, - { - "selected": false, - "text": "SVG only", - "value": "svg" - }, - { - "selected": false, - "text": "JSON only", - "value": "json" - } - ] - }, - "type": "ia.input.radio-group" - } - ], - "meta": { - "name": "FlexContainer Radios" - }, - "position": { - "basis": "50%", - "shrink": 0 - }, - "props": { - "justify": "center" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.sendMessage(\u0027request_initialize_form\u0027, scope\u003d\u0027view\u0027)\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Form" - }, - "position": { - "shrink": 0 - }, - "props": { - "image": { - "icon": { - "path": "material/refresh" - } - }, - "primary": false, - "style": { - "margin": "2px", - "padding": "4px" - }, - "text": "Reset Form" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t# call-up the confirm dialog to allow the user to decide if they\n\t# really want to copy/migrate the flow-view files in S3\n\tself.show_confirm_dialog({})" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Copy Files", - "tooltip": { - "enabled": true, - "location": "bottom", - "style": { - "whiteSpace": "pre" - } - } - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "path": "view.custom.flow_view_copy_tooltip" - }, - "type": "property" - } - }, - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.migrate_enabled" - }, - "type": "property" - } - } - }, - "props": { - "image": { - "height": 20, - "icon": { - "path": "material/file_copy" - }, - "width": 20 - }, - "style": { - "margin": "2px", - "padding": "4px" - }, - "text": "Copy Files" - }, - "scripts": { - "customMethods": [ - { - "name": "show_success_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"success\", \n\t\t\"Flow View Files Copied\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t" - }, - { - "name": "show_warning_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"warning\", \n\t\t\"Flow View Files NOT Copied\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t\t" - }, - { - "name": "show_error_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"error\", \n\t\t\"Flow View Files Copy Error!\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t\t" - }, - { - "name": "update_bindings", - "params": [], - "script": "\t\"\"\"\n\t\tAfter data saved to S3, refresh session and view bindings\n\t\"\"\"\n\tself.view.custom.loading \u003d False\n\t\t" - }, - { - "name": "copy_operation", - "params": [], - "script": "\t\"\"\"\n\t\tCall s3.S3API().migrate_*() method using user selections\n\t* \u003d [\u0027stages\u0027, \u0027sites\u0027, \u0027flowviews\u0027] depending on user selections\n\t\"\"\"\n\tfrom s3 import S3API\n\tfrom pprint import pformat\n\tfrom helper.helper import sanitize_tree\n\t\n\tstage \u003d self.session.custom.flow_view_config.stage_config.stage\n\tusername \u003d self.session.props.auth.user.userName\n\t# DEVNOTE 2023-04-21: force API call to prod\n#\ts3m \u003d S3API(stage, username)\n\ts3m \u003d S3API(\u0027prod\u0027, username)\n\t# grab local variables from view custom props\n\tsrc_stage \u003d self.view.custom.stage_source\n\tdest_stage \u003d self.view.custom.stage_destination\n\tsrc_whid \u003d self.view.custom.whid_source\n\tdest_whid \u003d self.view.custom.whid_destination\n\tsrc_flowview \u003d self.view.custom.flow_view_source\n\tdest_flowview \u003d self.view.custom.flow_view_destination\n\tcopy_option \u003d self.view.custom.flow_view_copy_option\n\toperation \u003d self.view.custom.flow_view_copy_operation\n\t# pack up params based on operation selected\n\tparams \u003d {}\n\tif operation \u003d\u003d \u0027migrate_stages\u0027:\n\t\t# Lambda expects None for whid param if migrating all stage folder contents\n\t\tif src_whid \u003d\u003d \u0027ALL\u0027:\n\t\t\tsrc_whid \u003d None\n\t\tparams \u003d {\u0027src_stage\u0027: src_stage, \u0027dest_stage\u0027: dest_stage, \u0027whid\u0027: src_whid}\n\telif operation \u003d\u003d \u0027migrate_sites\u0027:\n\t\tparams \u003d {\u0027src_stage\u0027: src_stage, \u0027dest_stage\u0027: dest_stage,\n\t\t\t\t\t\u0027src_whid\u0027: src_whid, \u0027dest_whid\u0027: dest_whid}\n\telif operation \u003d\u003d \u0027migrate_flowviews\u0027:\n\t\tparams \u003d {\u0027src_stage\u0027: src_stage, \u0027dest_stage\u0027: dest_stage,\n\t\t\t\t\t\u0027src_whid\u0027: src_whid, \u0027dest_whid\u0027: dest_whid,\n\t\t\t\t\t\u0027src_flowview\u0027: src_flowview, \u0027dest_flowview\u0027: dest_flowview,\n\t\t\t\t\t\u0027copy_option\u0027: copy_option}\n\ttry:\n\t\tresp \u003d getattr(s3m, operation)(**params)\n\t\tmsg \u003d pformat(sanitize_tree(resp))\n\t\tsystem.perspective.print(msg)\n\t\tself.show_success_dialog(msg)\n\t\tself.update_bindings()\n\texcept:\n\t\timport traceback\n\t\tmsg \u003d \u0027Error executing %s operation! \\nError: %s\u0027 % (\n\t\t\t\toperation, traceback.format_exc())\n\t\tsystem.perspective.print(msg)\n\t\tself.show_error_dialog(msg)\n\t" - }, - { - "name": "show_confirm_dialog", - "params": [ - "payload\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add payload of data to pass to the popup\n\toperation \u003d self.view.custom.flow_view_copy_operation\n\tsrc_stage \u003d self.view.custom.stage_source\n\tdest_stage \u003d self.view.custom.stage_destination\n\tsrc_whid \u003d self.view.custom.whid_source\n\tdest_whid \u003d self.view.custom.whid_destination\n\tsrc_flowview \u003d self.view.custom.flow_view_source\n\tdest_flowview \u003d self.view.custom.flow_view_destination\n\tcopy_option \u003d self.view.custom.flow_view_copy_option\n\tmsg \u003d \u0027\u0027\n\tif operation \u003d\u003d \u0027migrate_stages\u0027:\n\t\tmsg \u003d (\u0027Migrate all flow view files for whid: %s \\n\u0027\n\t\t\t\u0027From %s stage to %s stage? \\n\u0027\n\t\t\t\u0027This operation may take several minutes\u0027) % (\n\t\t\tsrc_whid, src_stage, dest_stage)\n\telif operation \u003d\u003d \u0027migrate_sites\u0027:\n\t\tmsg \u003d (\u0027Migrate all flow view files for whid: %s to whid: %s \\n\u0027\n\t\t\t\u0027From %s stage to %s stage? \\n\u0027\n\t\t\t\u0027This operation may take several minutes\u0027) % (\n\t\t\tsrc_whid, dest_whid, src_stage, dest_stage)\n\telif operation \u003d\u003d \u0027migrate_flowviews\u0027:\n\t\tif copy_option \u003d\u003d \u0027both\u0027:\n\t\t\tcopy_prompt \u003d \u0027both svg image and config json files\u0027\n\t\telif copy_option \u003d\u003d \u0027svg\u0027:\n\t\t\tcopy_prompt \u003d \u0027svg image file\u0027\n\t\telse:\n\t\t\tcopy_prompt \u003d \u0027config json file\u0027\n\t\tmsg \u003d (\u0027Copy %s for flowview: %s to flowview: %s \\n\u0027\n\t\t\t\u0027From whid: %s to whid: %s \\n\u0027\n\t\t\t\u0027From %s stage to %s stage?\u0027) % (\n\t\t\tcopy_prompt, src_flowview, dest_flowview, \n\t\t\tsrc_whid, dest_whid, src_stage, dest_stage)\n\tpayload \u003d {}\t\t\n\tAlerts.showAlert(\n\t\t\"info\", \n\t\t\"Copy Flow View Files?\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"Continue\", \n\t\t\"Cancel\", \n\t\t\"file_copy\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"confirm_copy_operation\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\tpayload\n\t)\n\t\t\t" - } - ], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "confirm_copy_operation", - "pageScope": true, - "script": "\tsystem.perspective.closePopup(\u0027alertDialog\u0027)\n\t# call the copy_operation custom method\n\tself.copy_operation()\n\t\t", - "sessionScope": true, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer Buttons" - }, - "position": { - "basis": "50%", - "shrink": 0 - }, - "props": { - "justify": "center" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer Controls" - }, - "position": { - "shrink": 0 - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "scripts": { - "customMethods": [ - { - "name": "update_instance_position", - "params": [ - "payload\u003dNone" - ], - "script": "\t\"\"\"\n\t\tupdate instance position based on payload received\n\t:param payload: dict; payload of values to update from message handler\n\t\"\"\"\n\tfrom helper.helper import sanitize_tree\n\tpos_keys \u003d [\u0027top\u0027,\u0027left\u0027,\u0027width\u0027,\u0027height\u0027]\n\tif not isinstance(payload, dict):\n\t\tmsg \u003d \u0027payload to update_instance_position must be a dictionary object!\u0027\n\t\tsystem.perspective.print(msg)\n\t\tself.show_error_dialog(msg)\n\t\treturn\n\tbad_keys \u003d [k for k in payload.keys() if k not in pos_keys]\n\tif len(bad_keys):\n\t\tmsg \u003d (\u0027Invalid keys: %s found in payload, \u0027,\n\t\t\t\t\u0027cannot be applied to instance.position.\\nValid keys: %s\u0027) % (\n\t\t\t\tbad_keys, pos_keys)\n\t\tsystem.perpsective.print(msg)\n\t\tself.show_error_dialog(msg)\n\t\treturn\n\tinstance \u003d sanitize_tree(self.view.params.instance)\n\tinstance.update(payload)\n\tself.view.params.instance \u003d instance\n\t" - }, - { - "name": "show_confirm_dialog", - "params": [], - "script": "\t# ~~ 12 PARAMETERS ~~\n\t\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t\t# show close button\t\t(default \u003d true) boolean\n\t\t# btn text primary\t\t(default \u003d \"Primary\")\n\t\t# btn text secondary\t(default \u003d \"Secondary\")\n\t\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t\n\t\tmsg \u003d \"Update Instance Configuration for MP%s?\" % (self.view.params.instance.viewParams.mhe_id)\n\t\tAlerts.showAlert(\n\t\t\t\"info\", \n\t\t\t\"Update Instance Config?\", \n\t\t\tmsg, \n\t\t\t\"true\",\n\t\t\t\"Continue\", \n\t\t\t\"Cancel\", \n\t\t\t\"chevron_right\", \n\t\t\t\"\", \n\t\t\t\"right\", \n\t\t\t\"confirm_update_instance_config\", \n\t\t\t\"closePopup\", \n\t\t\t\"closePopup\"\n\t\t)\n\t\t" - }, - { - "name": "update_instance_config", - "params": [], - "script": "\t\"\"\"\n\t\tUpdate the instance config on the parent container\n\t\"\"\"\n\tfrom helper.helper import sanitize_tree\n\tfrom pprint import pformat" - }, - { - "name": "show_success_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"success\", \n\t\t\"Instance Updated\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t" - }, - { - "name": "show_warning_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 12 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\n\tAlerts.showAlert(\n\t\t\"warning\", \n\t\t\"Instance Not Updated\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\"\n\t)\n\t\t" - }, - { - "name": "show_error_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 12 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\n\tAlerts.showAlert(\n\t\t\"error\", \n\t\t\"Instance Update Error!\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"right\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\"\n\t)\n\t\t" - }, - { - "name": "update_bindings", - "params": [], - "script": "\tself.view.custom.loading \u003d False\n\t\t" - }, - { - "name": "initialize_form", - "params": [], - "script": "\t# initialize flow-view selections\n\tselected_flow_view \u003d self.session.custom.flow_view_config.site_config.selected_flow_view\n\tself.view.custom.flow_view_source \u003d selected_flow_view\n\tself.view.custom.flow_view_destination \u003d selected_flow_view\n\t# initialize WHID selections\n\tselected_whid \u003d self.session.custom.flow_view_config.site_config.whid\n\tself.view.custom.whid_source \u003d selected_whid\n\tself.view.custom.whid_destination \u003d selected_whid\n\t# initialize stage selections\n\tselected_stage \u003d self.session.custom.flow_view_config.stage_config.stage\n\tself.view.custom.stage_source \u003d selected_stage\n\tself.view.custom.stage_destination \u003d selected_stage\n\t# initialize the flow view copy option\n\tself.view.custom.flow_view_copy_option \u003d \u0027both\u0027\n\t\t" - } - ], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "request_initialize_form", - "pageScope": false, - "script": "\t# initialize form on call\n\tself.initialize_form()", - "sessionScope": true, - "viewScope": true - } - ] - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/9f592bbcddeb01a59195eb05c8f9cb072311ba4833bfa2ab734e011f5cc2bb59 b/.resources/9f592bbcddeb01a59195eb05c8f9cb072311ba4833bfa2ab734e011f5cc2bb59 deleted file mode 100644 index c3d30df4..00000000 --- a/.resources/9f592bbcddeb01a59195eb05c8f9cb072311ba4833bfa2ab734e011f5cc2bb59 +++ /dev/null @@ -1,1041 +0,0 @@ -{ - "custom": { - "api_region_name": "eu", - "developer_user": true, - "enable_add_new_site": true, - "enabled_whids": [ - "DNK7", - "EWR4" - ], - "expanded": false, - "loading": false, - "new_site_is_not_in_S3": true, - "new_site_to_add": "EWR4", - "show_add_new_site": false, - "stage_config": { - "account_id": "006306898152", - "api_call_role": "arn:aws:iam::609617486056:role/RMESDScadaS3ManagementAPIcallRole-prod-eu-west-1", - "endpoint": "https://eu-west-1.scada-s3-management.scada.eurme.amazon.dev/", - "lambda_name": "RMESDScadaS3ManagementFlaskLambda-prod", - "region": "eu-west-1", - "repo_bucket": "ignition-image-repo", - "s3_region": "eu-west-1", - "source_bucket": "ignition-image-source" - }, - "whid": "", - "whids_in_s3": [ - "BOS3", - "BRS1", - "CGN9", - "DAO1", - "DAO3", - "DAR2", - "DBE2", - "DBH3", - "DBI7", - "DBT3", - "DCT7", - "DCT9", - "DCZ3", - "DCZ4", - "DEH1", - "DER1", - "DER2", - "DER3", - "DER5", - "DFV1", - "DHA1", - "DHE3", - "DHE4", - "DHE6", - "DIF2", - "DIF6", - "DIP1", - "DLO1", - "DLO2", - "DLO3", - "DLO4", - "DLO5", - "DLO7", - "DLZ1", - "DLZ2", - "DLZ3", - "DMA3", - "DMA4", - "DMA6", - "DMV1", - "DMV3", - "DMZ2", - "DMZ4", - "DNC1", - "DNC2", - "DNE2", - "DNG2", - "DNM7", - "DNP1", - "DNX3", - "DNZ2", - "DPI3", - "DPU1", - "DRM2", - "DSI2", - "DSO2", - "DSY6", - "DTC2", - "DVN1", - "DVN2", - "DVN5", - "DWN2", - "IST2", - "MAD6", - "MAN2", - "QCB6" - ] - }, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\tself.custom.expanded \u003d False\n\tself.custom.new_site_to_add \u003d self.params.selected_whid" - }, - "scope": "G", - "type": "script" - } - } - }, - "params": { - "enables": {}, - "selected_whid": "EWR4" - }, - "propConfig": { - "custom.api_region_name": { - "binding": { - "config": { - "path": "session.custom.aws.prefix" - }, - "type": "property" - }, - "persistent": true - }, - "custom.developer_user": { - "binding": { - "config": { - "expression": "isAuthorized(false, \u0027Authenticated/Roles/eurme-ignition-developers\u0027)" - }, - "type": "expr" - }, - "persistent": true - }, - "custom.enable_add_new_site": { - "binding": { - "config": { - "expression": "isAuthorized(false, \u0027Authenticated/Roles/rme-c4\u0027, \u0027Authenticated/Roles/narme-ignition-developers\u0027,\r\n\t\t\t\u0027Authenticated/Roles/eurme-ignition-developers\u0027)\r\n" - }, - "type": "expr" - }, - "persistent": true - }, - "custom.enabled_whids": { - "binding": { - "config": { - "expression": "{session.custom.fc}" - }, - "transforms": [ - { - "code": "\tchild_projects \u003d config.project_config.get_child_scada_projects()\n\treturn [x.replace(\u0027_SCADA\u0027,\u0027\u0027) for x in child_projects]", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.expanded": { - "persistent": true - }, - "custom.loading": { - "persistent": true - }, - "custom.new_site_is_not_in_S3": { - "binding": { - "config": { - "expression": "{view.custom.new_site_to_add}+toStr({view.custom.whids_in_s3})" - }, - "transforms": [ - { - "code": "\tnew_site \u003d self.custom.new_site_to_add\n\twhids \u003d self.custom.whids_in_s3\n\tif new_site and new_site not in whids:\n\t\treturn True\n\treturn False", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.new_site_to_add": { - "persistent": true - }, - "custom.show_add_new_site": { - "persistent": true - }, - "custom.stage_config": { - "binding": { - "config": { - "expression": "{view.custom.api_region_name}" - }, - "transforms": [ - { - "code": "\treturn AWS.s3.STAGE_CONFIG[\u0027prod\u0027][value]", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.whid": { - "binding": { - "config": { - "path": "session.custom.fc" - }, - "type": "property" - }, - "persistent": true - }, - "custom.whids_in_s3": { - "binding": { - "config": { - "expression": "{session.custom.fc}" - }, - "transforms": [ - { - "code": "\tfrom AWS.s3 import S3Manager\n\t\n\tusername \u003d self.session.props.auth.user.userName\n\tapi_region_name \u003d self.custom.api_region_name\n\t\n\ts3m \u003d S3Manager(\u0027prod\u0027, api_region_name, username)\n\n\tbucket \u003d self.custom.stage_config.repo_bucket\n\treturn s3m.fetch_site_list(bucket)\n", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "params.enables": { - "paramDirection": "input", - "persistent": true - }, - "params.selected_whid": { - "onChange": { - "enabled": null, - "script": "\tself.custom.new_site_to_add \u003d getattr(currentValue, \u0027value\u0027, \u0027\u0027)" - }, - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 330, - "width": 600 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "S3 Image Bucket:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "label_LeftAlign" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "!{view.params.enables.bucket}" - }, - "type": "expr" - } - }, - "props.params.text": { - "binding": { - "config": { - "path": "view.custom.stage_config.repo_bucket" - }, - "type": "property" - } - } - }, - "props": { - "path": "Objects/Templates/Labels/label_LeftAlign", - "style": { - "classes": "Framework/Card/Value" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "FlexContainer Image Bucket" - }, - "position": { - "basis": "26px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "S3 Source Bucket:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "label_LeftAlign" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "!{view.params.enables.bucket}" - }, - "type": "expr" - } - }, - "props.params.text": { - "binding": { - "config": { - "path": "view.custom.stage_config.source_bucket" - }, - "type": "property" - } - } - }, - "props": { - "path": "Objects/Templates/Labels/label_LeftAlign", - "style": { - "classes": "Framework/Card/Value" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "FlexContainer Source Bucket" - }, - "position": { - "basis": "26px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Child Projects:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "label_LeftAlign" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "propConfig": { - "props.params.text": { - "binding": { - "config": { - "expression": "len({view.custom.enabled_whids})" - }, - "type": "expr" - } - } - }, - "props": { - "path": "Objects/Templates/Labels/label_LeftAlign", - "style": { - "classes": "Framework/Card/Value" - } - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "100px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Sites in S3:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "label_LeftAlign_0" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "propConfig": { - "props.params.text": { - "binding": { - "config": { - "expression": "len({view.custom.whids_in_s3})" - }, - "type": "expr" - } - } - }, - "props": { - "path": "Objects/Templates/Labels/label_LeftAlign", - "style": { - "classes": "Framework/Card/Value" - } - }, - "type": "ia.display.view" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.custom.expanded \u003d not self.view.custom.expanded" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "propConfig": { - "props.image.icon.path": { - "binding": { - "config": { - "expression": "if({view.custom.expanded}, \u0027material/expand_less\u0027, \u0027material/expand_more\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": {} - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "grow": 1, - "shrink": 0 - }, - "props": { - "justify": "flex-end" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer Sites" - }, - "position": { - "basis": "26px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Site to Add:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "label_LeftAlign" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.params.text": { - "binding": { - "config": { - "path": "view.custom.new_site_to_add" - }, - "type": "property" - } - } - }, - "props": { - "path": "Objects/Templates/Labels/label_LeftAlign", - "style": { - "classes": "Framework/Card/Value" - } - }, - "type": "ia.display.view" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t# show confirm dialog for user before adding site\n\tself.show_confirm_dialog()\n" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button Add New Site", - "tooltip": { - "location": "bottom", - "style": { - "whiteSpace": "pre" - } - } - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "meta.tooltip.enabled": { - "binding": { - "config": { - "path": "this.props.enabled" - }, - "type": "property" - } - }, - "meta.tooltip.text": { - "binding": { - "config": { - "expression": "stringFormat(\u0027Add %s site folder to the image and source buckets:\\n[%s, %s]\u0027,\r\n\t{view.custom.new_site_to_add},{view.custom.stage_config.repo_bucket},\r\n\t{view.custom.stage_config.source_bucket})" - }, - "type": "expr" - } - }, - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.custom.new_site_to_add})\r\n\u0026\u0026len({view.custom.new_site_to_add})\r\n\u0026\u0026{view.custom.new_site_is_not_in_S3}\r\n\u0026\u0026{view.custom.developer_user}" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/library_add" - } - }, - "style": { - "margin": "2px" - }, - "text": "Add Site" - }, - "scripts": { - "customMethods": [ - { - "name": "show_success_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"success\", \n\t\t\"New Site Added\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t\t" - }, - { - "name": "show_warning_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"warning\", \n\t\t\"New Site NOT Added\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t\t" - }, - { - "name": "show_error_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"error\", \n\t\t\"New Site Add Error!\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t\t" - }, - { - "name": "show_confirm_dialog", - "params": [ - "payload\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add payload of data to pass to the popup\n\tmsg \u003d (\u0027Are you sure you want to add %s site to S3? \u0027\n\t\t\u0027\\nThis will create a new folder in the in each of the image repo and source file S3 buckets\u0027) % (\n\t\tself.view.custom.new_site_to_add)\n\tpayload \u003d {}\t\t\n\tAlerts.showAlert(\n\t\t\"info\", \n\t\t\"Add New Site to S3?\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"Continue\", \n\t\t\"Cancel\", \n\t\t\"library_add\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"confirm_add_new_site\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\tpayload\n\t)\n\t\t\t" - }, - { - "name": "update_bindings", - "params": [], - "script": "\t\"\"\"\n\t\tAfter data saved to S3, refresh session and view bindings\n\t\"\"\"\n\tself.view.refreshBinding(\u0027custom.enabled_whids\u0027)\n\tself.view.refreshBinding(\u0027custom.whids_in_s3\u0027)\n\tproject_table \u003d self.parent.parent.getChild(\"FlexContainer Tables\").getChild(\"FlexContainer Projects\").getChild(\"Table\")\n\tproject_table.refreshBinding(\u0027props.data\u0027)\n\tsystem.perspective.sendMessage(\u0027update_enabled_whids\u0027, {}, scope\u003d\u0027session\u0027)\n\tself.view.custom.new_site_to_add \u003d None\n\tself.view.custom.loading \u003d False\n\t\t" - }, - { - "name": "add_new_site", - "params": [], - "script": "\t\"\"\"\n\t\tCall AWS.s3.S3Manager.add_new_site() method with user selections\n\t\"\"\"\n\tfrom AWS.s3 import S3Manager\n\tfrom pprint import pformat\n\tfrom helper.helper import sanitize_tree\n\t\n\tapi_region_name \u003d self.view.custom.api_region_name\n\tusername \u003d self.session.props.auth.user.userName\n\tsite \u003d self.view.custom.new_site_to_add\n\tself.view.custom.loading \u003d True\n\n\ts3m \u003d S3Manager(\u0027prod\u0027, api_region_name, username)\n\t# Setting `bucket` \u003d \u0027both\u0027 will add the site folder to both the image and source buckets\n\tbucket \u003d \u0027both\u0027\n\toperation \u003d \u0027add_new_site\u0027\n\tparams \u003d {\u0027site\u0027: site, \u0027bucket\u0027: bucket}\n\ttry:\n\t\tresp \u003d getattr(s3m, operation)(**params)\n\t\tmsg \u003d pformat(sanitize_tree(resp))\n\t\tsystem.perspective.print(msg)\n\t\tresp_code \u003d resp.get(\u0027code\u0027, None)\n\t\tif (resp_code and resp_code !\u003d 200) or (not resp_code and \u0027message\u0027 in resp):\n\t\t\t# \u0027code\u0027 in resp indicates API encountered and returned an error\n\t\t\tself.show_error_dialog(msg)\n\t\t\tself.view.custom.loading \u003d False\n\t\telse:\n\t\t\tself.show_success_dialog(msg)\n\t\t\tself.update_bindings()\n\texcept:\n\t\timport traceback\n\t\tmsg \u003d \u0027Error executing %s operation! \\nError: %s\u0027 % (\n\t\t\t\toperation, traceback.format_exc())\n\t\tsystem.perspective.print(msg)\n\t\tself.view.custom.loading \u003d False\n\t\tself.show_error_dialog(msg)\n\t" - } - ], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "confirm_add_new_site", - "pageScope": false, - "script": "\tsystem.perspective.closePopup(\u0027alertDialog\u0027)\n\t# call the add_new_site custom method\n\tself.add_new_site()\n\t\t\t", - "sessionScope": true, - "viewScope": true - } - ] - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer Add New Site" - }, - "position": { - "basis": "32px", - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "{view.custom.developer_user}\r\n\u0026\u0026!isNull({view.custom.new_site_to_add})\r\n\u0026\u0026{view.custom.new_site_is_not_in_S3}" - }, - "type": "expr" - } - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "events": { - "component": { - "onSelectionChange": { - "config": { - "script": "\t# validate the selection data is not null\n\tif self.props.selection.data:\n\t\tproject \u003d self.props.selection.data[0].Project\n\t\tif getattr(project, \u0027value\u0027, None):\n\t\t\t# if this returns something, the row is styled, grab the value\n\t\t\tproject \u003d project.get(\u0027value\u0027)\n\t\tproject_site \u003d project.replace(\"_SCADA\", \"\")\n\t\tself.view.custom.new_site_to_add \u003d project_site\n" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Table" - }, - "position": { - "basis": "200px", - "shrink": 0 - }, - "propConfig": { - "props.data": { - "binding": { - "config": { - "expression": "toStr({view.custom.enabled_whids})+toStr({view.custom.whids_in_s3})" - }, - "transforms": [ - { - "code": "\tenabled_whids \u003d self.view.custom.enabled_whids\n\twhids_in_s3 \u003d self.view.custom.whids_in_s3\n\tdata \u003d [{\u0027Project\u0027: x + \u0027_SCADA\u0027} for x in enabled_whids]\n\tfor row in data:\n\t\tproject \u003d row[\u0027Project\u0027]\n\t\twhid \u003d project.replace(\u0027_SCADA\u0027,\u0027\u0027)\n\t\tif whid not in whids_in_s3:\n\t\t\tstyle \u003d {\u0027backgroundColor\u0027: \u0027#FFFF00\u0027}\n\t\t\trow[\u0027Project\u0027] \u003d {\u0027value\u0027: project, \u0027style\u0027: style}\n\treturn data", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.filter.enabled": { - "onChange": { - "enabled": null, - "script": "\tif not getattr(currentValue, \u0027value\u0027, None):\n\t\t# clear filter text when filter is disabled\n\t\tself.props.filter.text \u003d \u0027\u0027\n\t\t" - } - } - }, - "props": { - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Project", - "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": "Child Project" - }, - "justify": "center", - "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": "" - } - ], - "style": { - "margin": "5px" - } - }, - "type": "ia.display.table" - } - ], - "meta": { - "name": "FlexContainer Projects" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Table" - }, - "position": { - "basis": "200px", - "shrink": 0 - }, - "propConfig": { - "props.data": { - "binding": { - "config": { - "path": "view.custom.whids_in_s3" - }, - "transforms": [ - { - "code": "\treturn [{\u0027WHID\u0027: x} for x in value]", - "type": "script" - } - ], - "type": "property" - } - }, - "props.filter.enabled": { - "onChange": { - "enabled": null, - "script": "\tif not getattr(currentValue, \u0027value\u0027, None):\n\t\t# clear filter text when filter is disabled\n\t\tself.props.filter.text \u003d \u0027\u0027\n\t\t" - } - } - }, - "props": { - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "WHID", - "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": "FC" - }, - "justify": "center", - "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": "" - } - ], - "style": { - "margin": "5px" - } - }, - "type": "ia.display.table" - } - ], - "meta": { - "name": "FlexContainer Site Folders" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer Tables" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer Projects vs Folders" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.custom.expanded" - }, - "type": "property" - } - } - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "100%", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/9f686b21b3c3558f9752ce0ab99011c6b64c9199c81e10aae99b1dcd3cfd7223 b/.resources/9f686b21b3c3558f9752ce0ab99011c6b64c9199c81e10aae99b1dcd3cfd7223 deleted file mode 100644 index ea2f59ad..00000000 --- a/.resources/9f686b21b3c3558f9752ce0ab99011c6b64c9199c81e10aae99b1dcd3cfd7223 +++ /dev/null @@ -1,21 +0,0 @@ -import json - -class SendMessage(): - - def __init__(self, whid): - self.whid = whid - tag_path = "[%s_SCADA_TAG_PROVIDER]System/wbsckt_messages_send" % (whid) - tags_to_read = system.tag.readBlocking([tag_path]) - self.messages_to_send = system.util.jsonDecode(tags_to_read[0].value) - system.tag.writeBlocking([tag_path],[system.util.jsonEncode({})]) - self.message_list ={} - - def build_message_list(self): - if self.messages_to_send: - self.message_list = json.dumps(self.messages_to_send) - else: - self.message_list = None - - - - diff --git a/.resources/9f70f9beb67e8e8e64006008084fcb0ebd39757ca61f8a60ccb5a6665032aed8 b/.resources/9f70f9beb67e8e8e64006008084fcb0ebd39757ca61f8a60ccb5a6665032aed8 deleted file mode 100644 index 176953c05266b0e54936ce1a4bb26b211cb2bf14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 773 zcmV+g1N!`lP)6+PV{0F5MZp%<^A)Nhrici#CBPaiyS!nq4iBq(za1wTPgx5e895 z$GnGmX_)3-?zOmr=J_p#$H$j}IcJ{tyt5|DvZ5%jgb+f=S3#7#yu1vDL)67$v0N_W zdU<)Ns_Ggt=JfQmTCLVPVt)85mlu9KRxISWxxJdU$y7dcBoO1@b~kDE#*J2DPC%{uM5a-bFTklEvhAzfkx4eVCh0 zr?0QC;i-9Q)Q?-}Xk}vt4~+Nz_V#vjb8~%t-RX1&gTZdMi#WmaiipM){eyL^gBmA{jg1ZC&@C2>^aGl>qVw@)e5Qd6T5>qDbu%a;|5JLETK77!i zczk?}Mx%j1Ae+s~vb?jib8v8wN~My?q|Ih46be|+q*)f=6khj6qk;Vn#rgR;+{9^m zcXxMtd;8+z0;aoMuDiRtt*tFAKnDe;=;-L^hYsFgxFT7=_>O z$GIGvCo%$?WW8R;0yLY=CI%-Q4#Qb^jV99NFER5ApqTD{%-j)x00000NkvXXu0mjf DV(NCn diff --git a/.resources/8ccdc8884916f59d58a99aef60518c90ea76b2007b38f64c9f9c577a89b74b2f b/.resources/a0081bed5caff3ef2cf386f582b38428b851bb1ad03781d8d4e2611dfb7f5d03 similarity index 100% rename from .resources/8ccdc8884916f59d58a99aef60518c90ea76b2007b38f64c9f9c577a89b74b2f rename to .resources/a0081bed5caff3ef2cf386f582b38428b851bb1ad03781d8d4e2611dfb7f5d03 diff --git a/.resources/0b44a0f6ce6ce41270c4bafeb7397eb3aaf1d9dd1a4b5141f9ba87bf5e38c157 b/.resources/a0b789bf4205be2aef2e3f7f9d38718803ca850ec983499d3f171dc8ff50141a similarity index 100% rename from .resources/0b44a0f6ce6ce41270c4bafeb7397eb3aaf1d9dd1a4b5141f9ba87bf5e38c157 rename to .resources/a0b789bf4205be2aef2e3f7f9d38718803ca850ec983499d3f171dc8ff50141a diff --git a/.resources/6773c1d1b957fe7f23f9d3baa172de68cc254f27827092b6f6e0489fafbe023d b/.resources/a0ee90507962fec74ed7448b8fc4ac26164f75a15c9b98571612e2d1261dfb58 similarity index 100% rename from .resources/6773c1d1b957fe7f23f9d3baa172de68cc254f27827092b6f6e0489fafbe023d rename to .resources/a0ee90507962fec74ed7448b8fc4ac26164f75a15c9b98571612e2d1261dfb58 diff --git a/.resources/a0ff27373536c0646b0e72708e40079ceecee5f0c6e216f727b252fd746b9f30 b/.resources/a0ff27373536c0646b0e72708e40079ceecee5f0c6e216f727b252fd746b9f30 deleted file mode 100644 index 14a2b6ca..00000000 --- a/.resources/a0ff27373536c0646b0e72708e40079ceecee5f0c6e216f727b252fd746b9f30 +++ /dev/null @@ -1,727 +0,0 @@ -{ - "custom": { - "alarm_message": null, - "covert_mode": true, - "disconnected": false, - "display_icon": true, - "error": false, - "isMatch": 0, - "plc": "value", - "priority": 0, - "priority_string": "No active alarms", - "running_status": 4, - "searchId": "value", - "state": 5, - "state_string": "Unknown", - "tag_path_to_lookup": "[\"value\"]" - }, - "params": { - "directionLeft": false, - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.alarm_message": { - "persistent": true - }, - "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": { - "expression": "coalesce(try(jsonGet(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),\"state\"),null),{view.params.forceRunningStatus},4)" - }, - "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}/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 - }, - "custom.tag_path_to_lookup": { - "binding": { - "config": { - "expression": "\"[\\\"\" + {view.params.tagProps[0]} + \"\\\"]\"" - }, - "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": 25, - "width": 40 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Camera" - }, - "position": { - "height": 1, - "width": 1, - "x": 0.0015, - "y": 0.0004 - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "expression": "!{view.params.directionLeft}" - }, - "type": "expr" - } - }, - "props.elements[0].fill.paint": { - "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" - }, - { - "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": [ - { - "d": "M 0,0 H 39 V 24 H 0 Z", - "fill": {}, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1 - }, - "type": "path" - }, - { - "d": "M 34,17 26,12 34,7 Z", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1 - }, - "type": "path" - }, - { - "d": "M 9.7399998,7 H 25 V 17 H 9.7399998 Z", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1 - }, - "type": "path" - }, - { - "d": "m 5,7 h 3 v 5 H 5 Z", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1 - }, - "type": "path" - } - ], - "style": {}, - "viewBox": "-0.5 -0.5 40 25" - }, - "type": "ia.shapes.svg" - }, - { - "meta": { - "name": "Camera_Left" - }, - "position": { - "height": 1, - "width": 1, - "x": 0.0015, - "y": 0.0004 - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "expression": "{view.params.directionLeft}" - }, - "type": "expr" - } - }, - "props.elements[0].fill.paint": { - "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" - }, - { - "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": [ - { - "d": "M 0,0 H 39 V 24 H 0 Z", - "fill": {}, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1 - }, - "type": "path" - }, - { - "d": "m 31,7 h 3 v 5 h -3 z", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1 - }, - "type": "path" - }, - { - "d": "M 13.74,7 H 29 V 17 H 13.74 Z", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1 - }, - "type": "path" - }, - { - "d": "m 5.556602,17 8,-5 -8,-5 z", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1 - }, - "type": "path" - } - ], - "style": {}, - "viewBox": "-0.5 -0.5 40 25" - }, - "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" - } - }, - "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": "40:25", - "mode": "percent", - "style": { - "cursor": "pointer" - } - }, - "type": "ia.container.coord" - } -} \ No newline at end of file diff --git a/.resources/a1184ffe25705f9c43428c0602aedbd6ffd74564a9a0efbdbf21dddeeb726506 b/.resources/a1184ffe25705f9c43428c0602aedbd6ffd74564a9a0efbdbf21dddeeb726506 deleted file mode 100644 index a54fd8553525be82a8cbba8794275f6c6ce87b43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8190 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 O0&R6YwF(v65C03U)3*x% diff --git a/.resources/a1a4352a89bdcde329fc94b275e218c1d2d7c14b22321b16785cf50e3b05a05b b/.resources/a1a4352a89bdcde329fc94b275e218c1d2d7c14b22321b16785cf50e3b05a05b deleted file mode 100644 index 060cd4f9..00000000 --- a/.resources/a1a4352a89bdcde329fc94b275e218c1d2d7c14b22321b16785cf50e3b05a05b +++ /dev/null @@ -1,11 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#555555", - "borderTopColor": "#007EFC", - "borderTopStyle": "solid", - "borderTopWidth": "4px", - "boxShadow": "0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22)" - } - } -} \ No newline at end of file diff --git a/.resources/a1b51a8c32c7769e3d97f70f647573a446c834c2f28e0aca09516058a18a91ad b/.resources/a1b51a8c32c7769e3d97f70f647573a446c834c2f28e0aca09516058a18a91ad deleted file mode 100644 index 9d98d895..00000000 --- a/.resources/a1b51a8c32c7769e3d97f70f647573a446c834c2f28e0aca09516058a18a91ad +++ /dev/null @@ -1,7 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#2B2B2B" - } - } -} \ No newline at end of file diff --git a/.resources/a1e8be2030fddebc5426d0e35afaaa91ee6f63f7f253ce35e33aee271690221d b/.resources/a1e8be2030fddebc5426d0e35afaaa91ee6f63f7f253ce35e33aee271690221d deleted file mode 100644 index fcb4cbc7..00000000 --- a/.resources/a1e8be2030fddebc5426d0e35afaaa91ee6f63f7f253ce35e33aee271690221d +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FCC400", - "color": "#000000", - "fontFamily": "Arial", - "fontWeight": "bold" - } - } -} \ No newline at end of file diff --git a/.resources/a1fffefe11434a3124aee8c9222c638532f17925dc05f0301fc327dccd15bae6 b/.resources/a1fffefe11434a3124aee8c9222c638532f17925dc05f0301fc327dccd15bae6 deleted file mode 100644 index c815a473c28def4af1e1a538c77ac8f1bc23b406..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmV;{04e{8P)^-}xdF1s~om)8UOvi52BRspo^WYt5jd4bd z{Y1)uT<|Ua@JExz$(sUD6800{1wb0Bny0idlLyjiUf-mQIa896I<@nrHyUh=p4qXY Q@c;k-07*qoM6N<$g4)PlTmS$7 diff --git a/.resources/a21f24fdf2eaa8253c33351d78dd4c8f0ee62c037a2aac10bc840a8668459b12 b/.resources/a21f24fdf2eaa8253c33351d78dd4c8f0ee62c037a2aac10bc840a8668459b12 deleted file mode 100644 index 440fe391..00000000 --- a/.resources/a21f24fdf2eaa8253c33351d78dd4c8f0ee62c037a2aac10bc840a8668459b12 +++ /dev/null @@ -1,30 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FAFAFA", - "borderColor": "var(--neutral-100)", - "borderStyle": "solid", - "borderWidth": "1px", - "color": "#323232", - "fontWeight": "normal", - "margin": "5px" - } - }, - "variants": [ - { - "pseudo": "hover", - "animation": { - "duration": "0.2s", - "direction": "normal", - "iterationCount": "1", - "timingFunction": "ease", - "keyframes": { - "0%": {}, - "100%": { - "borderWidth": "2px" - } - } - } - } - ] -} \ No newline at end of file diff --git a/.resources/62d67877ebdb1f710b32289f56c86046f7d1deffa941da33bc8b6e3eddd035bb b/.resources/a2ef9e61e9514ffa00d1b665bdbde5f4956da40f358a86818923e4c6bf461936 similarity index 100% rename from .resources/62d67877ebdb1f710b32289f56c86046f7d1deffa941da33bc8b6e3eddd035bb rename to .resources/a2ef9e61e9514ffa00d1b665bdbde5f4956da40f358a86818923e4c6bf461936 diff --git a/.resources/a333aa26b1ac4fd7e55d81daacaab9278a1bccd650daea4e24583e94a13407f5 b/.resources/a333aa26b1ac4fd7e55d81daacaab9278a1bccd650daea4e24583e94a13407f5 deleted file mode 100644 index b9337b55..00000000 --- a/.resources/a333aa26b1ac4fd7e55d81daacaab9278a1bccd650daea4e24583e94a13407f5 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#CCCCFF", - "color": "#000000", - "fontFamily": "Arial", - "fontWeight": "bold" - } - } -} \ No newline at end of file diff --git a/.resources/a340fbefcdfbe4315d8460d57f4c0b902b266928912cd9d08fcdb6fe4f499e09 b/.resources/a340fbefcdfbe4315d8460d57f4c0b902b266928912cd9d08fcdb6fe4f499e09 deleted file mode 100644 index 83e5cc22..00000000 --- a/.resources/a340fbefcdfbe4315d8460d57f4c0b902b266928912cd9d08fcdb6fe4f499e09 +++ /dev/null @@ -1,184 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": { - "defaultSize": { - "height": 240, - "width": 400 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Header" - }, - "position": { - "height": 32, - "width": 400 - }, - "props": { - "style": { - "background-color": "#555555", - "fontWeight": "bold", - "textAlign": "center" - }, - "text": "Command Authentication" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Password Label" - }, - "position": { - "height": 32, - "width": 152, - "x": 115.5, - "y": 68 - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-White-12pt", - "fontSize": 18 - }, - "text": "Enter Username" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "PasswordField" - }, - "position": { - "height": 32, - "width": 229, - "x": 85.5, - "y": 116 - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "fontSize": 16 - } - }, - "type": "ia.input.password-field" - }, - { - "meta": { - "name": "Error Label", - "visible": false - }, - "position": { - "height": 32, - "width": 270, - "x": 56.5, - "y": 143 - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "color": "#FF8000", - "fontSize": 16, - "textAlign": "center" - }, - "text": "Login does not match" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tusername \u003d self.session.props.auth.user.userName\n\tlogin \u003d self.getSibling(\"PasswordField\").props.text\n\t\n\tif username \u003d\u003d login.lower():\n\t\tuser_valid \u003d True\n\telse:\n\t\tuser_valid \u003d False\n\t\n\trme_role \u003d self.session.custom.fc +\"-rme-c2c-all\"\n\tadmin_role \u003d \"eurme-ignition-admins\"\n\troles \u003d (self.session.props.auth.user.roles)\n\tif (rme_role.lower() in roles \n\tor rme_role.upper() in roles) or admin_role in roles:\n\t\thas_role \u003d True\n\telse:\n\t\thas_role \u003d False\n\t\n\tif user_valid and has_role:\n\t\tself.session.custom.command_auth.auth_time \u003d system.date.now()\n\t\tself.session.custom.command_auth.enabled \u003d True\n\t\tsystem.perspective.closePopup(\u0027\u0027)\n\telse:\n\t\tself.getSibling(\"Error Label\").meta.visible \u003d True" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Authenticate" - }, - "position": { - "height": 34, - "width": 120, - "x": 71, - "y": 191 - }, - "props": { - "image": { - "height": 20, - "width": 20 - }, - "style": { - "backgroundColor": "#555555", - "classes": "Background-Styles/Controller" - }, - "text": "Authenticate" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.closePopup(\u0027\u0027)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Cancel" - }, - "position": { - "height": 34, - "width": 120, - "x": 209, - "y": 191 - }, - "props": { - "image": { - "height": 20, - "width": 20 - }, - "style": { - "backgroundColor": "#555555", - "classes": "Background-Styles/Controller" - }, - "text": "Cancel" - }, - "type": "ia.input.button" - } - ], - "custom": { - "tags_data": { - "$": [ - "ds", - 192, - 1671029641714 - ], - "$columns": [ - { - "data": [], - "name": "Tags", - "type": "String" - } - ] - } - }, - "meta": { - "name": "root" - }, - "props": { - "style": { - "classes": "Background-Styles/Controller" - } - }, - "type": "ia.container.coord" - } -} \ No newline at end of file diff --git a/.resources/a35f45c34d064403027c8aeffcbdb6349e40e35c0ae9cf94cc0cd268fa16fa12 b/.resources/a35f45c34d064403027c8aeffcbdb6349e40e35c0ae9cf94cc0cd268fa16fa12 deleted file mode 100644 index 2b699505..00000000 --- a/.resources/a35f45c34d064403027c8aeffcbdb6349e40e35c0ae9cf94cc0cd268fa16fa12 +++ /dev/null @@ -1,21 +0,0 @@ -import json - -class SendMessage(): - - def __init__(self, whid): - self.whid = whid - tag_path = "[%s_SCADA_TAG_PROVIDER]System/wbsckt_messages_send" % (whid) - tags_to_read = system.tag.readBlocking([tag_path]) - self.messages_to_send = system.util.jsonDecode(tags_to_read[0].value) - system.tag.writeBlocking([tag_path],[system.util.jsonEncode({})]) - self.message_list = {} - - def build_message_list(self): - if self.messages_to_send: - self.message_list = json.dumps(self.messages_to_send) - else: - self.message_list = None - - - - diff --git a/.resources/a36787ea0628bf174dc3acf7e15b8db5ceacd857a4f85368632754ef0474b0d4 b/.resources/a36787ea0628bf174dc3acf7e15b8db5ceacd857a4f85368632754ef0474b0d4 deleted file mode 100644 index bfde93313f1f18a0f3bfa0fb8913adecfdd8d8e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6160 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�QP`C7Xn9o!Q*}u`rp4yjmn+nUz;Fy4!p- z^%DOS>Nz7QC)nV7room|sxG73&C1QGf2;X3FDi=Oa)l}P675UK-~R5mn4=-22Y=O4 zGS1j;&Bs9K67TY>e5T4jW}Nj}>fy>X%tfiAV=ltjjGT1jIcwoHpGl#`W=M^d6Anbd z^p>f(7bdAL5SK=ltAdyl!E<8MsixV}H*QR1CL(?l&akenWhh??{rG@eKI83twk*y# zvSX#j>R4D33E{HMW~6hS)bw^A(TL;n$UmI6<3#>K2II^GXWu7dm7aysddr44)m%~H zn-LD_ocd-7`BG2LGCa!C-^9e_cJB`kW2b<48rGFfw=jx<`};@E^i^YOc5dl=_?i-j zR&LJ!gv@+-6cTcjKcMa_&lDAw`IeN5uq6bA2jwrNW+5Mig{gzVUOt!?QmDD(N%z5kmxEY&2>r&-NPag3QAQ@Jr zLVe+IZ0C|4gIg(o51L8dZDe+zHn1OtMS?4k8|jNaE;cX|Kd(u03vsV{bFMp&i-5zodBmgF3dPyWJ?XMj zQ&XI*A_2*LtKHP~eq>1Vk)l5xR&(l8m Zd)#a7pjs;6_@^H*F)-7wy!|ltzX8J-YRv!u diff --git a/.resources/a3fbbc2d93a5d50108091f763df9747580bfe774f5ebf6d5acc89705399bad3e b/.resources/a3fbbc2d93a5d50108091f763df9747580bfe774f5ebf6d5acc89705399bad3e deleted file mode 100644 index 7396f4bb98fa7f3048f09dec6468a7ef5d76e7e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4590 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 Y4{Ug>5Q>lTh5!Hn07*qoM6N<$f-McZu>b%7 diff --git a/.resources/a4228dd7d88a3746b03e7a76ddfbcf1f6353dbe6e5dcd9f2800eb6b5195084fe b/.resources/a4228dd7d88a3746b03e7a76ddfbcf1f6353dbe6e5dcd9f2800eb6b5195084fe deleted file mode 100644 index a13432a1..00000000 --- a/.resources/a4228dd7d88a3746b03e7a76ddfbcf1f6353dbe6e5dcd9f2800eb6b5195084fe +++ /dev/null @@ -1,449 +0,0 @@ -{ - "custom": { - "alarm_message": null, - "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": { - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.alarm_message": { - "persistent": true - }, - "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": { - "expression": "coalesce(try(jsonGet(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),\"state\"),null),{view.params.forceRunningStatus},0)" - }, - "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}/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.forceFaultStatus": { - "paramDirection": "input", - "persistent": true - }, - "params.forceRunningStatus": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 48, - "width": 48 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "RFID_0" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "props.elements[0].fill.paint": { - "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" - }, - { - "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": [ - { - "elements": [ - { - "d": "M6.35 0.2507 C4.0842 0.2507 1.9091 1.5163 0.3079 3.7675 L1.174 4.9681 C2.6039 2.9621 4.477 1.9591 6.35 1.9591 C8.223 1.9591 10.0961 2.9621 11.526 4.9681 L12.3921 3.7675 C10.7909 1.5163 8.6158 0.2507 6.35 0.2507 ZM6.35 3.6831 C4.7961 3.6831 3.2421 4.5117 2.0526 6.1688 L2.8834 7.4219 C3.7997 6.1213 5.0484 5.3909 6.35 5.3909 C7.6516 5.3909 8.9003 6.1213 9.8166 7.4219 L10.6474 6.1688 C9.4579 4.5117 7.9039 3.6831 6.35 3.6831 ZM6.35 7.1155 C5.4135 7.1155 4.477 7.617 3.762 8.6201 L4.6179 9.8557 C5.0761 9.2079 5.698 8.8427 6.35 8.8427 C7.002 8.8427 7.6239 9.2079 8.0821 9.8557 L8.938 8.6201 C8.223 7.617 7.2865 7.1155 6.35 7.1155 ZM6.35 10.5667 C6.0416 10.5667 5.7332 10.7299 5.4966 11.0563 L6.35 12.257 L7.2034 11.0563 C6.9668 10.7299 6.6584 10.5667 6.35 10.5667 Z", - "name": "path", - "stroke": { - "paint": "transparent" - }, - "type": "path" - } - ], - "fill": { - "opacity": 1 - }, - "name": "group", - "stroke": { - "opacity": "0.502", - "paint": "rgb(128,128,128)" - }, - "type": "group" - } - ], - "style": {}, - "viewBox": "0 0 12.7 12.7" - }, - "type": "ia.shapes.svg" - } - ], - "events": { - "dom": { - "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": {} - }, - "propConfig": { - "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": { - "expression": "{view.custom.display_icon}" - }, - "type": "expr" - } - }, - "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": { - "mode": "percent", - "style": { - "cursor": "pointer" - } - }, - "type": "ia.container.coord" - } -} \ No newline at end of file diff --git a/.resources/26027126b3341b16c45be2ef3cd6ed6a334cbb775be58149e4bccb1ca1004292 b/.resources/a436c889b87b0262d59d4aba4910e0d53e500c8964ee10524e4fef82986c8dd3 similarity index 99% rename from .resources/26027126b3341b16c45be2ef3cd6ed6a334cbb775be58149e4bccb1ca1004292 rename to .resources/a436c889b87b0262d59d4aba4910e0d53e500c8964ee10524e4fef82986c8dd3 index 49ef45fb..d721a1c3 100644 --- a/.resources/26027126b3341b16c45be2ef3cd6ed6a334cbb775be58149e4bccb1ca1004292 +++ b/.resources/a436c889b87b0262d59d4aba4910e0d53e500c8964ee10524e4fef82986c8dd3 @@ -89,4 +89,4 @@ def update_home_status(self): self.getChild("FlexRepeater").props.instances[i].Counts.Diag = counters.get("Diagnostic") self.getChild("FlexRepeater").props.instances[i].Counts.Low = counters.get("Low") self.getChild("FlexRepeater").props.instances[i].Counts.Medium = counters.get("Medium") - self.getChild("FlexRepeater").props.instances[i].Counts.High = counters.get("High") + self.getChild("FlexRepeater").props.instances[i].Counts.High = counters.get("High") \ No newline at end of file diff --git a/.resources/a478579423901ccc2c3902895f4b93d9575d696b9522f55342f493d2ab3707e4 b/.resources/a478579423901ccc2c3902895f4b93d9575d696b9522f55342f493d2ab3707e4 deleted file mode 100644 index 242366ae..00000000 --- a/.resources/a478579423901ccc2c3902895f4b93d9575d696b9522f55342f493d2ab3707e4 +++ /dev/null @@ -1,198 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": { - "defaultSize": { - "height": 301, - "width": 493 - } - }, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50px", - "grow": 1 - }, - "props": { - "text": "alarms.csv" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onFileReceived": { - "config": { - "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n\tsystem.perspective.sendMessage(\"alarmsTab_importFile\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FileUpload" - }, - "position": { - "basis": "200px" - }, - "props": { - "style": { - "classes": "", - "margin": "10px" - }, - "supportedFileTypes": [ - "csv" - ] - }, - "type": "ia.input.fileupload" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "props": { - "style": { - "margin": "10px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50px", - "grow": 1 - }, - "props": { - "text": "sources.csv" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onFileReceived": { - "config": { - "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n\tsystem.perspective.sendMessage(\"sourcesTab_importFile\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FileUpload" - }, - "position": { - "basis": "200px" - }, - "props": { - "style": { - "classes": "", - "margin": "10px" - }, - "supportedFileTypes": [ - "csv" - ] - }, - "type": "ia.input.fileupload" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "props": { - "style": { - "margin": "10px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "50px", - "grow": 1 - }, - "props": { - "text": "Pick up where you left off ?" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onFileReceived": { - "config": { - "script": "\tpayload\u003d{\"fileContent\":event.file.getString(),\"fileName\":event.file.name}\n\tsystem.perspective.sendMessage(\"uploadBackup\",payload)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FileUpload" - }, - "position": { - "basis": "200px" - }, - "props": { - "style": { - "classes": "", - "margin": "10px" - }, - "supportedFileTypes": [ - "csv" - ] - }, - "type": "ia.input.fileupload" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "props": { - "style": { - "margin": "10px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/a4e435b58a9b79dda2e5b35f2147e27af3c27763e47dfec48f609896792689bc b/.resources/a4e435b58a9b79dda2e5b35f2147e27af3c27763e47dfec48f609896792689bc deleted file mode 100644 index fd96f1dfb03b016bf222eb734d908a3630b5b844..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1772 zcmV7-rABzV^Y%qg0-!JD5WhI*+mu>fxU29WZ7kbx92@L+r6*~3mYeSGm|qj=X>@$ z=ex`*ot<5v%;rw?_FC|7y$*lWG^44r7f(C7&|v6xN@MK7Gqc5Q%vFuzo>n~LIX;nh zm9YY9jNPbj??QEpQC@pa#Ie8iCe*fddflJMy9&W5lgSK=r3e2A!21HQ(cFtV0az~{ zq8dy+sA@Li`n?)?t&UT5!uT`sgKj-+Kv|7mUUO_R-c{%|if}etAD(KOQB~UnQ;!AD zO`T{ncS&`0bwm5yfSYC2@>(6I_?+2dK~Z@PH9xTLC{YFkk9 zr~w5}I`Bi26<4&qxT<|2b^X~3d|TIz^t(;+S{$^9^ zSmr$)aw^(zt#RbNA6x9W)d48nZxomHuev4_R2h)lG>qTO4wQ5Z;;!L;l^O?e&otyV z=BhGrugvH@?)|O<#qD+!wb{gZ0DoG5Cj-D^`-nJpty+)lUmikXFi?#`CgI*2!gCKz z4glhfL7`z64N-RYF}M46-}gE0u!(7{VqS4}Ii73lQFiAx(o&L<5dSISKK=;rN56;Z ziUNg^N--d~AFc|Qml%h{9DV3{VTFCb0h@hbLbCST(AVFOVHc?4yQN6}{0n>%8;5sh zhC(5XheF~=e>R;v?AqtW2}`SVz|Y?&8KL_`D@ zEn0-NYu94iwr$wEcP|bfJ`AP0BQSvd!ei>8)oQV4&mM$_hdY6$O`C>=3m0P3rcFpr zPDVyX2J-Uqke{C~#p|4$94Nmwi$wV{S1|=#YwVj4pv`8J;-S~;ap=$?H?YXaNUT_~ z0tXHpz`1khoG@q4p2ewCr`&Y<^l2!yqP#H6Gm$p78e}>s^%Kz5YXt=bm^*i_6KvkR zdDyaL3yvQ@jtdtq$fYKLD@=BFwwIJ9Q3F|mnB|#B(@UCUI$+d|2TI-L$%w{CTU z(R&*=Zj=xNJ9FmDD}g+v$XYmoC1xO~OIlc1h^VM22{v`=R4iY<9GRJ!eu23G`Wqw! z3FnW;JmnW4 z;Z)I6D%_GKOJr)G*Rry*CgeFUz&eo+SxK&FUJXbnHCnfC-!8#|f`YJm^=e$acu}T} z+}vDeKI7i=G&&xQ1c_)8S&P}~u#0&Wpc<{|>FG|-ZQi^Ysi~=0xpF1qK#vzukZSX^F*towSOX-4(j<;$04loBp3E)JJ2U6LhA1$Gq^vYPWejgLhN zzXRB6vzvWXt3zI;L9|RmULIt`G9W4|D-jYB;tUAxIYw|oLIS2tnIcOV&s1=5Fb*C( zI5EJnF0mT5F)=X`E;>3|Rs~MNJx4%}6HN6Uy*w#^uL}}&X=U+NMhgADefwk(Fj{#I zIH0dI!=)V>8j>YUE&2=qLaBB1jRLCPOG-+TM%lNWIB`PeIPA znBHSQH*3}`neP%46P;CplLQKo&&w^vFMeO`R-bjmd+h0GaL$}LIC=7o@#85 zkVdHe`}fO)>}e=afa}+-OfMCPQ?j06Huopa~T zo!;$MW|gTmxuqGs(Ttnz!^kauf|C*li#?$a^QFX*61P(a- za<60NGSn(~bcQSE>>0L(?7fT)`z4tf5_uR}3>gHDF*rz!az?{oG#!lQg<)DA$fWIM W;9!$~y9`)JGI+ZBxvXwryi#P4F_YZQCz+v2EK<_S^gZggsREy$@a8)zwi- z3R1`j_y}NNV8}Ak;wt~;vi|^pgZM9UpdOurfw8{Jh>NOu8C?3qx{}Ly9NA?R&6Bk8 z++$q9ZVV3(Zw_ycgoEfbqEof4HP0=97qK23CBSF-PV4PSi+PUj=dhpfK0#2(a6x(C zB0&^z*T1oX?ubS7EwDzfsH7?vtvx{yMB7fu+JM@MJGuL<%JeaugX1stv$7vuU@Kb; z8cl$4vyy_zu?{{P$V9KcH^q(A=LFeW-cikql}eAU_-${IJ?ih{4D zHHng^$YGgej6FRXagQi=KYw_*xVY^YQn^i|;Q8Ro@%w7K z*Z*~2?wa%DNa|nj=b-16-si!vT*3w`L(-pkPl4B|)~}OV!)`k*ZSPCR?=#tZaZO;i z<5#V)_vt>h+&sB(z<%{5jrwS@knjF`t-dX1m6l&U->o544moiZ&8t4INvg!}Q%? zdRj)Ik|5+~X(mWfKh_%fl{2eY{B#ufcJ#jf17fV?s`q=ZGM%6_?nwl_eEP|dj0w$< zw3(tkS|5fd=7Q%U7~PGbpE9fl{u~onq}x2RoL6rh8bfu$NzQ?DD{e<4%%vexL4HS zeDXJB$*IQprrg_5%Y~=D|AKr!XYPJzY!y14uipCJArZdR5%93@dK!U!z7qC%K58?y z-%CX$pn}o;I^Y-fKi-t9)xYGC#r~CKhBCJ4eP5bTl5I8c-q`yxpRg7i?su|y-CeRh zG4hP_{lOo2J6Aj{dDKeW^}XNg{rX8=s0wt>yP{+kQX(=$%Ax*}Z|CQmIXmWlPN+%~ zRAfmJP0YUZuN-V{_9c{~SZ-~6Fy7uxV>wO)66I8WI{AYRjg&E^G3Rb(~5C*AHoDOF?FUf11 zL}qx-ijXuFQGC9SD~2)&Gn!sQ8@&$27F?AvJAo=FHCL|Ci!LUj;M9wXBucDO5HOh6 z=f;#dZh0rp_Yd~I%j9AC_Hc*xwx6_aI!T%g@yB$Kt<#aF9}j71X1wLpoUH%LIi3Qd z=6MD0c(J@zJ3ysA)2qdV$WWkSsMll=ML;Si}69b z^(DP(SU_cG2w@TqiJGknE-+_M`)GKm7yZIfL5--FI0rq!OgTEmDVdTc-UKT8NOTYH zhBT$f8w(S%wgNu+$f+1iKCzC4LCiV2tOD&$ZEbj{oREevt+ZExG!+M`wwB6>%I~%j zC(ORMr*KZZ6ux#%mK|Qd~h;4CwLLfdcOm_F|5YEDSe+mchi;FjfYifajnO3fwWrQ$T~h zxe|~L3e4*a)oGjCTpS?nuY{nbL2IJRgDhG|-a$`<$-{9L%<8ax5hY;R2SWKCI=@WmC|j(I1dAvB zKur30b_~}TaEroG%1Zb0kSF=}Ha+N1DRaP#-M(P4YTrXDk`7aw`DUkjhWi_z%}4Hn0c)A43?1PFxC(yBK$se)wO3a63(>nY^3Iq~ zqN2il10#2l#yncG{oWNWNW(r3bY@)ir1Rz586fT&W(TN$_j7le!iThP<7KYV8~E?| zI+Hfmr*#NrdF_klITr_E_icbjJ=m4@_zL@B4y)k3?Lcii;WYAe9y3^7;!ZjBvpB3W zGPF6xA4O2@FJs@&nqC~PgBP|YivGt0(2d-Kh{m;rmom?H3gYPX5d_OPo2w0d>l()- zo{ydTJo5txaZn zE-!^bKpop-5!>fK%=%4JC!8_ou*9_*r2v-^$n}ZbO>dq&ZXhCI#?R^2YfWr~TaI7C zC-LqIK;bKejSHDD#D(UPndaG{i3C%btQ;DH#iC0{>c0zJ_F* z(>VW?Y`5^4^ct921xwU|g9yP+FL^tBjNX&j?s>EYud&Uz1z7+3k$kOCDvxSGzC$XL z;16Mrut?8nSlE-lg(n^sUvD-$nLmAZXnWia4>E;1o3i{$**!Y>?`ATr?NI&KNPG`H zoMu(K9{av0#^kBOx_$V)v{N?YFqx}vDdcY1((VMUb4%pzs#+|C`-2vv=qH5MH~Qv? zrN}}HEi}@eu`Nr}1yqXBg&Tfrd!z&3_$;_Q;@Aq%C z`z@B<7Cvic`rI}4HMJX##Lgra3EKWr|6ndNbrb1UmYs%N;oMIHUMLjx+xL%_pkDpA0PZx*N{e19*EDQa87HZ*M819)GO};vc4{d!KKe*Zr;}r8dqcK3{B{ zHX}|rIbl4o?(5nBF>knPb_+~ zXv9+}Qfjbg_%bjYPe{xx1_dOuF4Sf;Z2J zv{nF16I7ek?g7PM8QG_ZxZ}v~GzX`lM9@yiiM(3&7>!NVDx z)CU#{t(9h(N@#!^|~Mdj4h^0YMl@6a(C>R9L@ z6h0aV0apPV?j(E^M>@;wP6B~kJJv|1Zs68widsABa7X<2ETK*xB9HH__1Vh+*s-g* zGPoEf1%)ygM&~&9^dO$VAKHf{?^07N7G&TeYwr>EmVgZ^6QmOE7Z3DUdSIk-&%$l4zha*SD2& zjxYV5_~&(tq|nKq_?4K$XbRRQ3#u;*TQ}?4naYG*@}7a2QLT0HjKuPT-JOn!?iRk@ z9|#wWPx9*%5JEN0P7PU3wE&bZ(aQai$rcvIY&%AM`-{6{m$j)eID-Pk#Sp$8qo88_ znm?hNySeTo-770(tM ze@Xf0&%A)u+M`{~Bm>D9GW>x-_5 zw4?FUn_ZDW#p@M$2-8A?R)67&s#P*&ko{UbZh2Ruz$$;^g?r?{?naCGAeJNwYW5FI zU1Ad3GeW(l*K^yCbO@F`=wN-$VkY;IH*UnPJ`_9^es~ScjIGnK#h6FyUHQ6{Jh7e+ z?`q|umKIg#&UNMW>gXO)CrXvN)fKR=foYO~-3yv#|K=fs|dN*(F8OlQ8K? zBIIe!^9JL0DTV=sTVJ%Fm`KNOK0aoFp3XU5S$RJ&nT^bt6fvE2;Ol}#dH(K|1#^Vj zV5Ue!(@5eVc)|1|P#_B46XuR#!L=X>SF^EDMJkE4;eu0_$=ATuEVh3~gQ49r+`^Hk z&8oS$ls%7Rm(){EjDwWU!}`rzg=}($%m6aP+%0afcL$hm3$gz^^lq1F1q1-8*QffzsR!NoUrUW;v_sbIo!p5Z(P`z)}LW(bIpI|2H4g zC)YJeL?3j@4Ia+rW?69lsP#h1Uc&{tPIDidPHFAG(Ix?U8e{P znQ`wjBc_>N$D;4Mv&QRX^`mJ!p4o`g%0L_>p2hTGEY&@T+a_s~leEu_G}-scw;sTu zm?8zC2Ja5S6Du>W1F`=Q;jGy&)-{Azr zB@=G}K+&whlw8c-zmUt&Kki#L$OO9U#;?x&(N|z*OyZ=>SVBA5Y*Beo@VYEXmJOIb z)W9IyK$8}HHWeC{j4Iy95|#s5DOpYy+L5eMb+z((26pr4JtTZw#v4=beOC5UfrzsL zSaNn&UQ)T3&siI>)OX4GZ30wK|3%cx>4$PV^JO7H*|Mj{fc!AnN5noOf|IW(>AWn$ ztvt0DkSPdeT78%yKlIu@2l!-f1`^BnFEUWse!EGGu2U9g#Km%Vl z{#xrQVh8Hn+*n-}wyER4FfFm~QGvg(za|P>`rQ%n^i>n!4=37ezggW4>Hjtu)<~bTwE+W+}-kUqUJ1CCNSJQCV(&$=R=NH~18) zT8-|0fAjN5$!_~0uiR9x7n{D$FgzPKuiZP1y{4E+5am2eoHfoc5Z$jW=m@RAn)KsV zgzXPY<$1YhCfS>RtTA*fy3=2)3wT2!MI2t^KxW@=auXpkFh!Oo^g=$V0w3yNDui_1 zf%Hg~et{D)fpFH(l=?45!kezn>~79X`Q${$V2ek@TRFxgZ&c+PX%ySHem|7Iv@!+X zXzfeb9ktUIG+$1_p7s=Y!&8w4>O6GI+e?8N7(vSM5!ux`DKrznCFJ#~S~ z5}b>x@-F~Igmnary|3>kdnFIKGN$o~mtXC4&`x-{5V?`(dRIFR1zju&iiLT<>>E-|&op#2jI{{7?Nv3+GaVOK`Xr6))H1?m~TU) zy%?BbQzS1i0IN^GKjD|mt;{Z42jRE2|`!-bG;bJ0znQa}{A zW1XXFi|=)!+s@G0qwtMrMt(DBv0pk1!z2KNQ>ZVkT%Srx6M=kjlmMemmJ#OZ1Nu~S z0I85w^qcd~Y>K|Nbb5gd3Jd*}8?y%;!fnGOa7SNf=gHwM6{2~mNJZX z+~7e~3?h5PPU9wNtj67%pZ*ZTaX!`N+#HQO-2}4J)=iyXbv=PhgbA?<41^@ttyZy6 z^n1fq#&-C-ZKqoiwymXd4R$$(TX#p|btj_@n|aGjzN))}J<4(Bwx*!E)8}^|*k-&e zR)(o7N;z?}T4%H3(P)9+nHut2P>4QbJUilUxk(ZM8ZN`c%6Lc-#ao|rlJPD&L3Awbbx%{h`~S~ zax4A;2;&dZUzyk`BuFFIZW8!Zrq>=LlF0R~uqxE78&}kQek`nL?OZVha757u+wJai zjd7Y3ZR92jB(FdjOiY@vy4-C9Xz8te#v)gFQ_CHGR5E^Ft4^j@QQMndLsVa~uzNUu z1S4wdQCm$#$?m4uJ>d?VwMjum0kzCFm!DYpc*GaPx__`<6DPJ-Ig3~?m9v^UZBa>o zQMtACoNv{)#rT~Xt=FIPE-A#jJtSPeV{Cmws+AplT#cO~D=-id5oQlL=dH1r&|a*b zpA%o;=LpGQ3MecqCxdr&5Kb8h1UmWQibK^T;^Gru;V)@F>o+#qde@!6sl3db$CzT` zU*q965lJQp_Peo}Z1Iee(Z0)2ovvS>ot=_!2dFQ3B``gXNmm$CrH`XClHbNR z|GFu<88f4c&QGB3*?Cd{*UVKu+s%idWUEKl<;B9n6t3|P?s zjUf2DYOkZX_>+E_;Yr{HOO}J1GO2Z00aF-udenkzaNFn&|E9W0tUBt0%Ti6I?xxYy zSNVAH^iZUlgXK*_4kw1dlB$Vd<*kPrR=#f<&!B*yz}6^7VOzlJE_mCh<&?SvMW)kb z&D$9!w3vFl(T>B=>zH@O;Il+R;vwl}jd)9Uw<-}>K7wqjw%|VAQZtUR(2$hEcWYW? z@iOv^u2SieM{kTK(-uC@Q`x!@o@*;Du&mOf8?v*5={od+|NWb?6Gl-3TLMSDKSbYn zM{xvyZjPdqaHmd1Rt>_JfrtU?BIZYV_| zJn=HFn}^FPbpTk#bAbcK#RS~<%U*4cPStUYXcl@u52%fZX*(TKX(e_f6TYoT6%VR zI(hkx5u?0v?CS*8`91tRM&|a6T~E8aa9bP7+PP z{*f*j;rOT4exYyJ;aTYovWk%m6*GNXZIAmMXCcWBunV4+0SakV6K3yKMsxVkb z=w7$RRXOA;aaiCIIsDTSg)_D^EpPYTAw`k=SU&cvs-JCWSH-#8C1EOk zr*{#oWH_63zODB3)!Cnj|9m@9C!-rb?@sw zvr8&MU{Cu$? zG6og*HQdPKV&_Dvrj0B0z#*u1DWy$d(IEdd3qyEV35t?p2rVyQm>}(kPi50v&KH6I zt0o|avt1M)_=5=z)y{k|z2LB4dl4w;ikj_{X~a63q7rc&mi-w*J&7RDS+Dvh zj}W=a8v;8BJ&%J)(4cbN3PkY*;)Fq*vPWF$4>pO z5h8WJO8kZgi5bp`c^`0Nc_{3w+Kdg;+9$Y--zzF0C6Hk{0pZ@s-I0CNH=xj;g6yq~ zN%@0{qHP+TxU>8vZFfno9U@^)Mc^_-JW2E4U<(qnS+rxb-);z7lTQ3>e*I86pbn9fxyxbq7N#n_*p{bB?57t*#V0UTptrxo^yiqfG0U&(V0 z(cC%8oL`~~| za)#;*>^DO1!i{$K!HtGe^_L#}Aw%*GVp*33)A^_Bqi8Hx3MWw9thswHnW}u?ULU=scM&vD~E#BL>NYsbb${M4l;!t2|SB-c5}yqp5hu zeYfB<+yq#b;P=V$CY(Pw<>ztzk#7ggj<7f=h`F1n0(#Te_7vYok~}JA>$-!>?x*Ya zyHlJ8DZpSu4vF|=H~f4&nWh>_0-U?NX%t0qB%yKZ-ycms`FMW3doeWj5PvU~?mmWY z@Y^dFa=r&>`YrwSb0j@3!5T6At>ihz=ZyAwa6{?Zo+d9aK8T?r2EMt~Y0H z6)$ONxb_%2id#)5ATOMc@{Cjwo4@sZPvK&w8ZR#6_VuPoJ>G$;>%a^w=CruQl4`Ce zfJ{pNSIETUp1OIyD%?q^CDhju`77NAgG3mmXOZN)jdGzOxqBVc=T+u``k5?8AT}R& zLELxwE;}>{=(?)7HsF5*;!pUsKLV=sB%^;{tt5w^w>g^@zCm^*Z)qNCy^_F?*|V`U z8%_y4Hg;OcM1{J)-ni>s`*B-j#UitVS7pj^_gVR+8w0&E)nNss8rfM$sp(VHP4OzG zh`E@2nz=0Ba85oUjNVu%CUKMOz-~;>6pK?W@9q6zl`Z@AA?igvh@)H~{Y3@)>Ah#3 zEbmWF| zh?n}ll6B&a@^=CXpE4-ekPF+yD*)!FXz-ABfBwC_Fz-5{dsDt{yCKpn9^gG`X(h;rM5R8~3&R{PDK=5rM-!UCNwb z3662;FWMcMkp;)S7Hy&Wk;dd+$m%AMlF>{ajOK8U#Xmw;EoWux*yak|zV*XFSD||q zEvJ#3qVJHX}X*yJTnPg6V7t`6ly1AF%Yi02J<0d5q zh5hWtggs(N?spQw@BH)m(FMDU@22x*#7@Emg&n ze!Z4r?lq2-uO@En@fk<%@Ps)~ss66I@VOHfI+UJzAU%1GiJZU$$bmEgQDMkK; zCs6kvJmpx@>H|oKO90ommU*c;dD@INn{}Qomp^JBW8}g( Rm-&l54>>#@aiaFgb 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 diff --git a/.resources/a8e9505be9862ee476fcb72c72d2e2bebf1371bc674b3e3405039095b841997e b/.resources/a8e9505be9862ee476fcb72c72d2e2bebf1371bc674b3e3405039095b841997e deleted file mode 100644 index f79ee95f..00000000 --- a/.resources/a8e9505be9862ee476fcb72c72d2e2bebf1371bc674b3e3405039095b841997e +++ /dev/null @@ -1,13 +0,0 @@ -{ - "base": { - "animation": { - "duration": "1s", - "keyframes": { - "0%": { - "backgroundColor": "#FF0000" - }, - "100%": {} - } - } - } -} \ No newline at end of file diff --git a/.resources/a959734c98c9e062d8a60264a0339192b26ce03b200d54a7c3c90611c958f78a b/.resources/a959734c98c9e062d8a60264a0339192b26ce03b200d54a7c3c90611c958f78a deleted file mode 100644 index fd6d3e23..00000000 --- a/.resources/a959734c98c9e062d8a60264a0339192b26ce03b200d54a7c3c90611c958f78a +++ /dev/null @@ -1,15 +0,0 @@ -def send_page_details(whid, session_id, pageId): - messages_to_send = {} - message_payload = {} - message_list = [] - time_stamp = system.date.toMillis(system.date.now()) - parameters = {"siteId":whid, "sessionId": session_id, - "pageId": pageId, "timestamp":time_stamp} - message_payload["parameters"] = parameters - message_payload["action"] = "pageview" -# message_payload["siteId"] = whid - message_list.append(message_payload) - messages_to_send["message_list"] = message_list - tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) - system.tag.writeBlocking([tag_provider + "System/wbsckt_messages_send"], - [system.util.jsonEncode(messages_to_send)]) \ No newline at end of file diff --git a/.resources/aa1fdc1a0a1e3485757b199c9b918284eecc950d22660fd248f0e9381ccd9e6c b/.resources/aa1fdc1a0a1e3485757b199c9b918284eecc950d22660fd248f0e9381ccd9e6c deleted file mode 100644 index 78419307..00000000 --- a/.resources/aa1fdc1a0a1e3485757b199c9b918284eecc950d22660fd248f0e9381ccd9e6c +++ /dev/null @@ -1,172 +0,0 @@ -{ - "custom": {}, - "params": { - "active": false, - "color": "", - "id": "", - "text": "" - }, - "propConfig": { - "params.active": { - "paramDirection": "inout", - "persistent": true - }, - "params.color": { - "paramDirection": "input", - "persistent": true - }, - "params.id": { - "paramDirection": "input", - "persistent": true - }, - "params.text": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 28, - "width": 183 - } - }, - "root": { - "children": [ - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tsystem.perspective.sendMessage(\u0027activate-filter\u0027, payload \u003d {\u0027id\u0027:self.view.params.id}, scope \u003d \u0027page\u0027)\n\tself.view.params.active \u003d True " - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "AddButton" - }, - "position": { - "basis": "30px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "!{view.params.active}" - }, - "type": "expr" - } - }, - "props.color": { - "binding": { - "config": { - "path": "view.params.color" - }, - "type": "property" - } - } - }, - "props": { - "path": "material/add", - "style": { - "cursor": "pointer" - } - }, - "type": "ia.display.icon" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tsystem.perspective.sendMessage(\u0027deactivate-filter\u0027, payload \u003d {\u0027id\u0027:self.view.params.id}, scope \u003d \u0027page\u0027)\n\tself.view.params.active \u003d False " - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "RemoveButton" - }, - "position": { - "basis": "30px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "{view.params.active}" - }, - "type": "expr" - } - }, - "props.color": { - "binding": { - "config": { - "path": "view.params.color" - }, - "type": "property" - } - } - }, - "props": { - "path": "material/remove", - "style": { - "cursor": "pointer" - } - }, - "type": "ia.display.icon" - }, - { - "meta": { - "name": "FilterText" - }, - "position": { - "basis": "153px" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.text" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Page/Text", - "fontSize": 12 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "root" - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "deactivate-filter", - "pageScope": true, - "script": "\t# implement your handler here\n\tif payload[\u0027id\u0027] \u003d\u003d self.view.params.id or payload[\u0027id\u0027] \u003d\u003d -1:\n\t\tself.view.params.active \u003d False", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/aa524422831b26cefeaae97385b75fb92b002a4cd5cefad4e442ed452b70ad2e b/.resources/aa524422831b26cefeaae97385b75fb92b002a4cd5cefad4e442ed452b70ad2e deleted file mode 100644 index 2f771c97a1ace84ff2a4fb131de30871ad355d97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25360 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 A!~g&Q diff --git a/.resources/ab7e4b7ca537808fff70141d3ca8fe91bba8992f9a64e0d5d535b7b7c548c989 b/.resources/ab7e4b7ca537808fff70141d3ca8fe91bba8992f9a64e0d5d535b7b7c548c989 deleted file mode 100644 index 62a1fbfc2d3ac8ae5cb4a80142af5a76051ec6d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46641 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 LP4y~t9B=;*4O7_7 diff --git a/.resources/ac602fa03c458cf97ee42a31c4ebd5e1940532f97de6b4dae6c828c29d9ea35a b/.resources/ac602fa03c458cf97ee42a31c4ebd5e1940532f97de6b4dae6c828c29d9ea35a new file mode 100644 index 0000000000000000000000000000000000000000..6266218896d261afb4254b71369cdb3e42d95abd GIT binary patch literal 23856 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 diff --git a/.resources/b05e424b600040f527f1f4faf4365823510f425c106cdf8cd85664ee66efce58 b/.resources/b0b612af32dc9e46160dccc49e19fa5bce4b6aa5c7f124c055a472c33d2870b8 similarity index 100% rename from .resources/b05e424b600040f527f1f4faf4365823510f425c106cdf8cd85664ee66efce58 rename to .resources/b0b612af32dc9e46160dccc49e19fa5bce4b6aa5c7f124c055a472c33d2870b8 diff --git a/.resources/b0ec766c36f3aa7d9482d042725355b15bd308323956312b7cf1123e6c12fd09 b/.resources/b0ec766c36f3aa7d9482d042725355b15bd308323956312b7cf1123e6c12fd09 deleted file mode 100644 index 16ea221eb0ab7b842701f4cb9ec85d0f1eea884a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77920 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 diff --git a/.resources/b12f6eb5ea93bd6cedb4f4d6938b537f243a1fbebbc4b1cb0b51ea31a17a8f11 b/.resources/b12f6eb5ea93bd6cedb4f4d6938b537f243a1fbebbc4b1cb0b51ea31a17a8f11 deleted file mode 100644 index 21a76c67..00000000 --- a/.resources/b12f6eb5ea93bd6cedb4f4d6938b537f243a1fbebbc4b1cb0b51ea31a17a8f11 +++ /dev/null @@ -1,15 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#F00077B3", - "borderColor": "#000000", - "borderStyle": "solid", - "borderWidth": "0.5px", - "color": "#000000", - "fontFamily": "Arial", - "fontSize": "14px", - "fontWeight": "bold", - "textAlign": "center" - } - } -} \ No newline at end of file diff --git a/.resources/b1302c9f04901665cf2d7f81aaf1e06c1ea757dfccd3c76a1891ea5f31e621ec b/.resources/b1302c9f04901665cf2d7f81aaf1e06c1ea757dfccd3c76a1891ea5f31e621ec deleted file mode 100644 index 7db571c2..00000000 --- a/.resources/b1302c9f04901665cf2d7f81aaf1e06c1ea757dfccd3c76a1891ea5f31e621ec +++ /dev/null @@ -1,242 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": { - "defaultSize": { - "height": 155, - "width": 1910 - } - }, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "233px" - }, - "props": { - "text": "Console Log", - "textStyle": { - "fontWeight": "bold", - "padding": "5px", - "textDecoration": "underline" - } - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tpayload \u003d {}\n\tsystem.perspective.sendMessage(\"clearFeedback\" , payload , \"page\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "40px" - }, - "props": { - "image": { - "icon": { - "path": "material/delete_forever" - } - }, - "primary": false, - "style": { - "borderStyle": "solid" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "40px" - }, - "props": { - "justify": "space-between", - "style": { - "paddingBottom": "5px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Table" - }, - "position": { - "basis": "400px", - "grow": 1 - }, - "props": { - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Value", - "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", - "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": true, - "style": { - "classes": "" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "Main-Views/Commissioning Tool/Message", - "visible": true, - "width": "100px" - } - ], - "data": [ - { - "Value": { - "Msg": "", - "Timestamp": "" - } - } - ], - "enableHeader": false, - "pager": { - "bottom": false - }, - "rows": { - "subviewExpansionMode": "single" - }, - "selection": { - "enableRowSelection": false - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "clearFeedback", - "pageScope": true, - "script": "\t# implement your handler here\n\t\n\tself.props.data \u003d []", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "addFeedback", - "pageScope": true, - "script": "\t# implement your handler here\n\t\n\trecord \u003d {\n\t \"Value\": {\n\t \"Timestamp\": str(system.date.now()),\n\t \"Msg\": payload[\"Msg\"]\n\t }\n\t}\n\tself.props.data.insert(0, record)", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.display.table" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "80px", - "grow": 1, - "shrink": 0 - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "padding": "5px" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/b130b12b9677b163f88e64acf09fca03c5a9287f4cf3f0a719dc88dea4e62bdc b/.resources/b130b12b9677b163f88e64acf09fca03c5a9287f4cf3f0a719dc88dea4e62bdc deleted file mode 100644 index cc715fc3..00000000 --- a/.resources/b130b12b9677b163f88e64acf09fca03c5a9287f4cf3f0a719dc88dea4e62bdc +++ /dev/null @@ -1,55 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": {}, - "root": { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px" - }, - "props": { - "style": { - "fontFamily": "Arial", - "fontSize": 22, - "fontWeight": "bold", - "textAlign": "center" - }, - "text": "TEMPERATURE" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Table" - }, - "position": { - "basis": "400px" - }, - "propConfig": { - "props.data": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "[IEC_SCADA_TAG_PROVIDER]Temperature/temperature_monitoring" - }, - "type": "tag" - } - } - }, - "type": "ia.display.table" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/b1ba720c725448b02f9f0a4a1b744c968cfcf7ca549b63ac1e6c8346df10b016 b/.resources/b1ba720c725448b02f9f0a4a1b744c968cfcf7ca549b63ac1e6c8346df10b016 deleted file mode 100644 index 69f14c996804ea2950927d82e98b31e0293cb05d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29136 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 M;r7k!>!#2C51aDDHUIzs diff --git a/.resources/69f952e2a458384b65161b99532b2e867e9db8f9637776d2581fd59488b58243 b/.resources/b2ffabea30d6b67caa02dcd133d6a4467ba2e132e561bc1ab86f013a83b4a9ea similarity index 100% rename from .resources/69f952e2a458384b65161b99532b2e867e9db8f9637776d2581fd59488b58243 rename to .resources/b2ffabea30d6b67caa02dcd133d6a4467ba2e132e561bc1ab86f013a83b4a9ea diff --git a/.resources/b3be37eced60cb1d987d08c4c0829b7d5b282d8f0ef7c81b1916bf0bd82afaf4 b/.resources/b3be37eced60cb1d987d08c4c0829b7d5b282d8f0ef7c81b1916bf0bd82afaf4 deleted file mode 100644 index 3f27d80e..00000000 --- a/.resources/b3be37eced60cb1d987d08c4c0829b7d5b282d8f0ef7c81b1916bf0bd82afaf4 +++ /dev/null @@ -1,129 +0,0 @@ -{ - "custom": {}, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\tself.params.request_focus \u003d True\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "params": { - "enabled": true, - "placeholder": "enter text...", - "request_focus": false, - "text": "" - }, - "propConfig": { - "params.enabled": { - "paramDirection": "input", - "persistent": true - }, - "params.placeholder": { - "paramDirection": "input", - "persistent": true - }, - "params.request_focus": { - "onChange": { - "enabled": null, - "script": "\t# if focus request set externally, set focus via message and clear request\n\tif currentValue.value:\n\t\tsystem.perspective.sendMessage(\u0027request_focus\u0027, scope\u003d\u0027view\u0027)\n\t\tself.params.request_focus \u003d False\n\t" - }, - "paramDirection": "inout", - "persistent": true - }, - "params.text": { - "paramDirection": "inout", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 50, - "width": 200 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "TextField" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.params.enabled" - }, - "type": "property" - } - }, - "props.placeholder": { - "binding": { - "config": { - "path": "view.params.placeholder" - }, - "type": "property" - } - }, - "props.style.classes": { - "binding": { - "config": { - "expression": "if({this.props.enabled},\u0027Input/Text/text_field_enabled\u0027,\u0027Input/Text/text_field_disabled\u0027)" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.text" - }, - "overlayOptOut": true, - "type": "property" - } - } - }, - "props": { - "style": { - "margin": "1%", - "padding": "1%" - } - }, - "scripts": { - "customMethods": [ - { - "name": "set_focus", - "params": [], - "script": "\tfrom time import sleep\n\tsleep(0.25)\n\tself.focus()\n\t" - } - ], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "request_focus", - "pageScope": false, - "script": "\tsystem.util.invokeAsynchronous(self.set_focus())\n\t", - "sessionScope": false, - "viewScope": true - } - ] - }, - "type": "ia.input.text-field" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/b3c05c9e5bd7448b7b7bdbb5067f49a26fb2e18c2f6d001d5896640bd43c5024 b/.resources/b3c05c9e5bd7448b7b7bdbb5067f49a26fb2e18c2f6d001d5896640bd43c5024 deleted file mode 100644 index da58939effff334d761d767aed6801b57f837618..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7911 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 diff --git a/.resources/b4334986d7e62785fe409b6e98bbe45f1305f72f75528cf23aa6231fb6824028 b/.resources/b4334986d7e62785fe409b6e98bbe45f1305f72f75528cf23aa6231fb6824028 deleted file mode 100644 index f0375206..00000000 --- a/.resources/b4334986d7e62785fe409b6e98bbe45f1305f72f75528cf23aa6231fb6824028 +++ /dev/null @@ -1,9 +0,0 @@ -{ - "base": { - "style": { - "borderColor": "#FF0000", - "borderStyle": "solid", - "borderWidth": "2px" - } - } -} \ No newline at end of file diff --git a/.resources/b4390db141c87222ccbf8bc0bc3f34d8229e6f470d54b89af83a2d5c384b47ad b/.resources/b4390db141c87222ccbf8bc0bc3f34d8229e6f470d54b89af83a2d5c384b47ad deleted file mode 100644 index 38b785b40e13e0713d95b9eb063fa49af610242a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)IY=ng!v9PceB4J}=Wl3zLb`lXQpMXc(*9t+JDa{}+ z^^l-by>qAiz1}-It-eW4Zf55E?m6fGKf?1oTEmqtWv>iX%#(NX#Gm7=J+86htg!iK z6VVEN$uID0*$R%|j+wM4>A&o!E8Rsj6~#(g#D2#bp!8%=r2?n#r;OZ=AQA#`E`qZ) z>X7o3skHvIPG_Ps0FvKeEjm&i^kw?!&Ggcp?nabl8BYaOr*qRL$x2z~jHP0XWyjbp z>~isOfm3pDTnD>oBXqTjsxW0wA*nZ;IN%RqHY;(y}|Tn&T*{RpL$Y3K0u&?u{g(&x-LtNWmX?nnY*8BfO^ezn+y2`1L=7qi3s!gd9!l=iSuLCYT%-? zi1-y$)BCBvX?3+_2GZ}%V7*N#CBwJFY!|jeb@jiTo8##9h=Z2{PTo)W2fJ-u=fZN5 Q^8f$<07*qoM6N<$f;`6irvLx| diff --git a/.resources/4ab64689bd96a59f97328ed73604de6bf61938ab1c1aa44d8923839f674d1bd6 b/.resources/b46a0c71e566cb77aadddb2b9995076e8db730d02af55b136156b9f35853cfad similarity index 100% rename from .resources/4ab64689bd96a59f97328ed73604de6bf61938ab1c1aa44d8923839f674d1bd6 rename to .resources/b46a0c71e566cb77aadddb2b9995076e8db730d02af55b136156b9f35853cfad diff --git a/.resources/b4e54bbf96b43fdba708eaa790d14702d8139ef590a8a1362e7bbbe4a2f8a1c6 b/.resources/b4e54bbf96b43fdba708eaa790d14702d8139ef590a8a1362e7bbbe4a2f8a1c6 deleted file mode 100644 index dbe7f65c..00000000 --- a/.resources/b4e54bbf96b43fdba708eaa790d14702d8139ef590a8a1362e7bbbe4a2f8a1c6 +++ /dev/null @@ -1,13 +0,0 @@ -{ - "base": { - "animation": { - "duration": "1s", - "keyframes": { - "0%": { - "backgroundColor": "#CCCCFF" - }, - "100%": {} - } - } - } -} \ No newline at end of file diff --git a/.resources/3572488d730143b73a71b26411889becd1cc80c8fb295c4ab851cee60c8de002 b/.resources/b5118d8e44feea797772dbf0d33b004a4a71909a6132bfa5425d47ab866ffe3a similarity index 100% rename from .resources/3572488d730143b73a71b26411889becd1cc80c8fb295c4ab851cee60c8de002 rename to .resources/b5118d8e44feea797772dbf0d33b004a4a71909a6132bfa5425d47ab866ffe3a diff --git a/.resources/b54a979b82bd844c690f183d61aedbceb80602c64a211859fe35061422a38ab4 b/.resources/b54a979b82bd844c690f183d61aedbceb80602c64a211859fe35061422a38ab4 deleted file mode 100644 index 3ade6ba9..00000000 --- a/.resources/b54a979b82bd844c690f183d61aedbceb80602c64a211859fe35061422a38ab4 +++ /dev/null @@ -1,239 +0,0 @@ -{ - "custom": { - "api_region_name": "na", - "loading": false, - "query_params": { - "copy_option": null, - "destination_bucket": null, - "destination_site": null, - "destination_view": null, - "end_time": null, - "error_occurred": null, - "operation": null, - "source_bucket": null, - "source_site": null, - "source_view": null, - "start_time": null, - "username": "" - }, - "raw_data": [] - }, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\tquery_params \u003d self.params.query_params\n\tself.custom.query_params \u003d query_params\n\tsystem.perspective.sendMessage(\u0027refresh_audit_table_data\u0027, scope\u003d\u0027view\u0027)\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "params": { - "query_params": { - "copy_option": null, - "destination_bucket": null, - "destination_site": null, - "destination_view": null, - "end_time": null, - "error_occurred": null, - "operation": null, - "source_bucket": null, - "source_site": null, - "source_view": null, - "start_time": null, - "username": "" - } - }, - "propConfig": { - "custom.api_region_name": { - "binding": { - "config": { - "path": "session.custom.aws.prefix" - }, - "type": "property" - }, - "persistent": true - }, - "custom.loading": { - "persistent": true - }, - "custom.query_params": { - "persistent": true - }, - "custom.raw_data": { - "persistent": true - }, - "params.query_params": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "width": 1200 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Query Params" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "props.params.params.query_params": { - "binding": { - "config": { - "path": "view.custom.query_params" - }, - "type": "property" - } - } - }, - "props": { - "params": { - "open_expanded": false, - "params": {}, - "path": "Objects/Templates/S3/Audit/Query_Options", - "show_box_shadow_on_expanded": true, - "title": "Query Params", - "useDefaultHeight": false, - "useDefaultWidth": false - }, - "path": "Framework/Card/Card_Collapsible_Transparent" - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Log Table" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.params.table_data": { - "binding": { - "config": { - "path": "view.custom.raw_data" - }, - "type": "property" - } - }, - "props.params.title": { - "binding": { - "config": { - "expression": "\u0027SCADA S3 Audit Logs - \u0027+\r\nif({view.custom.loading}, \u0027Loading...\u0027, stringFormat(\u0027%d Record(s)\u0027, len({view.custom.raw_data})))" - }, - "type": "expr" - } - } - }, - "props": { - "params": { - "NavigationSettings": { - "BaseUrl": "/singleMP/main", - "Column": "mp_name", - "Enabled": false - }, - "SelectedRow": [], - "filters": [], - "header_order": [ - "timestamp", - "username", - "operation", - { - "field": "destination_bucket", - "visible": true - }, - "destination_site", - "destination_view", - { - "field": "destination_object_key", - "visible": false - }, - { - "field": "destination_version_id", - "visible": false - }, - "expires", - { - "field": "source_bucket", - "visible": true - }, - "source_site", - "source_view", - { - "field": "source_object_key", - "visible": false - }, - { - "field": "source_version_id", - "visible": false - }, - { - "field": "response", - "visible": false - }, - "error_occurred", - { - "field": "error_message", - "visible": true - }, - { - "field": "audit_id", - "visible": false - }, - { - "field": "copy_option", - "visible": false - }, - { - "field": "ttl", - "visible": false - } - ] - }, - "path": "Objects/Templates/S3/Audit/Log_Table" - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "scripts": { - "customMethods": [ - { - "name": "refresh_audit_table_data", - "params": [], - "script": "\t# refresh the audit table query\n\tfrom helper.helper import sanitize_tree\n\tfrom AWS.s3 import S3Manager\n\t\n\tself.view.custom.loading \u003d True\n\tapi_stage \u003d \u0027prod\u0027\n\tusername \u003d self.session.props.auth.user.userName\n\tapi_region_name \u003d self.view.custom.api_region_name\n\ts3m \u003d S3Manager(api_stage, api_region_name, username)\n\t\n\tparams \u003d sanitize_tree(self.view.custom.query_params)\n\tresp \u003d s3m.query_audit_table(return_items_only\u003dTrue, **params)\n\t# sort records in descending order by timestamp (newest first)\n\tself.view.custom.raw_data \u003d sorted(resp, key\u003dlambda d: d[\u0027timestamp\u0027], reverse\u003dTrue)\n\tself.view.custom.loading \u003d False\n\t" - } - ], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "audit_table_query_params_changed", - "pageScope": false, - "script": "\t# update the `view.custom.query_params` object from received payload\n\tfrom helper.helper import sanitize_tree\n\td \u003d sanitize_tree(payload)\n\tdct \u003d sanitize_tree(self.view.custom.query_params)\n\tdct.update(d)\n\tself.view.custom.query_params \u003d dct\n\t", - "sessionScope": true, - "viewScope": true - }, - { - "messageType": "refresh_audit_table_data", - "pageScope": false, - "script": "\t# implement your handler here\n\tself.refresh_audit_table_data()\n\t", - "sessionScope": true, - "viewScope": true - } - ] - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/b5602ec52bb7020064902e5688867a57dd83b66bbf37774cab27663a510f462d b/.resources/b5602ec52bb7020064902e5688867a57dd83b66bbf37774cab27663a510f462d deleted file mode 100644 index 8fb4e8c1c81a3b2b772289f6581360dbaf735a40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5440 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 diff --git a/.resources/b5704641a582e509a0ca2baee43d2a7f16400bcdf372b19a0dedf0072f36592d b/.resources/b5704641a582e509a0ca2baee43d2a7f16400bcdf372b19a0dedf0072f36592d deleted file mode 100644 index 6e09c62ef42cedefdf13bb6d168297d5b4f5a48c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V6Od#Ihzopr05hBti~s-t diff --git a/.resources/b62b7855930ca01fc815f63c8a0d1b05d32072a70b0ee1c7f957feef3bb47a8f b/.resources/b62b7855930ca01fc815f63c8a0d1b05d32072a70b0ee1c7f957feef3bb47a8f deleted file mode 100644 index 54b23af4..00000000 --- a/.resources/b62b7855930ca01fc815f63c8a0d1b05d32072a70b0ee1c7f957feef3bb47a8f +++ /dev/null @@ -1,12 +0,0 @@ -{ - "base": { - "animation": { - "keyframes": { - "0%": { - "backgroundColor": "#008000" - }, - "100%": {} - } - } - } -} \ No newline at end of file diff --git a/.resources/b679b4336a88a22aef08f8503a009702f8afe3b971b3d6675822d6e535fdfb57 b/.resources/b679b4336a88a22aef08f8503a009702f8afe3b971b3d6675822d6e535fdfb57 deleted file mode 100644 index 0adc9897..00000000 --- a/.resources/b679b4336a88a22aef08f8503a009702f8afe3b971b3d6675822d6e535fdfb57 +++ /dev/null @@ -1,954 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": { - "defaultSize": { - "height": 1080, - "width": 70 - } - }, - "root": { - "children": [ - { - "children": [ - { - "custom": { - "show": false - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tmap_selected \u003d self.session.custom.alarm_filter.show_map\n\tself.custom.show \u003d False\n\tif not map_selected:\n\t\tsystem.perspective.navigate(\"/\")\n\telse:\n\t\tsystem.perspective.navigate(\"/MAP-Home\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Home", - "tooltip": { - "enabled": true, - "text": "Home" - } - }, - "position": { - "basis": "70px" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "path": "session.props.theme" - }, - "transforms": [ - { - "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#FFFFFF", - "path": "material/home" - }, - "position": "top", - "width": 32 - }, - "style": { - "margin": 1 - }, - "text": "Home", - "textStyle": { - "fontSize": 10 - } - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tif self.props.selected \u003d\u003d True and self.page.props.path \u003d\u003d \"/\":\n\t\tsystem.perspective.navigate(\"/MAP-Home\")\n\t\t\n\telif self.page.props.path \u003d\u003d \"/MAP-Home\":\n\t\tsystem.perspective.navigate(\"/\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "ToggleSwitch", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "60px" - }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "path": "session.custom.alarm_filter.show_map" - }, - "transforms": [ - { - "expression": "if({value}, \"Toggle for home card view\", \"Toggle for home detailed view\")", - "type": "expression" - } - ], - "type": "property" - } - }, - "position.display": { - "binding": { - "config": { - "path": "/root.custom.show_home_selector" - }, - "type": "property" - } - }, - "props.selected": { - "binding": { - "config": { - "bidirectional": true, - "path": "session.custom.alarm_filter.show_map" - }, - "type": "property" - } - } - }, - "props": { - "color": { - "background-color": "", - "selected": "#FFFFFF", - "unselected": "#FFFFFF" - }, - "label": { - "position": "left", - "style": { - "classes": "", - "fontSize": "10px" - }, - "text": "Map View" - }, - "style": { - "borderBottomLeftRadius": "5px", - "borderBottomRightRadius": "5px", - "borderColor": "#AAAAAA", - "borderStyle": "solid", - "borderTopLeftRadius": "5px", - "borderTopRightRadius": "5px", - "borderWidth": "0.5px", - "classes": "Buttons/Button-Menu", - "margin": "1px" - } - }, - "type": "ia.input.toggle-switch" - } - ], - "events": { - "dom": { - "onMouseEnter": { - "config": { - "script": "\tself.parent.custom.show_home_selector \u003d True" - }, - "scope": "G", - "type": "script" - }, - "onMouseLeave": { - "config": { - "script": "\tself.parent.custom.show_home_selector \u003d False" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FlexContainer" - }, - "propConfig": { - "position.basis": { - "binding": { - "config": { - "expression": "if({parent.custom.show_home_selector} \u003d True, \"130px\", \"70px\")" - }, - "type": "expr" - } - } - }, - "props": { - "direction": "column", - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - }, - { - "custom": { - "show": false - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.closePopup(\"DevicePopUP\")\n\tsystem.perspective.closePopup(\"StatusPopUP\")\n\tself.custom.show \u003d False\n\tsystem.perspective.navigate(\"/Real-Time\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Alarms", - "tooltip": { - "enabled": true, - "text": "Alarms" - } - }, - "position": { - "basis": "70px" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "path": "session.props.theme" - }, - "transforms": [ - { - "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#FFFFFF", - "path": "material/access_alarm" - }, - "position": "top", - "width": 32 - }, - "style": { - "margin": 1 - }, - "text": "Alarms", - "textStyle": { - "classes": "Text-Styles/Docked-Buttons" - } - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\n\tsystem.perspective.openPopup(id \u003d \"Search\", view \u003d \"PopUp-Views/Search\", \n\t\t\t\t\t\t\t\t\t\t\t\tshowCloseIcon \u003d False, modal \u003d True,\n\t\t\t\t\t\t\t\t\t\t\t\tviewportBound \u003d True,\n\t\t\t\t\t\t\t\t\t\t\t\tdraggable \u003d False,\n\t\t\t\t\t\t\t\t\t\t\t\toverlayDismiss \u003d True\n\t\t\t\t\t\t\t\t\t\t\t\t)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "search", - "tooltip": { - "enabled": true, - "text": "Search" - } - }, - "position": { - "basis": "70px" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "path": "session.props.theme" - }, - "transforms": [ - { - "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#FFFFFF", - "path": "material/search" - }, - "position": "top", - "width": 32 - }, - "style": { - "margin": 1 - }, - "text": "Search", - "textStyle": { - "classes": "Text-Styles/Docked-Buttons" - } - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.session.custom.searchId \u003d \"\"\n\tself.session.custom.deviceSearchId \u003d \"\"\n\tsystem.perspective.closePopup(id \u003d \"TagSearch\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Search off", - "tooltip": { - "enabled": true, - "text": "Search Off" - } - }, - "position": { - "basis": "70px" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "path": "session.props.theme" - }, - "transforms": [ - { - "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#FFFFFF", - "path": "material/search_off" - }, - "position": "top", - "width": 32 - }, - "style": { - "margin": 1 - }, - "text": "Search Off", - "textStyle": { - "classes": "Text-Styles/Docked-Buttons" - } - }, - "type": "ia.input.button" - }, - { - "custom": { - "show": false - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "draggable": false, - "id": "IL8RVZ5T", - "modal": true, - "overlayDismiss": true, - "position": { - "relativeLocation": "top-right" - }, - "positionType": "relative", - "resizable": false, - "showCloseIcon": false, - "type": "open", - "viewParams": { - "viewFocus": "{session.custom.view_in_focus}" - }, - "viewPath": "PopUp-Views/Detail-View-Filter", - "viewportBound": true - }, - "scope": "C", - "type": "popup" - } - } - }, - "meta": { - "name": "Filter", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "70px" - }, - "propConfig": { - "custom.filters_active": { - "binding": { - "config": { - "expression": "if(!{session.custom.alarm_filter.show_diagnostic} ||\r\n!{session.custom.alarm_filter.show_gateways} ||\r\n!{session.custom.alarm_filter.show_low_alarm} ||\r\n{session.custom.alarm_filter.orderby} ||\r\n!{session.custom.alarm_filter.show_running} ||\r\n!{session.custom.alarm_filter.show_fio} ||\r\n!{session.custom.alarm_filter.show_camera_jams} ||\r\n!{session.custom.alarm_filter.show_safety}, \r\nTrue,\r\nFalse)\r\n" - }, - "type": "expr" - } - }, - "meta.tooltip.text": { - "binding": { - "config": { - "expression": "if({this.custom.filters_active}, \"Status Filters are active\",\r\n\"Select Status Filters\")" - }, - "type": "expr" - } - }, - "props.image.icon.color": { - "binding": { - "config": { - "expression": "if({this.custom.filters_active},\r\n\"#FF8C00\",\r\n\"#FFFFFF\")\r\n" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "height": 32, - "icon": { - "path": "material/filter_alt", - "style": { - "classes": "" - } - }, - "position": "top", - "width": 32 - }, - "style": { - "classes": "Buttons/Button-Menu, filter-button", - "margin": 1 - }, - "text": "Filter", - "textStyle": { - "classes": "Text-Styles/Docked-Buttons" - } - }, - "type": "ia.input.button" - }, - { - "custom": { - "show": false - }, - "events": { - "component": { - "onActionPerformed": [ - { - "config": { - "params": {}, - "view": "Main-Views/CT_Main" - }, - "enabled": false, - "scope": "C", - "type": "nav" - }, - { - "config": { - "script": "\tsystem.perspective.closePopup(\"DevicePopUP\")\n\tsystem.perspective.closePopup(\"StatusPopUP\")\n\tself.custom.show \u003d False\n\tsystem.perspective.navigate(\"/Tools\")" - }, - "scope": "G", - "type": "script" - } - ] - } - }, - "meta": { - "name": "Tools", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "70px" - }, - "propConfig": { - "custom.has_role": { - "binding": { - "config": { - "expression": "isAuthorized(false, \u0027Authenticated/Roles/eurme-ignition-developers\u0027, \r\n\t\u0027Authenticated/Roles/eurme-ignition-ae\u0027, \u0027Authenticated/Roles/narme-ignition-developers\u0027)" - }, - "type": "expr" - } - }, - "meta.tooltip.text": { - "binding": { - "config": { - "expression": "if({this.custom.has_role}\u003d False, \r\n\"You do not have the required role to access this page\",\r\n\"Access tools page\")\r\n" - }, - "type": "expr" - } - }, - "props.enabled": { - "binding": { - "config": { - "path": "this.custom.has_role" - }, - "type": "property" - } - }, - "props.style.classes": { - "binding": { - "config": { - "path": "session.props.theme" - }, - "transforms": [ - { - "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#FFFFFF", - "path": "material/handyman" - }, - "position": "top", - "width": 32 - }, - "style": { - "margin": 1 - }, - "text": "Tools", - "textStyle": { - "classes": "Text-Styles/Docked-Buttons" - } - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "page": "/Command" - }, - "scope": "C", - "type": "nav" - } - } - }, - "meta": { - "name": "Control", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "70px" - }, - "propConfig": { - "custom.has_role": { - "binding": { - "config": { - "expression": "{session.custom.fc}" - }, - "transforms": [ - { - "code": "#\trme_role \u003d value +\"-rme-all\"\n\trme_role \u003d \"eurme-ignition-developers\"\n\troles \u003d (self.session.props.auth.user.roles)\n\tif (rme_role.lower() in roles \n\tor rme_role.upper() in roles):\n\t\treturn True\n\telse:\n\t\treturn False", - "type": "script" - } - ], - "type": "expr" - } - }, - "meta.tooltip.text": { - "binding": { - "config": { - "expression": "if({this.custom.has_role}\u003d False, \r\n\"You do not have the required role to access this page\",\r\n\"Access controls page\")\r\n" - }, - "type": "expr" - } - }, - "props.style.classes": { - "binding": { - "config": { - "path": "session.props.theme" - }, - "transforms": [ - { - "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#FFFFFF", - "path": "material/gamepad" - }, - "position": "top", - "width": 32 - }, - "style": { - "margin": 1 - }, - "text": "Control", - "textStyle": { - "classes": "Text-Styles/Docked-Buttons" - } - }, - "type": "ia.input.button" - }, - { - "custom": { - "show": false - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.navigate(\"/Windows/Statistics\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Statistic", - "tooltip": { - "enabled": true, - "text": "Notifications" - } - }, - "position": { - "basis": "70px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "if(isNull({session.custom.download_url}), False, True)" - }, - "enabled": false, - "type": "expr" - } - } - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#FCFFFC", - "path": "material/leaderboard" - }, - "position": "top", - "width": 32 - }, - "style": { - "classes": "Buttons/Button-Menu", - "color": "#FFFFFF", - "margin": 1 - }, - "text": "Statistic", - "textStyle": { - "classes": "Text-Styles/Docked-Buttons" - } - }, - "type": "ia.input.button" - }, - { - "custom": { - "show": false - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.navigate(\"/Windows/Status\")\n\tself.session.custom.show_dpm_view \u003d False\n\tself.session.custom.show_dpm_device_view \u003d False" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Status", - "tooltip": { - "enabled": true, - "text": "Notifications" - } - }, - "position": { - "basis": "70px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "" - }, - "enabled": false, - "type": "expr" - } - } - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#FFFFFD", - "path": "material/done" - }, - "position": "top", - "width": 32 - }, - "style": { - "classes": "Buttons/Button-Menu", - "color": "#FFFFFF", - "margin": 1 - }, - "text": "Status", - "textStyle": { - "classes": "Text-Styles/Docked-Buttons" - } - }, - "type": "ia.input.button" - }, - { - "custom": { - "show": false - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.closePopup(\"DevicePopUP\")\n\tsystem.perspective.closePopup(\"StatusPopUP\")\n\tself.custom.show \u003d False\n\tsystem.perspective.navigate(\"/Help\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Help", - "tooltip": { - "enabled": true, - "text": "Navigate to the help wiki" - } - }, - "position": { - "basis": "70px" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "path": "session.props.theme" - }, - "transforms": [ - { - "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#FFFFFF", - "path": "material/help_outline" - }, - "position": "top", - "width": 32 - }, - "style": { - "margin": 1 - }, - "text": "Help", - "textStyle": { - "classes": "Text-Styles/Docked-Buttons" - } - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.navigateBack()" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Back", - "tooltip": { - "enabled": true, - "text": "Back" - } - }, - "position": { - "basis": "70px" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "path": "session.props.theme" - }, - "transforms": [ - { - "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#FFFFFF", - "path": "material/keyboard_return" - }, - "position": "top", - "width": 32 - }, - "style": { - "margin": 1 - }, - "text": "Back", - "textStyle": { - "fontSize": 10 - } - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\turl \u003d self.session.custom.download_url\n\tself.session.custom.download_url \u003d None\n\tsystem.perspective.navigate(url \u003d url , newTab \u003d True)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Downloads", - "tooltip": { - "enabled": true, - "text": "Notifications" - } - }, - "position": { - "basis": "70px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "if(isNull({session.custom.download_url}), False, True)" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "height": 32, - "icon": { - "color": "#FFFAF1", - "path": "material/cloud_download" - }, - "position": "top", - "width": 32 - }, - "style": { - "classes": "Buttons/Button-Menu", - "color": "#FFFFFF", - "margin": 1 - }, - "text": "Download", - "textStyle": { - "classes": "Text-Styles/Docked-Buttons" - } - }, - "type": "ia.input.button" - } - ], - "custom": { - "show_home_selector": false - }, - "meta": { - "name": "root" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "path": "session.props.theme" - }, - "transforms": [ - { - "code": "\tif \u0027dark\u0027 in value:\n\t\treturn \u0027Buttons/Button-Menu\u0027\n\telse:\n\t\treturn \u0027Buttons/Button-Menu\u0027", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "direction": "column", - "style": {} - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/b68ecc12c8bcc7c835d46ff7c9060bfccb12ce25c7c165c21ed3cf959762fe01 b/.resources/b68ecc12c8bcc7c835d46ff7c9060bfccb12ce25c7c165c21ed3cf959762fe01 deleted file mode 100644 index b440aeb0..00000000 --- a/.resources/b68ecc12c8bcc7c835d46ff7c9060bfccb12ce25c7c165c21ed3cf959762fe01 +++ /dev/null @@ -1,64 +0,0 @@ -import csv -from StringIO import StringIO - -def check_csv_file(event): - """ - This function checks if the CSV file was saved as CSV-UF8 settings if it has removes extra data bytes from the file. - - Args: - event : Containes the file data to be uploaded - - Returns: - a string representing the file that is to be uploaded. - - Raises: - None - """ - file_bytes = event.file.getBytes() - if bytearray.fromhex("ef bb bf") == bytearray(file_bytes[0:3]): - # Strip first three bytes - file_bytes = file_bytes[3:] - return file_bytes.tostring() - - -def add_device_btn_code(whid, event): - - reader = csv.DictReader(StringIO(FileHandler.uploader.check_csv_file(event))) - data ={} - def get_child(): - return { - "Area":"", - "SubArea":"" - } - - for i, v in enumerate(reader): - child = get_child() - child["Area"] = v["Area"] - child["SubArea"] = v["SubArea"] - data[v["Device"]]= child - - - system.tag.writeBlocking(["[%s_SCADA_TAG_PROVIDER]Configuration/PLC"%whid], system.util.jsonEncode(data)) - - return "Success" - -def add_detailed_view_btn_code(whid, event): - - reader = csv.DictReader(StringIO(FileHandler.uploader.check_csv_file(event))) - - data ={} - - def convert_dict_value_to_list(string): - device_list = [] - for i in string.replace("#", ",").split(","): - device_list.append(i.strip()) - return device_list - - for v in reader: - - data[v["DetailedView"]]= convert_dict_value_to_list(v["Devices"]) - - - system.tag.writeBlocking(["[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews"%whid], system.util.jsonEncode(data)) - - return "Success" \ No newline at end of file diff --git a/.resources/9932252d75f9ea8acd906dec460ab4513e2cd9848f8b0bd899d430bfeb701150 b/.resources/b6a8ada59b4d732e234860a3547993ae2fd44bccc96ecf85ca1437536095c1a9 similarity index 100% rename from .resources/9932252d75f9ea8acd906dec460ab4513e2cd9848f8b0bd899d430bfeb701150 rename to .resources/b6a8ada59b4d732e234860a3547993ae2fd44bccc96ecf85ca1437536095c1a9 diff --git a/.resources/b719dd10d18d4274535eecfdf1799b8b6e893dd32f10d34c1892e9fc312a2423 b/.resources/b719dd10d18d4274535eecfdf1799b8b6e893dd32f10d34c1892e9fc312a2423 deleted file mode 100644 index 22852ee4..00000000 --- a/.resources/b719dd10d18d4274535eecfdf1799b8b6e893dd32f10d34c1892e9fc312a2423 +++ /dev/null @@ -1,25 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "var(--info)", - "borderStyle": "none", - "boxShadow": "none", - "margin": "5px", - "textTransform": "uppercase" - } - }, - "variants": [ - { - "pseudo": "hover", - "style": { - "backgroundColor": "var(--info)" - } - }, - { - "pseudo": "active", - "style": { - "color": "var(--neutral-30)" - } - } - ] -} \ No newline at end of file diff --git a/.resources/81fc448db6ac3ad571961159a8cabedcc0f60e787bf0c4222501234405a0bd08 b/.resources/b71aacbd05425d5154ebee97a27e90d796b645616e10a24f7222c5d92b791efc similarity index 100% rename from .resources/81fc448db6ac3ad571961159a8cabedcc0f60e787bf0c4222501234405a0bd08 rename to .resources/b71aacbd05425d5154ebee97a27e90d796b645616e10a24f7222c5d92b791efc diff --git a/.resources/af489edafc42c58b1fa92a2d4a65f555d189d80a50c54b97a04f055326f83d5c b/.resources/b74d16850344fb093cde87c856e5ff0b085d972f91a54b7a846b1bc206291b12 similarity index 100% rename from .resources/af489edafc42c58b1fa92a2d4a65f555d189d80a50c54b97a04f055326f83d5c rename to .resources/b74d16850344fb093cde87c856e5ff0b085d972f91a54b7a846b1bc206291b12 diff --git a/.resources/b81e685caf1bc4cefd98c8cbe47823ae49689365ea42091abaf1ef79561e3f70 b/.resources/b81e685caf1bc4cefd98c8cbe47823ae49689365ea42091abaf1ef79561e3f70 deleted file mode 100644 index ba13a57f..00000000 --- a/.resources/b81e685caf1bc4cefd98c8cbe47823ae49689365ea42091abaf1ef79561e3f70 +++ /dev/null @@ -1,239 +0,0 @@ -{ - "pages": { - "/": { - "title": "", - "viewPath": "Main-Views/Home" - }, - "/Command": { - "title": "", - "viewPath": "Main-Views/CommandControl" - }, - "/CustomView/:customView": { - "title": "", - "viewPath": "Custom-Views/Detail" - }, - "/DetailedView/:detailedView/:plcTagPath": { - "title": "DetailedView", - "viewPath": "Detailed-Views/Detail" - }, - "/Device-manager": { - "viewPath": "Main-Views/Device-Manager/DeviceManager" - }, - "/Help": { - "title": "Help", - "viewPath": "Main-Views/Help" - }, - "/MAP-Home": { - "title": "", - "viewPath": "Additional-Home-View/MAP-Home" - }, - "/Monitron": { - "viewPath": "Main-Views/Monitron" - }, - "/Oil": { - "viewPath": "Main-Views/OilMonitoring" - }, - "/Real-Time": { - "viewPath": "Alarm-Views/RealTime" - }, - "/Temperature": { - "title": "", - "viewPath": "Main-Views/TempMonitoring" - }, - "/Tools": { - "title": "Tools", - "viewPath": "Main-Views/ToolBox" - }, - "/Windows/Statistics": { - "title": "", - "viewPath": "" - }, - "/Windows/Status": { - "title": "", - "viewPath": "" - }, - "/config": { - "title": "", - "viewPath": "CommissioningTool/PageConfig" - } - }, - "sharedDocks": { - "bottom": [ - { - "anchor": "fixed", - "autoBreakpoint": 480, - "content": "cover", - "handle": "show", - "iconUrl": "material/notifications_active", - "id": "Docked-South", - "modal": false, - "resizable": false, - "show": "onDemand", - "size": 165, - "viewParams": {}, - "viewPath": "Navigation-Views/Docked-South" - } - ], - "cornerPriority": "top-bottom", - "left": [ - { - "anchor": "fixed", - "autoBreakpoint": 805, - "content": "auto", - "handle": "autoHide", - "iconUrl": "", - "id": "Docked-West", - "modal": false, - "resizable": false, - "show": "auto", - "size": 70, - "viewParams": {}, - "viewPath": "Navigation-Views/Docked-West" - } - ], - "right": [ - { - "anchor": "fixed", - "autoBreakpoint": 480, - "content": "cover", - "handle": "hide", - "iconUrl": "", - "id": "Docked-East", - "modal": false, - "resizable": false, - "show": "onDemand", - "size": 400, - "viewParams": {}, - "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East" - }, - { - "anchor": "fixed", - "autoBreakpoint": 480, - "content": "cover", - "handle": "hide", - "iconUrl": "", - "id": "Docked-East-JR", - "modal": false, - "resizable": false, - "show": "onDemand", - "size": 400, - "viewParams": {}, - "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB" - }, - { - "anchor": "fixed", - "autoBreakpoint": 480, - "content": "cover", - "handle": "hide", - "iconUrl": "", - "id": "Docked-East-VFD", - "modal": false, - "resizable": false, - "show": "onDemand", - "size": 400, - "viewParams": {}, - "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-VFD" - }, - { - "anchor": "fixed", - "autoBreakpoint": 480, - "content": "cover", - "handle": "hide", - "iconUrl": "", - "id": "Docked-East-SNP", - "modal": false, - "resizable": false, - "show": "onDemand", - "size": 400, - "viewParams": {}, - "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered" - }, - { - "anchor": "fixed", - "autoBreakpoint": 480, - "content": "cover", - "handle": "hide", - "iconUrl": "", - "id": "Docked-East-DS", - "modal": false, - "resizable": false, - "show": "onDemand", - "size": 400, - "viewParams": {}, - "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status" - }, - { - "anchor": "fixed", - "autoBreakpoint": 480, - "content": "cover", - "handle": "hide", - "iconUrl": "", - "id": "Docked-East-MCM", - "modal": false, - "resizable": false, - "show": "onDemand", - "size": 400, - "viewParams": {}, - "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-MCM" - }, - { - "anchor": "fixed", - "autoBreakpoint": 480, - "content": "cover", - "handle": "hide", - "iconUrl": "", - "id": "Docked-East-Extendo", - "modal": false, - "resizable": false, - "show": "onDemand", - "size": 400, - "viewParams": {}, - "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo" - }, - { - "anchor": "fixed", - "autoBreakpoint": 480, - "content": "cover", - "handle": "hide", - "iconUrl": "", - "id": "Docked-East-BTN", - "modal": false, - "resizable": false, - "show": "onDemand", - "size": 400, - "viewParams": {}, - "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Button" - }, - { - "anchor": "fixed", - "autoBreakpoint": 480, - "content": "cover", - "handle": "hide", - "iconUrl": "", - "id": "Docked-East-SS-BTN", - "modal": false, - "resizable": false, - "show": "onDemand", - "size": 400, - "viewParams": {}, - "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-SS-Button" - } - ], - "top": [ - { - "anchor": "fixed", - "autoBreakpoint": 480, - "content": "auto", - "handle": "hide", - "iconUrl": "", - "id": "", - "modal": false, - "resizable": false, - "show": "visible", - "size": 50, - "viewParams": {}, - "viewPath": "Framework/Breakpoint" - } - ] - } -} \ No newline at end of file diff --git a/.resources/b8295320130bee9a62cee48844a59c85451538ee4b24f398081665093c1468eb b/.resources/b8295320130bee9a62cee48844a59c85451538ee4b24f398081665093c1468eb deleted file mode 100644 index 3ee54c4a..00000000 --- a/.resources/b8295320130bee9a62cee48844a59c85451538ee4b24f398081665093c1468eb +++ /dev/null @@ -1,20 +0,0 @@ -def csv_import(): - """ - Opens a file and returns the data as a list . - - Args: - - Returns: - the .csv as a nested list. - - Raises: - KeyError: Raises an exception. - """ - newFile = system.file.openFile('gif') - -# with open(newFile,"r") as f: -# csv_reader = csv.reader(f) -# device_list = [] -# for line in csv_reader: -# device_list.append(line) -# return device_list diff --git a/.resources/b87bb60b6166e4b7cfe9f41795cb65129b2941b37c9081fc8ab995968b75b9f1 b/.resources/b87bb60b6166e4b7cfe9f41795cb65129b2941b37c9081fc8ab995968b75b9f1 deleted file mode 100644 index 596b166d..00000000 --- a/.resources/b87bb60b6166e4b7cfe9f41795cb65129b2941b37c9081fc8ab995968b75b9f1 +++ /dev/null @@ -1,157 +0,0 @@ -{ - "custom": {}, - "params": { - "color": "#FF3535", - "id": "", - "text": "Active, Unacknowledged" - }, - "propConfig": { - "params.color": { - "paramDirection": "input", - "persistent": true - }, - "params.id": { - "paramDirection": "input", - "persistent": true - }, - "params.text": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 16, - "width": 193 - } - }, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "FilterColor" - }, - "position": { - "basis": "11px" - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "view.params.color" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "borderBottomLeftRadius": 5, - "borderTopLeftRadius": 5 - } - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "FilterText" - }, - "position": { - "basis": "149px" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.text" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Page/Text", - "fontSize": 12, - "marginLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Left" - }, - "position": { - "basis": "169px" - }, - "props": { - "style": { - "overflow": "visible" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tsystem.perspective.sendMessage(\u0027deactivate-filter\u0027, payload \u003d {\u0027id\u0027:self.view.params.id}, scope \u003d \u0027page\u0027)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "DeactivateButton" - }, - "position": { - "basis": "25px" - }, - "props": { - "path": "material/close", - "style": { - "cursor": "pointer", - "marginRight": 5 - } - }, - "type": "ia.display.icon" - } - ], - "meta": { - "name": "Right" - }, - "position": { - "basis": "25px" - }, - "props": { - "justify": "flex-end" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "justify": "space-between", - "style": { - "borderBottomLeftRadius": 5, - "borderBottomRightRadius": 5, - "borderStyle": "solid", - "borderTopLeftRadius": 5, - "borderTopRightRadius": 5, - "borderWidth": 1, - "classes": "Page/Page", - "overflow": "visible" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/b8e273d65d7b2edcd1fce8634af78dcf760950ad16f742271751f0c1bdef4a86 b/.resources/b8e273d65d7b2edcd1fce8634af78dcf760950ad16f742271751f0c1bdef4a86 deleted file mode 100644 index 6c627a75..00000000 --- a/.resources/b8e273d65d7b2edcd1fce8634af78dcf760950ad16f742271751f0c1bdef4a86 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "color": "var(--info)", - "fontSize": "12px", - "fontWeight": "bold", - "lineHeight": "16px" - } - } -} \ No newline at end of file diff --git a/.resources/3c5e8bf76a03c5c1629dc9c2cc777b2176b25efe01d4cb0129b0d0c9fc54895e b/.resources/b93b2e7cdfc99f59cf271e64b61321f51199af39da5b71a7fbf0d559318a6cfa similarity index 100% rename from .resources/3c5e8bf76a03c5c1629dc9c2cc777b2176b25efe01d4cb0129b0d0c9fc54895e rename to .resources/b93b2e7cdfc99f59cf271e64b61321f51199af39da5b71a7fbf0d559318a6cfa diff --git a/.resources/b9491ad008f4784a6ace20d51867da03b25aaa0fa0d9acc85180de8b0162bbdc b/.resources/b9491ad008f4784a6ace20d51867da03b25aaa0fa0d9acc85180de8b0162bbdc deleted file mode 100644 index 7992065e..00000000 --- a/.resources/b9491ad008f4784a6ace20d51867da03b25aaa0fa0d9acc85180de8b0162bbdc +++ /dev/null @@ -1,125 +0,0 @@ -{ - "custom": {}, - "params": { - "params": {}, - "path": "", - "title": "Card Title", - "useDefaultHeight": false, - "useDefaultWidth": false - }, - "propConfig": { - "params.params": { - "paramDirection": "input", - "persistent": true - }, - "params.path": { - "paramDirection": "input", - "persistent": true - }, - "params.title": { - "paramDirection": "input", - "persistent": true - }, - "params.useDefaultHeight": { - "paramDirection": "input", - "persistent": true - }, - "params.useDefaultWidth": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 339, - "width": 369 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "20px", - "shrink": 0 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.title" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Framework/Card/Title" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "EmbeddedView" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "props.params": { - "binding": { - "config": { - "path": "view.params.params" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "path": "view.params.path" - }, - "type": "property" - } - }, - "props.useDefaultViewHeight": { - "binding": { - "config": { - "path": "view.params.useDefaultHeight" - }, - "type": "property" - } - }, - "props.useDefaultViewWidth": { - "binding": { - "config": { - "path": "view.params.useDefaultWidth" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Framework/Card/Embedded" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "Framework/Card/Card" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/b9809960000f586390e03f563cd59013477d8e5304837b325d1050173458d5f0 b/.resources/b9809960000f586390e03f563cd59013477d8e5304837b325d1050173458d5f0 deleted file mode 100644 index cdf56086..00000000 --- a/.resources/b9809960000f586390e03f563cd59013477d8e5304837b325d1050173458d5f0 +++ /dev/null @@ -1,614 +0,0 @@ -{ - "custom": { - "FillColour": "value", - "alarm_message": null, - "covert_mode": true, - "disconnected": false, - "display_icon": true, - "error": false, - "isMatch": 0, - "plc": "value", - "priority": 0, - "priority_string": "No active alarms", - "running": false, - "running_status": 0, - "searchId": "value", - "show_error": false, - "show_running": true, - "state": 5, - "state_string": "Unknown" - }, - "params": { - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.FillColour": { - "persistent": true - }, - "custom.alarm_message": { - "persistent": true - }, - "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} || {session.custom.alarm_filter.show_running},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\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": { - "binding": { - "config": { - "expression": "{view.custom.running_status} \u003d 3" - }, - "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.show_error": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\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\tFalse)", - "type": "expression" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.show_running": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\r\n\t\t1, False,\r\n\t\t2, False,\r\n\t\t{session.custom.alarm_filter.show_running}\r\n\t\t)", - "type": "expression" - } - ], - "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.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": "Pin Detection" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "props.elements[1].elements[0].fill.paint": { - "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" - }, - { - "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": "defs1", - "name": "defs1", - "type": "defs" - }, - { - "elements": [ - { - "cx": "6.6145835", - "cy": "6.6145835", - "fill": {}, - "id": "path1", - "name": "path1", - "r": "6.0570302", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.264583" - }, - "type": "circle" - }, - { - "d": "M 1.4878915,9.8402065 9.8014876,1.4637334", - "fill": { - "paint": "transparent" - }, - "id": "path2", - "name": "path2", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.264726" - }, - "type": "path" - }, - { - "d": "M 3.5515604,11.84005 11.75248,3.4068377", - "fill": { - "paint": "transparent" - }, - "id": "path3", - "name": "path3", - "stroke": { - "dasharray": "none", - "paint": "#000000", - "width": "0.258089" - }, - "type": "path" - } - ], - "id": "layer1", - "name": "layer1", - "type": "group" - } - ], - "style": {}, - "viewBox": "0 0 13.229166 13.229167" - }, - "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" - } - }, - "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/243fb60cb6bc3c2cb859d28e1e6e7fc020bd7c83136764ce0dc6c2c5359bcf5a b/.resources/ba5eebc95094d07053272fcd58799891f77c6980942b77ed9360db1e23866e87 similarity index 100% rename from .resources/243fb60cb6bc3c2cb859d28e1e6e7fc020bd7c83136764ce0dc6c2c5359bcf5a rename to .resources/ba5eebc95094d07053272fcd58799891f77c6980942b77ed9360db1e23866e87 diff --git a/.resources/bb401585d8cf330f3e0349772d0aa587063cd1258e7ea28403daf7d980f556cd b/.resources/bb401585d8cf330f3e0349772d0aa587063cd1258e7ea28403daf7d980f556cd deleted file mode 100644 index 7b36e1d6..00000000 --- a/.resources/bb401585d8cf330f3e0349772d0aa587063cd1258e7ea28403daf7d980f556cd +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FF6000B3", - "color": "#000000", - "fontFamily": "Arial", - "fontWeight": "bold" - } - } -} \ No newline at end of file diff --git a/.resources/bba9bb60e62064a0629110bed3fffe9b1426f58c8c8dffdb3d62574db2e32bda b/.resources/bba9bb60e62064a0629110bed3fffe9b1426f58c8c8dffdb3d62574db2e32bda deleted file mode 100644 index 5223a198fd718eff54c70fcb00fa0bdffb15796c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2306 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 diff --git a/.resources/bca766a6c005dbc3c71f630db1bcfd5863c79c0e29a5de9b9e760f887814d033 b/.resources/bca766a6c005dbc3c71f630db1bcfd5863c79c0e29a5de9b9e760f887814d033 deleted file mode 100644 index 03bc5a51b5a3be88aca389303ed751fed0bdb178..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3233 zcmeH~=~t6U7RGUFT8Cu@5o9qLG)OCpfNTLm+~EZTK_sFqLRbZ%N!VftnWo1ejS_j0 zJrD;`Y>}XV$QnjL*#evhiUbG^2?S&bBqnSz>DT!*f56N)Kh!yOs%}-C=hpA3b1U3?D#N0TH9daoBWUyuO zp#Mll?$9Mq)TJ_~*%B=Px<1B~I1>ha{H1D$xMYSDI%J4-XexN9UUb z+#HNG_I-AlnY!`xQdPr^u?EtXw5aRfWiA?9#;9KV$c2y9mGrdDsSJ497q;_Y(Q(1^ z4mF3*PacZo_fD%3ww7Mi`HFUDlMH~x8bp*}ptQv1hCT1jaSywxe`2Yqq}S=Yj4=$F zL-I0URC@ntbwGtodz3XMsdAIDp@7A!qQ~!Xk$E9>pTI!`c_-8cYIT_V3qRhf2_W01S}o`LdbWSZoSH{cvQ4gU%7a|Ax`r7Lk8^T zT&7XkTnj?30Y#_+-{g9rB*TZY?WPN{*#Ko0(lye$re_NUOe^h|t6f{2ek&*=F7MLz ze}3(Cx_A(cuJJQ7y;2_;67nX67x=Fy;EKD4 z$G~`}0tOVnr9`CQI4qLFi;P1N$E{;zW9@}wJQ~Xzw8~oIyo^qnXu=Cp3Mp$HRNhz@ znYJ1}E^Jpg$$4~j*c~BN9iS&nZ3L3h_wk$P#+XJn3i{o_T`W0{Mozb71kYCYh`e`gMbbmXZvodm;aA3A5 ze*Jk^>SeC_RZ%mR6UiS$D`XSNld6^La}TLZnW&HL)xnq&QC@c}g}VP>640Cw5^_-Q z_}__QdtGymT^j0PmTWrf7$x|~l_Zkn0|qIas~{W**NeSjWmJlY^3??sHf9RqMr&vK zZ6{m5O2^P!i**Z(mgSj(puoEDerQzoS{crN(JJ|PRZNQ;Z?yO|xB5dBCL&bpP|*|w zXfL-5PIlb)4JEB(fvph7L}A-n{?%B*AHOKqE^G+s3VyC9E+wf=A>Rrje@)~f$T~@D zkcfn#^PVV)&tq3D48y-@R8)+GaG#H$lajct1UgwxICU?&FOT1&e(V6%|9C35n_g7FLW{Ux>noixY|b)=!k=WE)eoUnobX|Hh& zzsr#k<;q2<_KZR%%hkbM+aAC4a%5H_-x9)S-TQFmR)%#b$S=oQS5B45SouH9Yz+Fn z&(SnU?0(mJ7*!N;nabA$_>q`2mLyfS+Vy+Sv341V%pmG8WT2ZFV6xo2z@XW`Btd4? zg1o!bbJ6TbaIeHsw$cH(zcUG9ItKK$@t0wwFKoo&=trSeV|5nEH{b5VAhMeJ{g=wm zX5qNTHLaF=ACp>S%E@oPflv*K^k>=q7YigVunET{?ZA{^n7pcnY5&N@uQqx3fg__J z@MaWjajL5eMl^v(fF&kyjja0Fe`UaW^A~&fGOvGl>L{M~cv_Hm_PrS51_2NjFWyt> zJ6(pD>G4d!>G%cDfVlVWCDST^YZja=U4nF|kIw`+S;8P5Qys@xINdrWVbk(XUuEthg8!7Mh=iMDWC( zyz(qF*CsA$ZGx36pM7JJa~*j9%nEUY{!|ofIw+`Vmp2D@P}aD_xD-pVi;-5(5X2R} z-+H9Ngz)1CBcLS5&vWLYXLkRUL-ab)$-`0ILnVRy^B-M{kOWs za6-?%(ReoQ;%m_)@(&#-X;cZq7#1MSqo3UAF*GzD1w9|bJ=|I?37q?S?tjI{cof@q z#OUP1@zjkI1$BtqMHfIwkV!-IT5_9Toyw$zdeEF&kcz;IrE65(lk4dCsY6F#j9naaO>KS*qR7P-W!<5t+{~iFtUnmr}q+f)KibjjtbKT8RAt51` zHSg%D>cP>>u)?ER5A>a6Ph%;oJDdd*ymxFWk%&%PglF{cH;=84PC+wCRJ|^vihRV^ z5naK*~#$OTVx|(GtP#2Vx1@z|GZxHy)OG+m;LYRvTnt;#d6Hq-CI6C{SRTr;B4qMcmsfyM3J!85#ng zHMNLwm0fVrgTe~DWM4fAX>fV diff --git a/.resources/c20b9feeea449b97097c0610cd7b3073f75cf94a41d66eb6e2b9d814de2a08f6 b/.resources/c20b9feeea449b97097c0610cd7b3073f75cf94a41d66eb6e2b9d814de2a08f6 deleted file mode 100644 index 6cd0e908574663258fb3a0493ce05dbea36c50f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1483 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 Ios78q5Ay1=6#xJL diff --git a/.resources/c2a7a9607e62b1b3373e62567f5b80060e74ad25db4d79fa4cae387437d5542a b/.resources/c2a7a9607e62b1b3373e62567f5b80060e74ad25db4d79fa4cae387437d5542a deleted file mode 100644 index 43a4bf5d..00000000 --- a/.resources/c2a7a9607e62b1b3373e62567f5b80060e74ad25db4d79fa4cae387437d5542a +++ /dev/null @@ -1,97 +0,0 @@ -{ - "custom": {}, - "params": { - "rowData": { - "Driver": "value" - } - }, - "propConfig": { - "params.rowData": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 36, - "width": 227 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "36px" - }, - "propConfig": { - "props.value": { - "binding": { - "config": { - "path": "view.params.rowData.Driver" - }, - "type": "property" - }, - "onChange": { - "enabled": null, - "script": "\tvalue \u003d currentValue.value\n\tsystem.perspective.print(str(origin))\n\tif value is not None:\n\t\tif \u0027Binding\u0027 not in str(origin):\n\t\t\tmsg \u003d \u0027addtable-dropdown-updaterow\u0027\n\t\t\tHostname \u003d self.view.params.rowData[\u0027Hostname\u0027]\n\t\t\tpayload \u003d\t{\n\t\t\t\t\t\t\u0027value\u0027\t\t: value,\n\t\t\t\t\t\t\u0027Hostname\u0027\t: Hostname\n\t\t\t\t\t\t}\n\t\t\tsystem.perspective.sendMessage(msg, payload)" - } - } - }, - "props": { - "options": [ - { - "label": "S7300", - "value": "S7300" - }, - { - "label": "S7400", - "value": "S7400" - }, - { - "label": "S71200", - "value": "S71200" - }, - { - "label": "S71500", - "value": "S71500" - }, - { - "label": "CompactLogix", - "value": "CompactLogix" - }, - { - "label": "Legacy Allen-Bradley", - "value": "ControlLogix" - }, - { - "label": "ControlLogix", - "value": "ControlLogix" - }, - { - "label": "LogixDriver", - "value": "LogixDriver" - }, - { - "label": "Allen Bradley MicroLogix", - "value": "MicroLogix" - } - ], - "placeholder": { - "text": "Select Driver..." - } - }, - "type": "ia.input.dropdown" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/c32250f74576afafdfd0fe04bb1c0cec78837d39bbb2d0a501e010e2cda8e8a9 b/.resources/c32250f74576afafdfd0fe04bb1c0cec78837d39bbb2d0a501e010e2cda8e8a9 deleted file mode 100644 index a6ea1977..00000000 --- a/.resources/c32250f74576afafdfd0fe04bb1c0cec78837d39bbb2d0a501e010e2cda8e8a9 +++ /dev/null @@ -1,32 +0,0 @@ -def get_alarm_state(state): - """ - This function returns a string representing the current alarm state from - a state argument enum 1 to 7. - Args: - state: Enum for current alarm state. - Returns: - String representing current alarm state. - - Raises: - KeyError: None. - """ - if state == 0: - return "Not Active" - elif state == 1: - return "Active" - elif state == 2: - return "Shelved" -# elif state == 4: -# return "Return to unacknowledged" -# elif state == 5: -# return "Shelved state" -# elif state == 6: -# return "Suppressed-by-design" -# elif state == 7: -# return "Out-of-service state" - else: - return "Unknown" - - - - diff --git a/.resources/c39b20634a9a773040ac8cbe4b0d7dc30bb5f274db3cba7cd4f52ea926b36421 b/.resources/c39b20634a9a773040ac8cbe4b0d7dc30bb5f274db3cba7cd4f52ea926b36421 deleted file mode 100644 index ac549f0d25888cf5fd3e4716a49c9220e8d1efbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^@j%SV!2~4NST8pQQl6eJjv*Cs$pX@>I~bXF9nf%K zYPKjja#U4Cg?)X?0r#?=hy{CH7Q29JZAR(oqN}2+1zn@ eB*ZN0#PCe7M%DS=zb!yR89ZJ6T-G@yGywp|f+%tT diff --git a/.resources/c47415ecd4c1a5321ffcf56e32b9a92bb6c874af18897c991fb2f495ef02bcda b/.resources/c47415ecd4c1a5321ffcf56e32b9a92bb6c874af18897c991fb2f495ef02bcda deleted file mode 100644 index daa117a2..00000000 --- a/.resources/c47415ecd4c1a5321ffcf56e32b9a92bb6c874af18897c991fb2f495ef02bcda +++ /dev/null @@ -1,53 +0,0 @@ -def create_latency_tags(whid): - logger = system.util.getLogger("%s-Create-Latency-Tags" % (whid)) - if whid != "" and whid != None: - provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) - tag_paths = {"avg_latency":{"name":"avg_latency", "valueSource": "memory", - "dataType": "String", "value" : ""}, - "aws_data_copy":{"name":"aws_data_copy", "valueSource": "reference", - "dataType": "String", "sourceTagPath": "[~]System/aws_data.value"}, - "first_pass":{"name":"first_pass", "valueSource": "memory", - "dataType": "Boolean", "value" : True}, - "last_alarm_change_ts":{"name":"last_alarm_change_ts", "valueSource": "memory", - "dataType": "DateTime", "formatString": "yyyy-MM-dd h:mm:ss aa"}, - "prev_key":{"name":"prev_key", "valueSource": "memory", - "dataType": "String", "value" : ""}, - "rolling_latency":{"name":"rolling_latency", "valueSource": "memory", - "dataType": "StringArray", "alarmEvalEnabled": True, - "value": [ - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0", - "0" ],}} - - for k,v in tag_paths.items(): - if not system.tag.exists("%sLatency/%s" % (provider, k)): - base_path = "%s/Latency" % (provider) - system.tag.configure(base_path, v) - logger.info("Created tag %s" % (k)) \ No newline at end of file diff --git a/.resources/b16260a61181ced8f2fca658f051884364533458dd9c710dca47df8296618cd9 b/.resources/c4758c342b37e991630b661730c71bb22704f3949136d9d90a1a4c8cedff8fcf similarity index 100% rename from .resources/b16260a61181ced8f2fca658f051884364533458dd9c710dca47df8296618cd9 rename to .resources/c4758c342b37e991630b661730c71bb22704f3949136d9d90a1a4c8cedff8fcf diff --git a/.resources/c51d050c1ab687073628319fd27e1d76e0cea4d78413d8717a02227551de4926 b/.resources/c51d050c1ab687073628319fd27e1d76e0cea4d78413d8717a02227551de4926 deleted file mode 100644 index bfcced54..00000000 --- a/.resources/c51d050c1ab687073628319fd27e1d76e0cea4d78413d8717a02227551de4926 +++ /dev/null @@ -1,13 +0,0 @@ -{ - "base": { - "animation": { - "duration": "1s", - "keyframes": { - "0%": { - "backgroundColor": "#FCC400" - }, - "100%": {} - } - } - } -} \ No newline at end of file diff --git a/.resources/c53272c05ad01489e894cb7bd5d3459fad14969a8557df08eac92b654441414c b/.resources/c53272c05ad01489e894cb7bd5d3459fad14969a8557df08eac92b654441414c deleted file mode 100644 index 6e5394b252b0804095c702dfaefc26b39629fe62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6641 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 diff --git a/.resources/c54c723d5ed04b0037291a83206fe93afd2f36c523a84f47ed7c5e1167773b83 b/.resources/c54c723d5ed04b0037291a83206fe93afd2f36c523a84f47ed7c5e1167773b83 deleted file mode 100644 index 812c3c83..00000000 --- a/.resources/c54c723d5ed04b0037291a83206fe93afd2f36c523a84f47ed7c5e1167773b83 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FF6000", - "color": "#000000", - "fontFamily": "Arial", - "fontWeight": "bold" - } - } -} \ No newline at end of file diff --git a/.resources/c59827e64f3213e6e814cef11495ec432cdb5fb61e09888fd1b011d676dfa3e4 b/.resources/c59827e64f3213e6e814cef11495ec432cdb5fb61e09888fd1b011d676dfa3e4 deleted file mode 100644 index 1ca57f6b..00000000 --- a/.resources/c59827e64f3213e6e814cef11495ec432cdb5fb61e09888fd1b011d676dfa3e4 +++ /dev/null @@ -1,18 +0,0 @@ -{ - "base": { - "animation": { - "duration": "2.5s", - "keyframes": { - "0%": { - "boxShadow": "0 0 12px 5px rgba(245, 95, 89, 0.8)" - }, - "50%": { - "boxShadow": "0 0 20px 8px rgba(245, 95, 89, 1)" - }, - "100%": { - "boxShadow": "0 0 5px 2px rgba(245, 95, 89, 0.3)" - } - } - } - } -} \ No newline at end of file diff --git a/.resources/c5a6419678f97e45b9e39398319106a18721f8131118816a4c7de610fa74d91d b/.resources/c5a6419678f97e45b9e39398319106a18721f8131118816a4c7de610fa74d91d deleted file mode 100644 index d0564db6712e38824e9486338ef4c08692d00d35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1375 zcmV-l1)%zgP)y?>yf#g2iHm zn#^Vk?2?2BgOiwAT!(0PVf?QZym#YstQtko@kMtp?zDdgad!{eEekfbcLFLw38e-& zy|e+N#SWcl!$&oZ__C)L!(-3zPGL13j!eKLIj;9i@mh&a?2@i8c6vJxNfp?Y30uoZuQoRzU;dYpz=nt z^kxaVS2mCHN_o9clmY`t=M3zjkH(fTw`$~TfA4tvnjzV2xKCNk0QF`& z*2t~wCMUJFW#w_%`*;=;OPhR6=lt16R=)S!90anEnh4JAbl{i4acGv;VYS&|60O)a z@0=2yqiYX_XV^YnK=xU7Bn*r^gFx<6)BV9IJY;ZphBr_-wu@Vn4%AGXty_~$+<0O} zaHN(!&iEr@dt9`y! zUiWq1?D0N<0$)vfCaYxUZ?h=wvBt)9z;vi0x^~|63+xl9j;+09VxMx2lSK(Z@jxb@ zVQ+Q7zTj}}!R5X>2_~Bp;%hgy*&v`ycgiRVS^^}q(_7J(_V%t$LjEUrQFgl>Km7Xi zxOo0wK(7B#{s-sRD+gp?r}@X?dv)K-EKDrlMjKKy^Ad-HLLi5 zS(9Qfu5QED&hBxN?3_xH%LF8MlISp- z&8V%dMOauE1VNw}tjGHw-$v1=U$HswpX1r?sAuvrW1}+Tyfna*?(FaHM`B_k2cyrT zq9O=S#^;%P|K?yuHjGmIQ6Hp+PCfJIp;?r$%1=d;>QbNpPsZBH$_jFFayVFYbTo>K zi_zKHiLS1$qZp*YbA9`0ilEq|7@TL*1~qie@+NOfRQUsCL2~E*{yvB6>+3^ALaPI($c~uD8Xc1 zMv^!j4i2Z&>5!hD&f!v1Q_;}Sz}-n;WH}k`TtHGF%Zv=Su&{vS^FfFMDXQ(Emx0p*w*8X7`)csPQCgHc*q%Hh5*bdT(I6%!2BD#$sHv&pnd&Xvxq$wZ87d(M2M5sW z^+-xeLQqf;%F4=ohC35b{>gXIPC^|*hRn#w;0ckRpU>eM8yh_U-X;$~l0Th9Zu-^L z)f_G>E6eMII7?>&Uev{M+zkv2aJZC|6y8&n5A{W=fW9V)9CrqT0SO5Syrk6C)ty^} zy^$&)$(J%iu}4Qo@D5*vmlUhx0t21e%izf5!D{;5tv)}x<@o12?_ hgo=xc^SF5+^e?=oo4qNYA-wgTe~DWM4f5Dga> diff --git a/.resources/c62668d44e75ade4e72b317254612e055d703ede1a7742e4c1dce198f141668a b/.resources/c62668d44e75ade4e72b317254612e055d703ede1a7742e4c1dce198f141668a deleted file mode 100644 index 40f5bd30c1ae07955a459b3670fcaa7d9a986b3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2423 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 diff --git a/.resources/c6ac9672e900b1a22c8a6f90558de450e64e7406948d51ee417d853196d7bb22 b/.resources/c6ac9672e900b1a22c8a6f90558de450e64e7406948d51ee417d853196d7bb22 deleted file mode 100644 index f6b86ef03f0e3c7bbc1bdd37a17b3683b58152aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16464 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 diff --git a/.resources/c7b2974411b37c2fdb08a1d4965a1ce5cc5bd414f4fcb26f9a0b5800f7432c60 b/.resources/c7b2974411b37c2fdb08a1d4965a1ce5cc5bd414f4fcb26f9a0b5800f7432c60 deleted file mode 100644 index a188a798..00000000 --- a/.resources/c7b2974411b37c2fdb08a1d4965a1ce5cc5bd414f4fcb26f9a0b5800f7432c60 +++ /dev/null @@ -1,44 +0,0 @@ -def get_state_table(active_states): - faulted = [] - stopped = [] - running = [] - style_class = {} - state_lookup = {1:"Faulted", 2:"Stopped", 3:"Running"} - for i in active_states: - source_id = i - time_stamp = active_states[i].get("timestamp","Unknown") - time_stamp_converted = alarms.alarm_tables.get_timestamp(time_stamp) - state = active_states[i].get("state","Unknown") - if time_stamp !=("Unknown"): - duration = alarms.alarm_tables.convert(int(time_stamp)) - else: - duration = 0 - state_list = [] - if state == 3: - state_list = running - style_class = {"classes":"State-Styles/State5"} - state = state_lookup.get(state, 6) - elif state == 2: - state_list = stopped - style_class = {"classes":"State-Styles/State2"} - state = state_lookup.get(state, 6) - elif state == 1: - state_list = faulted - style_class = {"classes":"State-Styles/State1"} - state = state_lookup.get(state, 6) - else: - pass - - state_row = row_builder.build_row_with_view(SourceId = source_id, - TimeStamp = time_stamp_converted, - Duration = duration, - State = state, - StyleClass = style_class ) - state_list.append(state_row) - - return faulted + stopped + running - - - - - diff --git a/.resources/c49c57e562baab42c83af24f25e8a771f6f0e187beb6734a646a38488d49b3b4 b/.resources/c7e00d2e728d61fa138b747d7fd589b993685b514259f29c899424edb1443dee similarity index 100% rename from .resources/c49c57e562baab42c83af24f25e8a771f6f0e187beb6734a646a38488d49b3b4 rename to .resources/c7e00d2e728d61fa138b747d7fd589b993685b514259f29c899424edb1443dee diff --git a/.resources/c81143922af44033e07fb9828b3238cfef50043e60556092305243dc6d0698e6 b/.resources/c81143922af44033e07fb9828b3238cfef50043e60556092305243dc6d0698e6 deleted file mode 100644 index 29da3ef85f02029a0b3d47033d23df4b0d0e577b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16059 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 A(*OVf diff --git a/.resources/c912ddf3466bd1f7fd5030bb618726df6bb811e4f80d8fb11ce60b5ec9a680c9 b/.resources/c912ddf3466bd1f7fd5030bb618726df6bb811e4f80d8fb11ce60b5ec9a680c9 deleted file mode 100644 index 39882b59634bf0fe1be3b2291e5ad681438bc881..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3619 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 diff --git a/.resources/c942cb7c173500718da21c8c86ae661f5f4bf4679e5706b672975fc04b40cd2c b/.resources/c942cb7c173500718da21c8c86ae661f5f4bf4679e5706b672975fc04b40cd2c new file mode 100644 index 00000000..f737d287 --- /dev/null +++ b/.resources/c942cb7c173500718da21c8c86ae661f5f4bf4679e5706b672975fc04b40cd2c @@ -0,0 +1,22 @@ +def set_priority_filters(self): + filters = self.props.value + payload = {} + payload["data"] = filters + system.perspective.sendMessage("set-priority-filters", payload = payload, + scope = "page") + +def set_time_from_filters(self): + "This filter sets the time from for history" + time = self.props.value + payload = {} + payload["data"] = time + system.perspective.sendMessage("set-from-filters", payload = payload, + scope = "page") + +def set_time_to_filters(self): + "This filter sets the time to for history" + time = self.props.value + payload = {} + payload["data"] = time + system.perspective.sendMessage("set-to-filters", payload = payload, + scope = "page") \ No newline at end of file diff --git a/.resources/c949e642ce19bf1209efdc7b9f31952376589c2a9b27891115fb5193c9a3a3f7 b/.resources/c949e642ce19bf1209efdc7b9f31952376589c2a9b27891115fb5193c9a3a3f7 deleted file mode 100644 index 235ed32b5fd3d5a6e8b4378562783e7b00b4bb6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14217 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 diff --git a/.resources/cbf4b8d1104224dc6716438322789cd2f1ec8f9867c802212ff20bf708cf4896 b/.resources/cbf4b8d1104224dc6716438322789cd2f1ec8f9867c802212ff20bf708cf4896 deleted file mode 100644 index 72d1c1699a8a634e0ced9cfb52563d04c564a88b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 698 zcmV;r0!96aP)q3rS5|EdWRU+S# z6r$ABBR3ESL%|_S)B+c<72g{CHfVjY9wm}0X?gE{ulaLxldEYnzG;@sbK$u&+ z-Sk}b#7eP=UlWPv#P0nr7NF7DX!>fZR4T%wz_1L?i;+bwr`5ak)}%F14CqCDuo#>T z&raV?`wG4;Z&&Ii<;uHG)2G@?*)wZ*{QoF5^~goyVEo5;`X%kiIx^)9HcjYv=sa_d z%~UVe??3EwISz|w@E8t~2a`W1v8CW6%!Fr7QYY{Mu%G-z|8?QonRjB|95EOE6dJ?^ zv`TV;QHN4f59y?Z@Pe2Z@r(Nle*F4UNg56f8{I~e&y+9c*(@6=MRpQ9=zHjay}sU- zPc7JI;-ko1Fn3RP#xKTpPkW-2(AYHnfqtwRTB1(S)ow=xN=-fFP8tXd;B|sNwiaFM z^Y@|GVLgsh$1Bo`MY3S)U>UaK+wDt6d;sg+>Fr#P gt!udI-$e@f3qw5XpPFxR&;S4c07*qoM6N<$f;tmJkpKVy diff --git a/.resources/cc7329eaf82d448507526213bc15f1b2e98ef426c7a61cddd9b7c2a245ef8ed9 b/.resources/cc7329eaf82d448507526213bc15f1b2e98ef426c7a61cddd9b7c2a245ef8ed9 deleted file mode 100644 index 5c8a4fcb..00000000 --- a/.resources/cc7329eaf82d448507526213bc15f1b2e98ef426c7a61cddd9b7c2a245ef8ed9 +++ /dev/null @@ -1,376 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": {}, - "root": { - "children": [ - { - "custom": { - "delay": 2000, - "duration_filter": "value", - "run_update": true, - "source_id_filter": "value", - "state_filter": "value", - "time_from_filter": "value", - "time_to_filter": "value" - }, - "events": { - "component": { - "onRowClick": { - "config": { - "script": "\trow \u003d event.value\n\tmhe_id \u003d row.get(\"SourceId\")\n\tnavigation.amzl_navigation.navigate_to_alarm(self, mhe_id)\n\tsystem.perspective.alterDock(\"Docked-South\", { \"handleIcon\": \"material/play_arrow\" } )\n#\tsystem.perspective.openDock(\"Docked-South\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Table" - }, - "position": { - "basis": "400px" - }, - "propConfig": { - "custom.update": { - "binding": { - "config": { - "expression": "now({this.custom.delay})" - }, - "type": "expr" - }, - "onChange": { - "enabled": null, - "script": "\t\n empty_row \u003d row_builder.build_row(\n Duration \u003d \"\",\n Timestamp \u003d \"\",\n Source \u003d \"\")\n no_filter \u003d False\n \n if self.custom.run_update and system.tag.exists(\"System/state_messages\"):\n \n tags_to_read \u003d system.tag.readBlocking([\"System/state_messages\",\"Configuration/DetailedViews\"])\n decode_state_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n detailed_view_decoded \u003d system.util.jsonDecode(tags_to_read[1].value)\n if len(decode_state_data) \u003e 0:\n \n state_data \u003d state.state_tables.get_state_table(decode_state_data)\t\t\n self.props.data \u003d state_data\n else:\n self.props.data \u003d [empty_row]\n else:\n self.props.data \u003d [empty_row]" - } - } - }, - "props": { - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "SourceId", - "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": {}, - "visible": true, - "width": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Duration", - "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": {}, - "visible": true, - "width": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY HH:mm:ss", - "editable": false, - "field": "TimeStamp", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "State", - "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": [ - { - "style": null, - "value": { - "Duration": { - "value": "" - }, - "Source": { - "value": "" - }, - "Timestamp": { - "value": "" - } - } - } - ], - "headerStyle": { - "classes": "Background-Styles/Controller" - }, - "pager": { - "activePage": 4, - "bottom": false - }, - "selection": { - "data": [ - { - "style": null, - "value": { - "Duration": { - "value": "" - }, - "Source": { - "value": "" - }, - "Timestamp": { - "value": "" - } - } - } - ], - "selectedColumn": "SourceId", - "selectedRow": 0 - } - }, - "type": "ia.display.table" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/cc85358d88bb39fad11bd8028fd3b69cf7c29863df18469f0f948889fc62c21e b/.resources/cc85358d88bb39fad11bd8028fd3b69cf7c29863df18469f0f948889fc62c21e deleted file mode 100644 index dd3e5d8a..00000000 --- a/.resources/cc85358d88bb39fad11bd8028fd3b69cf7c29863df18469f0f948889fc62c21e +++ /dev/null @@ -1,17 +0,0 @@ -def showAlert(state, title, message, showCloseBtn, btnTextPrimary, btnTextSecondary, btnIconPrimary, btnIconSecondary, btnIconAlignment="left", btnActionPrimary="", btnActionSecondary="", btnActionClose="", payload={}): - params = { - "state": state, - "title": title, - "message": message, - "showCloseBtn": showCloseBtn, - "btnTextPrimary": btnTextPrimary, - "btnTextSecondary": btnTextSecondary, - "btnIconPrimary": btnIconPrimary, - "btnIconSecondary": btnIconSecondary, - "btnIconAlignment": btnIconAlignment, - "btnActionPrimary": btnActionPrimary, - "btnActionSecondary": btnActionSecondary, - "btnActionClose": btnActionClose, - "payload": payload ## Added 2021-09-23 - } - system.perspective.openPopup(id="alertDialog", view="Alerts/alert", params=params, showCloseIcon=False, draggable=False, resizable=False, modal=True, overlayDismiss=True, btnActionPrimary="closePopup") diff --git a/.resources/cc902416fcc9db4098151902f202605dcbe0b559013deb6820cf9a4db031a80a b/.resources/cc902416fcc9db4098151902f202605dcbe0b559013deb6820cf9a4db031a80a deleted file mode 100644 index 399a4f77bea89357efb21cbe08df8388d2eacd77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmV-g0j2&QiwFP!000000CiEpN&_(vo!HiHTWi~!h=)B1Uc&CS#ZtT#iU`_E{eYOJ zCA!(Ho3tYM3*t@u1}}mK|3N>)pYZCW5l)mb>B zHd}HlSAs3AR?K3SuB2I;UvLYcTxf0mnC$_LX`ebVQ7;+95r%6318(GL`Ru7Y`)xYM>PO5~u`z seLx(jO5CPuUK@~Iza^-w+1BqaU4_Y8(R*${@?)s0A}@~3IG5A diff --git a/.resources/ccc6f9b294ac59fdb28946cdf3358022f6f2848cd2acdaa3c50cd42dc8167277 b/.resources/ccc6f9b294ac59fdb28946cdf3358022f6f2848cd2acdaa3c50cd42dc8167277 deleted file mode 100644 index b9257eae..00000000 --- a/.resources/ccc6f9b294ac59fdb28946cdf3358022f6f2848cd2acdaa3c50cd42dc8167277 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "var(--neutral-30)", - "color": "var(--neutral-50)", - "margin": "4px", - "padding": "4px" - } - } -} \ No newline at end of file diff --git a/.resources/cd54699264603e57bd5a1ac3b837eae98459d2c72dfaa08af6d9427718a54a21 b/.resources/cd54699264603e57bd5a1ac3b837eae98459d2c72dfaa08af6d9427718a54a21 deleted file mode 100644 index ec8c9ef9..00000000 --- a/.resources/cd54699264603e57bd5a1ac3b837eae98459d2c72dfaa08af6d9427718a54a21 +++ /dev/null @@ -1,97 +0,0 @@ -{ - "custom": {}, - "params": { - "direction": { - "downward": false, - "left": false, - "right": false, - "upward": false - }, - "pageid": "" - }, - "propConfig": { - "params.direction": { - "paramDirection": "input", - "persistent": true - }, - "params.pageid": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 45, - "width": 45 - } - }, - "root": { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.navigate(\"/\" + self.view.params.pageid)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "45px" - }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "path": "view.params.pageid" - }, - "type": "property" - } - }, - "props.align": { - "persistent": true - }, - "props.image.icon.path": { - "binding": { - "config": { - "expression": "if({view.params.direction.upward},\"material/keyboard_arrow_up\",\nif({view.params.direction.downward},\"material/keyboard_arrow_down\",\nif({view.params.direction.left},\"material/keyboard_arrow_left\",\nif({view.params.direction.right},\"material/keyboard_arrow_right\",0))))" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "height": 45, - "icon": { - "color": "#000000" - }, - "position": "center", - "width": 45 - }, - "style": { - "backgroundColor": "#F6F6F6" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/cd8eecd5e83ed3087af07e7b47e754a1e5369dd25fee995c3fb44c1dc855f7d9 b/.resources/cd8eecd5e83ed3087af07e7b47e754a1e5369dd25fee995c3fb44c1dc855f7d9 deleted file mode 100644 index 474f8d618efb29b0d541fc509badf0ac616cd6b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2318 zcmV+p3Gw!cP)a;wtn7#7>({UL z;ll?%M*m*Ccwt2)<-u>xA3l5-dg7lybbS8&*-A@G<7~tLcj1pptE?!iejpx1B0p!GiT1Up+kpSuU@?zbY5PbJ$v>n0E$PD0AOhX zAW>m=xPiZS@7_7E(W6IOmo8mw;lhP>`0!yne*C!0kt0X!;K74-pjr+cI^@DR*TT;s zn>TN^2@@t*@7}$g^*eX&1VFLp0P7QWBX{1qb<5crH*TEo{KSb94rt%LeYSV+UOys* zg@p-4_jwipJUR{>IN21Tj`rROD`w(*IM$>gm&`ZPlt()}~FH z+5rmO^XJb!&N4GIoi!Bw7sj+cECMFIoGWY+0+d??ZtmQWQTot%#tF~S+c7D-4lqMve810bCOfGmJ+cBi<5IRLb8-`>xcEn8+id-n8h zLR=wSPm~~%Xv}gA;8Ukgb@tih;>C-tUAuPf1vbO84p4D-`}S??*s-H8M1kUtbC?)B zc(8-))Txt$1elB~1YqSy1RaDyQc{x3`t|EQHtE~ks{wHJ>eV)V`t*R_aLNOE{`~pw zX1PRcATYdh=T48Y9Xob3SXifIL+~6uo}q%Uhyf1QzIye_di3aFyLRnzCS+Iu*$w4^ z1VNEDz!62TKzm{XxQGO*Plz={x(F%a7m^UX7Nf`V2i;^L*%W3k43fBje#(hrMDC}g zkbz7mv?;uyqlDkOMsh7(y3}JC78S#6mhd4Nok0PdHf@>*DLV+eP9h)#^{iR5g6Fu- zIRJ@Im|>$ZGi1mRFGKw1Ncquy${3Y^m=6QQQ^X%@u^Xdnym|A+7g49gOcWs3a4owh zM%Z1LL24f0DHZ4-zNl{)R(wGK46_y?W&w_C6;=XCs4(cpVDIVErw&jxsxCnRy8{5v zhXEoOCg_Qw#*G{Mb1)2$rcImrxX(HOZQs7#?M4Bzp4LZ!cYr_Lyy@dN8I&mg!r(BL zl9J->3`Hmp15^uS_-x+1xwC<5n>1gjb>LY6sSRM*27`t(IO)Q#zT^5B6d(Ywm{LJPz+@C4RRMq) zn=@yQ-@_>Dk-7jXQ7Bst2B?fh86aQ=5OQf4Ab?2*O3jrkR~#7bqVDlNjE?#MqKDEI zxHvmABcY46V_3nJ7$=!1)(jTxG|V9DuV26Jb0mW(pi)y)y@XMQco9NxZCNav=ww(9 zk_2T@21PYBj1G{Uo$bs~=}}1Aqx}(IfI|m$u(-I`u3fuk=gyt;iHF*GtI^f5xuwY)`-1C0FjtReO$x~55{g%!M`P zKE2oCE|?+cmFZ#8N22I;32UODlqB4befsptzwbSH^2FmoU!wp>5(prPLVtu6;!Z;W z9R*ja?P1{G2mrM~5rkKLn}vgR$7$aj{zysD7BcCCgBPG5`P)$}zyM=?Z%HsExUBJgHwJv^PS6TBBv7*di&IkXWw_uK`f5ru0x^aD|3Uz@QYMD&}EuBo6fu7H~hJ+RC%A#AYeb ogbi%MB>kK6rJ)1H(J7mM0kkU1S!nHpfdBvi07*qoM6N<$g7ZOE6951J diff --git a/.resources/ce18d353ccf2463ed50d0dd7fbedb7df6e2a883b96dae5c2892a035fd112f91e b/.resources/ce18d353ccf2463ed50d0dd7fbedb7df6e2a883b96dae5c2892a035fd112f91e deleted file mode 100644 index cf0e6a03b27e59eb9e86ace8648f7162daa7c2f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1045 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 z 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 diff --git a/.resources/af6de1935602aab215e2335c2402356f14d64d58cc877dc989c4fabd0108a96e b/.resources/d2d9a887c376d96a741c3c8aa809fd0ea6bd658dffb251068f7b222fd81c32fe similarity index 100% rename from .resources/af6de1935602aab215e2335c2402356f14d64d58cc877dc989c4fabd0108a96e rename to .resources/d2d9a887c376d96a741c3c8aa809fd0ea6bd658dffb251068f7b222fd81c32fe diff --git a/.resources/66b40c8fca4cab46884bad6d27eb79197b893e419b937336ac07f9df9c083009 b/.resources/d32b424e246993d01e8782edddba5afd1cccad5ea3aca847f96460542d4dc2cd similarity index 100% rename from .resources/66b40c8fca4cab46884bad6d27eb79197b893e419b937336ac07f9df9c083009 rename to .resources/d32b424e246993d01e8782edddba5afd1cccad5ea3aca847f96460542d4dc2cd diff --git a/.resources/8f25d51d3cfaa7230d865ece5f0cb5af462731ecb35535b808f295804b0edba0 b/.resources/d36bf2995ee6214c509a5274a12826a879f18be01d860d2d1985fbdc0649749b similarity index 100% rename from .resources/8f25d51d3cfaa7230d865ece5f0cb5af462731ecb35535b808f295804b0edba0 rename to .resources/d36bf2995ee6214c509a5274a12826a879f18be01d860d2d1985fbdc0649749b diff --git a/.resources/d3b8d41929d5d74a2029719a7738bbc7609845febabd59575bd14e7b499c8c49 b/.resources/d3b8d41929d5d74a2029719a7738bbc7609845febabd59575bd14e7b499c8c49 deleted file mode 100644 index 79af8484..00000000 --- a/.resources/d3b8d41929d5d74a2029719a7738bbc7609845febabd59575bd14e7b499c8c49 +++ /dev/null @@ -1,1201 +0,0 @@ -{ - "custom": { - "data": "value" - }, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\tproject_info \u003d system.perspective.getProjectInfo()\n\tviews \u003d project_info.get(\u0027views\u0027,[])\n\tfilter_criterion \u003d \"Symbol-Views\"\n\tfilter_criterion2 \u003d \"Symbol-Library-Views\"\n\tfilter_criterion3 \u003d \"Controller-Views\"\n\tfilter_criterion4 \u003d \"Device-Views\"\n\tfiltered_views \u003d [\n\t\tview for view in views \n\t\t\t\n\t\tif filter_criterion in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion2 in view.get(\u0027path\u0027,\u0027\u0027) \n\t\tand not filter_criterion3 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\tand not filter_criterion4 in view.get(\u0027path\u0027,\u0027\u0027)\n\t\t]\n\tjson_structure \u003d []\n\tfor view in filtered_views:\n\t\t\n\t\tif \u0027Test\u0027 not in view[\u0027path\u0027]:\n\t\t\tinstance \u003d {\n\t\t\t\t\"instanceStyle\": {\n\t\t\t\t\t\"classes\": \"\"\n\t\t\t\t},\n\t\t\t\t\"instancePosition\": {},\n\t\t\t\t\"Path\": view.get(\u0027path\u0027,\u0027\u0027),\n\t\t\t\t\"forceRunning\":3,\n\t\t\t\t\"forceFault\": None,\n\t\t\t\t\"has_state\":True\n\t\t\t}\n\t\t\tjson_structure.append(instance)\n\t\t\n\tjson_result \u003d system.util.jsonEncode(json_structure)\n\tself.params.Dataset \u003d filtered_views\n\tself.params.FilteredViews \u003d json_structure\n\tself.session.custom.alarm_filter.show_running \u003d True\n\tself.session.custom.alarm_filter.show_safety \u003d True\n\tself.session.custom.alarm_filter.show_diagnostic \u003d True\n\tself.session.custom.alarm_filter.show_gateways \u003d True\n\tself.session.custom.alarm_filter.show_low_alarm \u003d True\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "params": { - "Dataset": [ - { - "path": "Symbol-Views/Equipment-Views/ARSAW" - }, - { - "path": "Symbol-Views/Equipment-Views/AUS" - }, - { - "path": "Symbol-Views/Equipment-Views/Button" - }, - { - "path": "Symbol-Views/Equipment-Views/Camera" - }, - { - "path": "Symbol-Views/Equipment-Views/CognexCamera" - }, - { - "path": "Symbol-Views/Equipment-Views/ControlCabinet" - }, - { - "path": "Symbol-Views/Equipment-Views/Divert_Arm" - }, - { - "path": "Symbol-Views/Equipment-Views/Estop" - }, - { - "path": "Symbol-Views/Equipment-Views/GoodsLift" - }, - { - "path": "Symbol-Views/Equipment-Views/JAM" - }, - { - "path": "Symbol-Views/Equipment-Views/JR_Button" - }, - { - "path": "Symbol-Views/Equipment-Views/Kobukuro" - }, - { - "path": "Symbol-Views/Equipment-Views/Lift" - }, - { - "path": "Symbol-Views/Equipment-Views/Light_Curtain" - }, - { - "path": "Symbol-Views/Equipment-Views/Main_Panel" - }, - { - "path": "Symbol-Views/Equipment-Views/Network" - }, - { - "path": "Symbol-Views/Equipment-Views/PPI" - }, - { - "path": "Symbol-Views/Equipment-Views/Photocell2_Lift" - }, - { - "path": "Symbol-Views/Equipment-Views/Photocell_Lift" - }, - { - "path": "Symbol-Views/Equipment-Views/PinDetection" - }, - { - "path": "Symbol-Views/Equipment-Views/Pointer" - }, - { - "path": "Symbol-Views/Equipment-Views/PressureSwitch" - }, - { - "path": "Symbol-Views/Equipment-Views/PullChord" - }, - { - "path": "Symbol-Views/Equipment-Views/PullChord_End" - }, - { - "path": "Symbol-Views/Equipment-Views/PullChord_Line" - }, - { - "path": "Symbol-Views/Equipment-Views/PullChord_Line_Vertical" - }, - { - "path": "Symbol-Views/Equipment-Views/RFID" - }, - { - "path": "Symbol-Views/Equipment-Views/Robot" - }, - { - "path": "Symbol-Views/Equipment-Views/SLAMs" - }, - { - "path": "Symbol-Views/Equipment-Views/SS_Button" - }, - { - "path": "Symbol-Views/Equipment-Views/SafetyGate" - }, - { - "path": "Symbol-Views/Equipment-Views/SmartPac" - }, - { - "path": "Symbol-Views/Equipment-Views/Spiral" - }, - { - "path": "Symbol-Views/Equipment-Views/Stacker_Destacker" - }, - { - "path": "Symbol-Views/Equipment-Views/Status" - }, - { - "path": "Symbol-Views/Equipment-Views/StatusNonPowered" - }, - { - "path": "Symbol-Views/Equipment-Views/StatusNonPowered_NS" - }, - { - "path": "Symbol-Views/Equipment-Views/Status_NS" - }, - { - "path": "Symbol-Views/Equipment-Views/THEA" - }, - { - "path": "Symbol-Views/Equipment-Views/Test" - } - ], - "FilteredViews": [ - { - "Path": "Symbol-Views/Equipment-Views/ARSAW", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/AUS", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Button", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Camera", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/CognexCamera", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/ControlCabinet", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Divert_Arm", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Estop", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/GoodsLift", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/JAM", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/JR_Button", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Kobukuro", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Lift", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Light_Curtain", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Main_Panel", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Network", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/PPI", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Photocell2_Lift", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Photocell_Lift", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/PinDetection", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Pointer", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/PressureSwitch", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/PullChord", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/PullChord_End", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/PullChord_Line", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/PullChord_Line_Vertical", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/RFID", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Robot", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/SLAMs", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/SS_Button", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/SafetyGate", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/SmartPac", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Spiral", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Stacker_Destacker", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Status", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/StatusNonPowered", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/StatusNonPowered_NS", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/Status_NS", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "Path": "Symbol-Views/Equipment-Views/THEA", - "forceFault": null, - "forceRunning": 3, - "has_state": true, - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - } - ] - }, - "propConfig": { - "custom.data": { - "persistent": true - }, - "params.Dataset": { - "paramDirection": "output" - }, - "params.FilteredViews": { - "paramDirection": "output" - } - }, - "props": { - "defaultSize": { - "height": 309, - "width": 378 - }, - "theme": "dark" - }, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Table" - }, - "propConfig": { - "props.data[11].Color.style.backgroundColor": { - "binding": { - "config": { - "path": "session.custom.colours.state5" - }, - "type": "property" - } - }, - "props.data[11].Color.style.color": { - "binding": { - "config": { - "expression": "if({session.custom.colours.colour_impaired}\u003d true, \u0027#000000\u0027,\u0027#FFFFFF\u0027) " - }, - "type": "expr" - } - }, - "props.data[12].Color.style.backgroundColor": { - "binding": { - "config": { - "path": "session.custom.colours.state4" - }, - "type": "property" - } - }, - "props.data[13].Color.style.backgroundColor": { - "binding": { - "config": { - "path": "session.custom.colours.state3" - }, - "type": "property" - } - }, - "props.data[14].Color.style.backgroundColor": { - "binding": { - "config": { - "path": "session.custom.colours.state2" - }, - "type": "property" - } - }, - "props.data[15].Color.style.backgroundColor": { - "binding": { - "config": { - "path": "session.custom.colours.state1" - }, - "type": "property" - } - }, - "props.data[1].Color.style.backgroundColor": { - "binding": { - "config": { - "path": "session.custom.colours.state0" - }, - "type": "property" - } - }, - "props.data[3].Color.style.backgroundColor": { - "binding": { - "config": { - "path": "session.custom.colours.state5" - }, - "type": "property" - } - }, - "props.data[3].Color.style.color": { - "binding": { - "config": { - "expression": "if({session.custom.colours.colour_impaired}\u003d true, \u0027#000000\u0027,\u0027#FFFFFF\u0027) " - }, - "type": "expr" - } - } - }, - "props": { - "cells": { - "style": { - "paddingLeft": 5 - } - }, - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Color", - "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": "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": false, - "strictWidth": true, - "style": { - "classes": "" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "visible": true, - "width": 85 - }, - { - "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": "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": false, - "strictWidth": false, - "style": { - "borderLeftStyle": "solid", - "borderLeftWidth": 1, - "borderRightStyle": "solid", - "borderRightWidth": 1, - "classes": "" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "visible": true, - "width": 100 - } - ], - "data": [ - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "backgroundColor": "", - "borderBottomStyle": "solid", - "borderBottomWidth": 1, - "borderLeftStyle": "hidden", - "borderRightStyle": "hidden", - "classes": "", - "font-weight": "bold" - }, - "value": "State" - }, - "Description": { - "align": "center", - "editable": false, - "justify": "left", - "style": { - "backgroundColor": "", - "borderBottomStyle": "solid", - "borderBottomWidth": 1, - "borderLeftStyle": "hidden", - "classes": "some-class", - "font-weight": "bold" - }, - "value": "Description" - } - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "classes": "", - "color": "#000000" - }, - "value": "Stopped" - }, - "Description": "MHE is Stopped/Disabled\n" - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "backgroundColor": "#c9fcc0", - "classes": "", - "color": "#000000" - }, - "value": "Enabled" - }, - "Description": "MHE is Enabled (Not Running)" - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "value": "Running" - }, - "Description": "MHE is Running" - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "backgroundColor": "#00ffd0", - "classes": "", - "color": "#000000" - }, - "value": "Power Saving" - }, - "Description": "MHE is in Power Saving Mode" - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "backgroundColor": "#ff8c00", - "classes": "", - "color": "#000000" - }, - "value": "Jammed" - }, - "Description": "MHE is Jammed" - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "backgroundColor": "#0008ff", - "classes": "", - "color": "#FFFFFF" - }, - "value": "Full" - }, - "Description": "MHE is Full" - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "backgroundColor": "#946446", - "classes": "", - "color": "#FFFFFF" - }, - "value": "Maint Mode" - }, - "Description": "MHE is in Maintenance Mode" - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "backgroundColor": "#B45C5C", - "classes": "", - "color": "#FFFFFF" - }, - "value": "Maint Running Mode" - }, - "Description": "MHE Running in Maintenance Mode" - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "backgroundColor": "#ff0000", - "classes": "", - "color": "#FFFFFF" - }, - "value": "Estop / Faulted\n" - }, - "Description": "MHE is Estopped / Faulted\n" - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "backgroundColor": "", - "borderBottomStyle": "solid", - "borderBottomWidth": 1, - "borderLeftStyle": "hidden", - "borderRightStyle": "hidden", - "borderTopStyle": "solid", - "borderTopWidth": 1, - "classes": "", - "font-weight": "bold" - }, - "value": "Priority" - }, - "Description": { - "align": "center", - "editable": false, - "justify": "left", - "style": { - "backgroundColor": "", - "borderBottomStyle": "solid", - "borderBottomWidth": 1, - "borderLeftStyle": "hidden", - "borderTopStyle": "solid", - "borderTopWidth": 1, - "classes": "", - "font-weight": "bold" - }, - "value": "Description" - } - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "value": "Healthy" - }, - "Description": "Healthy, no active alarms" - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "classes": "", - "color": "#000000" - }, - "value": "Diagnostic" - }, - "Description": "Diagnostic Information" - }, - { - "Color": { - "align": "center", - "borderLeftColor": "white", - "justify": "left", - "style": { - "classes": "", - "color": "#000000" - }, - "value": "Low" - }, - "Description": "Running at reduced capacity", - "Status": "Low" - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "classes": "" - }, - "value": "Medium" - }, - "Description": "Controlled Stop" - }, - { - "Color": { - "align": "center", - "justify": "left", - "style": { - "classes": "some-class" - }, - "value": "High" - }, - "Description": "Uncontrolled Stop" - } - ], - "dragOrderable": false, - "enableHeader": false, - "headerStyle": { - "backgroundColor": "#2B2B2B", - "color": "#FFFFFF", - "textIndent": "0px" - }, - "pager": { - "bottom": false - }, - "rows": { - "highlight": { - "color": "#FFFFFF", - "enabled": false - }, - "style": { - "classes": "Background-Styles/Controller" - } - }, - "selection": { - "enableRowSelection": false, - "style": { - "fontWeight": "bold" - } - } - }, - "type": "ia.display.table" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "EmbeddedView" - }, - "position": { - "basis": "320px" - }, - "propConfig": { - "props.params.Dataset": { - "binding": { - "config": { - "path": "view.params.Dataset" - }, - "type": "property" - } - }, - "props.params.FilteredViews": { - "binding": { - "config": { - "path": "view.params.FilteredViews" - }, - "type": "property" - } - } - }, - "props": { - "path": "PopUp-Views/Legend_Popup/Legend-table" - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "FlexContainer_6" - }, - "position": { - "basis": "800px", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "tabIndex": 1 - }, - "props": { - "direction": "column", - "style": { - "overflow": "visible" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "TabContainer" - }, - "position": { - "basis": "1377px" - }, - "propConfig": { - "props.tabs[0]": { - "binding": { - "config": { - "expression": "if({session.custom.colours.colour_impaired}\u003dTrue, \u0027Alt Color\u0027, \u0027Color\u0027)" - }, - "type": "expr" - } - } - }, - "props": { - "menuStyle": { - "fontWeight": "bold" - }, - "style": { - "classes": "Background-Styles/Controller" - }, - "tabs": [ - null, - "Icons" - ] - }, - "type": "ia.container.tab" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "backgroundColor": "#3B3B3B", - "opacity": 1 - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/394444649fb5a5c29409b9125b4c8741bb106665933fed43a5c4502f1aee82c4 b/.resources/d421518f25d0da8b74a79977e78ab8811c3dd4c75a41ed72c557ec4b7853b002 similarity index 100% rename from .resources/394444649fb5a5c29409b9125b4c8741bb106665933fed43a5c4502f1aee82c4 rename to .resources/d421518f25d0da8b74a79977e78ab8811c3dd4c75a41ed72c557ec4b7853b002 diff --git a/.resources/d46df332271d9da12133545a130e1c1ec4555ce875bc770c39bad5998ebdff0a b/.resources/d46df332271d9da12133545a130e1c1ec4555ce875bc770c39bad5998ebdff0a deleted file mode 100644 index 11b144143eb935e30de2028d89e00b99776fcb2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1g!3HF2ETG++>_RPha7lX67TJf=g|FPLPv#$x15(!qsXS$y!RRwNWE#|>RLaezQgiR%Yhk_9z2M;a6jX4h5Upk zeS42CSue=@{yOuzHxBN#`?z>l=W^bfV>M&zt*5+cHyN@l4qnL;IJl{{>0E8g$*V_= rpIv2Hm8Z=0^opsAPF8Q^e`)&@`rBum%@@)Fx`@Hk)z4*}Q$iB}f^JO` diff --git a/.resources/d569be9868ebf12be906bcbd09acd139f5306a911b51fbc7b4f71c96cf585e4c b/.resources/d569be9868ebf12be906bcbd09acd139f5306a911b51fbc7b4f71c96cf585e4c deleted file mode 100644 index 6bb0b387..00000000 --- a/.resources/d569be9868ebf12be906bcbd09acd139f5306a911b51fbc7b4f71c96cf585e4c +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "paddingBottom": "5px", - "paddingLeft": "5px", - "paddingRight": "5px", - "paddingTop": "5px" - } - } -} \ No newline at end of file diff --git a/.resources/d470d6c9110119773b029c97085c557db6f028bd64e7a5f8f1a369111531317e b/.resources/d607eb79f6e0f86de655f59d74f4dfc9ab9ec714c529e66b42747522dae14c65 similarity index 100% rename from .resources/d470d6c9110119773b029c97085c557db6f028bd64e7a5f8f1a369111531317e rename to .resources/d607eb79f6e0f86de655f59d74f4dfc9ab9ec714c529e66b42747522dae14c65 diff --git a/.resources/d63c5c6b1c30a53451aec9f0d4ffab2478af62c5b3d28c43e5048e0bc06c5172 b/.resources/d63c5c6b1c30a53451aec9f0d4ffab2478af62c5b3d28c43e5048e0bc06c5172 deleted file mode 100644 index d2127d39..00000000 --- a/.resources/d63c5c6b1c30a53451aec9f0d4ffab2478af62c5b3d28c43e5048e0bc06c5172 +++ /dev/null @@ -1,4965 +0,0 @@ -{ - "custom": {}, - "params": { - "tagProps": [ - "", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 447, - "width": 917 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Spacer1" - }, - "position": { - "basis": "20px" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50px" - }, - "props": { - "text": "NAME" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Spacer" - }, - "position": { - "basis": "100px" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "DeviceName" - }, - "position": { - "basis": "205px" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Name" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Spacer1" - }, - "position": { - "basis": "20px" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50px" - }, - "props": { - "text": "STATUS" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Spacer" - }, - "position": { - "basis": "100px" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Priority" - }, - "position": { - "basis": "205px" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "expression": "{/root.custom.state}" - }, - "transforms": [ - { - "fallback": "State-Styles/State0", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "State-Styles/Background-Fill/State1" - }, - { - "input": 2, - "output": "State-Styles/Background-Fill/State2" - }, - { - "input": 3, - "output": "State-Styles/Background-Fill/State3" - }, - { - "input": 4, - "output": "State-Styles/Background-Fill/State4" - }, - { - "input": 5, - "output": "State-Styles/Background-Fill/State5" - }, - { - "input": 6, - "output": "State-Styles/Background-Fill/State6" - }, - { - "input": 0, - "output": "State-Styles/State0" - } - ], - "outputType": "style-list", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "expression": "{/root.custom.state}" - }, - "transforms": [ - { - "fallback": "", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "Aborted" - }, - { - "input": 2, - "output": "Stopped" - }, - { - "input": 3, - "output": "Process alarm" - }, - { - "input": 4, - "output": "Warning" - }, - { - "input": 5, - "output": "Running" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - } - }, - "props": { - "style": { - "textAlign": "left" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Priority" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "82px" - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Priority_0" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "100px", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Info_tab" - }, - "position": { - "tabIndex": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "custom": { - "delay": 2000 - }, - "events": { - "component": { - "onRowDoubleClick": { - "config": { - "script": "\tnavigation.alarm_navigation.navigate_to_alarm(self, event)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "AlarmTable" - }, - "position": { - "basis": "623px", - "grow": 1 - }, - "propConfig": { - "custom.run_update": { - "binding": { - "config": { - "path": "view.params.tagProps[9]" - }, - "type": "property" - } - }, - "custom.update": { - "binding": { - "config": { - "expression": "now({this.custom.delay})" - }, - "type": "expr" - }, - "onChange": { - "enabled": null, - "script": "\timport time\n\tfrom datetime import datetime\n\tstartTime \u003d datetime.now()\n\t\n\tdef convert(duration):\n\t\tsecs \u003d duration/1000\n\t\treturn time.strftime(\"%H:%M:%S\", time.gmtime(secs))\n\t\n\tdef empty_table():\n\t\treturn [[]]\n\n\talarms_data \u003d []\n\talarms_critical \u003d []\n\talarms_high \u003d []\n\talarms_medium \u003d []\n\talarms_low \u003d []\n\talarms_diagnostic \u003d []\n\talarm_temp_dict \u003d {}\n\tstyle_props_critical \u003d {\"classes\":\"Alarms-Styles/Critical\"}\n\tstyle_props_high \u003d {\"classes\":\"Alarms-Styles/High\"}\n\tstyle_props_medium \u003d {\"classes\":\"Alarms-Styles/Medium\"}\n\tstyle_props_low \u003d {\"classes\":\"Alarms-Styles/Low\"}\n\tstyle_props_diagnostic \u003d {\"classes\":\"Alarms-Styles/Diagnostic\"}\n\n\tif self.custom.run_update:\n\t\tif system.tag.exists(\"System/ActiveAlarms\"):\n\t\t\t\t\n\t\t\talarm_data \u003d system.tag.readBlocking([\"System/ActiveAlarms\"])\n\t\t\talarm_data \u003d alarm_data[0].value\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(alarm_data)\n\t\t\tdevice_name \u003d self.view.params.tagProps[0]\n\t\n\t\t\tif len(decode_alarm_data) \u003e 0:\n\t\n\t\t\t\tfor i in decode_alarm_data:\n\t\t\t\t\tif str(decode_alarm_data[i][\"DisplayPath\"]).startswith(device_name):\n\t\t\t\t\t\tif decode_alarm_data[i].get(\"Priority\") \u003d\u003d 4:\n\t\t\t\t\t\t\tstyle_class \u003d style_props_critical\n\t\t\t\t\t\t\tseverity \u003d \"4. Critical\"\n\t\t\t\t\t\t\tkey \u003d \"Critical\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\telif decode_alarm_data[i].get(\"Priority\") \u003d\u003d 3:\n\t\t\t\t\t\t\tstyle_class \u003d style_props_high\n\t\t\t\t\t\t\tseverity \u003d \"3. High\"\n\t\t\t\t\t\t\tkey \u003d \"High\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\telif decode_alarm_data[i].get(\"Priority\") \u003d\u003d 2:\n\t\t\t\t\t\t\tstyle_class \u003d style_props_medium\n\t\t\t\t\t\t\tseverity \u003d \"2. Medium\"\n\t\t\t\t\t\t\tkey \u003d \"Medium\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\telif decode_alarm_data[i].get(\"Priority\") \u003d\u003d 1:\n\t\t\t\t\t\t\tstyle_class \u003d style_props_low\n\t\t\t\t\t\t\tseverity \u003d \"1. Low\"\n\t\t\t\t\t\t\tkey \u003d \"Low\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\telif decode_alarm_data[i].get(\"Priority\") \u003d\u003d 0:\n\t\t\t\t\t\t\tstyle_class \u003d style_props_diagnostic\n\t\t\t\t\t\t\tseverity \u003d \"0. Warning\"\n\t\t\t\t\t\t\tkey \u003d \"Diagnostic\"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tduration \u003d decode_alarm_data[i].get(\"Duration\")\n\t\t\t\t\t\tconverted_time \u003d convert(duration)\n\t\t\t\t\t\tdisplay_path \u003d decode_alarm_data[i].get(\"DisplayPath\")\n\t\t\t\t\t\ttime_stamp \u003d decode_alarm_data[i].get(\"TimeStamp\")\n\t\t\t\t\t\tudt_path \u003d decode_alarm_data[i].get(\"UDT_tag\")\n\t\t\t\t\t\tvendor_id \u003d decode_alarm_data[i].get(\"AddInfo\")\n\t\t\t\t\t\tname \u003d decode_alarm_data[i].get(\"Name\")\n\t\t\t\t\t\talarm_id \u003d i\n\t\t\t\t\t\t\n\t\t\t\t\t\trow\u003d row_builder.build_row(DisplayPath \u003d display_path, Duration \u003d converted_time,\n\t\t\t\t\t\tSeverity \u003d severity, Timestamp \u003d time_stamp, VendorId \u003d vendor_id,\n\t\t\t\t\t\tName \u003d name, AlarmId \u003d alarm_id, StyleClass \u003d style_class)\n\t\t\t\t\t\t\n\t\t\t\t\t\tif alarm_temp_dict.get(udt_path,\"None\") \u003d\u003d \"None\":\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\talarm_temp_dict[udt_path]\u003d {}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif alarm_temp_dict.get(udt_path,{}).get(key,\"None\") \u003d\u003d \"None\":\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\talarm_temp_dict[udt_path][key]\u003d[]\n\t\t\t\t\t\t\n\t#\t\t\t\t\t\tsystem.perspective.print(alarm_temp_dict)\n\t\t\t\t\t\talarm_temp_dict[udt_path][key].append(row)\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\tfor i in alarm_temp_dict:\n\t#\t\t\t\t\tsystem.perspective.print(alarm_temp_dict[i].get(\"Critical\",\"None\"))\t\t\t\t\n\t\t\t\t\tif alarm_temp_dict[i].get(\"Critical\",\"None\") !\u003d \"None\":\n\t\t\t\t\t\talarms_critical +\u003d alarm_temp_dict[i].get(\"Critical\")\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\telif alarm_temp_dict[i].get(\"High\",\"None\") !\u003d \"None\":\n\t\t\t\t\t\talarms_high +\u003d alarm_temp_dict[i].get(\"High\")\n\t\t\t\t\t\n\t\t\t\t\telif alarm_temp_dict[i].get(\"Medium\",\"None\") !\u003d \"None\":\n\t\t\t\t\t\talarms_medium +\u003d alarm_temp_dict[i].get(\"Medium\")\n\t\t\t\t\t\n\t\t\t\t\telif alarm_temp_dict[i].get(\"Low\",\"None\") !\u003d \"None\":\n\t\t\t\t\t\talarms_low +\u003d alarm_temp_dict[i].get(\"Low\")\n\t\t\t\t\t\n\t\t\t\t\telif alarm_temp_dict[i].get(\"Diagnostic\",\"None\") !\u003d \"None\":\n\t\t\t\t\t\talarms_diagnostic +\u003d alarm_temp_dict[i].get(\"Diagnostic\")\n\t\t\t\t\t\t\n\t\t\t\talarms_data \u003d alarms_critical + alarms_high + alarms_medium + alarms_low + alarms_diagnostic\n\t#\t\t\t\tsystem.perspective.print(alarms_data)\n\t\t\t\tself.props.data \u003d alarms_data\n\t\t\t\t\t\n\t\t\t\t\n\t\telse:\n\t\t\tself.props.data \u003d empty_table()" - } - } - }, - "props": { - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Name", - "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": 100 - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Duration", - "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": 50 - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Severity", - "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": 50 - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Timestamp", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "VendorId", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "AlarmId", - "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": "" - } - ], - "data": [ - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "9ffc0e5d-8cf1-4a0d-9521-594bd55387cd" - }, - "DisplayPath": { - "value": "PLC01_1510_11_49/OPC/inAlarms0/5_Chute not active" - }, - "Duration": { - "value": "00:06:59" - }, - "Name": { - "value": "5_Chute not active" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:54:32" - }, - "VendorId": { - "value": "\u003d01+1510.11.49" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "29a021f5-cd24-4cc3-bc8b-50ba99e5fb0a" - }, - "DisplayPath": { - "value": "PLC60_1220_44_01/OPC/inAlarms0/0_Photo eye blocked" - }, - "Duration": { - "value": "02:17:50" - }, - "Name": { - "value": "0_Photo eye blocked" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 09:43:40" - }, - "VendorId": { - "value": "\u003d60+1220.44.01-B206.0" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "f0b4bb7e-8a90-4a37-b2b1-1b40a8b22da9" - }, - "DisplayPath": { - "value": "PLC09_1010_51_02/OPC/inAlarms0/0_Photo eye blocked" - }, - "Duration": { - "value": "01:19:36" - }, - "Name": { - "value": "0_Photo eye blocked" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 10:41:55" - }, - "VendorId": { - "value": "\u003d09+1010.51.02-B811.6" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "31041a1d-0e60-49df-8343-4dc8fd71addc" - }, - "DisplayPath": { - "value": "PLC08_2050_15_09/OPC/inAlarms0/8_Slack chain detection" - }, - "Duration": { - "value": "12:06:12" - }, - "Name": { - "value": "8_Slack chain detection" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-11 23:55:18" - }, - "VendorId": { - "value": "\u003d08+2050.15.09" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "0af8e42f-3b41-4dd0-a5c9-31457343d138" - }, - "DisplayPath": { - "value": "PLC40_1300_01_01/OPC/inAlarms0/0_Error rate at update too high" - }, - "Duration": { - "value": "03:51:00" - }, - "Name": { - "value": "0_Error rate at update too high" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 08:10:30" - }, - "VendorId": { - "value": "\u003d40+1300.01.01-B602.2" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "279c06bb-fa62-452f-8cb6-7821e26db4b9" - }, - "DisplayPath": { - "value": "PLC02_1510_11_01/OPC/inAlarms0/5_Chute not active" - }, - "Duration": { - "value": "02:29:59" - }, - "Name": { - "value": "5_Chute not active" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-10 09:31:32" - }, - "VendorId": { - "value": "\u003d02+1510.11.01" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "e7fa9539-2805-4f6f-8906-3aa3ccbb5baa" - }, - "DisplayPath": { - "value": "PLC51_1211_91_02/OPC/inAlarms0/1_Local motor starter error" - }, - "Duration": { - "value": "00:05:26" - }, - "Name": { - "value": "1_Local motor starter error" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:56:04" - }, - "VendorId": { - "value": "\u003d51+1211.91.02-M1" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "cd60a658-cc9e-4c6c-a344-02f64cac30d3" - }, - "DisplayPath": { - "value": "PLC70/OPC/inAlarms0/23_Power supply contactor error" - }, - "Duration": { - "value": "02:29:59" - }, - "Name": { - "value": "23_Power supply contactor error" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-10 09:31:31" - }, - "VendorId": { - "value": "\u003d70+S01-KM003" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "e48406f1-f292-4e31-9eb6-16a04441b3aa" - }, - "DisplayPath": { - "value": "PLC71/OPC/inAlarms0/0_Profinet node fault" - }, - "Duration": { - "value": "02:29:59" - }, - "Name": { - "value": "0_Profinet node fault" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-10 09:31:32" - }, - "VendorId": { - "value": "\u003d71+PN212-A001" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "7187a1cd-c430-4dd4-bf8b-44edb5fe2206" - }, - "DisplayPath": { - "value": "PLC71/OPC/inAlarms0/2_ASI-Gateway error" - }, - "Duration": { - "value": "02:29:59" - }, - "Name": { - "value": "2_ASI-Gateway error" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-10 09:31:32" - }, - "VendorId": { - "value": "\u003d71+S01-A001" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "3f4afc70-4fd2-41b6-89e8-394644027469" - }, - "DisplayPath": { - "value": "PLC71/OPC/inAlarms0/4_ASI-Gateway error" - }, - "Duration": { - "value": "02:29:59" - }, - "Name": { - "value": "4_ASI-Gateway error" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-10 09:31:32" - }, - "VendorId": { - "value": "\u003d71+S01-A002" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "015c963c-eb92-4d86-b322-ef5ffaecd98d" - }, - "DisplayPath": { - "value": "PLC09_1010_23_33/OPC/inAlarms0/0_Photo eye blocked" - }, - "Duration": { - "value": "00:17:41" - }, - "Name": { - "value": "0_Photo eye blocked" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:43:49" - }, - "VendorId": { - "value": "\u003d09+1010.23.33-B222.0" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "e647c74c-a952-45bb-b18b-8e6c32fee8ef" - }, - "DisplayPath": { - "value": "PLC60_1220_44_05/OPC/inAlarms0/0_Photo eye blocked" - }, - "Duration": { - "value": "04:24:23" - }, - "Name": { - "value": "0_Photo eye blocked" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 07:37:08" - }, - "VendorId": { - "value": "\u003d60+1220.44.05-B206.4" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "0bc4bfed-efed-4310-ba28-e43fcf8df3e4" - }, - "DisplayPath": { - "value": "ARSAW1408/OPC/inAlarms2/6_Photo eye blocked" - }, - "Duration": { - "value": "00:04:06" - }, - "Name": { - "value": "6_Photo eye blocked" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:57:24" - }, - "VendorId": { - "value": "\u003dARSAW1408+05.22-B109.6" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "c62ab15f-7552-4ee8-bb3a-75ec1fb471ef" - }, - "DisplayPath": { - "value": "PLC1000_1100_06_91/OPC/inAlarms0/2_No-Read rate at reading system too high" - }, - "Duration": { - "value": "00:10:44" - }, - "Name": { - "value": "2_No-Read rate at reading system too high" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:50:46" - }, - "VendorId": { - "value": "\u003dP1000+1100.06.91.E01-U1" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "030d8d08-02a9-4dfa-a4a4-80d4300e9a1e" - }, - "DisplayPath": { - "value": "ARSAW1404/OPC/inAlarms2/2_Photo eye blocked" - }, - "Duration": { - "value": "00:06:24" - }, - "Name": { - "value": "2_Photo eye blocked" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:55:07" - }, - "VendorId": { - "value": "\u003dARSAW1404+05.13-B111.1" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "3a194b9f-8fdf-4b1e-b728-33174d7b3f04" - }, - "DisplayPath": { - "value": "ARSAW1404/OPC/inAlarms2/3_Photo eye blocked" - }, - "Duration": { - "value": "00:05:56" - }, - "Name": { - "value": "3_Photo eye blocked" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:55:34" - }, - "VendorId": { - "value": "\u003dARSAW1404+05.14-B111.2" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "47014921-2fe8-4c02-8658-27bf3d2bc0d3" - }, - "DisplayPath": { - "value": "PLC02_1510_11_14/OPC/inAlarms0/5_Chute not active" - }, - "Duration": { - "value": "00:11:34" - }, - "Name": { - "value": "5_Chute not active" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:49:56" - }, - "VendorId": { - "value": "\u003d02+1510.11.14" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "d53caa27-7164-446b-8673-3ce152946046" - }, - "DisplayPath": { - "value": "PLC1000_1100_06_01/OPC/inAlarms0/0_Error rate at update too high" - }, - "Duration": { - "value": "00:01:46" - }, - "Name": { - "value": "0_Error rate at update too high" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:59:44" - }, - "VendorId": { - "value": "\u003dP1000+1100.06.01-B202.2" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "29c088ad-f890-4e99-8452-45792542255d" - }, - "DisplayPath": { - "value": "PLC01_1510_11_32/OPC/inAlarms0/5_Chute not active" - }, - "Duration": { - "value": "00:13:37" - }, - "Name": { - "value": "5_Chute not active" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:47:53" - }, - "VendorId": { - "value": "\u003d01+1510.11.32" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "66d7fd3a-ade4-4d6b-98bd-f3e782ee94da" - }, - "DisplayPath": { - "value": "PLC01_1510_11_35/OPC/inAlarms0/5_Chute not active" - }, - "Duration": { - "value": "00:10:21" - }, - "Name": { - "value": "5_Chute not active" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:51:09" - }, - "VendorId": { - "value": "\u003d01+1510.11.35" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "43f91251-1782-49c3-b45a-0c70978778a1" - }, - "DisplayPath": { - "value": "PLC66_1220_63_40/OPC/inAlarms0/7_Photo eye blocked" - }, - "Duration": { - "value": "00:02:49" - }, - "Name": { - "value": "7_Photo eye blocked" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:58:41" - }, - "VendorId": { - "value": "\u003d66+1220.63.40-B205.4" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "d4c3e86d-5cab-47de-8562-48b4fc5c063b" - }, - "DisplayPath": { - "value": "ARSAW1501/OPC/inAlarms2/2_Photo eye blocked" - }, - "Duration": { - "value": "00:25:20" - }, - "Name": { - "value": "2_Photo eye blocked" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:36:10" - }, - "VendorId": { - "value": "\u003dARSAW1501+05.13-B111.1" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "a992380e-6a60-4388-9fc1-b76b052a3641" - }, - "DisplayPath": { - "value": "PLC02_1510_87_15/OPC/inAlarms0/5_Chute not active" - }, - "Duration": { - "value": "00:17:01" - }, - "Name": { - "value": "5_Chute not active" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:44:29" - }, - "VendorId": { - "value": "\u003d02+1510.87.15" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "4457c4eb-9a49-463b-ba28-362fda48ce12" - }, - "DisplayPath": { - "value": "PLC20_1200_22_01/OPC/inAlarms0/5_Chain over length detection" - }, - "Duration": { - "value": "04:43:25" - }, - "Name": { - "value": "5_Chain over length detection" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 07:18:05" - }, - "VendorId": { - "value": "\u003d20+1200.22.01" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "706a7319-3b58-4e57-ad89-d97f8aee67c1" - }, - "DisplayPath": { - "value": "PLC09_1010_13_31/OPC/inAlarms0/0_Photo eye blocked" - }, - "Duration": { - "value": "00:11:09" - }, - "Name": { - "value": "0_Photo eye blocked" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-12 11:50:21" - }, - "VendorId": { - "value": "\u003d09+1010.13.31-B122.6" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/High" - }, - "value": { - "AlarmId": { - "value": "70bbd7ad-80fb-4c24-9a95-9d93ab13c85f" - }, - "DisplayPath": { - "value": "PLC66_1220_64_07/OPC/inAlarms0/0_Photo eye blocked" - }, - "Duration": { - "value": "02:30:02" - }, - "Name": { - "value": "0_Photo eye blocked" - }, - "Severity": { - "value": "3. High" - }, - "Timestamp": { - "value": "2022-08-10 09:31:28" - }, - "VendorId": { - "value": "\u003d66+1220.64.07-B206.6" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Medium" - }, - "value": { - "AlarmId": { - "value": "645b753f-c602-4e63-a841-e54160a602ba" - }, - "DisplayPath": { - "value": "SLAM302/OPC/ActiveEvents_0/Both Printers 1 Label Stop" - }, - "Duration": { - "value": "01:41:34" - }, - "Name": { - "value": "Both Printers 1 Label Stop" - }, - "Severity": { - "value": "2. Medium" - }, - "Timestamp": { - "value": "2022-08-12 10:19:56" - }, - "VendorId": { - "value": "" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Medium" - }, - "value": { - "AlarmId": { - "value": "ddf12c1a-3faa-48c8-a3c9-62105eade741" - }, - "DisplayPath": { - "value": "SLAM305/OPC/ActiveEvents_1/Printer 2 Fault" - }, - "Duration": { - "value": "01:22:45" - }, - "Name": { - "value": "Printer 2 Fault" - }, - "Severity": { - "value": "2. Medium" - }, - "Timestamp": { - "value": "2022-08-12 10:38:45" - }, - "VendorId": { - "value": "" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Medium" - }, - "value": { - "AlarmId": { - "value": "27d184d3-66b7-4309-a045-b7830a662fc9" - }, - "DisplayPath": { - "value": "SLAM305/OPC/ActiveEvents_0/Printer 1 Fault" - }, - "Duration": { - "value": "01:22:45" - }, - "Name": { - "value": "Printer 1 Fault" - }, - "Severity": { - "value": "2. Medium" - }, - "Timestamp": { - "value": "2022-08-12 10:38:45" - }, - "VendorId": { - "value": "" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Medium" - }, - "value": { - "AlarmId": { - "value": "8017709f-b8b6-4d83-9d30-b4d858c5c522" - }, - "DisplayPath": { - "value": "PLC1000_1100_35_01/OPC/inAlarms0/2_Stop button pushed" - }, - "Duration": { - "value": "00:03:01" - }, - "Name": { - "value": "2_Stop button pushed" - }, - "Severity": { - "value": "2. Medium" - }, - "Timestamp": { - "value": "2022-08-12 11:58:29" - }, - "VendorId": { - "value": "\u003dP1000+1100.35.01.B01-KA2.11A-S521.2" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "563c8152-fde4-4616-b5e3-3cb1a004bb75" - }, - "DisplayPath": { - "value": "PLC09_1010_32_40/OPC/inAlarms0/6_Full 25%" - }, - "Duration": { - "value": "23:25:42" - }, - "Name": { - "value": "6_Full 25%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-11 12:35:48" - }, - "VendorId": { - "value": "\u003d09+1010.32.40-B304.6" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "78f1c489-0e24-423c-a2cb-7614d18c8e4b" - }, - "DisplayPath": { - "value": "PLC09_1010_32_40/OPC/inAlarms0/2_Full 75%" - }, - "Duration": { - "value": "12:00:57" - }, - "Name": { - "value": "2_Full 75%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 00:00:33" - }, - "VendorId": { - "value": "\u003d09+1010.32.40-B304.4" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "fbbb85b0-d18d-4d36-8168-94b0187b3809" - }, - "DisplayPath": { - "value": "PLC09_1010_32_40/OPC/inAlarms0/4_Full 50%" - }, - "Duration": { - "value": "02:29:58" - }, - "Name": { - "value": "4_Full 50%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-10 09:31:32" - }, - "VendorId": { - "value": "\u003d09+1010.32.40-B304.5" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "921e2af7-cd0a-481a-aa63-062881e93aa6" - }, - "DisplayPath": { - "value": "PLC09_1010_32_40/OPC/inAlarms0/0_Full 100%" - }, - "Duration": { - "value": "00:10:33" - }, - "Name": { - "value": "0_Full 100%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:50:57" - }, - "VendorId": { - "value": "\u003d09+1010.32.40-B304.2" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "14d1d1d8-0c28-4c96-95cb-4aeb5d326b0e" - }, - "DisplayPath": { - "value": "SLAM306/OPC/ActiveEvents_0/Upstream Not Running" - }, - "Duration": { - "value": "00:05:16" - }, - "Name": { - "value": "Upstream Not Running" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:56:14" - }, - "VendorId": { - "value": "" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "89bba546-f28d-489d-8a5d-908990fc0c2c" - }, - "DisplayPath": { - "value": "PLC09_1010_12_40/OPC/inAlarms0/6_Full 25%" - }, - "Duration": { - "value": "00:33:01" - }, - "Name": { - "value": "6_Full 25%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:28:29" - }, - "VendorId": { - "value": "\u003d09+1010.12.40-B104.6" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "c06c4c9a-693b-4e44-b28d-1cc883f46581" - }, - "DisplayPath": { - "value": "PLC09_1010_12_40/OPC/inAlarms0/4_Full 50%" - }, - "Duration": { - "value": "01:23:43" - }, - "Name": { - "value": "4_Full 50%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 10:37:48" - }, - "VendorId": { - "value": "\u003d09+1010.12.40-B104.5" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "33550149-53b7-4490-8d39-06c9cee5ce63" - }, - "DisplayPath": { - "value": "PLC09_1010_12_40/OPC/inAlarms0/2_Full 75%" - }, - "Duration": { - "value": "01:19:44" - }, - "Name": { - "value": "2_Full 75%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 10:41:47" - }, - "VendorId": { - "value": "\u003d09+1010.12.40-B104.4" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "15b4dc66-968b-4b13-9fdd-43e1e887e4b1" - }, - "DisplayPath": { - "value": "PLC09_1010_12_40/OPC/inAlarms0/0_Full 100%" - }, - "Duration": { - "value": "00:04:37" - }, - "Name": { - "value": "0_Full 100%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:56:53" - }, - "VendorId": { - "value": "\u003d09+1010.12.40-B104.2" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "5bf89243-965b-4049-a5b4-65e0cdffbf9a" - }, - "DisplayPath": { - "value": "PLC1000_1100_10_25/OPC/inAlarms0/0_Full 25%" - }, - "Duration": { - "value": "00:01:10" - }, - "Name": { - "value": "0_Full 25%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 12:00:20" - }, - "VendorId": { - "value": "\u003dP1000+1100.10.25-B323.1" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "63c21fc9-5b3a-4f3f-9076-90145af9d833" - }, - "DisplayPath": { - "value": "PLC1000_1100_32_13/OPC/inAlarms0/0_Full 75%" - }, - "Duration": { - "value": "00:00:38" - }, - "Name": { - "value": "0_Full 75%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 12:00:52" - }, - "VendorId": { - "value": "\u003dP1000+1100.32.13-B503.4" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "08756b9a-24cd-4f90-b7a2-98d0d74b873d" - }, - "DisplayPath": { - "value": "PLC1000_1100_04_25/OPC/inAlarms0/0_Full 25%" - }, - "Duration": { - "value": "00:02:00" - }, - "Name": { - "value": "0_Full 25%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:59:30" - }, - "VendorId": { - "value": "\u003dP1000+1100.04.25-B122.0" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "46ca2c01-03cd-47c2-9576-feb03e4ef9ca" - }, - "DisplayPath": { - "value": "PLC1000_1100_10_17/OPC/inAlarms0/0_Full 50%" - }, - "Duration": { - "value": "00:00:58" - }, - "Name": { - "value": "0_Full 50%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 12:00:32" - }, - "VendorId": { - "value": "\u003dP1000+1100.10.17-B321.1" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "349731d9-7024-41d8-8345-9438180bfafe" - }, - "DisplayPath": { - "value": "PLC1000_1100_04_17/OPC/inAlarms0/0_Full 50%" - }, - "Duration": { - "value": "00:01:34" - }, - "Name": { - "value": "0_Full 50%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:59:56" - }, - "VendorId": { - "value": "\u003dP1000+1100.04.17-B121.0" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "e21645ca-8629-4117-8f6c-ac980405c027" - }, - "DisplayPath": { - "value": "PLC1000_1100_23_30/OPC/inAlarms0/0_Full 25%" - }, - "Duration": { - "value": "00:25:44" - }, - "Name": { - "value": "0_Full 25%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:35:46" - }, - "VendorId": { - "value": "\u003dP1000+1100.23.30-B412.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "cb7576ba-218a-4630-98e2-cf8a99313f43" - }, - "DisplayPath": { - "value": "PLC09_3040_22_60/OPC/inAlarms0/2_Full 25%" - }, - "Duration": { - "value": "00:15:03" - }, - "Name": { - "value": "2_Full 25%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:46:27" - }, - "VendorId": { - "value": "\u003d09+3040.22.60-B721.4" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "b2802772-4aed-4722-b300-812843fd49d8" - }, - "DisplayPath": { - "value": "PLC1000_1100_33_10/OPC/inAlarms0/0_Full 50%" - }, - "Duration": { - "value": "00:00:38" - }, - "Name": { - "value": "0_Full 50%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 12:00:52" - }, - "VendorId": { - "value": "\u003dP1000+1100.33.10-B509.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "1fd3ac98-2636-4ba1-8ff5-2edef1b446f2" - }, - "DisplayPath": { - "value": "PLC09_2040_22_60/OPC/inAlarms0/0_Full 50%" - }, - "Duration": { - "value": "00:00:55" - }, - "Name": { - "value": "0_Full 50%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 12:00:35" - }, - "VendorId": { - "value": "\u003d09+2040.22.60-B621.2" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "f5303a9d-3b13-482b-a73d-0c31f8138ea5" - }, - "DisplayPath": { - "value": "PLC09_2040_22_60/OPC/inAlarms0/2_Full 25%" - }, - "Duration": { - "value": "03:19:12" - }, - "Name": { - "value": "2_Full 25%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 08:42:19" - }, - "VendorId": { - "value": "\u003d09+2040.22.60-B621.4" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "cb8ee399-0e56-48ad-b1df-2b9a3a7c4acf" - }, - "DisplayPath": { - "value": "PLC09_1010_22_40/OPC/inAlarms0/4_Full 50%" - }, - "Duration": { - "value": "00:31:56" - }, - "Name": { - "value": "4_Full 50%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:29:34" - }, - "VendorId": { - "value": "\u003d09+1010.22.40-B204.5" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "fc2ea1bd-3565-4c2e-b401-9c66dea60498" - }, - "DisplayPath": { - "value": "PLC09_1010_22_40/OPC/inAlarms0/0_Full 100%" - }, - "Duration": { - "value": "00:01:07" - }, - "Name": { - "value": "0_Full 100%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 12:00:23" - }, - "VendorId": { - "value": "\u003d09+1010.22.40-B204.2" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "714b2ff3-75d9-4980-9f5f-02ab18a1ec78" - }, - "DisplayPath": { - "value": "PLC09_1010_22_40/OPC/inAlarms0/6_Full 25%" - }, - "Duration": { - "value": "00:32:55" - }, - "Name": { - "value": "6_Full 25%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:28:35" - }, - "VendorId": { - "value": "\u003d09+1010.22.40-B204.6" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "f3a117e7-bd0c-4d71-8000-3e739f332484" - }, - "DisplayPath": { - "value": "PLC09_1010_22_40/OPC/inAlarms0/2_Full 75%" - }, - "Duration": { - "value": "00:07:37" - }, - "Name": { - "value": "2_Full 75%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:53:53" - }, - "VendorId": { - "value": "\u003d09+1010.22.40-B204.4" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "e2baa964-eb4c-4a92-933d-3b5e2d1664e0" - }, - "DisplayPath": { - "value": "PLC1000_1100_33_22/OPC/inAlarms0/0_Full 25%" - }, - "Duration": { - "value": "00:02:35" - }, - "Name": { - "value": "0_Full 25%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:58:55" - }, - "VendorId": { - "value": "\u003dP1000+1100.33.22-B512.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "3a380b2a-08f4-4fff-97f9-961e70d55736" - }, - "DisplayPath": { - "value": "PLC1000_1100_08_19/OPC/inAlarms0/0_Full 25%" - }, - "Duration": { - "value": "00:03:05" - }, - "Name": { - "value": "0_Full 25%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:58:25" - }, - "VendorId": { - "value": "\u003dP1000+1100.08.19-B305.5" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Low" - }, - "value": { - "AlarmId": { - "value": "8e868e64-edcb-405f-b8af-dfbb81344088" - }, - "DisplayPath": { - "value": "PLC1000_1100_08_13/OPC/inAlarms0/0_Full 50%" - }, - "Duration": { - "value": "00:03:01" - }, - "Name": { - "value": "0_Full 50%" - }, - "Severity": { - "value": "1. Low" - }, - "Timestamp": { - "value": "2022-08-12 11:58:29" - }, - "VendorId": { - "value": "\u003dP1000+1100.08.13-B304.1" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "854d4883-9957-40dc-8590-5bdf800cd9ec" - }, - "DisplayPath": { - "value": "PLC01_1510_11_45/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "01:03:05" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 10:58:25" - }, - "VendorId": { - "value": "\u003d01+1510.11.45-B211.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "4e0e235c-40b2-43e1-8df0-05acd23f42cc" - }, - "DisplayPath": { - "value": "PLC01_1510_11_44/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "02:26:44" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 09:34:46" - }, - "VendorId": { - "value": "\u003d01+1510.11.44-B211.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "7f19e592-3937-4b82-b1a0-080f18028e58" - }, - "DisplayPath": { - "value": "PLC01_1510_11_47/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:17:59" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:43:31" - }, - "VendorId": { - "value": "\u003d01+1510.11.47-B212.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "40d2a84f-674c-4e2e-b1f3-cda897a7edc5" - }, - "DisplayPath": { - "value": "FSC10_OFZ_1500_73_CH_1500_73_04/OPC/inAlarms0/3.Chute Full" - }, - "Duration": { - "value": "00:10:26" - }, - "Name": { - "value": "3.Chute Full" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:51:04" - }, - "VendorId": { - "value": "CH-1500.73.04" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "0454374e-7fbf-49d9-b1cc-7f639a953a8d" - }, - "DisplayPath": { - "value": "PLC01_1510_11_48/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:26:03" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:35:27" - }, - "VendorId": { - "value": "\u003d01+1510.11.48-B213.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "3dd7ef75-ab85-4614-a3ac-372003761dda" - }, - "DisplayPath": { - "value": "FSC10_OFZ_1500_73_CH_1500_73_01/OPC/inAlarms0/3.Chute Full" - }, - "Duration": { - "value": "00:13:42" - }, - "Name": { - "value": "3.Chute Full" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:47:48" - }, - "VendorId": { - "value": "CH-1500.73.01" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "d3da023c-ce0e-4cbc-8201-f3976d89e128" - }, - "DisplayPath": { - "value": "PLC02_1510_88_11/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:06:35" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:54:56" - }, - "VendorId": { - "value": "\u003d02+1510.88.11-B323.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "d45a6985-c242-4645-b3ac-ab34e5a2462b" - }, - "DisplayPath": { - "value": "PLC65_1220_53_40/OPC/inAlarms0/4_Full 50%" - }, - "Duration": { - "value": "00:04:48" - }, - "Name": { - "value": "4_Full 50%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:56:42" - }, - "VendorId": { - "value": "\u003d65+1220.53.40-B205.4" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "374d4319-4ae0-4111-8093-880f26803e23" - }, - "DisplayPath": { - "value": "PLC65_1220_53_40/OPC/inAlarms0/6_Full 25%" - }, - "Duration": { - "value": "01:40:44" - }, - "Name": { - "value": "6_Full 25%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 10:20:46" - }, - "VendorId": { - "value": "\u003d65+1220.53.40-B205.5" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "22bff280-17a1-4e40-bf84-a35fb602c8c7" - }, - "DisplayPath": { - "value": "PLC01_1510_11_41/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:34:06" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:27:24" - }, - "VendorId": { - "value": "\u003d01+1510.11.41-B209.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "7b1adf51-09b5-44ca-aadd-f883865350e5" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_382/OPC/inAlarms0/18.Item Blocked for Sorting" - }, - "Duration": { - "value": "01:27:29" - }, - "Name": { - "value": "18.Item Blocked for Sorting" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 10:34:01" - }, - "VendorId": { - "value": "CAS-1500.01.382" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "438cb2f7-4b48-468f-9e18-39a03b093f5c" - }, - "DisplayPath": { - "value": "PLC71_1260_73_40/OPC/inAlarms0/0_Full 100%" - }, - "Duration": { - "value": "02:29:59" - }, - "Name": { - "value": "0_Full 100%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:31" - }, - "VendorId": { - "value": "\u003d71+1260.73.40-B206.2" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "85680dc1-f7ba-4da9-9d60-ba600b049882" - }, - "DisplayPath": { - "value": "PLC01_1510_11_59/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:00:23" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:01:07" - }, - "VendorId": { - "value": "\u003d01+1510.11.59-B220.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "13e31396-f540-4b19-9d68-a55ba579e03b" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_138/OPC/inAlarms0/18.Item Blocked for Sorting" - }, - "Duration": { - "value": "00:00:02" - }, - "Name": { - "value": "18.Item Blocked for Sorting" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:01:28" - }, - "VendorId": { - "value": "CAS-1500.01.138" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "ea6d6012-5d3d-42e5-8396-f1f2b6a95476" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_255/OPC/inAlarms0/16.CAS automatic offline" - }, - "Duration": { - "value": "00:24:47" - }, - "Name": { - "value": "16.CAS automatic offline" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 11:36:43" - }, - "VendorId": { - "value": "CAS-1500.01.255" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "397c2848-56a9-4c5f-8fc9-830395c649e2" - }, - "DisplayPath": { - "value": "PLC01_1510_11_50/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:00:59" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:00:31" - }, - "VendorId": { - "value": "\u003d01+1510.11.50-B214.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "eae02a75-c090-4863-b71e-0966519e1a04" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_010/OPC/inAlarms0/18.Item Blocked for Sorting" - }, - "Duration": { - "value": "00:00:37" - }, - "Name": { - "value": "18.Item Blocked for Sorting" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:00:53" - }, - "VendorId": { - "value": "CAS-1500.01.010" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "cbb9023a-17f8-42c7-83d2-e433bb9ec8b7" - }, - "DisplayPath": { - "value": "PLC01_1510_11_51/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:55:15" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:06:16" - }, - "VendorId": { - "value": "\u003d01+1510.11.51-B214.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "43fc342e-6b83-410d-9bab-ee00e1be9bbe" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_493/OPC/inAlarms0/16.CAS automatic offline" - }, - "Duration": { - "value": "00:24:36" - }, - "Name": { - "value": "16.CAS automatic offline" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 11:36:55" - }, - "VendorId": { - "value": "CAS-1500.01.493" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "1b509e3c-efa5-4201-b23f-4b33f9d64c17" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_493/OPC/inAlarms0/18.Item Blocked for Sorting" - }, - "Duration": { - "value": "00:00:23" - }, - "Name": { - "value": "18.Item Blocked for Sorting" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:01:07" - }, - "VendorId": { - "value": "CAS-1500.01.493" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "6dd055ef-d8b3-4eb9-b7c6-cd3cdec1998a" - }, - "DisplayPath": { - "value": "FSC10_IFZ_1500_56_CH_1500_56_09/OPC/inAlarms0/1.Bin contains item" - }, - "Duration": { - "value": "00:04:00" - }, - "Name": { - "value": "1.Bin contains item" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:57:30" - }, - "VendorId": { - "value": "CH-1500.56.09" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "5e625e5b-8f9b-4608-91f1-f01fda8d3f66" - }, - "DisplayPath": { - "value": "PLC66_1220_26_20/OPC/inAlarms0/0_Full 25%" - }, - "Duration": { - "value": "00:00:18" - }, - "Name": { - "value": "0_Full 25%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:01:12" - }, - "VendorId": { - "value": "\u003d66+1220.26.20-B122.2" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "755fd504-7ed5-4583-a2ae-43c48a7cdc93" - }, - "DisplayPath": { - "value": "PLC03_1251_32_03/OPC/inAlarms0/0_Full 100%" - }, - "Duration": { - "value": "02:29:58" - }, - "Name": { - "value": "0_Full 100%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:32" - }, - "VendorId": { - "value": "\u003d03+1251.32.03-B204.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "4f86d055-66b7-4a68-b4c1-9cf704674418" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_206/OPC/inAlarms0/16.CAS automatic offline" - }, - "Duration": { - "value": "00:24:48" - }, - "Name": { - "value": "16.CAS automatic offline" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 11:36:42" - }, - "VendorId": { - "value": "CAS-1500.01.206" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "c297c3da-c8d3-4035-b734-b4aeb855a353" - }, - "DisplayPath": { - "value": "PLC64_1230_43_40/OPC/inAlarms0/6_Full 25%" - }, - "Duration": { - "value": "02:41:22" - }, - "Name": { - "value": "6_Full 25%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 09:20:08" - }, - "VendorId": { - "value": "\u003d64+1230.43.40-B205.5" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "670a4052-ee28-4124-9d96-8c679b19ee1b" - }, - "DisplayPath": { - "value": "PLC64_1230_43_40/OPC/inAlarms0/4_Full 50%" - }, - "Duration": { - "value": "00:03:07" - }, - "Name": { - "value": "4_Full 50%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:58:23" - }, - "VendorId": { - "value": "\u003d64+1230.43.40-B205.4" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "fa29dd21-fcd5-43b0-babd-4743e6f37226" - }, - "DisplayPath": { - "value": "PLC64_1230_43_40/OPC/inAlarms0/2_Full 75%" - }, - "Duration": { - "value": "02:41:00" - }, - "Name": { - "value": "2_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 09:20:30" - }, - "VendorId": { - "value": "\u003d64+1230.43.40-B204.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "bcf1f256-7cc7-46eb-95e1-425bf8b34dec" - }, - "DisplayPath": { - "value": "PLC64_1230_43_40/OPC/inAlarms0/0_Full 100%" - }, - "Duration": { - "value": "00:01:20" - }, - "Name": { - "value": "0_Full 100%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:00:10" - }, - "VendorId": { - "value": "\u003d64+1230.43.40-B204.2" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "9cbe00a0-c9f9-4167-85e4-8e71c015bc47" - }, - "DisplayPath": { - "value": "PLC01_1510_81_03/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "02:29:58" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:32" - }, - "VendorId": { - "value": "\u003d01+1510.81.03-B303.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "0b49a15e-5338-4fea-abb2-64694c6be89a" - }, - "DisplayPath": { - "value": "PLC01_1510_81_04/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:04:25" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:57:05" - }, - "VendorId": { - "value": "\u003d01+1510.81.04-B303.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "e4a40063-c29d-4d52-91bc-02f89b0db027" - }, - "DisplayPath": { - "value": "PLC01_1510_81_05/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:05:23" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:56:07" - }, - "VendorId": { - "value": "\u003d01+1510.81.05-B304.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "4f803ae4-b11a-414a-b540-1d26de70d332" - }, - "DisplayPath": { - "value": "PLC01_1510_81_05/OPC/inAlarms0/1_Full 100%" - }, - "Duration": { - "value": "00:00:31" - }, - "Name": { - "value": "1_Full 100%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:00:59" - }, - "VendorId": { - "value": "\u003d01+1510.81.05-B304.2" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "286b8c5f-08c7-490e-bc83-6e695e8a9cf8" - }, - "DisplayPath": { - "value": "PLC01_1510_81_01/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "23:49:59" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-11 12:11:31" - }, - "VendorId": { - "value": "\u003d01+1510.81.01-B302.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "3a586506-b523-493f-8979-3418052bb5fe" - }, - "DisplayPath": { - "value": "PLC01_1510_81_02/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "02:29:58" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:32" - }, - "VendorId": { - "value": "\u003d01+1510.81.02-B302.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "29742c35-ec12-4660-b080-d8a347e65f4f" - }, - "DisplayPath": { - "value": "PLC60_1220_43_40/OPC/inAlarms0/4_Full 50%" - }, - "Duration": { - "value": "12:30:12" - }, - "Name": { - "value": "4_Full 50%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-11 23:31:18" - }, - "VendorId": { - "value": "\u003d60+1220.43.40-B205.4" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "f08d921d-38cc-4356-b762-b031986cd4d3" - }, - "DisplayPath": { - "value": "PLC60_1220_43_40/OPC/inAlarms0/2_Full 75%" - }, - "Duration": { - "value": "03:02:44" - }, - "Name": { - "value": "2_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 08:58:46" - }, - "VendorId": { - "value": "\u003d60+1220.43.40-B204.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "da2bd9bf-2361-4f69-90db-ec1e432dfbd2" - }, - "DisplayPath": { - "value": "PLC60_1220_43_40/OPC/inAlarms0/0_Full 100%" - }, - "Duration": { - "value": "00:00:24" - }, - "Name": { - "value": "0_Full 100%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:01:06" - }, - "VendorId": { - "value": "\u003d60+1220.43.40-B204.2" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "e87e2a68-96ea-4ff5-b6db-09160dc7dbf2" - }, - "DisplayPath": { - "value": "PLC60_1220_43_40/OPC/inAlarms0/6_Full 25%" - }, - "Duration": { - "value": "12:41:17" - }, - "Name": { - "value": "6_Full 25%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-11 23:20:14" - }, - "VendorId": { - "value": "\u003d60+1220.43.40-B205.5" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "dff5603a-642d-4b5b-95fa-d4f87cf849a0" - }, - "DisplayPath": { - "value": "FSC10_OFZ_1500_73_CH_1500_73_18/OPC/inAlarms0/3.Chute Full" - }, - "Duration": { - "value": "00:07:05" - }, - "Name": { - "value": "3.Chute Full" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:54:25" - }, - "VendorId": { - "value": "CH-1500.73.18" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "94f23ca5-a383-4f4e-8b92-8b2b92d3364a" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_030/OPC/inAlarms0/18.Item Blocked for Sorting" - }, - "Duration": { - "value": "00:00:44" - }, - "Name": { - "value": "18.Item Blocked for Sorting" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:00:46" - }, - "VendorId": { - "value": "CAS-1500.01.030" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "4652cb60-2cb8-44a8-99cc-3ae1c0462099" - }, - "DisplayPath": { - "value": "FSC10_OFZ_1500_73_CH_1500_73_10/OPC/inAlarms0/3.Chute Full" - }, - "Duration": { - "value": "00:08:32" - }, - "Name": { - "value": "3.Chute Full" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:52:58" - }, - "VendorId": { - "value": "CH-1500.73.10" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "946a62fa-dfb6-416e-9960-f44a0721e1cd" - }, - "DisplayPath": { - "value": "FSC10_OFZ_1500_71_CH_1500_71_01/OPC/inAlarms0/3.Chute Full" - }, - "Duration": { - "value": "00:24:55" - }, - "Name": { - "value": "3.Chute Full" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 11:36:35" - }, - "VendorId": { - "value": "CH-1500.71.01" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "c00c25ea-e79e-4d73-b5f6-82c9d4a0b865" - }, - "DisplayPath": { - "value": "FSC10_OFZ_1500_40_AM1/Expressions/Quality/Tag quality error" - }, - "Duration": { - "value": "00:24:55" - }, - "Name": { - "value": "Tag quality error" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 11:36:35" - }, - "VendorId": { - "value": "\"One or more tags has bad quality.\"" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "8bc107e6-e1ca-4b63-9608-f1e17067b48f" - }, - "DisplayPath": { - "value": "M1000/Expressions/Quality/Tag quality error" - }, - "Duration": { - "value": "02:30:16" - }, - "Name": { - "value": "Tag quality error" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:14" - }, - "VendorId": { - "value": "\"One or more tags has bad quality.\"" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "f9b13207-66be-4d89-837b-c7468667c273" - }, - "DisplayPath": { - "value": "FSC10_OFZ_1500_79_CH_1500_79_15/OPC/inAlarms0/3.Chute Full" - }, - "Duration": { - "value": "00:17:07" - }, - "Name": { - "value": "3.Chute Full" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:44:23" - }, - "VendorId": { - "value": "CH-1500.79.15" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "00a1494e-b5bd-445a-89cc-9092f3eb1125" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_229/OPC/inAlarms0/18.Item Blocked for Sorting" - }, - "Duration": { - "value": "00:00:35" - }, - "Name": { - "value": "18.Item Blocked for Sorting" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:00:55" - }, - "VendorId": { - "value": "CAS-1500.01.229" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "a9d01ff6-e4c6-42ab-a317-57d5fa104d0a" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_503/OPC/inAlarms0/18.Item Blocked for Sorting" - }, - "Duration": { - "value": "00:00:07" - }, - "Name": { - "value": "18.Item Blocked for Sorting" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:01:23" - }, - "VendorId": { - "value": "CAS-1500.01.503" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "55a32ec8-90a8-494f-8635-f1bef05f68e9" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_224/OPC/inAlarms0/16.CAS automatic offline" - }, - "Duration": { - "value": "00:24:48" - }, - "Name": { - "value": "16.CAS automatic offline" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 11:36:42" - }, - "VendorId": { - "value": "CAS-1500.01.224" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "cbfadbdb-ac4a-40da-abbd-def9685097ed" - }, - "DisplayPath": { - "value": "PLC03_1251_50_15/OPC/inAlarms0/1_Plug not plugged" - }, - "Duration": { - "value": "02:30:02" - }, - "Name": { - "value": "1_Plug not plugged" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:28" - }, - "VendorId": { - "value": "\u003d03+1251.50.15-G1" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "ecfc9406-f3d3-4876-88bb-04390af3ceda" - }, - "DisplayPath": { - "value": "PLC03_1251_50_12/OPC/inAlarms0/1_Plug not plugged" - }, - "Duration": { - "value": "02:29:59" - }, - "Name": { - "value": "1_Plug not plugged" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:32" - }, - "VendorId": { - "value": "\u003d03+1251.50.12-G1" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "e7eb3c1b-3b7e-45d5-adeb-684e1674a078" - }, - "DisplayPath": { - "value": "FSC10_OFZ_1500_75_CH_1500_75_05/OPC/inAlarms0/3.Chute Full" - }, - "Duration": { - "value": "00:00:35" - }, - "Name": { - "value": "3.Chute Full" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:00:55" - }, - "VendorId": { - "value": "CH-1500.75.05" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "d149d26e-b48b-4d19-984f-b2219c80b591" - }, - "DisplayPath": { - "value": "PLC03_1251_50_09/OPC/inAlarms0/1_Plug not plugged" - }, - "Duration": { - "value": "02:29:59" - }, - "Name": { - "value": "1_Plug not plugged" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:32" - }, - "VendorId": { - "value": "\u003d03+1251.50.09-G1" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "7d24df29-18c5-44be-bba5-15a5ad3df72e" - }, - "DisplayPath": { - "value": "FSC10_OFZ_1500_71_CH_1500_71_14/OPC/inAlarms0/3.Chute Full" - }, - "Duration": { - "value": "00:11:41" - }, - "Name": { - "value": "3.Chute Full" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:49:50" - }, - "VendorId": { - "value": "CH-1500.71.14" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "990229a8-4019-4fa5-9785-04834affaea6" - }, - "DisplayPath": { - "value": "PLC66_1220_24_30/OPC/inAlarms0/4_Full 50%" - }, - "Duration": { - "value": "00:30:41" - }, - "Name": { - "value": "4_Full 50%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:30:49" - }, - "VendorId": { - "value": "\u003d66+1220.24.30-B119.0" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "fd270f76-7a6a-453a-b22d-10ed814270d5" - }, - "DisplayPath": { - "value": "PLC47_1210_08_01/OPC/inAlarms0/2_Area is not empty" - }, - "Duration": { - "value": "01:46:57" - }, - "Name": { - "value": "2_Area is not empty" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 10:14:33" - }, - "VendorId": { - "value": "\u003d47+1210.08.01-BE307.0" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "8df1dbd6-c1e1-42db-9698-fd89563916b1" - }, - "DisplayPath": { - "value": "PLC02_1510_11_30/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:00:31" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:00:59" - }, - "VendorId": { - "value": "\u003d02+1510.11.30-B220.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "53e2d15e-23bf-4a87-91b0-c1789a2d86aa" - }, - "DisplayPath": { - "value": "PLC25_1210_01_01/OPC/inAlarms0/2_Area is not empty" - }, - "Duration": { - "value": "04:12:43" - }, - "Name": { - "value": "2_Area is not empty" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 07:48:47" - }, - "VendorId": { - "value": "\u003d25+1210.01.01-BE307.0" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "7cbb5255-339e-463d-9917-aeb232fc2337" - }, - "DisplayPath": { - "value": "FSC10_IFZ_1500_54_CH_1500_54_09/OPC/inAlarms0/1.Bin contains item" - }, - "Duration": { - "value": "00:01:13" - }, - "Name": { - "value": "1.Bin contains item" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:00:17" - }, - "VendorId": { - "value": "CH-1500.54.09" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "891eda89-5a56-4da2-835d-00da69673cc6" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_450/OPC/inAlarms0/16.CAS automatic offline" - }, - "Duration": { - "value": "00:24:38" - }, - "Name": { - "value": "16.CAS automatic offline" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 11:36:52" - }, - "VendorId": { - "value": "CAS-1500.01.450" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "dfa68a57-ceb1-4c51-ad44-4d3e3768cde9" - }, - "DisplayPath": { - "value": "PLC70_1260_31_02/OPC/inAlarms0/1_Plug not plugged" - }, - "Duration": { - "value": "02:29:59" - }, - "Name": { - "value": "1_Plug not plugged" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:31" - }, - "VendorId": { - "value": "\u003d70+1260.31.02-G1" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "98aaaa33-9f9b-4685-83c4-ab226638dbd3" - }, - "DisplayPath": { - "value": "FSC10_IFZ_1500_60_BF_1500_60_01/OPC/inAlarms0/5.Speed difference" - }, - "Duration": { - "value": "00:00:01" - }, - "Name": { - "value": "5.Speed difference" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:01:30" - }, - "VendorId": { - "value": "BF-1500.60.01" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "9f44974d-29a8-4cda-8c05-1ac3c36bfa25" - }, - "DisplayPath": { - "value": "PLC08_1280_14_40/OPC/inAlarms0/2_Full 50%" - }, - "Duration": { - "value": "02:29:59" - }, - "Name": { - "value": "2_Full 50%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:31" - }, - "VendorId": { - "value": "\u003d08+1280.14.40-B219.5" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "bdee063d-e1e5-4900-bfed-550c8376f3e4" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_609/OPC/inAlarms0/16.CAS automatic offline" - }, - "Duration": { - "value": "00:24:32" - }, - "Name": { - "value": "16.CAS automatic offline" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 11:36:58" - }, - "VendorId": { - "value": "CAS-1500.01.609" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "2fd54271-08f9-41e5-b740-84b1532ab584" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_128/OPC/inAlarms0/18.Item Blocked for Sorting" - }, - "Duration": { - "value": "00:00:59" - }, - "Name": { - "value": "18.Item Blocked for Sorting" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:00:31" - }, - "VendorId": { - "value": "CAS-1500.01.128" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "133b5915-dcf7-4565-becb-9ced98576d96" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_128/OPC/inAlarms0/16.CAS automatic offline" - }, - "Duration": { - "value": "00:24:50" - }, - "Name": { - "value": "16.CAS automatic offline" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 11:36:40" - }, - "VendorId": { - "value": "CAS-1500.01.128" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "d6f2a2ce-d65b-4d7b-aaed-859ea44cebb0" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_487/OPC/inAlarms0/18.Item Blocked for Sorting" - }, - "Duration": { - "value": "00:06:01" - }, - "Name": { - "value": "18.Item Blocked for Sorting" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:55:29" - }, - "VendorId": { - "value": "CAS-1500.01.487" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "d30d38ae-95c6-40a2-8adb-d653932c90f4" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_488/OPC/inAlarms0/18.Item Blocked for Sorting" - }, - "Duration": { - "value": "00:06:00" - }, - "Name": { - "value": "18.Item Blocked for Sorting" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:55:30" - }, - "VendorId": { - "value": "CAS-1500.01.488" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "22a6a9e5-3f5d-45ea-8d9d-1023baaf380b" - }, - "DisplayPath": { - "value": "PLC02_1510_11_07/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:03:10" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:58:20" - }, - "VendorId": { - "value": "\u003d02+1510.11.07-B208.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "eba08435-1562-4299-9c1b-68b772151c1a" - }, - "DisplayPath": { - "value": "FSC10_OFZ_1500_78_CH_1500_78_05/OPC/inAlarms0/3.Chute Full" - }, - "Duration": { - "value": "00:02:44" - }, - "Name": { - "value": "3.Chute Full" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:58:46" - }, - "VendorId": { - "value": "CH-1500.78.05" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "295e057f-99ec-46b3-83d0-01f175608357" - }, - "DisplayPath": { - "value": "FSC10_ACZ_1500_57_BF_1500_57_02/OPC/inAlarms0/5.Speed difference" - }, - "Duration": { - "value": "00:04:40" - }, - "Name": { - "value": "5.Speed difference" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:56:51" - }, - "VendorId": { - "value": "BF-1500.57.02" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "051823b0-7e26-45f6-b05d-57c1919387a4" - }, - "DisplayPath": { - "value": "INBOUND/RECEIVE/Test_Tag/Expressions/Quality/Tag quality error" - }, - "Duration": { - "value": "02:30:15" - }, - "Name": { - "value": "Tag quality error" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:15" - }, - "VendorId": { - "value": "\"One or more tags has bad quality.\"" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "beddd156-0145-4827-9081-933c65b80b1b" - }, - "DisplayPath": { - "value": "PLC02_1510_11_10/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:00:15" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:01:15" - }, - "VendorId": { - "value": "\u003d02+1510.11.10-B209.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "2b4f72a0-f52b-46f4-a32e-a5b9ad2f6adb" - }, - "DisplayPath": { - "value": "PLC02_1510_11_15/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "01:08:02" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 10:53:28" - }, - "VendorId": { - "value": "\u003d02+1510.11.15-B212.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "9b95634f-1f6d-4c7f-8099-1abdaea31058" - }, - "DisplayPath": { - "value": "PLC03_1251_22_03/OPC/inAlarms0/0_Full 100%" - }, - "Duration": { - "value": "02:29:58" - }, - "Name": { - "value": "0_Full 100%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:32" - }, - "VendorId": { - "value": "\u003d03+1251.22.03-B202.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "c3f32389-61f0-4687-a00c-50b49015d028" - }, - "DisplayPath": { - "value": "FSC10_IFZ_1500_30_CH_1500_30_09/OPC/inAlarms0/1.Bin contains item" - }, - "Duration": { - "value": "00:19:55" - }, - "Name": { - "value": "1.Bin contains item" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:41:35" - }, - "VendorId": { - "value": "CH-1500.30.09" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "f8381bfa-7e1a-4850-b641-94087a4a5c35" - }, - "DisplayPath": { - "value": "PLC01_1510_82_14/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:00:15" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:01:15" - }, - "VendorId": { - "value": "\u003d01+1510.82.14-B324.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "45624aff-c8e3-4510-8d0a-4dcb7bf9ba13" - }, - "DisplayPath": { - "value": "PLC01_1510_11_34/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:00:27" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:01:03" - }, - "VendorId": { - "value": "\u003d01+1510.11.34-B206.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "07102021-c79e-4828-9475-28db828a2365" - }, - "DisplayPath": { - "value": "PLC02_1510_87_12/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:00:47" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 12:00:43" - }, - "VendorId": { - "value": "\u003d02+1510.87.12-B307.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "9604e5b3-14e0-400e-96e1-f22a70a91b00" - }, - "DisplayPath": { - "value": "FSC10_TRZ_1500_01_CAS_1500_01_352/OPC/inAlarms0/16.CAS automatic offline" - }, - "Duration": { - "value": "00:24:43" - }, - "Name": { - "value": "16.CAS automatic offline" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 11:36:47" - }, - "VendorId": { - "value": "CAS-1500.01.352" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "3ebfbb2a-a78a-4599-b3ff-c84058ed4525" - }, - "DisplayPath": { - "value": "PLC03_1251_50_06/OPC/inAlarms0/1_Plug not plugged" - }, - "Duration": { - "value": "02:29:59" - }, - "Name": { - "value": "1_Plug not plugged" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:32" - }, - "VendorId": { - "value": "\u003d03+1251.50.06-G1" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "3307a2c0-be8d-4f86-812a-13e4be1d9709" - }, - "DisplayPath": { - "value": "PLC02_1510_11_24/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:11:20" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:50:10" - }, - "VendorId": { - "value": "\u003d02+1510.11.24-B216.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "fb3dd482-20cc-4fbe-9451-4f3b90672994" - }, - "DisplayPath": { - "value": "PLC02_1510_87_06/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:02:42" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:58:48" - }, - "VendorId": { - "value": "\u003d02+1510.87.06-B304.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "6b78811d-b0c7-4d8a-9f36-9781a103f126" - }, - "DisplayPath": { - "value": "PLC02_1510_11_23/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "01:09:41" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 10:51:49" - }, - "VendorId": { - "value": "\u003d02+1510.11.23-B216.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "3b027050-6f4e-4ea7-9c66-43d9bbb8ab67" - }, - "DisplayPath": { - "value": "PLC02_1510_11_27/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:40:01" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:21:30" - }, - "VendorId": { - "value": "\u003d02+1510.11.27-B219.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "c3ec2aca-77d0-4bdc-88c4-21b65873182b" - }, - "DisplayPath": { - "value": "PLC02_1510_11_26/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:08:53" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:52:38" - }, - "VendorId": { - "value": "\u003d02+1510.11.26-B218.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "134ccefa-2375-4e82-92ea-50641d5cc51d" - }, - "DisplayPath": { - "value": "PLC01_1510_82_01/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "02:29:58" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-10 09:31:32" - }, - "VendorId": { - "value": "\u003d01+1510.82.01-B318.3" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "d50e3617-282b-48ce-aead-ecef5ae33d7a" - }, - "DisplayPath": { - "value": "PLC01_1510_82_02/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:07:11" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:54:19" - }, - "VendorId": { - "value": "\u003d01+1510.82.02-B318.7" - } - } - }, - { - "style": { - "classes": "Alarms-Styles/Diagnostic" - }, - "value": { - "AlarmId": { - "value": "ec0a50f8-79e8-4233-b7ae-ebf6d00e7d10" - }, - "DisplayPath": { - "value": "PLC01_1510_82_03/OPC/inAlarms0/3_Full 75%" - }, - "Duration": { - "value": "00:47:03" - }, - "Name": { - "value": "3_Full 75%" - }, - "Severity": { - "value": "0. Warning" - }, - "Timestamp": { - "value": "2022-08-12 11:14:27" - }, - "VendorId": { - "value": "\u003d01+1510.82.03-B319.3" - } - } - } - ], - "resizeMode": "fixed", - "rows": { - "highlight": { - "color": "#FFFF47" - } - }, - "selection": { - "mode": "multiple interval" - }, - "virtualized": false - }, - "type": "ia.display.table" - } - ], - "meta": { - "name": "Active_tab" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onRowDoubleClick": [ - { - "config": { - "script": "\trow \u003d event.value\n\tcustom_view \u003d row.get(\"path\",\"none\")\n\tif custom_view !\u003d \"None\":\n\t\tequipment_id \u003d custom_view.split(\"/\")[1]\n\t\turl_to_navigate \u003d \"/CustomView/%s/\" % (equipment_id,)\n\t\tsystem.perspective.navigate(page \u003d url_to_navigate)\n\t\tsystem.perspective.sendMessage(\"plc-to-display\", payload \u003d {\"device\":\"none\",\"show_controls\":False,\"area\":\"none\"}, scope \u003d \"page\")\n\t\tsystem.perspective.closePopup(id\u003d \"StatusPopUP\")\n\t" - }, - "scope": "G", - "type": "script" - }, - { - "config": { - "draggable": true, - "id": "W1H0Nole", - "modal": false, - "overlayDismiss": false, - "resizable": true, - "showCloseIcon": true, - "title": "InfoPopUp", - "type": "close", - "viewPath": "PopUp-Views/Controller-Equipment/Information", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - ] - } - }, - "meta": { - "name": "Views_list" - }, - "position": { - "basis": "915px", - "grow": 1 - }, - "propConfig": { - "props.data": { - "binding": { - "config": { - "path": "/root.custom.views_data" - }, - "type": "property" - } - } - }, - "type": "ia.display.table" - } - ], - "meta": { - "name": "Views" - }, - "position": { - "tabIndex": 2 - }, - "type": "ia.container.flex" - } - ], - "custom": { - "views_data": [ - { - "path": "Custom-Views/Detail" - } - ] - }, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\tproject_info \u003d system.perspective.getProjectInfo()\n\tself.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\tequipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ equipment_id)]\n\tself.custom.views_data \u003d views_data\n\t\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "root", - "tooltip": { - "enabled": true - } - }, - "propConfig": { - "custom.active_alarms": { - "binding": { - "config": { - "expression": "{./Active_tab/AlarmTable.props.data}" - }, - "transforms": [ - { - "code": "\treturn len(value)", - "type": "script" - } - ], - "type": "expr" - } - }, - "custom.state": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}" - }, - "tagPath": "{0}/Expressions/Status" - }, - "type": "tag" - } - } - }, - "props": { - "menuStyle": { - "fontWeight": "bold" - }, - "tabs": [ - "Alarms", - "Info", - "Views" - ] - }, - "type": "ia.container.tab" - } -} \ No newline at end of file diff --git a/.resources/d6818d9faf4cf364054adb2ac7718240e8ec9d2bbda091d5f1c36f90d6faa8e0 b/.resources/d6818d9faf4cf364054adb2ac7718240e8ec9d2bbda091d5f1c36f90d6faa8e0 deleted file mode 100644 index 72ac4b23..00000000 --- a/.resources/d6818d9faf4cf364054adb2ac7718240e8ec9d2bbda091d5f1c36f90d6faa8e0 +++ /dev/null @@ -1,537 +0,0 @@ -{ - "custom": { - "alarm_message": null, - "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": "PLC01", - "state": 5, - "state_string": "Unknown" - }, - "params": { - "directionLeft": false, - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.alarm_message": { - "persistent": true - }, - "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))\n\n" - }, - "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": "ARSAW" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "props.elements[0].fill.paint": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "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": [ - { - "d": "m 25,50.5 a 25,25 0 0 1 -25,-25 25,25 0 0 1 25,-25 25,25 0 0 1 25,25 25,25 0 0 1 -25,25 z", - "fill": {}, - "name": "Circle", - "stroke": { - "paint": "#000000", - "width": 1 - }, - "type": "path" - }, - { - "d": "M 8.3000002,34.740002 H 31.04 v 4.26 H 8.3000002 Z M 26.77,12 h 4.260001 V 34.74 H 26.77 Z M 16.110001,12 H 24.64 v 17.049999 h -8.529999 z m 17.059997,0 h 8.53 v 17.049999 h -8.53 z", - "fill": { - "paint": "#000000" - }, - "name": "ARSAW", - "type": "path" - } - ], - "style": {}, - "viewBox": "-0.5 -0.5 51 52" - }, - "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" - } - }, - "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/d6a3d933a21c8a951bd3468f7e343fbd4c7b6e540a5ec51a501c7c4a10e42df9 b/.resources/d6a3d933a21c8a951bd3468f7e343fbd4c7b6e540a5ec51a501c7c4a10e42df9 deleted file mode 100644 index dee08f75..00000000 --- a/.resources/d6a3d933a21c8a951bd3468f7e343fbd4c7b6e540a5ec51a501c7c4a10e42df9 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": "12px", - "fontWeight": "bold" - } - } -} \ No newline at end of file diff --git a/.resources/2fc48f07b6658ccdc7b0fcc48c38c91c3a7004a0a1ba3ab627a0f20b7775e90d b/.resources/d701eebe34bef2ab3c209817c498d3c279b582c2a6992eb0e9f006ea95601692 similarity index 100% rename from .resources/2fc48f07b6658ccdc7b0fcc48c38c91c3a7004a0a1ba3ab627a0f20b7775e90d rename to .resources/d701eebe34bef2ab3c209817c498d3c279b582c2a6992eb0e9f006ea95601692 diff --git a/.resources/d73c0268e0dfa30b14dbb0bd68be449109f66c44a810f40da526119d11834d87 b/.resources/d73c0268e0dfa30b14dbb0bd68be449109f66c44a810f40da526119d11834d87 new file mode 100644 index 0000000000000000000000000000000000000000..887d7a4b0c15fdc5d9ab3fa2d2e161046f0f9355 GIT binary patch literal 137554 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 PU_Vk~@}ec54E+8V#H86$ literal 0 HcmV?d00001 diff --git a/.resources/d7768bfba4a178f052e84033638653f77140d7b02de24f248031c6660ffaa3a3 b/.resources/d7768bfba4a178f052e84033638653f77140d7b02de24f248031c6660ffaa3a3 deleted file mode 100644 index a75de09a..00000000 --- a/.resources/d7768bfba4a178f052e84033638653f77140d7b02de24f248031c6660ffaa3a3 +++ /dev/null @@ -1,91 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": { - "defaultSize": { - "height": 165, - "width": 400 - } - }, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px" - }, - "props": { - "text": "An error occurred while connecting to the database." - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "32px" - }, - "props": { - "text": "Network or database connection failed. Check your settings or contact IT support." - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "grow": 1 - }, - "props": { - "alignItems": "flex-start", - "direction": "column", - "justify": "space-around", - "style": { - "paddingLeft": 5, - "paddingRight": 5 - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tsystem.perspective.closePopup(\"\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "props": { - "primary": false, - "style": { - "marginTop": 3 - }, - "text": "Dismiss" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "root" - }, - "props": { - "alignContent": "flex-start", - "direction": "column", - "justify": "space-around" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/bc5ac750c4d0435098e33452376dcb5a0dd7095ef3ac9df501e1792e49b97b78 b/.resources/d791e64e6d2eaf5b86e3bacecddda61fc9650387d26f69b6271934a2e15f77e4 similarity index 73% rename from .resources/bc5ac750c4d0435098e33452376dcb5a0dd7095ef3ac9df501e1792e49b97b78 rename to .resources/d791e64e6d2eaf5b86e3bacecddda61fc9650387d26f69b6271934a2e15f77e4 index 9fc86d5f..45bf852a 100644 --- a/.resources/bc5ac750c4d0435098e33452376dcb5a0dd7095ef3ac9df501e1792e49b97b78 +++ b/.resources/d791e64e6d2eaf5b86e3bacecddda61fc9650387d26f69b6271934a2e15f77e4 @@ -1,63 +1,23 @@ { "custom": { - "activityLogger": { - "alt_pageid": "Header", - "start_time": { - "$": [ - "ts", - 192, - 1755083503595 - ], - "$ts": 1755083503595 - } - } - }, - "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" - } - } + "largeView": false }, "params": { - "params": {}, - "size": "medium" + "params": {} }, "propConfig": { - "custom.activityLogger": { - "persistent": true - }, - "custom.activityLogger.pageid": { + "custom.largeView": { "binding": { "config": { - "path": "page.props.path" + "expression": "{page.props.dimensions.viewport.width} \u003e 800" }, - "transforms": [ - { - "code": " if value \u003d\u003d\u0027/\u0027 or value \u003d\u003d \u0027\u0027 or value \u003d\u003d None:\n return self.custom.activityLogger.alt_pageid.lower()\n else:\n return value[1:].lower()\n\treturn value", - "type": "script" - } - ], - "type": "property" - } + "type": "expr" + }, + "persistent": true }, "params.params": { "paramDirection": "input", "persistent": true - }, - "params.size": { - "paramDirection": "input" } }, "props": { @@ -222,9 +182,9 @@ "position.display": { "binding": { "config": { - "expression": "{view.params.size} \u003d \"large\"" + "path": "view.custom.largeView" }, - "type": "expr" + "type": "property" } } }, @@ -275,7 +235,7 @@ "position.display": { "binding": { "config": { - "expression": "{view.params.size} !\u003d \"large\"" + "expression": "!{view.custom.largeView}" }, "type": "expr" } @@ -494,193 +454,18 @@ } }, "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, "name": "Spacer End_3" }, "position": { - "basis": "20px", + "basis": "10px", "shrink": 0 }, "props": { @@ -736,8 +521,7 @@ "color": "#FFFFFF", "path": "material/legend_toggle", "style": { - "classes": "", - "marginRight": 20 + "classes": "" } }, "type": "ia.display.icon" @@ -801,7 +585,7 @@ "enabled": true, "rate": "3" }, - "queryPath": "GetActiveAlarmsByLocationAndPriority", + "queryPath": "Alarms-autStand/GetActiveAlarmsByLocationAndPriority", "returnFormat": "json" }, "transforms": [ @@ -850,20 +634,6 @@ }, "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 @@ -1197,7 +967,10 @@ "name": "root" }, "props": { - "justify": "flex-end" + "justify": "flex-end", + "style": { + "background": "rgb(43,43,43)" + } }, "type": "ia.container.flex" } diff --git a/.resources/d7aa5056dbace986564dd1a17dd712f499af08510650ef551c6e3373c4ad2ccd b/.resources/d7aa5056dbace986564dd1a17dd712f499af08510650ef551c6e3373c4ad2ccd deleted file mode 100644 index 6be433c99c73c904e27686b71913134ac9b6fbb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8286 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 WagyIvqB$VI-`(5#nwXpRPyY+LDJoh3 diff --git a/.resources/d7da1dfb17b8d0c6bd52978517fd7c400733e7413f3d86d9b285deffbead6a4c b/.resources/d7da1dfb17b8d0c6bd52978517fd7c400733e7413f3d86d9b285deffbead6a4c deleted file mode 100644 index d99fee36..00000000 --- a/.resources/d7da1dfb17b8d0c6bd52978517fd7c400733e7413f3d86d9b285deffbead6a4c +++ /dev/null @@ -1,38 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#3779AE", - "boxShadow": "none", - "color": "#FAFAFA", - "margin": "5px" - } - }, - "variants": [ - { - "pseudo": "hover", - "animation": { - "duration": "0.2s", - "direction": "normal", - "iterationCount": "1", - "timingFunction": "ease", - "keyframes": { - "0%": { - "backgroundColor": "var(--info)", - "boxShadow": "none" - }, - "100%": { - "backgroundColor": "#448BB7", - "boxShadow": "none" - } - } - } - }, - { - "pseudo": "active", - "style": { - "backgroundColor": "var(--info)", - "boxShadow": "none" - } - } - ] -} \ No newline at end of file diff --git a/.resources/d81077da2465942993d9ccde14aae50f5c02c946cd1384a19877237be27393a8 b/.resources/d81077da2465942993d9ccde14aae50f5c02c946cd1384a19877237be27393a8 deleted file mode 100644 index 138eeca7..00000000 --- a/.resources/d81077da2465942993d9ccde14aae50f5c02c946cd1384a19877237be27393a8 +++ /dev/null @@ -1,59 +0,0 @@ -def scada_web_socket_execute(): -#We read a list of tags at the beginning of the script for efficiency. - tags_to_read = system.tag.readBlocking(["Configuration/FC", "Configuration/aws"]) - whid = tags_to_read[0].value - aws_config = system.util.jsonDecode(tags_to_read[1].value) - region = aws_config.get("region") - logger = system.util.getLogger("%s-Web-Socket-Execute" % (whid)) - provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) - AWS.create_tags.create_web_socket_tags(whid) - Latency.CreateLatencyTags.create_latency_tags(whid) # attempt to create latency lags - check_socket_closed_in_loop = AWS.wbsckt_abort.check_web_socket() - #Check the heartbeat and restart if not recieved within the specified time - check_heartbeat = AWS.heartbeat.check_heartbeat(provider, 120) - if check_heartbeat: - AWS.wbsckt_abort.close_websckt() - AWS.heartbeat.get_heartbeat(provider) - if whid == "" or whid == None: - raise ValueError("FC not configured. A project on the gateway is missing Configuration/FC id") - - elif not region: - raise ValueError("No aws region configured for project") - - elif check_socket_closed_in_loop: - logger.warn("Socket is closed check System/close_socket tag") - - else: - description = provider + "websocket api gateway" - set_global = system.util.getGlobals().setdefault(whid,{}) - running = system.util.getGlobals()[whid].get("wbsckt_running", 0) - if not running: - try: - message_handler = AWS.message_types.A2C_MessageHandler(whid) - args = [whid, provider, region, message_handler, "scada/api/endpoint"] - description = "%s-web-socket-api" - system.util.invokeAsynchronous(AWS.web_socket.web_socket_main, args, description ) - except: - AWS.errors.error_handler(whid, "Web-Socket-Execute") - -def update_execute(): - data = AWS.message_types.Update() - data.read_messages_from_queue() - data.write_tags() - -def status_execute(): - tags_to_read = system.tag.readBlocking(["Configuration/FC", "System/aws_data"]) - whid = tags_to_read[0].value - alarms_data = system.util.jsonDecode(tags_to_read[1].value) -# Alarm script - try: - if AWS.message_types.global_first_connect == False: - Visualisation.status.reset_alarms(whid) - Visualisation.status.global_previous_state = {} - AWS.message_types.global_first_connect = True - status = Visualisation.status.GetStatus(whid, alarms_data) - status.build_status() - status.write_data() - alarms.alarm_count.get_count(whid, alarms_data) - except: - AWS.errors.error_handler(whid, "Status-Visualisation-Script") \ No newline at end of file diff --git a/.resources/d9063706dbfd2e6961314972d133bdae214e997d1cf3c9a3cf27fa9b7f5be7f4 b/.resources/d9063706dbfd2e6961314972d133bdae214e997d1cf3c9a3cf27fa9b7f5be7f4 deleted file mode 100644 index ee9f7cd1017ce9ae144a5c503f493df4dee7a0b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6210 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 diff --git a/.resources/d9a5dceae78ad1a17958fedad65bea2d00226cb19ffd90f01369a293d5a4732e b/.resources/d9a5dceae78ad1a17958fedad65bea2d00226cb19ffd90f01369a293d5a4732e deleted file mode 100644 index 41879b16..00000000 --- a/.resources/d9a5dceae78ad1a17958fedad65bea2d00226cb19ffd90f01369a293d5a4732e +++ /dev/null @@ -1,736 +0,0 @@ -{ - "custom": { - "alarm_message": null, - "covert_mode": true, - "disconnected": false, - "display_icon": true, - "error": false, - "isMatch": 0, - "plc": "value", - "priority": 0, - "priority_string": "No active alarms", - "searchId": "value", - "state": 5 - }, - "params": { - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.alarm_message": { - "persistent": true - }, - "custom.covert_mode": { - "binding": { - "config": { - "path": "this.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\r\n\t\t0, {session.custom.alarm_filter.show_safety},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_safety},\r\n\t\t4, {session.custom.alarm_filter.show_safety},\r\n\t\t5, {session.custom.alarm_filter.show_safety},\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.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 - }, - "params.forceFaultStatus": { - "paramDirection": "input", - "persistent": true - }, - "params.forceRunningStatus": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps": { - "paramDirection": "inout", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 25, - "width": 25 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Closed" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "expression": "{view.custom.state} \u003d 5" - }, - "type": "expr" - } - }, - "position.rotate.angle": { - "binding": { - "config": { - "path": "view.params.directionLeft" - }, - "enabled": false, - "transforms": [ - { - "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", - "type": "expression" - } - ], - "type": "property" - } - }, - "props.elements[0].fill.paint": { - "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" - } - }, - "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": [ - { - "d": "M 8.6500001,0 H 26.15 c 2.0775,0 3.75,1.6725 3.75,3.75 v 22.5 C 29.9,28.3275 28.2275,30 26.15,30 H 8.6500001 c -2.0775,0 -3.75,-1.6725 -3.75,-3.75 V 3.75 c 0,-2.0775 1.6725,-3.75 3.75,-3.75 z", - "fill": {}, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1.5 - }, - "type": "path" - }, - { - "d": "m 12,15 a 1,1 0 0 1 -1,1 1,1 0 0 1 -1,-1 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 z", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1.5 - }, - "type": "path" - }, - { - "d": "m -0.1,28 h 34 v 3 h -34 z", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1.5 - }, - "type": "path" - }, - { - "d": "M 12 14.97 L 13.7 14.97 Q 15.4 14.97 15.4 14.97 L 15.4 14.97", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1.5 - }, - "type": "path" - } - ], - "preserveAspectRatio": "xMidYMin", - "style": { - "overflow": "hidden" - }, - "viewBox": "-0.5 -0.5 35 32" - }, - "type": "ia.shapes.svg" - }, - { - "meta": { - "name": "Open" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "expression": "{view.custom.state} !\u003d 5" - }, - "type": "expr" - } - }, - "position.rotate.angle": { - "binding": { - "config": { - "path": "view.params.directionLeft" - }, - "enabled": false, - "transforms": [ - { - "expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)", - "type": "expression" - } - ], - "type": "property" - } - }, - "props.elements[1].fill.paint": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case({value},\r\n0,{session.custom.colours.state1},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state1},\r\n3,{session.custom.colours.state1},\r\n4,{session.custom.colours.state1},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)", - "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": [ - { - "d": "m 8.75,0 h 17.5 C 28.3275,0 30,1.6725 30,3.75 v 22.5 C 30,28.3275 28.3275,30 26.25,30 H 8.75 C 6.6725,30 5,28.3275 5,26.25 V 3.75 C 5,1.6725 6.6725,0 8.75,0 Z", - "fill": { - "paint": "#D5D5D5" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1.5 - }, - "type": "path" - }, - { - "d": "m 13,0 h 14 c 1.662,0 3,1.338 3,3 v 24 c 0,1.662 -1.338,3 -3,3 H 13 c -1.662,0 -3,-1.338 -3,-3 V 3 c 0,-1.662 1.338,-3 3,-3 z", - "fill": {}, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1.5 - }, - "type": "path" - }, - { - "d": "m 16.1,15 a 1,1 0 0 1 -1,1 1,1 0 0 1 -1,-1 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 z", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1.5 - }, - "type": "path" - }, - { - "d": "M 15 15 L 18 18", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1.5 - }, - "type": "path" - }, - { - "d": "m 0,28 h 34 v 3 H 0 Z", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1.5 - }, - "type": "path" - } - ], - "preserveAspectRatio": "xMidYMin", - "style": { - "overflow": "hidden" - }, - "viewBox": "-0.5 -0.5 35 32" - }, - "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\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown\")" - }, - "type": "expr" - } - }, - "meta.visible": { - "binding": { - "config": { - "path": "view.custom.display_icon" - }, - "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/c0a3588e3d91b277b958e6d3ed34d0f3cc3fbeb1e804647e6cf4c00ed4719fd8 b/.resources/d9ea188cac6650a3fdef6048f9f22640371bcfd10a38bc01bd17194cc676d5ed similarity index 100% rename from .resources/c0a3588e3d91b277b958e6d3ed34d0f3cc3fbeb1e804647e6cf4c00ed4719fd8 rename to .resources/d9ea188cac6650a3fdef6048f9f22640371bcfd10a38bc01bd17194cc676d5ed diff --git a/.resources/db2bae71266ae040beaf67a063e21e2fd72c647b303f586c675cdafb96ea7237 b/.resources/db2bae71266ae040beaf67a063e21e2fd72c647b303f586c675cdafb96ea7237 deleted file mode 100644 index c8dcfe7709d7e7cebe9f8ed3fcc13988d89d8a19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1592 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 Sk%0F?zmb<#k*bt13;91!-SO!F diff --git a/.resources/de07c47d2146a7ef173415cc1660ea3db71b4e96b1d31548bd545bf849fbd839 b/.resources/de07c47d2146a7ef173415cc1660ea3db71b4e96b1d31548bd545bf849fbd839 deleted file mode 100644 index b9ae40ae..00000000 --- a/.resources/de07c47d2146a7ef173415cc1660ea3db71b4e96b1d31548bd545bf849fbd839 +++ /dev/null @@ -1,83 +0,0 @@ -from urllib2_aws4auth import aws_urlopen, Request -from urllib2 import HTTPError -from urllib import urlencode -import json -import boto3 -from pprint import pformat - -REGION = 'us-east-2' -SERVICE = 'execute-api' -ENDPOINT = 'https://l7o38q47a6.execute-api.us-east-2.amazonaws.com/default/ScadaProductMetrics' -LOGGER = system.util.getLogger('activityLog') - -def openSession(): - CREDS = boto3.Session().get_credentials() - AWS_ACCESS_KEY_ID = CREDS.access_key - AWS_SECRET_ACCESS_KEY = CREDS.secret_key - TOKEN = CREDS.token - - OPENER = aws_urlopen( - AWS_ACCESS_KEY_ID, - AWS_SECRET_ACCESS_KEY, - REGION, - SERVICE, - session_token=TOKEN, - verify=False) - return OPENER - -def createActivityDetails(session, resource_type, resource, current_page, start_time, end_time = None): - user = session.props.auth.user.userName - session_id = session.props.id - site = session.custom.fc - start_time = system.date.format(start_time, 'yyyy-MM-dd HH:mm:ss') - end_time = system.date.format(end_time, 'yyyy-MM-dd HH:mm:ss') if end_time != None else end_time - user_UTCoffset = session.props.device.timezone.utcOffset - activityDetails = {'username':user, - 'session_id':session_id, - 'site': site, - 'start_time': start_time, - 'end_time':end_time, - 'user_UTCoffset': user_UTCoffset, - 'resource_type': resource_type, - 'resource': resource, - 'current_page': current_page} - return activityDetails - -def logActivity(session, resource_type, resource, current_page, start_time, end_time = None): - activityDetails = createActivityDetails(session, resource_type, resource, current_page, start_time, end_time) - user = session.props.auth.user.userName - opener = openSession() - params = activityDetails - payload = json.dumps(params) - method = 'POST' - # in the headers the Ignition session username (session.props.auth.user.userName) must be supplied as 'X-Ignition-User' - headers = { - 'Content-type': 'application/json', - 'X-Ignition-User': user - } - req = Request(url=ENDPOINT, method=method, data=payload, headers=headers) - # open the request and process the read - try: - resp = opener(req) - response = json.loads(resp.read()) - error = None - print pformat(response) - except HTTPError, e: - error = str(e) - response = None - print error - LOGGER.info(error) - return {'error': error, 'response':response } - -def callLogger(self, resource_type, resource = None, current_page= None): - """ self is reference to the view. So if calling from shutdown script on the view, pass self. - If calling from a component, pass self.view""" - if self.session.custom.enable_activity_logging: - if self.session.props.device.type != 'designer': - end_time = system.date.now() if resource_type == 'page' else None - start_time = self.custom.activityLogger.start_time - pageid = self.custom.activityLogger.pageid - resource = pageid if resource == None else resource - current_page = pageid if current_page == None else current_page - logActivity(self.session, resource_type, resource, current_page, start_time, end_time) - \ No newline at end of file diff --git a/.resources/de35832ecb711a1a5e5c7e43bec37280003b522aefe6d7084cd286e6df9b1871 b/.resources/de35832ecb711a1a5e5c7e43bec37280003b522aefe6d7084cd286e6df9b1871 deleted file mode 100644 index 88063614..00000000 --- a/.resources/de35832ecb711a1a5e5c7e43bec37280003b522aefe6d7084cd286e6df9b1871 +++ /dev/null @@ -1,7 +0,0 @@ -{ - "base": { - "style": { - "color": "#FF0000" - } - } -} \ No newline at end of file diff --git a/.resources/ca0bad04d689664be9650e1b3bfe4620eb87f71bc45c876d93a4db63e4be5871 b/.resources/de845d4c7c80aa215b1b42262a9670b3e6d4f095703c428a09090b1babb730a9 similarity index 100% rename from .resources/ca0bad04d689664be9650e1b3bfe4620eb87f71bc45c876d93a4db63e4be5871 rename to .resources/de845d4c7c80aa215b1b42262a9670b3e6d4f095703c428a09090b1babb730a9 diff --git a/.resources/de9a5df82c998659330b194086966e71a8aec8d3b5ee15eb63efabf7f1e62e3d b/.resources/de9a5df82c998659330b194086966e71a8aec8d3b5ee15eb63efabf7f1e62e3d deleted file mode 100644 index decb6680..00000000 --- a/.resources/de9a5df82c998659330b194086966e71a8aec8d3b5ee15eb63efabf7f1e62e3d +++ /dev/null @@ -1,115 +0,0 @@ -{ - "custom": {}, - "params": { - "row": "value", - "rowIndex": "value", - "value": { - "Msg": "Mesg PlaceHolder", - "Timestamp": "TimeStamp Place holder" - } - }, - "propConfig": { - "params.row": { - "paramDirection": "input", - "persistent": true - }, - "params.rowIndex": { - "paramDirection": "input", - "persistent": true - }, - "params.value": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 59, - "width": 891 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "147px", - "shrink": 0 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.value" - }, - "transforms": [ - { - "code": "\treturn value[\"Timestamp\"]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_2" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.value" - }, - "transforms": [ - { - "code": "\treturn value[\"Msg\"]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "margin": "5px", - "padding": "5px" - }, - "textStyle": { - "fontSize": 14, - "fontWeight": "100", - "overflow": "visible", - "overflowWrap": "break-word", - "wordWrap": "break-word" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "root" - }, - "props": { - "style": { - "backgroundColor": "#AAAAAA", - "borderBottomLeftRadius": "5px", - "borderBottomRightRadius": "5px", - "borderTopLeftRadius": "5px", - "borderTopRightRadius": "5px", - "color": "#000000", - "margin": "10px", - "padding": "5px" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/deaac3e05b7bbc553a524c14510bfcb312a7ba7d260c0014886d21dce94700e3 b/.resources/deaac3e05b7bbc553a524c14510bfcb312a7ba7d260c0014886d21dce94700e3 deleted file mode 100644 index 6588049dae3a13d4fe5f9654f3d495d21800a38a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 639 zcmeAS@N?(olHy`uVBq!ia0y~yU{nIKCvva>$@J-4Z!$12xp}%chE&A8y=K_uvU79{F_h!1jfooipU_4eCi*X#DPN8EWOz3^?B^|jYuZ{(OU zbpPVL*mL1wfyDC5nKJ$E4X$gS>CSSUC1^GO{Nu9Sy{DfVt-G#$KGkKh6y1>R(!OS!UjO^#e*R949yhCkQJksJl4$bu`Qo oV6;?ZDsp0ZGAc0`gXA~k&l!8=zhsxc046L3Pgg&ebxsLQ0JG-QYybcN diff --git a/.resources/3cc55dfd2a911105e94fea01de42a4e5b40bf6fef6231d354d943f7ebc932f67 b/.resources/deacf40f90961a646f400ef969d16d662817a6beecc8959ab9e7dde08eae92b3 similarity index 100% rename from .resources/3cc55dfd2a911105e94fea01de42a4e5b40bf6fef6231d354d943f7ebc932f67 rename to .resources/deacf40f90961a646f400ef969d16d662817a6beecc8959ab9e7dde08eae92b3 diff --git a/.resources/280daa6fa6cd045a59c264635d3b7542e4f28dd30a1b27960bad83c6f3b7c544 b/.resources/decaa699610c428e28207ba929e8f82152ebb7ef3370d98ae312611ba488bb02 similarity index 100% rename from .resources/280daa6fa6cd045a59c264635d3b7542e4f28dd30a1b27960bad83c6f3b7c544 rename to .resources/decaa699610c428e28207ba929e8f82152ebb7ef3370d98ae312611ba488bb02 diff --git a/.resources/df2236708d68bd1a4bffe53191b3761eaeef14ed9900e1bbe7f6c14d4b793c0b b/.resources/df2236708d68bd1a4bffe53191b3761eaeef14ed9900e1bbe7f6c14d4b793c0b deleted file mode 100644 index e913ad7e..00000000 --- a/.resources/df2236708d68bd1a4bffe53191b3761eaeef14ed9900e1bbe7f6c14d4b793c0b +++ /dev/null @@ -1,16 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FCC400B3", - "borderColor": "#000000", - "borderStyle": "solid", - "borderWidth": "0.5px", - "color": "#000000", - "fontFamily": "Arial", - "fontSize": "14px", - "fontWeight": "bold", - "lineHeight": "20px", - "textAlign": "center" - } - } -} \ No newline at end of file diff --git a/.resources/e0b66c9c8b12617e9c8236ee1c17158929e228553d38744797b8005b601aa322 b/.resources/e0b66c9c8b12617e9c8236ee1c17158929e228553d38744797b8005b601aa322 deleted file mode 100644 index 082edb586f05c4cbb3b923d53664f66d574956da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 889 zcmV-<1BU#GP)sJ zXLI6=z*{vhipYz)(AyyLWtHXDv$OE6i-PX-`SRg+e$USHe9yC+Z&D0}LZPm-lFk>= zD1so!RpUa;p-?E))zewbMSjLU?nieIPj(NZdy&}Q5rQDdRUjU7Q6=U+eTz=M|1tdb z8!}`&Z&t$_|5DN7n6#b^Ggo8X^dC z-8hT6{o|hL`Bd8V$uE!Brm(FjCOV5Wu6HUiSB8h82O+`z%MHpDc&P zgV1C1G-@Ou)-4i8bbl-{TY9i~J0C!R^%i(k2LkAPLT5?#uV+ z*iLN1|0+nB=XQH}S!qT2?Q&Jw-P#(XzVFe)&cKpiBEm8}s7RHIBocvT2*)nVOHc_M zLwL5a{+>o%4pXAQEzHe86EyoNfqq${Jj+P&QiPHc9^MA!C72>S=NC!9F9l`4z_AL9 zBnr*<8`Y|^>N^^a@%0<^xAOBs0U4$eYk(Up08>zk0uLj~CjP`$2!bHMg_v{f#O!2k ziEyq-_v41m_U=yJJ4N;!^u(%(NYU|9`^ z+qK$)f`XBekq4cfUavPNCr8)OvADSCa5$hJey5a9x!q%9W8mZQct-7ZlgY%gtdC({ zOib8@hRkL&&kH=yv+zBR&&$i}>guYfs3qSLHy}i8~8ynr--AzqR7KiX&dkh&!TI@lICVN* zc6RpY=x9Sj0}O&sdU|?IO-)r*RY^$+^g!9x)>d3xtkGy-9I}sL7|2=3HG{zbwh*;x zX=zZ_*Vk*c+Kh~hsi`Sg170;ZH$(W=)zyKaN~MBNz+y0d`R}4osOzU+V|Bq-@K5nC P00000NkvXXu0mjf`5eR! diff --git a/.resources/d2dc346773a16e2c26e05a568e622067496fab331223c276fc70b72d96382244 b/.resources/e0bb5dd5d606df0684dd6eb1ce48e9ddaf2766b6c6b55ef921e0abc53096c06e similarity index 100% rename from .resources/d2dc346773a16e2c26e05a568e622067496fab331223c276fc70b72d96382244 rename to .resources/e0bb5dd5d606df0684dd6eb1ce48e9ddaf2766b6c6b55ef921e0abc53096c06e diff --git a/.resources/e11d9e80d1cc076cd4ebfa2365b535a6c6836500bb809ffbdde53ffb1f833fda b/.resources/e11d9e80d1cc076cd4ebfa2365b535a6c6836500bb809ffbdde53ffb1f833fda deleted file mode 100644 index 204e23f8..00000000 --- a/.resources/e11d9e80d1cc076cd4ebfa2365b535a6c6836500bb809ffbdde53ffb1f833fda +++ /dev/null @@ -1,162 +0,0 @@ -global_previous_state = {} -class GetStatus(): - """This class calculates the highest priority - alarm active for all parts of the source id. It scans the active alarms list, - splits each source id and returns the highest priority alarm to a dict object id_to_status. - It stores the previuos state of the dict object and compares current to previous. - ALARMST tags are then updated if they have been removed, added or the value changed - Args: - whid : Warehouse id for the project/ tag provider(string) - alarm_data: Current active alarms(dict) - KeyError: N/A""" - def __init__(self, whid, alarm_data): - self.whid = whid - self.alarm_data = alarm_data - self.id_to_status = {} - self.tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (whid) - self.logger = system.util.getLogger("%s-Update-Visualisation" % (whid)) - - def update_status(self, item, priority): - if(self.id_to_status.get(item) is None or - self.id_to_status.get(item) < priority): - self.id_to_status[item] = priority - - def build_status(self): - for k, v in self.alarm_data.items(): - equipment, device, sub_device = "","","" - alarm_dict = v - source_id = alarm_dict.get("sourceId") - priority = alarm_dict.get("priority") - state = alarm_dict.get("state") - if state != 2: - id_elements = source_id.split("/") - controller = id_elements[0] - if len(id_elements) > 4: - self.logger.error("Incorrect length for source id") - else: - while True: - path = "/".join(id_elements) - self.update_status(path, priority) - id_elements.pop() - if len(id_elements) == 0: - break - global global_previous_state - self.calculate_diff() - global_previous_state = self.id_to_status - - def build_alarm_paths_and_values(self, keys, paths, values): - for item in keys: - value = self.id_to_status.get(item) - tag_path = "%s%s/%s" % (self.tag_provider, item, "ALARMST") - paths.append(tag_path) - values.append(value) - return paths, values - - def write_to_tags(self, message, paths, values): - system.tag.writeBlocking(paths, values) - self.logger.info(message + str(paths)) - - def calculate_diff(self): - set_previous_values = set(global_previous_state.keys()) - set_current_values = set(self.id_to_status.keys()) - intersect = set_current_values.intersection(set_previous_values) - removed_keys = set_previous_values - intersect - added_keys = set_current_values - intersect - changed_values = set(k for k in intersect if global_previous_state[k] != self.id_to_status[k]) - tag_paths_to_delete = [] - values_to_delete = [] - for i in removed_keys: - tag_path = "%s%s/%s" % (self.tag_provider, i, "ALARMST") - tag_paths_to_delete.append(tag_path) - values_to_delete.append(0) - - tag_paths_to_add, values_to_add = self.build_alarm_paths_and_values(added_keys, [], []) - for item in added_keys: - self.create_alarm_state_tags(self.tag_provider + item) - changed_tag_paths, changed_values = self.build_alarm_paths_and_values(changed_values, [], []) - - if changed_tag_paths: - self.write_to_tags("Changed paths = ", changed_tag_paths, changed_values) - - if tag_paths_to_add: - self.write_to_tags("Paths added = ", tag_paths_to_add, values_to_add) - - if tag_paths_to_delete: - self.write_to_tags("Deleted paths = ", tag_paths_to_delete, values_to_delete) - - def write_data(self): - status_encoded = system.util.jsonEncode(self.id_to_status) - system.tag.writeAsync([self.tag_provider - + "System/IdToStatus"], - [status_encoded] - ) - - def create_alarm_state_tags(self, source_id): - if not system.tag.exists(source_id +"/ALARMST"): - tag = {"name": "ALARMST", - "valueSource": "memory", - "dataType": "Int1", - "value": 0} - create_tag = system.tag.configure(source_id, tag) - if not create_tag[0].isGood(): - logger.warn("Failed to create tag: " + str(source_id)) - -def reset_tags(provider, query): - results = system.tag.query(provider, query) - tags_to_write = [] - values_to_write = [] - for i in results: - tags_to_write.append(str(i["fullPath"])) - values_to_write.append(0) - if tags_to_write: - system.tag.writeBlocking(tags_to_write, values_to_write) - -def reset_alarms(whid): - logger_name = "%s-Alarm-Reset" % (whid) - logger = system.util.getLogger(logger_name) - logger.warn("Alarms have been reset") - provider = "%s_SCADA_TAG_PROVIDER" % (whid) - limit = 100 - query = { - "options": { - "includeUdtMembers": True, - "includeUdtDefinitions": False - }, - "condition": { - "path": "*ALARMST*", - "attributes": { - "values": [], - "requireAll": True - } - }, - "returnProperties": [ - "tagType", - "quality" - ] - } - reset_tags(provider, query) - -def reset_disconnects(whid): - logger_name = "%s-Disconnects-Reset" % (whid) - logger = system.util.getLogger(logger_name) - provider = "%s_SCADA_TAG_PROVIDER" % (whid) - limit = 100 - query = { - "options": { - "includeUdtMembers": True, - "includeUdtDefinitions": False - }, - "condition": { - "path": "*DCN*", - "attributes": { - "values": [], - "requireAll": True - } - }, - "returnProperties": [ - "tagType", - "quality" - ] - } - reset_tags(provider, query) - logger.warn("DCN tags have been reset") diff --git a/.resources/33ddce01a1204d72f90dc9e1d348b6d0d4a5b042d2f7318824525ea5d94f94f7 b/.resources/e133d1ff4464bf5b2b38856b2699d016ec275935f9a130257cd7ed6df392d2b4 similarity index 100% rename from .resources/33ddce01a1204d72f90dc9e1d348b6d0d4a5b042d2f7318824525ea5d94f94f7 rename to .resources/e133d1ff4464bf5b2b38856b2699d016ec275935f9a130257cd7ed6df392d2b4 diff --git a/.resources/e1749d7049a1ae1484031795f6fee975afadf9e703088302fce06b6a6410b0ce b/.resources/e1749d7049a1ae1484031795f6fee975afadf9e703088302fce06b6a6410b0ce deleted file mode 100644 index 2aa006e1..00000000 --- a/.resources/e1749d7049a1ae1484031795f6fee975afadf9e703088302fce06b6a6410b0ce +++ /dev/null @@ -1,273 +0,0 @@ -{ - "custom": {}, - "params": { - "Display": "value", - "status": null, - "tagProps": [ - "F01", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "params.Display": { - "paramDirection": "input", - "persistent": true - }, - "params.status": { - "binding": { - "config": { - "path": "/root/FlexContainer_1/PLC_Status.props.status" - }, - "type": "property" - }, - "paramDirection": "output", - "persistent": true - }, - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 110, - "width": 200 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Filler" - }, - "position": { - "basis": "5px", - "shrink": 0 - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "32px" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.tagProps[3]" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "fontFamily": "Helvetica", - "fontSize": 15, - "fontStyle": "italic", - "fontWeight": "bold", - "textAlign": "center", - "textTransform": "uppercase" - } - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "meta": { - "name": "Filler" - }, - "position": { - "basis": "5px", - "grow": 1 - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onDoubleClick": { - "config": { - "script": "\tnavigation.navigate_to_page.detailed_view(self, self.view.params.tagProps[0],self.view.params.tagProps[0], self.view.params.tagProps[3])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "PLC_Status" - }, - "position": { - "basis": "150px" - }, - "propConfig": { - "meta.visible": { - "binding": { - "config": { - "path": "view.params.Display" - }, - "type": "property" - } - }, - "props.status": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}" - }, - "tagPath": "{0}/Expressions/Status" - }, - "type": "tag" - }, - "onChange": { - "enabled": null, - "script": "\tpayload \u003d {}\n\tpayload[\"status\"] \u003d self.props.status\n\tsystem.perspective.sendMessage(\"update-controller-status\", payload \u003d payload, scope \u003d \"view\")" - } - }, - "props.style.classes": { - "binding": { - "config": { - "path": "this.props.status" - }, - "transforms": [ - { - "fallback": "State-Styles/State0", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "State-Styles/Background-Fill/State1" - }, - { - "input": 2, - "output": "State-Styles/Background-Fill/State2" - }, - { - "input": 3, - "output": "State-Styles/Background-Fill/State3" - }, - { - "input": 4, - "output": "State-Styles/Background-Fill/State4" - }, - { - "input": 5, - "output": "State-Styles/Background-Fill/State5" - }, - { - "input": 6, - "output": "State-Styles/Background-Fill/State6" - }, - { - "input": 0, - "output": "State-Styles/State0" - } - ], - "outputType": "style-list", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "alignItems": "center", - "borderBottomLeftRadius": 5, - "borderBottomRightRadius": 5, - "borderStyle": "solid", - "borderStyleTop": "groove", - "borderTopLeftRadius": 5, - "borderTopRightRadius": 5, - "borderWidth": "0.5px", - "fontFamily": "Arial", - "fontSize": "22px", - "fontWeight": "bolder" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Filler_0" - }, - "position": { - "basis": "5px", - "grow": 1 - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "40px", - "shrink": 0 - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "1px", - "shrink": 0 - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "root" - }, - "propConfig": { - "custom.pageId": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}" - }, - "tagPath": "{0}/Parameters.PageId" - }, - "type": "tag" - } - } - }, - "props": { - "direction": "column", - "style": { - "backgroundColor": "#AAAAAA", - "borderColor": "#A6A3A3", - "borderStyle": "ridge" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/e174e60b417ccfe0d8b5d8a60dd59ede576019185c62f40dc69170fe979bf3ae b/.resources/e174e60b417ccfe0d8b5d8a60dd59ede576019185c62f40dc69170fe979bf3ae deleted file mode 100644 index 82b02cb887eeb3c331785778aa4906099f8632f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13683 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 diff --git a/.resources/e19c24a98cdfbdbe5e5ce504d23a622d5b1baac4db0453b91e5c5f01ec354953 b/.resources/e19c24a98cdfbdbe5e5ce504d23a622d5b1baac4db0453b91e5c5f01ec354953 deleted file mode 100644 index 737d8904..00000000 --- a/.resources/e19c24a98cdfbdbe5e5ce504d23a622d5b1baac4db0453b91e5c5f01ec354953 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "var(--error)", - "color": "#2B2B2B", - "margin": "4px", - "padding": "4px" - } - } -} \ No newline at end of file diff --git a/.resources/e1d6062c4a1e3de3c50ae60b8e168381a621e38e3755897edcbb1edde7cec3a8 b/.resources/e1d6062c4a1e3de3c50ae60b8e168381a621e38e3755897edcbb1edde7cec3a8 deleted file mode 100644 index 0845b6ff..00000000 --- a/.resources/e1d6062c4a1e3de3c50ae60b8e168381a621e38e3755897edcbb1edde7cec3a8 +++ /dev/null @@ -1,749 +0,0 @@ -{ - "custom": {}, - "params": { - "btnActionClose": "closePopup", - "btnActionPrimary": "closePopup", - "btnActionSecondary": "closePopup", - "btnIconAlignment": "right", - "btnIconPrimary": "chevron_right", - "btnIconSecondary": "", - "btnTextPrimary": "Primary", - "btnTextSecondary": "Secondary", - "message": "Alert message goes here.", - "payload": { - "key": "The payload to return to the caller would go here. DLC 2021-09-23" - }, - "showCloseBtn": true, - "state": "info", - "title": "title" - }, - "propConfig": { - "params.btnActionClose": { - "paramDirection": "input", - "persistent": true - }, - "params.btnActionPrimary": { - "paramDirection": "inout", - "persistent": true - }, - "params.btnActionSecondary": { - "paramDirection": "inout", - "persistent": true - }, - "params.btnIconAlignment": { - "paramDirection": "inout" - }, - "params.btnIconPrimary": { - "paramDirection": "inout", - "persistent": true - }, - "params.btnIconSecondary": { - "paramDirection": "inout", - "persistent": true - }, - "params.btnIconSecondary_1": { - "paramDirection": "input", - "persistent": true - }, - "params.btnIconSecondary_2": { - "paramDirection": "input", - "persistent": true - }, - "params.btnIconSecondary_3": { - "paramDirection": "input", - "persistent": true - }, - "params.btnTextPrimary": { - "paramDirection": "inout" - }, - "params.btnTextSecondary": { - "paramDirection": "inout" - }, - "params.buttons.key": { - "paramDirection": "input", - "persistent": true - }, - "params.message": { - "paramDirection": "input", - "persistent": true - }, - "params.payload": { - "paramDirection": "input", - "persistent": true - }, - "params.showCloseBtn": { - "paramDirection": "input", - "persistent": true - }, - "params.state": { - "paramDirection": "input", - "persistent": true - }, - "params.title": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 224, - "width": 384 - } - }, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "iconMain" - }, - "position": { - "basis": "32px", - "shrink": 0 - }, - "propConfig": { - "props.color": { - "binding": { - "config": { - "expression": "{view.params.state}" - }, - "transforms": [ - { - "fallback": "var(--info)", - "inputType": "scalar", - "mappings": [ - { - "input": "warning", - "output": "#FFFF00" - }, - { - "input": "success", - "output": "#00CC00" - }, - { - "input": "error", - "output": "#FF8000" - }, - { - "input": "info", - "output": "#007EFC" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.path": { - "binding": { - "config": { - "expression": "{view.params.state}" - }, - "transforms": [ - { - "fallback": "material/info", - "inputType": "scalar", - "mappings": [ - { - "input": "warning", - "output": "material/warning" - }, - { - "input": "info", - "output": "material/info" - }, - { - "input": "error", - "output": "material/error" - }, - { - "input": "success", - "output": "material/check_circle" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "Utilities/m-r-16" - } - }, - "type": "ia.display.icon" - }, - { - "children": [ - { - "meta": { - "name": "title" - }, - "position": { - "grow": 1, - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "{this.props.text}" - }, - "transforms": [ - { - "fallback": true, - "inputType": "scalar", - "mappings": [ - { - "input": "", - "output": false - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.style.color": { - "binding": { - "config": { - "path": "view.params.state" - }, - "enabled": false, - "transforms": [ - { - "fallback": "var(--info)", - "inputType": "scalar", - "mappings": [ - { - "input": "info", - "output": "var(--info)" - }, - { - "input": "success", - "output": "var(--success)" - }, - { - "input": "error", - "output": "var(--error)" - }, - { - "input": "warning", - "output": "var(--warning)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "path": "view.params.title" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Alerts/alertTitle", - "color": "#FAFAFA" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "message" - }, - "position": { - "grow": 1, - "shrink": 0 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.message" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Alerts/alertMessage" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "content" - }, - "position": { - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "classes": "Utilities/m-r-16" - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tmessageType \u003d self.view.params.btnActionClose\t\n\tsystem.perspective.sendMessage(messageType, scope \u003d \"session\")" - }, - "scope": "G", - "type": "script" - }, - "onTouchStart": { - "config": { - "script": "\tmessageType \u003d self.view.params.btnActionClose\t\t\n\tpayload \u003d self.view.params.payload\t\t## Added 2021-09-23 to return to caller view\n\tsystem.perspective.sendMessage(messageType, payload, scope \u003d \"session\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "iconClose" - }, - "position": { - "basis": "16px", - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.params.showCloseBtn" - }, - "type": "property" - } - } - }, - "props": { - "color": "#FAFAFA", - "path": "material/close", - "style": { - "classes": "Alerts/alertClose" - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "closePopup", - "pageScope": false, - "script": "\t# closes the last focused popup\n\tsystem.perspective.closePopup(\u0027alertDialog\u0027)", - "sessionScope": true, - "viewScope": false - } - ] - }, - "type": "ia.display.icon" - } - ], - "meta": { - "name": "body" - }, - "position": { - "basis": "150px", - "grow": 1, - "shrink": 0 - }, - "props": { - "alignItems": "flex-start", - "style": { - "classes": "Utilities/p-16" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tmessageType \u003d self.view.params.btnActionSecondary\t\t\n\tpayload \u003d self.view.params.payload\t\t## Added 2021-09-23 to return to caller view\n\tsystem.perspective.sendMessage(messageType, payload, scope \u003d \"session\")" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "actionSecondary" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": true, - "inputType": "scalar", - "mappings": [ - { - "input": "", - "output": false - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - } - }, - "props.image.icon.path": { - "binding": { - "config": { - "expression": "\"material/\" + {view.params.btnIconSecondary}" - }, - "transforms": [ - { - "code": "\tif str(value) \u003d\u003d \"material/\":\n\t\treturn \"\"\n\telse:\n\t\treturn value", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.image.position": { - "binding": { - "config": { - "path": "view.params.btnIconAlignment" - }, - "type": "property" - } - }, - "props.image.style.fill": { - "binding": { - "config": { - "path": "view.params.state" - }, - "transforms": [ - { - "fallback": "#222222", - "inputType": "scalar", - "mappings": [ - { - "input": "info", - "output": "#17599C" - }, - { - "input": "success", - "output": "#117539" - }, - { - "input": "warning", - "output": "#C26700" - }, - { - "input": "error", - "output": "#A62D19" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.style.classes": { - "binding": { - "config": { - "path": "view.params.state" - }, - "enabled": false, - "transforms": [ - { - "fallback": "Alerts/alertBtn2 Utilities/m-r-8 Utilities/p-rl-8", - "inputType": "scalar", - "mappings": [ - { - "input": "error", - "output": "Alerts/states/errorBtn2 Utilities/m-r-8 Utilities/p-rl-8" - }, - { - "input": "warning", - "output": "Alerts/states/warningBtn2 Utilities/m-r-8 Utilities/p-rl-8" - }, - { - "input": "info", - "output": "Alerts/states/infoBtn2 Utilities/m-r-8 Utilities/p-rl-8" - }, - { - "input": "success", - "output": "Alerts/states/successBtn2 Utilities/m-r-8 Utilities/p-rl-8" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "expression": "{view.params.btnTextSecondary}" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "height": 20, - "icon": {}, - "width": 20 - }, - "primary": false, - "style": { - "classes": "Alerts/alertButtonSecondary" - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "closePopup", - "pageScope": false, - "script": "\t# closes the last focused popup\n\tsystem.perspective.closePopup(\u0027alertDialog\u0027)", - "sessionScope": true, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tmessageType \u003d self.view.params.btnActionPrimary\t\n\tpayload \u003d self.view.params.payload\t\t## Added 2021-09-23 to return to caller view\n\tsystem.perspective.sendMessage(messageType, payload, scope \u003d \"session\")\n#\tsystem.perspective.print(\u0027sent message \"%s\" to session from primary button\u0027 % messageType)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "actionPrimary" - }, - "position": { - "basis": "102px", - "shrink": 0 - }, - "propConfig": { - "props.image.icon.path": { - "binding": { - "config": { - "expression": "\"material/\" + {view.params.btnIconPrimary}" - }, - "transforms": [ - { - "code": "\tif str(value) \u003d\u003d \"material/\":\n\t\treturn \"\"\n\telse:\n\t\treturn value", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.image.position": { - "binding": { - "config": { - "path": "view.params.btnIconAlignment" - }, - "type": "property" - } - }, - "props.style.classes": { - "binding": { - "config": { - "path": "view.params.state" - }, - "enabled": false, - "transforms": [ - { - "fallback": "Alerts/alertBtn1 Utilities/p-rl-8", - "inputType": "scalar", - "mappings": [ - { - "input": "error", - "output": "Alerts/states/errorBtn1 Utilities/p-rl-8" - }, - { - "input": "warning", - "output": "Alerts/states/warningBtn1 Utilities/p-rl-8" - }, - { - "input": "info", - "output": "Alerts/states/infoBtn1 Utilities/p-rl-8" - }, - { - "input": "success", - "output": "Alerts/states/successBtn1 Utilities/p-rl-8" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "path": "view.params.btnTextPrimary" - }, - "type": "property" - } - } - }, - "props": { - "image": { - "height": 20, - "icon": {}, - "width": 20 - }, - "style": { - "classes": "Alerts/alertButton" - }, - "textStyle": { - "textAlign": "center" - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "closePopup", - "pageScope": false, - "script": "\t# closes the last focused popup\n\tsystem.perspective.closePopup(\u0027alertDialog\u0027)", - "sessionScope": true, - "viewScope": false - }, - { - "messageType": "logout", - "pageScope": false, - "script": "\tsystem.perspective.logout()", - "sessionScope": true, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "footer" - }, - "position": { - "basis": "56px", - "shrink": 0 - }, - "props": { - "justify": "flex-end", - "style": { - "backgroundColor": "var(--neutral-30)", - "borderTop": "1px solid var(--neutral-50)", - "classes": "Utilities/p-8" - } - }, - "type": "ia.container.flex" - } - ], - "events": { - "dom": { - "onFocus": { - "config": { - "script": "\tmessageType \u003d \u0027alertFocus\u0027\n\tsystem.perspective.sendMessage(messageType)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "dialog" - }, - "propConfig": { - "props.style.classes": { - "binding": { - "config": { - "expression": "{view.params.state}" - }, - "transforms": [ - { - "fallback": "Alerts/alertDefault", - "inputType": "scalar", - "mappings": [ - { - "input": "info", - "output": "Alerts/states/info" - }, - { - "input": "warning", - "output": "Alerts/states/warning" - }, - { - "input": "error", - "output": "Alerts/states/error" - }, - { - "input": "success", - "output": "Alerts/states/success" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - } - }, - "props": { - "direction": "column", - "style": { - "maxHeight": "none" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/e23f65aad95813156a73a18fc3a9b85693f622f3325ef4788f8b7e17b8d7d2d4 b/.resources/e23f65aad95813156a73a18fc3a9b85693f622f3325ef4788f8b7e17b8d7d2d4 deleted file mode 100644 index 3f8698b9..00000000 --- a/.resources/e23f65aad95813156a73a18fc3a9b85693f622f3325ef4788f8b7e17b8d7d2d4 +++ /dev/null @@ -1,15 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FF0000B3", - "borderColor": "#000000", - "borderStyle": "solid", - "borderWidth": "0.5px", - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": "14px", - "fontWeight": "bold", - "textAlign": "center" - } - } -} \ No newline at end of file diff --git a/.resources/fd6601c47a30471ba2749c80e53a896612229ccbda22b94dfebad182175b75d8 b/.resources/e246565daba914c40b60943305e7337cee7588bb1636af3a06c9881ddbbbc1b9 similarity index 100% rename from .resources/fd6601c47a30471ba2749c80e53a896612229ccbda22b94dfebad182175b75d8 rename to .resources/e246565daba914c40b60943305e7337cee7588bb1636af3a06c9881ddbbbc1b9 diff --git a/.resources/e2787748ab2f09a9bcb1e5521d4c1ee1f22e62d7821df0d2659954efc358df08 b/.resources/e2787748ab2f09a9bcb1e5521d4c1ee1f22e62d7821df0d2659954efc358df08 deleted file mode 100644 index 0c15c08b..00000000 --- a/.resources/e2787748ab2f09a9bcb1e5521d4c1ee1f22e62d7821df0d2659954efc358df08 +++ /dev/null @@ -1,1139 +0,0 @@ -{ - "custom": { - "api_region_name": "na", - "filter_menu_data": [ - { - "filters": [ - { - "color": "#8B008B", - "column": "test1", - "group": 1, - "id": 0, - "text": "value1" - } - ], - "group_name": "test1", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - }, - { - "filters": [ - { - "color": "#00CED1", - "column": "test2", - "group": 2, - "id": 1, - "text": "value2" - } - ], - "group_name": "test2", - "instancePosition": {}, - "instanceStyle": { - "classes": "" - } - } - ], - "filtered_table_data": [], - "filters": { - "active": [], - "default_colors": [ - "#8B008B", - "#00CED1", - "#FF8C00", - "#708090", - "#DC143C", - "#FFDEAD", - "#7B68EE", - "#4169E1", - "#F4A460", - "#9ACD32" - ], - "number_of_groups": "value", - "selection_active": false - }, - "stage_config": { - "account_id": "925510716640", - "endpoint": "https://scada-s3-management.narme-scada.rme.amazon.dev/", - "lambda_name": "RMESDScadaS3ManagementFlaskLambda-prod", - "region": "us-east-2", - "repo_bucket": "na-ignition-image-repo", - "s3_region": "us-east-1", - "source_bucket": "na-ignition-image-source" - }, - "table_data": [], - "use_filtered_table": false - }, - "params": { - "DoubleClick": { - "Enabled": false, - "MP": "MP", - "Sts": "STATUS", - "TextCode": "TEXT_CODE", - "WHID": "WHID" - }, - "NavigationSettings": { - "BaseUrl": "", - "Column": "", - "Enabled": false - }, - "SelectedRow": [], - "VisibleColCount": 5, - "filters": [ - { - "column": "test1", - "group": 1, - "text": "value1" - }, - { - "column": "test2", - "group": 2, - "text": "value2" - } - ], - "header_order": [ - { - "field": "VersionId", - "title": "VERSION ID", - "visible": true - }, - { - "field": "LastModified", - "title": "LAST MODIFIED", - "visible": true - }, - { - "field": "Size", - "title": "SIZE (Bytes)", - "visible": true - }, - { - "field": "IsLatest", - "title": "IS LATEST?", - "visible": true - }, - { - "field": "Key", - "title": "OBJECT KEY", - "visible": true - }, - { - "field": "StorageClass", - "title": "STORAGE CLASS", - "visible": false - }, - { - "field": "ETag", - "title": "ETAG", - "visible": false - } - ], - "key_to_read_from": "use_param", - "puToDismiss": "", - "table_data": [], - "title": "SCADA S3 Version History" - }, - "propConfig": { - "custom.api_region_name": { - "binding": { - "config": { - "path": "session.custom.aws.prefix" - }, - "type": "property" - }, - "persistent": true - }, - "custom.filter_menu_data": { - "binding": { - "config": { - "path": "view.custom.filters.deactive" - }, - "transforms": [ - { - "code": "\tinstances \u003d []\n\tgroups \u003d {}\n\tfor filter in value:\n\t \tif not groups.has_key(filter.column):\n\t \t\tgroups[filter.column] \u003d []\n\t \tgroups[filter.column].append(filter)\n\tfor key in groups:\n\t\tinstance \u003d {\"instanceStyle\": {\n\t \t\t\t\"classes\": \"\"},\n\t \t\t\t \"instancePosition\": {}}\n\t \tgroups[key].sort()\n\t \tinstance[\u0027filters\u0027] \u003d groups[key]\n\t \tinstance[\u0027group_name\u0027] \u003d key\n\t \tinstances.append(instance)\n\treturn instances", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.filtered_table_data": { - "binding": { - "config": { - "expression": "if({view.custom.table_data} !\u003d {view.custom.filters.active},\r\n{view.custom.filters.active},\r\n{view.custom.filters.active})" - }, - "transforms": [ - { - "code": "\tfiltered_table \u003d []\n\tif len(value) \u003e 0:\n\t\tfilter_lookup \u003d {}\n\t\tfor act_filter in value:\n\t\t\tif act_filter[\u0027column\u0027] not in filter_lookup:\n\t\t\t\tfilter_lookup[act_filter[\u0027column\u0027]] \u003d []\n\t\t\tfilter_lookup[act_filter[\u0027column\u0027]].append(act_filter[\u0027text\u0027])\n\t\tfor row in self.custom.table_data:\n\t\t\tsystem.perspective.print(row)\n\t\t\tshould_filter \u003d {}\t\t\n\t\t\t# Handles stylized rows\t\n\t\t\tif \u0027style\u0027 in row and \u0027value\u0027 in row and len(row) \u003d\u003d2:\n\t\t\t\t#for column in row:\n\t\t\t\t\t#system.perspective.print(\u0027value:%s\u0027%column)\n\t\t\t\t\tdata_columns \u003d row[\u0027value\u0027]\n\t\t\t\t\tfor s_column in data_columns:\n\t\t\t\t\t\tif s_column in filter_lookup:\n\t\t\t\t\t\t\tif data_columns[s_column] in filter_lookup[s_column]:\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tshould_filter[s_column] \u003d True\n\t\t\t\t\t\t\telse:\n\t\t\t\t\t\t\t\tshould_filter[s_column] \u003d False\n\t\t\t\t\t\telse:\n\t\t\t\t\t\t\tshould_filter[s_column] \u003d False\t\n\t\t\telse:\n\t\t\t\tfor column in row:\n\t\t\t\t\tif column in filter_lookup:\n\t\t\t\t\t\tif row[column] in filter_lookup[column]:\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tshould_filter[column] \u003d True\n\t\t\t\t\t\telse:\n\t\t\t\t\t\t\tshould_filter[column] \u003d False\n\t\t\t\t\telse:\n\t\t\t\t\t\tshould_filter[column] \u003d False\n\t\t\tif sum(should_filter.values()) \u003d\u003d len(filter_lookup.keys()):\n\t\t\t\tfiltered_table.append(row)\n\n\treturn filtered_table", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.filters": { - "persistent": true - }, - "custom.filters.deactive": { - "binding": { - "config": { - "path": "view.params.filters" - }, - "transforms": [ - { - "code": "\t\n\tfilters \u003d []\n\tgroups \u003d []\n\tfor index, filter in enumerate(value):\n\t\tnew_filter \u003d {}\t\n\t\tif not filter.has_key(\u0027group\u0027):\n\t\t\tnew_filter[\u0027group\u0027] \u003d 0\n\t\telse:\n\t\t\tnew_filter[\u0027group\u0027] \u003d filter.group\n\t\tif not filter.has_key(\u0027color\u0027):\n\t\t\tif new_filter[\u0027group\u0027] not in groups:\n\t\t\t\tgroups.append(new_filter[\u0027group\u0027])\n\t\t\tnew_filter[\u0027color\u0027] \u003d self.custom.filters.default_colors[groups.index(new_filter[\u0027group\u0027])]\n\t\telse:\n\t\t\tnew_filter[\u0027color\u0027] \u003d filter.color\n\t\tif not filter.has_key(\u0027text\u0027):\n\t\t\tnew_filter[\u0027text\u0027] \u003d \u0027Filter \u0027 + str(index)\n\t\telse:\n\t\t\tnew_filter[\u0027text\u0027] \u003d filter.text\n\t\tif not filter.has_key(\u0027column\u0027):\n\t\t\tnew_filter[\u0027column\u0027] \u003d 0\n\t\telse:\n\t\t\tnew_filter[\u0027column\u0027] \u003d filter.column\n\t\tnew_filter[\u0027id\u0027] \u003d index\n\t\tfilters.append(new_filter)\t\t\t\t\n\treturn filters", - "type": "script" - } - ], - "type": "property" - } - }, - "custom.stage_config": { - "binding": { - "config": { - "expression": "{view.custom.api_region_name}" - }, - "transforms": [ - { - "code": "\treturn AWS.s3.STAGE_CONFIG[\u0027prod\u0027][value]", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.table_data": { - "binding": { - "config": { - "expression": "if({view.params.key_to_read_from} \u003d \u0027use_param\u0027,\r\n{view.params.table_data},\r\nproperty(concat(\u0027session.custom.tableComponentData.\u0027,{view.params.key_to_read_from})))" - }, - "type": "expr" - }, - "persistent": true - }, - "custom.use_filtered": { - "persistent": true - }, - "custom.use_filtered_table": { - "binding": { - "config": { - "path": "view.custom.filtered_table_data" - }, - "transforms": [ - { - "code": "\treturn len(value) \u003e 0", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "params.DoubleClick": { - "paramDirection": "input", - "persistent": true - }, - "params.NavigationSettings": { - "paramDirection": "input", - "persistent": true - }, - "params.SelectedRow": { - "binding": { - "config": { - "path": "/root/Table.props.selection.data" - }, - "type": "property" - }, - "paramDirection": "output", - "persistent": true - }, - "params.VisibleColCount": { - "paramDirection": "input", - "persistent": true - }, - "params.filters": { - "paramDirection": "input", - "persistent": true - }, - "params.header_order": { - "paramDirection": "input", - "persistent": true - }, - "params.key_to_read_from": { - "paramDirection": "input", - "persistent": true - }, - "params.puToDismiss": { - "paramDirection": "input", - "persistent": true - }, - "params.table_data": { - "paramDirection": "input", - "persistent": true - }, - "params.title": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 844 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Title" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.title" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Title/Text", - "fontSize": 14, - "overflow": "visible" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Title" - }, - "position": { - "basis": "50%" - }, - "props": { - "style": { - "fontSize": 1, - "marginLeft": 10, - "overflow": "visible" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "FilterCheck", - "tooltip": { - "enabled": true, - "location": "top-left", - "text": "Enable Table Search" - } - }, - "position": { - "basis": "108px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "LEN({..../Table.props.data})\u003e0" - }, - "type": "expr" - } - } - }, - "props": { - "checkedIcon": { - "style": { - "fontSize": 16 - } - }, - "indeterminateIcon": { - "style": { - "fontSize": 16 - } - }, - "style": { - "fontSize": 12 - }, - "text": "Search?", - "textPosition": "left", - "uncheckedIcon": { - "style": { - "fontSize": 16 - } - } - }, - "type": "ia.input.checkbox" - }, - { - "meta": { - "name": "Spacer1" - }, - "position": { - "basis": "1px" - }, - "props": { - "style": { - "classes": "General/Divider" - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\ttable \u003d self.parent.parent.parent.getChild(\"Table\")\n\t# ignition perspective has a bug with table where the only way to \n\t# actually de-select and remove the row highlight is to set the\n\t# row and column to -1 and THEN None\n\t# this will automatically clear the selection.data array\n\ttable.props.selection.selectedRow \u003d -1\n\ttable.props.selection.selectedColumn \u003d -1\n\ttable.props.selection.selectedRow \u003d None\n\ttable.props.selection.selectedColumn \u003d None" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "ClearSelectionButton", - "tooltip": { - "enabled": true, - "location": "top-left", - "text": "Clear Selection" - } - }, - "position": { - "basis": "31px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "len({..../Table.props.selection.data})\u003e0" - }, - "type": "expr" - } - } - }, - "props": { - "path": "material/clear", - "style": { - "classes": "General/Button" - } - }, - "type": "ia.display.icon" - }, - { - "meta": { - "name": "Spacer2" - }, - "position": { - "basis": "1px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "../ClearSelectionButton.position.display" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "General/Divider" - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "draggable": false, - "id": "ColumnSelection", - "modal": true, - "overlayDismiss": true, - "position": { - "relativeLocation": "bottom-left" - }, - "positionType": "relative", - "resizable": true, - "showCloseIcon": true, - "type": "toggle", - "viewParams": { - "Columns": "{/root/TableHeader/TableActions/ColumnSelectionButton.custom.Columns}" - }, - "viewPath": "Objects/PowerTable/ColumnSelection", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - } - }, - "meta": { - "name": "ColumnSelectionButton", - "tooltip": { - "enabled": true, - "location": "top-left", - "text": "+/- Columns" - } - }, - "position": { - "basis": "29px" - }, - "propConfig": { - "custom.Columns": { - "binding": { - "config": { - "path": "..../Table.props.columns" - }, - "transforms": [ - { - "code": "\tcolumns \u003d {}\n\tif len(value) \u003e 0:\n\t\tfor column in value:\n\t\t\t#field \u003d column.field\n\t\t\tfield \u003d column.header.title\n\t\t\tif field \u003d\u003d \u0027\u0027:\n\t\t\t\tfield \u003d \u0027None\u0027\n\t\t\tcolumns[field] \u003d column.visible\n\treturn columns", - "type": "script" - } - ], - "type": "property" - } - }, - "position.display": { - "binding": { - "config": { - "expression": "LEN({..../Table.props.data})\u003e0" - }, - "type": "expr" - } - } - }, - "props": { - "path": "material/view_column", - "style": { - "classes": "General/Button", - "fontSize": 12, - "marginBottom": 5, - "marginTop": 5 - } - }, - "type": "ia.display.icon" - }, - { - "meta": { - "name": "Spacer4" - }, - "position": { - "basis": "1px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "LEN({..../Table.props.data})\u003e0" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "General/Divider" - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tself.view.custom.filters.selection_active \u003d not self.view.custom.filters.selection_active" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FilterButton", - "tooltip": { - "enabled": true, - "location": "top-left", - "text": "Filter Table" - } - }, - "position": { - "basis": "29px", - "display": false - }, - "props": { - "path": "material/filter_list", - "style": { - "classes": "General/Button", - "fontSize": 12, - "marginBottom": 5, - "marginTop": 5 - } - }, - "type": "ia.display.icon" - }, - { - "meta": { - "name": "Spacer3" - }, - "position": { - "basis": "1px" - }, - "props": { - "style": { - "classes": "General/Divider" - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\n\tcsv_headers \u003d []\n\tcsv_data \u003d []\n\tsystem.perspective.print(\u0027DOWNLOADING TABLE DATA\u0027)\n\tsource_data \u003d self.parent.parent.parent.getChild(\"Table\").props.data\n\theaders \u003d source_data[0].keys()\n\t\n\tif \u0027style\u0027 in headers and \u0027value\u0027 in headers and len(headers) \u003d\u003d 2:\n\t\tdata \u003d [row[\u0027value\u0027] for row in source_data]\n\telse:\n\t\tdata \u003d source_data\n\t\t\n\tfor record in data:\n\t\tif len(csv_headers) \u003d\u003d 0:\n\t\t\tcsv_headers \u003d record.keys()\n\t\t\tcsv_headers.sort()\n\t\t\tcsv_headers \u003d [str(i) for i in csv_headers]\n\t\tcsv_row \u003d []\n\t\tfor index in range(len(record)):\n\t\t\tcsv_row.append(str(record[csv_headers[index]]))\n\t\tcsv_data.append(csv_row)\n\t\n\ttry:\n\t\tcsv_dataset \u003d system.dataset.toDataSet(csv_headers, csv_data)\n\texcept Exception, e:\n\t\tsystem.perspective.print(str(e))\n\tcsv_export \u003d system.dataset.toCSV(csv_dataset)\n\tfilename \u003d \u0027{0}.csv\u0027.format(str(system.date.now()).replace(\u0027 \u0027, \u0027_\u0027))\n\tsystem.perspective.download(filename, csv_export)\n\t\n\tsystem.perspective.print(\u0027DONE DOWNLOADING TABLE DATA\u0027)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "SettingsButton", - "tooltip": { - "enabled": true, - "location": "top-left", - "text": "Download Table Contents" - } - }, - "position": { - "basis": "30px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "LEN({..../Table.props.data})\u003e0" - }, - "type": "expr" - } - } - }, - "props": { - "path": "material/cloud_download", - "style": { - "classes": "General/Button", - "marginRight": 10 - } - }, - "type": "ia.display.icon" - } - ], - "meta": { - "name": "TableActions", - "tooltip": { - "location": "top-right" - } - }, - "position": { - "grow": 1 - }, - "props": { - "justify": "flex-end" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "TableHeader" - }, - "position": { - "shrink": 0 - }, - "props": { - "justify": "space-between", - "style": { - "borderBottomStyle": "solid", - "borderBottomWidth": 1, - "cursor": "pointer" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "FilterMenu" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.instances": { - "binding": { - "config": { - "path": "view.custom.filter_menu_data" - }, - "type": "property" - } - } - }, - "props": { - "alignContent": "flex-start", - "alignItems": "flex-start", - "path": "Components/PowerTable/FilterMenuGroup", - "style": { - "overflow": "visible" - }, - "useDefaultViewHeight": false, - "useDefaultViewWidth": false, - "wrap": "wrap" - }, - "type": "ia.display.flex-repeater" - } - ], - "meta": { - "name": "FilterSelection" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.custom.filters.selection_active" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "borderBottomStyle": "solid", - "borderBottomWidth": 1, - "classes": "Menu/Menu", - "overflow": "visible", - "paddingLeft": 10, - "paddingRight": 10 - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "FiltersLabel" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.custom.filters.active" - }, - "transforms": [ - { - "code": "\t\n\treturn \u0027\u0027.join([\u0027FILTERS (\u0027, str(len(value)), \u0027):\u0027])", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Menu/Menu Page/Text", - "fontSize": 10, - "textAlign": "center" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "FiltersCarousel" - }, - "propConfig": { - "props.views": { - "binding": { - "config": { - "path": "view.custom.filters.active" - }, - "transforms": [ - { - "code": "\n\tviews \u003d []\n\tfor filter in value:\n\t\tcarousel_view \u003d {\n\t\t\t\u0027viewPath\u0027:\u0027Components/PowerTable/FilterTile\u0027,\n\t\t\t\u0027direction\u0027 : \u0027row\u0027,\n\t\t\t\u0027viewParams\u0027: {},\n\t\t\t\u0027justify\u0027:\u0027flex-start\u0027,\n\t\t\t\u0027alignItems\u0027: \u0027center\u0027}\n\t\tcarousel_view[\u0027viewParams\u0027][\u0027color\u0027] \u003d filter[\u0027color\u0027]\n\t\tcarousel_view[\u0027viewParams\u0027][\u0027text\u0027] \u003d filter[\u0027text\u0027]\t\n\t\tcarousel_view[\u0027viewParams\u0027][\u0027id\u0027] \u003d filter[\u0027id\u0027]\t\n\t\t\n\t\tviews.append(carousel_view)\n\treturn views", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "appearance": { - "arrows": { - "next": { - "style": { - "marginRight": 5 - } - }, - "previous": { - "style": { - "marginLeft": 5 - } - } - }, - "dots": { - "enabled": false - }, - "slidePadding": 3, - "slidesToShow": 5, - "useDefaultViewHeight": true, - "useDefaultViewWidth": true - }, - "style": { - "overflow": "visible", - "textAlign": "left" - } - }, - "type": "ia.display.carousel" - } - ], - "meta": { - "name": "Left" - }, - "position": { - "basis": "90%" - }, - "props": { - "style": { - "overflow": "visible" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.custom.filters.active \u003d []\n\tsystem.perspective.sendMessage(\u0027deactivate-filter\u0027, payload \u003d {\u0027id\u0027:-1}, scope \u003d \u0027page\u0027)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "ClearButton" - }, - "position": { - "basis": "51px" - }, - "props": { - "primary": false, - "style": { - "classes": "Menu/Item", - "fontSize": 12, - "marginBottom": 5, - "marginLeft": 5, - "marginRight": 5, - "marginTop": 5 - }, - "text": "Clear", - "textStyle": { - "classes": "Page/Text" - } - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Right" - }, - "position": { - "basis": "10%" - }, - "props": { - "justify": "flex-end", - "style": { - "overflow": "visible" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Filters" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.custom.filters.active" - }, - "transforms": [ - { - "code": "\treturn len(value) \u003e 0", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "overflow": "visible" - } - }, - "type": "ia.container.flex" - }, - { - "meta": { - "name": "ReulstLengthLabel" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.custom.filters.active" - }, - "transforms": [ - { - "code": "\treturn len(value) \u003e 0", - "type": "script" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "path": "../Table.props.data" - }, - "transforms": [ - { - "code": "\treturn \u0027\u0027.join([str(len(value)), \u0027 results within filters\u0027])", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Menu/Item Page/Text", - "fontSize": 12, - "paddingLeft": 5, - "textTransform": "lowercase" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "pager" - }, - "position": { - "basis": "35px", - "display": false, - "shrink": 0 - }, - "propConfig": { - "props.params.number_of_pages": { - "binding": { - "config": { - "expression": "len({../Table.custom.raw_data})" - }, - "type": "expr" - } - }, - "props.params.options_for_pagers": { - "binding": { - "config": { - "path": "../Table.props.pager.options" - }, - "type": "property" - } - } - }, - "props": { - "params": { - "number_of_items_per_page": 100, - "page_selected": 0 - }, - "path": "Components/PowerTable/pager" - }, - "type": "ia.display.view" - }, - { - "events": { - "component": { - "onRowDoubleClick": { - "config": { - "script": "\t# grab row JSON from double-click\n\td \u003d event.value\n\t# build out the stage, site, flow-view, and copy_option from the object-key in row\n\tobj_key \u003d d.Key\n\tpath \u003d obj_key.split(\u0027/\u0027)\n\tsite \u003d path[1]\n\tfilename \u003d path[-1]\n\tview \u003d filename.replace(\".svg\",\"\").replace(\".drawio\",\"\")\n\t# from filename suffix, fetch bucket name from \"stage_config\" custom prop\n\tstage_config \u003d self.view.custom.stage_config\n\tbucket \u003d None\n\tif filename.endswith(\".svg\"):\n\t\tbucket \u003d stage_config.repo_bucket\n\tif filename.endswith(\".drawio\"):\n\t\tbucket \u003d stage_config.source_bucket\n\t# build out query_params from row values\n\t# flowview, site, and stage are multi-select dropdowns so need to be cast as lists\n\tnull \u003d None\n\tquery_params \u003d {\n\t\t\"copy_option\": null,\n\t\t\"destination_view\": view,\n\t\t\"destination_site\": site,\n\t\t\"destination_bucket\": bucket,\n\t\t\"end_time\": null,\n\t\t\"error_occurred\": null,\n\t\t\"operation\": null,\n\t\t\"source_view\": \"\",\n\t\t\"source_site\": null,\n\t\t\"source_bucket\": null,\n\t\t\"start_time\": null,\n\t\t\"username\": \"\"\n\t}\n\t# Open audit log viewer\n\tview_path \u003d \u0027PopUp-Views/S3/Audit/Log_Viewer\u0027\n\tparams \u003d {\u0027query_params\u0027: query_params}\n\tsystem.perspective.openPopup(\u0027Audit Log Viewer\u0027, view_path, \n\t\t\t\t\t\t\t\tparams, \u0027SCADA S3 Audit Logs\u0027)\n" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Table" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "custom.raw_data": { - "binding": { - "config": { - "expression": "IF({../pager.props.params.number_of_items_per_page} \u003e 0,\r\nIF(LEN({view.custom.filters.active})\u003d0, {view.custom.table_data}, {view.custom.filtered_table_data}),\u0027\u0027)" - }, - "transforms": [ - { - "code": "\tlist_of_data \u003d []\n\tsingle_list \u003d []\n\tfor item in value:\n\t\tif len(single_list) \u003c self.getSibling(\"pager\").props.params.number_of_items_per_page:\n\t\t\tsingle_list.append(item)\n\t\telse:\n\t\t\tlist_of_data.append(single_list)\n\t\t\tsingle_list \u003d []\n\t\t\tsingle_list.append(item)\n\tif len(single_list) \u003e 0:\n\t\tlist_of_data.append(single_list)\n\treturn list_of_data", - "type": "script" - } - ], - "type": "expr" - } - }, - "props.columns": { - "binding": { - "config": { - "path": "view.custom.table_data" - }, - "transforms": [ - { - "code": "\tfrom helper.helper import sanitize_tree\n\tcolumns \u003d []\n\tif len(value) \u003e 0:\n\t\trequestedHeaders \u003d sanitize_tree(self.view.params.header_order)\n\t\tfrom pprint import pformat\n#\t\tsystem.perspective.print(pformat(requestedHeaders))\n\t\theaders \u003d []\n\t\tif len(requestedHeaders) \u003e 0:\n\t\t\tfor item in requestedHeaders:\n\t\t\t\tif \u0027style\u0027 in value[0].keys() and \u0027value\u0027 in value[0].keys() and len(value[0].keys()) \u003d\u003d2:\n\t\t\t\t\tif item in value[0][\u0027value\u0027].keys():\n\t\t\t\t\t\theaders.append(item)\n\t\t\t\telse:\n\t\t\t\t\tif item in value[0].keys():\n\t\t\t\t\t\theaders.append(item)\n\t\t\t\t\tif isinstance(item, dict) and \u0027field\u0027 in item and item[\u0027field\u0027] in value[0].keys():\n\t\t\t\t\t\theaders.append(item)\n\t\tif len(headers) \u003d\u003d 0:\n\t\t\theaders \u003d value[0].keys()\n\t\tfor header in headers:\t\n\t\t\tfield \u003d header\n\t\t\tvisible \u003d True\n\t\t\ttry:\n\t\t\t\ttitle \u003d str(header).replace(\u0027_\u0027, \u0027 \u0027).upper()\n\t\t\texcept:\n\t\t\t\ttitle \u003d \u0027\u0027\n\t\t\tif isinstance(header, dict):\n\t\t\t\tfield \u003d header.get(\u0027field\u0027, \u0027\u0027)\n\t\t\t\tvisible \u003d header.get(\u0027visible\u0027, True)\n\t\t\t\ttitle \u003d header.get(\u0027title\u0027, field.replace(\u0027_\u0027, \u0027 \u0027).upper())\n\t\t\tcolumn \u003d {\n\t\t\t \"field\": field,\n\t\t\t \"visible\": visible,\n\t\t\t \"editable\": True,\n\t\t\t \"render\": \"auto\",\n\t\t\t \"justify\": \"center\",\n\t\t\t \"align\": \"center\",\n\t\t\t \"resizable\": True,\n\t\t\t \"sortable\": True,\n\t\t\t \"sort\": \"none\",\n\t\t\t \"viewPath\": \"\",\n\t\t\t \"viewParams\": {},\n\t\t\t \"boolean\": \"checkbox\",\n\t\t\t \"number\": \"value\",\n\t\t\t \"progressBar\": {\n\t\t\t\t\"max\": 100,\n\t\t\t\t\"min\": 0,\n\t\t\t\t\"bar\": {\n\t\t\t\t \"color\": \"\",\n\t\t\t\t \"style\": {\n\t\t\t\t\t\"classes\": \"\"\n\t\t\t\t }\n\t\t\t\t},\n\t\t\t\t\"track\": {\n\t\t\t\t \"color\": \"\",\n\t\t\t\t \"style\": {\n\t\t\t\t\t\"classes\": \"\"\n\t\t\t\t }\n\t\t\t\t},\n\t\t\t\t\"value\": {\n\t\t\t\t \"enabled\": True,\n\t\t\t\t \"format\": \"0,0.##\",\n\t\t\t\t \"justify\": \"center\",\n\t\t\t\t \"style\": {\n\t\t\t\t\t\"classes\": \"\"\n\t\t\t\t }\n\t\t\t\t}\n\t\t\t },\n\t\t\t \"toggleSwitch\": {\n\t\t\t\t\"color\": {\n\t\t\t\t \"selected\": \"\",\n\t\t\t\t \"unselected\": \"\"\n\t\t\t\t}\n\t\t\t },\n\t\t\t \"numberFormat\": \"0,0.##\",\n\t\t\t \"dateFormat\": \"MM/DD/YYYY\",\n\t\t\t \"width\": \"\",\n\t\t\t \"strictWidth\": False,\n\t\t\t \"style\": {\n\t\t\t\t\"classes\": \"\"\n\t\t\t },\n\t\t\t \"header\": {\n\t\t\t\t\"title\": title,\n\t\t\t\t\"justify\": \"center\",\n\t\t\t\t\"align\": \"center\",\n\t\t\t\t\"style\": {\n\t\t\t\t \"classes\": \"\",\n\t\t\t\t \u0027fontSize\u0027:\u002712px\u0027\n\t\t\t\t}\n\t\t\t },\n\t\t\t \"footer\": {\n\t\t\t\t\"title\": \"\",\n\t\t\t\t\"justify\": \"left\",\n\t\t\t\t\"align\": \"center\",\n\t\t\t\t\"style\": {\n\t\t\t\t \"classes\": \"\"\n\t\t\t\t}\n\t\t\t }\n\t\t\t}\t\t\t\n\t\t\tcolumns.append(column)\n#\t\tif self.view.params.header_order !\u003d [] and len(headers) \u003d\u003d len(self.view.params.header_order):\n#\t\t\tnew_columns \u003d [None] * len(columns)\n#\t\t\tfor column in columns:\n#\t\t\t\tindex \u003d self.view.params.header_order.index(column[\u0027field\u0027])\n#\t\t\t\tnew_columns[index] \u003d column\n#\t\t\tcolumns \u003d new_columns\n\treturn columns", - "type": "script" - } - ], - "type": "property" - } - }, - "props.data": { - "binding": { - "config": { - "expression": "IF({../pager.props.params.number_of_items_per_page} \u003e 0,\r\nIF(LEN({view.custom.filters.active})\u003d0, {view.custom.table_data}, {view.custom.filtered_table_data}),\u0027\u0027)" - }, - "type": "expr" - } - }, - "props.filter.enabled": { - "binding": { - "config": { - "path": "../TableHeader/TableActions/FilterCheck.props.selected" - }, - "type": "property" - }, - "onChange": { - "enabled": null, - "script": "\tif not getattr(currentValue, \u0027value\u0027, None):\n\t\t# clear filter text when filter is disabled\n\t\tself.props.filter.text \u003d \u0027\u0027\n\t\t" - } - } - }, - "props": { - "cells": { - "allowEditOn": "long-press", - "style": { - "fontSize": 12 - } - }, - "filter": {}, - "pager": { - "initialOption": 100, - "options": [ - 25, - 50, - 100, - 500, - 1000 - ] - }, - "style": { - "overflow": "visible" - } - }, - "type": "ia.display.table" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "overflow": "visible" - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "activate-filter", - "pageScope": true, - "script": "\t# implement your handler here\n\tfilter_position \u003d payload[\u0027id\u0027]\n\tsystem.perspective.print(filter_position)\n\tadd \u003d True\n\tfor filter in self.view.custom.filters.active:\n\t\tif filter.id \u003d\u003d filter_position:\n\t\t\tadd \u003d False\n\tif add:\n\t\tfor filter in self.view.custom.filters.deactive:\n\t\t\tif filter.id \u003d\u003d filter_position:\t\t\t\t\n\t\t\t\tself.view.custom.filters.active.append(filter)", - "sessionScope": true, - "viewScope": false - }, - { - "messageType": "deactivate-filter", - "pageScope": true, - "script": "\tfilter_position \u003d payload[\u0027id\u0027]\n\tsystem.perspective.print(filter_position)\n\t\n\tif filter_position \u003d\u003d -1 :\n\t\tself.view.custom.filters.active \u003d []\n\telse:\n\t\tfor index, filter in enumerate(self.view.custom.filters.active):\n\t\t\tif filter.id \u003d\u003d filter_position:\n\t\t\t\tsystem.perspective.print(filter.id)\n\t\t\t\tself.view.custom.filters.active.pop(index)\n\n#\tfor filter in self.view.custom.filter_menu_data:\n#\t\tif filter.filter_id \u003d\u003d filter_position:\n#\t\t\tsystem.perspective.print(filter.filter_id)\n#\t\t\tfilter.active \u003d False\n#\t\t\tbreak", - "sessionScope": false, - "viewScope": false - }, - { - "messageType": "column-visibility", - "pageScope": true, - "script": "\t# implement your handler here\n\ttable_columns \u003d self.getChild(\"Table\").props.columns\n\tfor table_column in table_columns:\n\t\t#if payload.keys()[0] \u003d\u003d table_column[\u0027field\u0027]:\n\t\tif payload.keys()[0] \u003d\u003d table_column[\u0027header\u0027][\u0027title\u0027]:\n\t\t\ttable_column.visible \u003d payload.values()[0]\n", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/e29d99a8c7e2397327a38bdada89ab98786cbd0a505540d1d98ee972ffa06af0 b/.resources/e29d99a8c7e2397327a38bdada89ab98786cbd0a505540d1d98ee972ffa06af0 deleted file mode 100644 index 33d9994e..00000000 --- a/.resources/e29d99a8c7e2397327a38bdada89ab98786cbd0a505540d1d98ee972ffa06af0 +++ /dev/null @@ -1,16 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#007EFCB3", - "borderColor": "#000000", - "borderStyle": "solid", - "borderWidth": "0.5px", - "color": "#000000", - "fontFamily": "Arial", - "fontSize": "14px", - "fontWeight": "bold", - "lineHeight": "20px", - "textAlign": "center" - } - } -} \ No newline at end of file diff --git a/.resources/e2fd061190d68a84e494c6f60f3e7eeb5eac489a080dd715f8ab245fa8d07a57 b/.resources/e2fd061190d68a84e494c6f60f3e7eeb5eac489a080dd715f8ab245fa8d07a57 deleted file mode 100644 index c47d6275..00000000 --- a/.resources/e2fd061190d68a84e494c6f60f3e7eeb5eac489a080dd715f8ab245fa8d07a57 +++ /dev/null @@ -1,122 +0,0 @@ -from urllib2_aws4auth import aws_urlopen, Request -from urllib2 import HTTPError -from urllib import urlencode -import json -import system -import boto3 -from pprint import pformat - -REGION ='us-west-2' - - -def openSession(): - CREDS = boto3.Session().get_credentials() - AWS_ACCESS_KEY_ID = CREDS.access_key - AWS_SECRET_ACCESS_KEY = CREDS.secret_key - TOKEN = CREDS.token - CREDSRETURN = {'AccessKeyId':AWS_ACCESS_KEY_ID, - 'SecretAccessKey':AWS_SECRET_ACCESS_KEY, - 'SessionToken':TOKEN} -# OPENER = aws_urlopen( -# AWS_ACCESS_KEY_ID, -# AWS_SECRET_ACCESS_KEY, -# REGION, -# SERVICE, -# session_token=TOKEN, -# verify=False) -# return OPENER - - return CREDSRETURN - - -def DynamoDeleter(PrimaryKey, publish): - import json - from pprint import pformat - import boto3 - from datetime import datetime - from decimal import Decimal - import time - - LOGGER = system.util.getLogger('notify_to_dynamodb_log') - - # Get STAGE variable - roleArn = 'arn:aws:iam::533266954132:role/ignition_to_aws_scada_notify' - STAGE = 'beta' - # Make sure STAGE is valid. no gamma stage configured - if STAGE not in ['alpha', 'beta', 'gamma', 'prod']: - STAGE = 'beta' - if STAGE == 'gamma': - STAGE = 'beta' - - STAGE_CONFIG = { - 'alpha':{ - 'region' : 'us-west-2', - 'roleArn' : roleArn, - 'tableName' : 'NotificationsEntries' - }, - 'beta': { - 'region':'us-west-2', - 'roleArn': roleArn, - 'tableName' : 'NotificationsEntries' - - }, - 'prod': { - 'region':'us-west-2', - 'roleArn': roleArn, - 'tableName' : 'NotificationsEntries' - } - } - - - # create sts session to get credentials from EC2 - sts_client = boto3.client('sts') - region_name = STAGE_CONFIG.get(STAGE, 'alpha').get('region', 'us-west-2') - - assume_role_response = sts_client.assume_role( - RoleArn = STAGE_CONFIG.get(STAGE, 'beta').get('roleArn', roleArn), - RoleSessionName = 'AssumeRole' - ) - - temp_credentials = assume_role_response['Credentials'] - - # create session using the temp creds - b3_session = boto3.Session( - aws_access_key_id = temp_credentials['AccessKeyId'], - aws_secret_access_key = temp_credentials['SecretAccessKey'], - aws_session_token = temp_credentials['SessionToken'], - region_name = 'us-west-2', - ) - - # create a dynamodb session - dynamodb = b3_session.resource('dynamodb') - table = dynamodb.Table(STAGE_CONFIG.get(STAGE, 'beta').get('tableName', 'NotificationsEntries')) -# response = client.scan( -# TableName='string', -# IndexName='string', -# AttributesToGet=[ -# 'string', -# ], -# Limit=123, - - # write data directly to dynamodb table - try: - response = table.delete_item(Key={ - 'PrimaryKey': PrimaryKey, - "publish": publish - }, - ConditionExpression="attribute_exists (PrimaryKey)") -# response = table.scan(ProjectionExpression="PrimaryKey, publish, expire, title") -# TableName='NotificationsEntries', -# IndexName='publish', -## ProjectionExpression =['publish', 'expire', 'title'], -# Limit=123) -# system.perspective.print(response) - system.perspective.print('Delete from NotificationsEntries DynamoDB Table Successful') - except Exception as e: - system.perspective.print('Delete from NotificationsEntries DynamoDB Table NOT Successful') - system.perspective.print(str(e)) - LOGGER.error(str(e)) - - - return response - \ No newline at end of file diff --git a/.resources/972248b5dd2d4febff56d5cc34a1bdc7cb3190bbafa41d5cbe70603133a8ebe3 b/.resources/e3dc86ef0551571092f68dcb07b580a2e920d76f2eb4a65c2da21214271c78f3 similarity index 100% rename from .resources/972248b5dd2d4febff56d5cc34a1bdc7cb3190bbafa41d5cbe70603133a8ebe3 rename to .resources/e3dc86ef0551571092f68dcb07b580a2e920d76f2eb4a65c2da21214271c78f3 diff --git a/.resources/9872c047d9f5ffa504f1d8f5ce42e3974842769e02d8708c3f6948bbf7a8496a b/.resources/e441f58e15efc9e6e0f14df7f00aecf30fbb8fbe79f8f57eebeb2f50fbb41a27 similarity index 100% rename from .resources/9872c047d9f5ffa504f1d8f5ce42e3974842769e02d8708c3f6948bbf7a8496a rename to .resources/e441f58e15efc9e6e0f14df7f00aecf30fbb8fbe79f8f57eebeb2f50fbb41a27 diff --git a/.resources/e4b9c81542dd310ee1bfd92d9d0e533e6c598b98e763608fecd11d306649d6e8 b/.resources/e4b9c81542dd310ee1bfd92d9d0e533e6c598b98e763608fecd11d306649d6e8 deleted file mode 100644 index 562c9a37..00000000 --- a/.resources/e4b9c81542dd310ee1bfd92d9d0e533e6c598b98e763608fecd11d306649d6e8 +++ /dev/null @@ -1,141 +0,0 @@ -{ - "custom": {}, - "params": { - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 41, - "width": 83 - } - }, - "root": { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tif self.view.params.tagProps[0] is not True:\n\t\tnavigation.additional_view.navigate_to_additional_view(self)\n\telse:\n\t\tnavigation.navigate_to_page.detailed_view(self, self.view.params.tagProps[2],self.view.params.tagProps[2], self.view.params.tagProps[3])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "41px" - }, - "propConfig": { - "custom.page_id": { - "binding": { - "config": { - "path": "view.params.tagProps[2]" - }, - "type": "property" - } - }, - "custom.status": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "direct", - "tagPath": "Configuration/DetailedViews.value" - }, - "transforms": [ - { - "code": "\t\n\tjson_decode \u003d system.util.jsonDecode(value)\n\tpage_id \u003d self.custom.page_id\n\tpage_status \u003d json_decode.get(\"AdditionalPages\",{}).get(page_id,5)\n\treturn page_status", - "type": "script" - } - ], - "type": "tag" - } - }, - "props.style.classes": { - "binding": { - "config": { - "expression": "{this.custom.status}" - }, - "transforms": [ - { - "fallback": "", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "State-Styles/Background-Fill/State1" - }, - { - "input": 2, - "output": "State-Styles/Background-Fill/State2" - }, - { - "input": 3, - "output": "State-Styles/Background-Fill/State3" - }, - { - "input": 4, - "output": "State-Styles/Background-Fill/State4" - }, - { - "input": 5, - "output": "Buttons/Clear-Background" - }, - { - "input": 6, - "output": "State-Styles/Background-Fill/State6" - }, - { - "input": 0, - "output": "State-Styles/Background-Fill/State0" - } - ], - "outputType": "style-list", - "type": "map" - } - ], - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/navigation" - } - }, - "style": {}, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/e535664bb2c9fdb9049b78679f4f4c5db19a09f9c0a71c6d3af13ca0046afb1c b/.resources/e535664bb2c9fdb9049b78679f4f4c5db19a09f9c0a71c6d3af13ca0046afb1c deleted file mode 100644 index 049ccde7..00000000 --- a/.resources/e535664bb2c9fdb9049b78679f4f4c5db19a09f9c0a71c6d3af13ca0046afb1c +++ /dev/null @@ -1,2092 +0,0 @@ -{ - "custom": { - "api_region_name": "eu", - "default_file_config": { - "ETag": "?", - "LastModified": "?", - "Size": 0, - "StorageClass": "?" - }, - "dummy": [], - "file_not_found": true, - "file_options": [], - "loading": false, - "selected_file": "", - "selected_file_config": { - "ETag": "?", - "Filename": ".svg", - "Key": ".svg", - "LastModified": "?", - "Size": 0, - "StorageClass": "?" - }, - "stage_config": { - "account_id": "006306898152", - "api_call_role": "arn:aws:iam::609617486056:role/RMESDScadaS3ManagementAPIcallRole-prod-eu-west-1", - "endpoint": "https://eu-west-1.scada-s3-management.scada.eurme.amazon.dev/", - "lambda_name": "RMESDScadaS3ManagementFlaskLambda-prod", - "region": "eu-west-1", - "repo_bucket": "ignition-image-repo", - "s3_region": "eu-west-1", - "source_bucket": "ignition-image-source" - } - }, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\tself.custom.selected_file \u003d self.params.selected_file" - }, - "scope": "G", - "type": "script" - } - } - }, - "params": { - "bucket": "", - "enables": { - "delete": true, - "download": true, - "file": true, - "object_key": false, - "upload": true - }, - "files": [], - "prefix": "", - "selected_file": "", - "suffix": ".svg", - "upload_file_types": [ - "svg" - ], - "whid": "" - }, - "propConfig": { - "custom.api_region_name": { - "binding": { - "config": { - "path": "session.custom.aws.prefix" - }, - "type": "property" - }, - "persistent": true - }, - "custom.default_file_config": { - "persistent": true - }, - "custom.default_file_config.Filename": { - "binding": { - "config": { - "expression": "{view.params.selected_file}+{view.params.suffix}" - }, - "type": "expr" - } - }, - "custom.default_file_config.Key": { - "binding": { - "config": { - "expression": "{view.params.prefix}+{view.params.selected_file}+{view.params.suffix}" - }, - "type": "expr" - } - }, - "custom.dummy": { - "persistent": true - }, - "custom.file_not_found": { - "binding": { - "config": { - "expression": "{view.custom.selected_file_config.Size}\u003d0" - }, - "type": "expr" - }, - "persistent": true - }, - "custom.file_options": { - "binding": { - "config": { - "path": "view.params.files" - }, - "transforms": [ - { - "code": "\tprefix \u003d self.params.prefix\n\tsuffix \u003d self.params.suffix\n\treturn [{\u0027value\u0027: x.Filename, \n\t\t\u0027label\u0027: x.Filename} \n\t\tfor x in value]", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.loading": { - "persistent": true - }, - "custom.selected_file": { - "persistent": true - }, - "custom.selected_file_config": { - "binding": { - "config": { - "expression": "{view.custom.selected_file}+toStr({view.custom.file_options})" - }, - "transforms": [ - { - "code": "\tdef_file_config \u003d self.custom.default_file_config\n\treturn next((x for x in self.params.files if x.Filename \u003d\u003d self.custom.selected_file), def_file_config)", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.stage_config": { - "binding": { - "config": { - "expression": "{view.custom.api_region_name}" - }, - "transforms": [ - { - "code": "\treturn AWS.s3.STAGE_CONFIG[\u0027prod\u0027][value]", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "params.bucket": { - "paramDirection": "input", - "persistent": true - }, - "params.enables": { - "paramDirection": "input", - "persistent": true - }, - "params.files": { - "paramDirection": "input", - "persistent": true - }, - "params.prefix": { - "paramDirection": "input", - "persistent": true - }, - "params.selected_file": { - "onChange": { - "enabled": null, - "script": "\tif not missedEvents:\n\t\tselection \u003d self.getChild(\"root\").getChild(\"FlexContainer\").getChild(\"Table\").props.selection\n\t\tif currentValue.value:\n\t\t\tif not currentValue.value.endswith(self.params.suffix):\n\t\t\t\tself.custom.selected_file \u003d currentValue.value + self.params.suffix\n\t\t\telse:\n\t\t\t\tself.custom.selected_file \u003d currentValue.value\n\t\t\t# now select the correct row in table that matches selection\n\t\t\tfilename \u003d self.custom.selected_file\n\t\t\tselected_row, selected_data \u003d None, []\n\t\t\tfor index, row in enumerate(self.params.files):\n\t\t\t\tif row.Filename \u003d\u003d filename:\n\t\t\t\t\tselected_row \u003d index\n\t\t\t\t\tselected_data.append(row)\n\t\t\t\t\tbreak\n\t\t\tselection.data \u003d selected_data\n\t\t\tselection.selectedRow \u003d selected_row\n\t\telse:\n\t\t\t# file is none, clear out file selection\n\t\t\t# I know, why are we setting to -1, then None? it\u0027s an ignition persp table bug\n\t\t\t# as of 8.1.20. It works...\n\t\t\tselection.selectedRow \u003d -1\n\t\t\tselection.selectedColumn \u003d -1\n\t\t\tselection.selectedRow \u003d None\n\t\t\tselection.selectedColumn \u003d None\n\t" - }, - "paramDirection": "input", - "persistent": true - }, - "params.suffix": { - "paramDirection": "input", - "persistent": true - }, - "params.upload_file_types": { - "paramDirection": "input", - "persistent": true - }, - "params.whid": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 600, - "width": 550 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Select File:" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t# when user selects new file, send message to update selected image on parent view\n\tif self.props.value:\n\t\tsuffix \u003d self.view.params.suffix\n\t\tselected_image \u003d self.props.value.replace(suffix, \u0027\u0027)\n\t\tpayload \u003d {\u0027image\u0027: selected_image}\n\t\tsystem.perspective.sendMessage(\u0027update_selected_image\u0027, payload, scope\u003d\u0027session\u0027)\n\t\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Dropdown", - "tooltip": { - "location": "bottom", - "style": { - "whiteSpace": "pre" - }, - "text": "Click here to select a different \nstage folder to manage" - } - }, - "position": { - "basis": "175px", - "grow": 1, - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "{view.params.enables.file}\u0026\u0026try(len({view.params.files})\u003e0,false)" - }, - "type": "expr" - } - }, - "props.options": { - "binding": { - "config": { - "path": "view.custom.file_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.custom.selected_file" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "margin": "2px", - "marginRight": "5px" - } - }, - "type": "ia.input.dropdown" - }, - { - "events": { - "component": { - "onFileReceived": { - "config": { - "script": "\tself.upload_file(event\u003devent)\n" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FileUpload", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "26px", - "shrink": 0 - }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "expression": "stringFormat(\u0027Upload new version of %s\u0027,{view.custom.selected_file})" - }, - "type": "expr" - } - }, - "meta.visible": { - "binding": { - "config": { - "expression": "{view.params.enables.upload}\u0026\u0026!{view.custom.file_not_found}" - }, - "type": "expr" - } - }, - "props.supportedFileTypes": { - "binding": { - "config": { - "path": "view.params.upload_file_types" - }, - "type": "property" - } - } - }, - "props": { - "fileSizeLimit": 20, - "fileUploadIcon": { - "style": { - "borderStyle": "none", - "classes": "Input/Button/Secondary_minimal", - "margin": "-5px" - } - }, - "maxUploads": 1 - }, - "scripts": { - "customMethods": [ - { - "name": "update_bindings", - "params": [], - "script": "\t\"\"\"\n\t\tAfter data saved to S3, refresh session and view bindings\n\t\"\"\"\n\t\n\tself.view.custom.loading \u003d False\n\t# reset file upload component to default state\n\tself.clearUploads()\n\t# send message to update files param on parent view\n\tbucket \u003d self.view.params.bucket\n\tsystem.perspective.sendMessage(\u0027update_file_binding\u0027, {\u0027bucket\u0027: bucket}, scope\u003d\u0027session\u0027)\n\t" - }, - { - "name": "show_success_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"success\", \n\t\t\"File Uploaded\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t" - }, - { - "name": "show_warning_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"warning\", \n\t\t\"File NOT Uploaded\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t" - }, - { - "name": "show_error_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"error\", \n\t\t\"File Upload Error!\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t\t" - }, - { - "name": "upload_file", - "params": [ - "event\u003dNone" - ], - "script": "\tfrom AWS.s3 import S3Manager\n\tfrom pprint import pformat\n\tsystem.perspective.print(\u0027FileUpload component upload_file custom method reached...\u0027)\n\tself.view.custom.loading \u003d True\n\ttry:\n\t\tapi_stage \u003d \u0027prod\u0027\n\t\tusername \u003d self.session.props.auth.user.userName\n\t\tapi_region_name \u003d self.view.custom.api_region_name\n\t\tbucket \u003d self.view.params.bucket\n\t\tobj_key \u003d self.view.custom.selected_file_config.Key\n\t\tregion \u003d self.view.custom.stage_config.s3_region\n\t\texisting_filename \u003d self.view.custom.selected_file_config.Filename\n\t\tfilename \u003d event.file.name\n\t\t# verify that uploaded file name matches existing file name. Throw error if not.\n\t\tif filename !\u003d existing_filename:\n\t\t\tmsg \u003d \u0027File uploaded does not have the same name as target object key. Please check spelling and that you selected the correct file to upload. Target filename: %s. Received: %s\u0027 % (\n\t\t\t\t\texisting_filename, filename)\n\t\t\tself.show_error_dialog(msg)\n\t\t\tself.view.custom.loading \u003d False\n\t\t\tself.clearUploads()\n\t\t\treturn\n\t\tsystem.perspective.print(\u0027obj_key to upload: %s\u0027 % obj_key)\n\t\tobj_data \u003d event.file.getString()\n\t\tsystem.perspective.print(\u0027obj_data length: %s\u0027 % len(obj_data))\n\n\t\ts3m \u003d S3Manager(api_stage, api_region_name, username)\n\t\ttry:\n\t\t\tresp \u003d s3m.upload(\n\t\t\t\tobj_data\u003dobj_data,\n\t\t\t\tobj_key\u003dobj_key,\n\t\t\t\tbucket\u003dbucket,\n\t\t\t\tregion\u003dregion\n\t\t\t)\n\t\t\tresp_code \u003d resp.get(\u0027code\u0027, None)\n\t\t\tif (resp_code and resp_code !\u003d 200) or (not resp_code and \u0027message\u0027 in resp):\n\t\t\t\t# this means the API encountered an error, annunciate the error here\n\t\t\t\tmsg \u003d \u0027API encountered error uploading %s to %s bucket. \\nResponse: %s\u0027 % (obj_key, bucket, pformat(resp))\n\t\t\t\tsystem.perspective.print(msg)\n\t\t\t\tself.view.custom.loading \u003d False\n\t\t\t\tself.show_error_dialog(msg)\n\t\t\t\tself.clearUploads()\n\t\t\t\treturn\n\t\t\tmsg \u003d \u0027Successfully uploaded %s object in %s bucket!\\nResponse: %s\u0027 % (obj_key, bucket, pformat(resp))\n\t\t\tsystem.perspective.print(msg)\n\t\t\tself.show_success_dialog(msg)\n\t\t\tself.update_bindings()\n\t\texcept:\n\t\t\timport traceback\n\t\t\tmsg \u003d \u0027Error uploading %s object in %s bucket: %s\u0027 % (obj_key, bucket, traceback.format_exc())\n\t\t\tsystem.perspective.print(msg)\n\t\t\tself.view.custom.loading \u003d False\n\t\t\tself.show_error_dialog(msg)\n\t\t\tself.clearUploads()\n\texcept:\n\t\timport traceback\n\t\tmsg \u003d \u0027General Error uploading %s object in %s bucket: %s\u0027 % (obj_key, bucket, traceback.format_exc())\n\t\tsystem.perspective.print(msg)\n\t\tself.view.custom.loading \u003d False\n\t\tself.show_error_dialog(msg)\n\t\tself.clearUploads()\n\t\t" - } - ], - "extensionFunctions": null, - "messageHandlers": [] - }, - "type": "ia.input.fileupload" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tfrom AWS.s3 import S3Manager\n\tfrom pprint import pformat\n\timport json\n\t\n\tapi_stage \u003d \u0027prod\u0027\n\tusername \u003d self.session.props.auth.user.userName\n\tapi_region_name \u003d self.view.custom.api_region_name\n\tbucket \u003d self.view.params.bucket\n\tobj_key \u003d self.view.custom.selected_file_config.Key\n\tregion \u003d self.view.custom.stage_config.s3_region\n\tfilename \u003d self.view.custom.selected_file_config.Filename\n\t\n\ts3m \u003d S3Manager(api_stage, api_region_name, username)\n\tdata \u003d None\n\ttry:\n\t\tresp \u003d s3m.download(bucket\u003dbucket, obj_key\u003dobj_key, region\u003dregion)\n\t\ttry:\n\t\t\tresp_code \u003d resp.get(\u0027code\u0027, None)\n\t\texcept AttributeError:\n\t\t\tresp_code \u003d None\n\t\tif (resp_code and resp_code !\u003d 200) or (not resp_code and \u0027message\u0027 in resp):\n\t\t\t# this means the API encountered an error, annunciate the error here\n\t\t\tmsg \u003d \u0027API encountered error downloading %s on %s bucket. \\nResponse: %s\u0027 % (obj_key, bucket, pformat(sanitize_tree(resp)))\n\t\t\tsystem.perspective.print(msg)\n\t\t\tself.show_error_dialog(msg)\n\t\t\treturn\n\t\tif isinstance(resp, dict) or isinstance(resp, list):\n\t\t\tdata \u003d json.dumps(resp, indent\u003d2)\n\t\telse:\n\t\t\tdata \u003d resp\n\texcept:\n\t\timport traceback\n\t\tmsg \u003d \u0027error downloading %s obj: %s\u0027 % (obj_key, traceback.format_exc())\n\t\tsystem.perspective.print(msg)\n\t\tself.show_error_dialog(msg)\n\tif data:\n\t\tsystem.perspective.download(filename, data)\n\telse:\n\t\tsystem.perspective.print(\u0027no data for %s obj!\u0027 % obj_key)\n\t\tself.show_error_dialog(msg)\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Download Button", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "26px", - "shrink": 0 - }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "expression": "stringFormat(\u0027Download copy of %s\u0027,{view.custom.selected_file})" - }, - "type": "expr" - } - }, - "props.enabled": { - "binding": { - "config": { - "expression": "{view.params.enables.download}\u0026\u0026!{view.custom.file_not_found}" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/cloud_download" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal", - "margin": "2px" - }, - "text": "" - }, - "scripts": { - "customMethods": [ - { - "name": "show_error_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"error\", \n\t\t\"File Download Error!\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t\t\t" - } - ], - "extensionFunctions": null, - "messageHandlers": [] - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.show_confirm_dialog()" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Delete Button", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "26px", - "shrink": 0 - }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "expression": "stringFormat(\u0027Delete record of %s file from %s bucket\u0027,\r\n\t{view.custom.selected_file},{view.params.bucket})" - }, - "type": "expr" - } - }, - "props.enabled": { - "binding": { - "config": { - "expression": "{view.params.enables.delete}\u0026\u0026!{view.custom.file_not_found}" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/delete_forever" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal", - "margin": "2px" - }, - "text": "" - }, - "scripts": { - "customMethods": [ - { - "name": "show_success_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"success\", \n\t\t\"File Deleted\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t\t" - }, - { - "name": "show_warning_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"warning\", \n\t\t\"File NOT Deleted\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t\t" - }, - { - "name": "show_error_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"error\", \n\t\t\"File Delete Error!\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t\t" - }, - { - "name": "show_confirm_dialog", - "params": [ - "payload\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add payload of data to pass to the popup\n\tmsg \u003d (\u0027Are you sure you want to delete %s file from %s S3 bucket? THIS OPERATION CANNOT BE UNDONE!\u0027) % (\n\t\tself.view.custom.selected_file, self.view.params.bucket)\n\tpayload \u003d {\u0027bucket\u0027: self.view.params.bucket}\t\t\n\tAlerts.showAlert(\n\t\t\"info\", \n\t\t\"Delete from S3?\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"Continue\", \n\t\t\"Cancel\", \n\t\t\"delete_forever\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"confirm_delete_file\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\tpayload\n\t)\n\t\t\t" - }, - { - "name": "update_bindings", - "params": [], - "script": "\t\"\"\"\n\t\tAfter deleted from S3, refresh session and view bindings\n\t\"\"\"\n\tself.view.custom.loading \u003d False\n\t# send message to update files param on parent view\n\tbucket \u003d self.view.params.bucket\n\tsystem.perspective.sendMessage(\u0027update_file_binding\u0027, {\u0027bucket\u0027: bucket}, scope\u003d\u0027session\u0027)\n\t" - }, - { - "name": "delete_file", - "params": [], - "script": "\t\"\"\"\n\t\tCall AWS.s3.S3Manager.delete() method with user selections\n\t\"\"\"\n\tfrom AWS.s3 import S3Manager\n\tfrom pprint import pformat\n\tfrom helper.helper import sanitize_tree\n\t\n\tapi_region_name \u003d self.view.custom.api_region_name\n\tusername \u003d self.session.props.auth.user.userName\n\tself.view.custom.loading \u003d True\n\n\ts3m \u003d S3Manager(\u0027prod\u0027, api_region_name, username)\n\n\tbucket \u003d self.view.params.bucket\n\tobj_key \u003d self.view.custom.selected_file_config.Key\n\toperation \u003d \u0027delete\u0027\n\tparams \u003d {\u0027obj_key\u0027: obj_key, \u0027bucket\u0027: bucket}\n\ttry:\n\t\tresp \u003d getattr(s3m, operation)(**params)\n\t\tresp_code \u003d resp.get(\u0027code\u0027, None)\n\t\tif (resp_code and resp_code !\u003d 200) or (not resp_code and \u0027message\u0027 in resp):\n\t\t\t# this means the API encountered an error, annunciate the error here\n\t\t\tmsg \u003d \u0027API encountered error deleting %s on %s bucket. \\nResponse: %s\u0027 % (obj_key, bucket, pformat(sanitize_tree(resp)))\n\t\t\tsystem.perspective.print(msg)\n\t\t\tself.view.custom.loading \u003d False\n\t\t\tself.show_error_dialog(msg)\n\t\t\treturn\n\t\tmsg \u003d pformat(sanitize_tree(resp))\n\t\tsystem.perspective.print(msg)\n\t\tself.show_success_dialog(msg)\n\t\tself.update_bindings()\n\texcept:\n\t\timport traceback\n\t\tmsg \u003d \u0027Error executing %s operation! \\nError: %s\u0027 % (\n\t\t\t\toperation, traceback.format_exc())\n\t\tsystem.perspective.print(msg)\n\t\tself.view.custom.loading \u003d False\n\t\tself.show_error_dialog(msg)\n\t" - } - ], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "confirm_delete_file", - "pageScope": false, - "script": "\tsystem.perspective.closePopup(\u0027alertDialog\u0027)\n\tif payload is not None:\n\t\tbucket_requested \u003d payload.get(\u0027bucket\u0027, None)\n\t\tif bucket_requested and bucket_requested \u003d\u003d self.view.params.bucket:\n\t\t\t# call the delete custom method\n\t\t\tself.delete_file()", - "sessionScope": true, - "viewScope": true - } - ] - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer File Selection" - }, - "position": { - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Cards/Row" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Object Key (uri):" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "label_LeftAlign" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "propConfig": { - "props.params.text": { - "binding": { - "config": { - "path": "view.custom.selected_file_config.Key" - }, - "type": "property" - } - } - }, - "props": { - "path": "Objects/Templates/Labels/label_LeftAlign", - "style": { - "classes": "Framework/Card/Value" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "FlexContainer Object Key" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "!{view.custom.file_not_found}" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "Framework/Cards/Row" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Last Modified:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "label_LeftAlign" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "propConfig": { - "props.params.text": { - "binding": { - "config": { - "path": "view.custom.selected_file_config.LastModified" - }, - "type": "property" - } - } - }, - "props": { - "path": "Objects/Templates/Labels/label_LeftAlign", - "style": { - "classes": "Framework/Card/Value" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "FlexContainer Last Modified" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "!{view.custom.file_not_found}" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "Framework/Cards/Row" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "File Size (KB):" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "label_LeftAlign" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "propConfig": { - "props.params.text": { - "binding": { - "config": { - "expression": "round({view.custom.selected_file_config.Size}/1024.0,2)" - }, - "type": "expr" - } - } - }, - "props": { - "path": "Objects/Templates/Labels/label_LeftAlign", - "style": { - "classes": "Framework/Card/Value" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "FlexContainer File Size" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Storage Class:" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "label_LeftAlign" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "propConfig": { - "props.params.text": { - "binding": { - "config": { - "path": "view.custom.selected_file_config.StorageClass" - }, - "type": "property" - } - } - }, - "props": { - "path": "Objects/Templates/Labels/label_LeftAlign", - "style": { - "classes": "Framework/Card/Value" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "FlexContainer Storage Class" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer File Detail" - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "!{view.custom.file_not_found}" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "Framework/Cards/Row" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t# build out the stage, site, flow-view, and copy_option from the object-key in row\n\tobj_key \u003d self.view.custom.selected_file_config.Key\n\tfilename \u003d self.view.custom.selected_file_config.Filename\n\tsuffix \u003d self.view.params.suffix\n\tpath \u003d obj_key.split(\u0027/\u0027)\n\tsite \u003d path[1]\n\tview \u003d filename.replace(suffix,\u0027\u0027)\n\tbucket \u003d self.view.params.bucket\n\t# build out query_params from row values\n\t# view, site, and bucket are multi-select dropdowns so need to be cast as lists\n\tnull \u003d None\n\tquery_params \u003d {\n\t\t\"copy_option\": null,\n\t\t\"destination_bucket\": bucket,\n\t\t\"destination_site\": site,\n\t\t\"destination_view\": view,\n\t\t\"end_time\": null,\n\t\t\"error_occurred\": null,\n\t\t\"operation\": null,\n\t\t\"source_bucket\": null,\n\t\t\"source_site\": null,\n\t\t\"source_view\": null,\n\t\t\"start_time\": null,\n\t\t\"username\": \"\"\n\t}\n\t# Open audit log viewer\n\tview_path \u003d \u0027PopUp-Views/S3/Audit/Log_Viewer\u0027\n\tparams \u003d {\u0027query_params\u0027: query_params}\n\tsystem.perspective.openPopup(\u0027Audit Log Viewer\u0027, view_path, \n\t\t\t\t\t\t\t\tparams, \u0027SCADA S3 Audit Logs\u0027)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Audit Logs Button", - "tooltip": { - "enabled": true, - "location": "bottom", - "text": "View Audit Logs for this file" - } - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!{view.custom.file_not_found}" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/table_view" - } - }, - "primary": false, - "style": { - "margin": "2px", - "paddingLeft": "4px", - "paddingRight": "4px" - }, - "text": "Audit Logs" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t# build out the stage, site, flow-view, and copy_option from the object-key in row\n\tobj_key \u003d self.view.custom.selected_file_config.Key\n\tfilename \u003d self.view.custom.selected_file_config.Filename\n\tsuffix \u003d self.view.params.suffix\n\tpath \u003d obj_key.split(\u0027/\u0027)\n\tsite \u003d path[1]\n\tview \u003d filename.replace(suffix,\u0027\u0027)\n\tbucket \u003d self.view.params.bucket\n\t# build out query_params from row values\n\tquery_params \u003d {\n\t\t\"view\": view,\n\t\t\"object_key\": obj_key,\n\t\t\"site\": site,\n\t\t\"bucket\": bucket\n\t}\n\t# Open version history log viewer\n\tview_path \u003d \u0027PopUp-Views/S3/Versions/Log_Viewer\u0027\n\tparams \u003d {\u0027query_params\u0027: query_params}\n\tsystem.perspective.openPopup(\u0027Version Log Viewer\u0027, view_path, \n\t\t\t\t\t\t\t\tparams, \u0027SCADA S3 Version History Log Viewer\u0027)\n\t\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Version History Button", - "tooltip": { - "text": "View Version History for this file" - } - }, - "position": { - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!{view.custom.file_not_found}" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/history" - } - }, - "primary": false, - "style": { - "margin": "2px", - "paddingLeft": "4px", - "paddingRight": "4px" - }, - "text": "Version History" - }, - "type": "ia.input.button" - }, - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "75px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label Text/RightAlign_with_Padding", - "paddingLeft": "5px" - }, - "text": "Upload New File:" - }, - "type": "ia.display.label" - }, - { - "events": { - "component": { - "onFileReceived": { - "config": { - "script": "\tself.upload_file(event\u003devent)\n" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FileUpload", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "25%", - "shrink": 0 - }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "expression": "stringFormat(\u0027Upload new file to %s S3 bucket\u0027,{view.params.bucket})" - }, - "type": "expr" - } - }, - "position.display": { - "binding": { - "config": { - "path": "view.params.enables.upload" - }, - "type": "property" - } - }, - "props.supportedFileTypes": { - "binding": { - "config": { - "path": "view.params.upload_file_types" - }, - "type": "property" - } - } - }, - "props": { - "fileSizeLimit": 100, - "fileUploadIcon": { - "style": { - "classes": "" - } - }, - "maxUploads": 1, - "style": { - "backgroundColor": "var(--neutral-30)", - "borderStyle": "none", - "classes": "FadeInFast, background, background-none", - "cursor": "pointer", - "margin": "2px", - "max-height": "40px", - "overflow": "visible" - } - }, - "scripts": { - "customMethods": [ - { - "name": "update_bindings", - "params": [], - "script": "\t\"\"\"\n\t\tAfter data saved to S3, refresh session and view bindings\n\t\"\"\"\n\t\n\tself.view.custom.loading \u003d False\n\t# reset file upload component to default state\n\tself.clearUploads()\n\t# send message to update files param on parent view\n\tbucket \u003d self.view.params.bucket\n\tsystem.perspective.sendMessage(\u0027update_file_binding\u0027, {\u0027bucket\u0027: bucket}, scope\u003d\u0027session\u0027)\n\t" - }, - { - "name": "show_success_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"success\", \n\t\t\"File Uploaded\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t" - }, - { - "name": "show_warning_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"warning\", \n\t\t\"File NOT Uploaded\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t" - }, - { - "name": "show_error_dialog", - "params": [ - "msg\u003dNone" - ], - "script": "\t# ~~ 13 PARAMETERS ~~\n\t# state\t\t\t\t\t(default \u003d info) empty string uses generic gray styling\n\t# title \t\t\t\t(default \u003d Alert Title) empty string sets the title visibility to false\n\t# message \t\t\t\t(default \u003d Alert message goes here.)\n\t# show close button\t\t(default \u003d true) boolean\n\t# btn text primary\t\t(default \u003d \"Primary\")\n\t# btn text secondary\t(default \u003d \"Secondary\")\n\t# btn icon primary \t\t(default \u003d chevron_right) do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon secondary \t(default \u003d \"\") do not include \u0027material/\u0027 in the path, just the icon name\n\t# btn icon alignment\t(default \u003d \"right\") left or right\n\t# btn primary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn secondary action\t(default \u003d \"\") add message handlers on this button to enable other script actions\n\t# btn close action\t\t(default \u003d \"\") add message handlers on this icon to enable other script actions\n\t# payload\t\t\t\t(default \u003d {}) add a payload here to return to the target message handler\n\t\n\tAlerts.showAlert(\n\t\t\"error\", \n\t\t\"File Upload Error!\", \n\t\tmsg, \n\t\t\"true\",\n\t\t\"OK\", \n\t\t\"CLOSE\", \n\t\t\"\", \n\t\t\"\", \n\t\t\"left\", \n\t\t\"closePopup\", \n\t\t\"closePopup\", \n\t\t\"closePopup\",\n\t\t{}\n\t)\n\t\t\t\t\t" - }, - { - "name": "upload_file", - "params": [ - "event\u003dNone" - ], - "script": "\tfrom AWS.s3 import S3Manager\n\tfrom pprint import pformat\n\t\n\tself.view.custom.loading \u003d True\n\ttry:\n\t\tapi_stage \u003d \u0027prod\u0027\n\t\tusername \u003d self.session.props.auth.user.userName\n\t\tapi_region_name \u003d self.view.custom.api_region_name\n\t\tbucket \u003d self.view.params.bucket\n\t\tdefault_obj_key \u003d self.view.custom.default_file_config.Key\n\t\tdefault_filename \u003d self.view.custom.default_file_config.Filename\n\t\tregion \u003d self.view.custom.stage_config.s3_region\n\t\tfilename \u003d event.file.name\n\t\t# check if file already exists in S3 site folder, throw error if so\n\t\tif any(x.Filename \u003d\u003d filename for x in self.view.params.files):\n\t\t\tmsg \u003d \u0027%s file already exists in the site folder. Please use the upload button next to the file select dropdown or select a new file to upload\u0027 % filename\n\t\t\tself.show_error_dialog(msg)\n\t\t\tself.view.custom.loading \u003d False\n\t\t\tself.clearUploads()\n\t\t\treturn\n\t\tobj_key \u003d default_obj_key.replace(default_filename, filename)\n\t\tobj_data \u003d event.file.getString()\n\t\t\n\t\ts3m \u003d S3Manager(api_stage, api_region_name, username)\n\t\ttry:\n\t\t\tresp \u003d s3m.upload(\n\t\t\t\tobj_data\u003dobj_data,\n\t\t\t\tobj_key\u003dobj_key,\n\t\t\t\tbucket\u003dbucket,\n\t\t\t\tregion\u003dregion\n\t\t\t)\n\t\t\tresp_code \u003d resp.get(\u0027code\u0027, None)\n\t\t\tif (resp_code and resp_code !\u003d 200) or (not resp_code and \u0027message\u0027 in resp):\n\t\t\t\t# this means the API encountered an error, annunciate the error here\n\t\t\t\tmsg \u003d \u0027API encountered error uploading %s to %s bucket. \\nResponse: %s\u0027 % (obj_key, bucket, pformat(resp))\n\t\t\t\tsystem.perspective.print(msg)\n\t\t\t\tself.view.custom.loading \u003d False\n\t\t\t\tself.show_error_dialog(msg)\n\t\t\t\tself.clearUploads()\n\t\t\t\treturn\n\t\t\tmsg \u003d \u0027Successfully uploaded %s object in %s bucket!\\nResponse: %s\u0027 % (obj_key, bucket, pformat(resp))\n\t\t\tsystem.perspective.print(msg)\n\t\t\tself.show_success_dialog(msg)\n\t\t\tself.update_bindings()\n\t\texcept:\n\t\t\timport traceback\n\t\t\tmsg \u003d \u0027Error uploading %s object in %s bucket: %s\u0027 % (obj_key, bucket, traceback.format_exc())\n\t\t\tsystem.perspective.print(msg)\n\t\t\tself.view.custom.loading \u003d False\n\t\t\tself.show_error_dialog(msg)\n\t\t\tself.clearUploads()\n\texcept:\n\t\timport traceback\n\t\tmsg \u003d \u0027General Error uploading %s object in %s bucket: %s\u0027 % (obj_key, bucket, traceback.format_exc())\n\t\tsystem.perspective.print(msg)\n\t\tself.view.custom.loading \u003d False\n\t\tself.show_error_dialog(msg)\n\t\tself.clearUploads()\n\t\t" - } - ], - "extensionFunctions": null, - "messageHandlers": [] - }, - "type": "ia.input.fileupload" - } - ], - "meta": { - "name": "FlexContainer Log Buttons" - }, - "position": { - "shrink": 0 - }, - "props": { - "justify": "center" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Title" - }, - "position": { - "basis": "100%" - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "stringFormat(\u0027%s Object%s\u0027, len({view.params.files}), \r\n\tif(len({view.params.files})\u003d1,\u0027\u0027,\u0027s\u0027))" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "Title/Text", - "fontSize": 14, - "overflow": "visible" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Title" - }, - "position": { - "basis": "50%" - }, - "props": { - "style": { - "fontSize": 1, - "marginLeft": 10, - "overflow": "visible" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "FilterCheck", - "tooltip": { - "enabled": true, - "location": "top-left", - "text": "Enable Table Search" - } - }, - "position": { - "basis": "108px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "LEN({..../Table.props.data})\u003e0" - }, - "type": "expr" - } - } - }, - "props": { - "checkedIcon": { - "style": { - "fontSize": 16 - } - }, - "indeterminateIcon": { - "style": { - "fontSize": 16 - } - }, - "style": { - "fontSize": 12 - }, - "text": "Search?", - "textPosition": "left", - "uncheckedIcon": { - "style": { - "fontSize": 16 - } - } - }, - "type": "ia.input.checkbox" - }, - { - "meta": { - "name": "Spacer1" - }, - "position": { - "basis": "1px" - }, - "props": { - "style": { - "classes": "General/Divider" - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tself.view.custom.selected_file \u003d \u0027\u0027\n\ttable \u003d self.parent.parent.parent.getChild(\"Table\")\n\t# ignition perspective has a bug with table where the only way to \n\t# actually de-select and remove the row highlight is to set the\n\t# row and column to -1 and THEN None\n\t# this will automatically clear the selection.data array\n\ttable.props.selection.selectedRow \u003d -1\n\ttable.props.selection.selectedColumn \u003d -1\n\ttable.props.selection.selectedRow \u003d None\n\ttable.props.selection.selectedColumn \u003d None" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "ClearSelectionButton", - "tooltip": { - "enabled": true, - "location": "top-left", - "text": "Clear Selection" - } - }, - "position": { - "basis": "31px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "len({..../Table.props.selection.data})\u003e0" - }, - "type": "expr" - } - } - }, - "props": { - "path": "material/clear", - "style": { - "classes": "General/Button" - } - }, - "type": "ia.display.icon" - }, - { - "meta": { - "name": "Spacer2" - }, - "position": { - "basis": "1px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "../ClearSelectionButton.position.display" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "General/Divider" - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "draggable": false, - "id": "ColumnSelection", - "modal": true, - "overlayDismiss": true, - "position": { - "relativeLocation": "bottom-left" - }, - "positionType": "relative", - "resizable": true, - "showCloseIcon": true, - "type": "toggle", - "viewParams": { - "Columns": "{/root/FlexContainer/TableHeader/TableActions/ColumnSelectionButton.custom.Columns}" - }, - "viewPath": "Objects/PowerTable/ColumnSelection", - "viewportBound": false - }, - "scope": "C", - "type": "popup" - } - } - }, - "meta": { - "name": "ColumnSelectionButton", - "tooltip": { - "enabled": true, - "location": "top-left", - "text": "+/- Columns" - } - }, - "position": { - "basis": "29px" - }, - "propConfig": { - "custom.Columns": { - "binding": { - "config": { - "path": "..../Table.props.columns" - }, - "transforms": [ - { - "code": "\tcolumns \u003d {}\n\tif len(value) \u003e 0:\n\t\tfor column in value:\n\t\t\t#field \u003d column.field\n\t\t\tfield \u003d column.header.title\n\t\t\tif field \u003d\u003d \u0027\u0027:\n\t\t\t\tfield \u003d \u0027None\u0027\n\t\t\tcolumns[field] \u003d column.visible\n\treturn columns", - "type": "script" - } - ], - "type": "property" - } - }, - "position.display": { - "binding": { - "config": { - "expression": "LEN({..../Table.props.data})\u003e0" - }, - "type": "expr" - } - } - }, - "props": { - "path": "material/view_column", - "style": { - "classes": "General/Button", - "fontSize": 12, - "marginBottom": 5, - "marginTop": 5 - } - }, - "type": "ia.display.icon" - }, - { - "meta": { - "name": "Spacer4" - }, - "position": { - "basis": "1px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "LEN({..../Table.props.data})\u003e0" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "General/Divider" - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tself.view.custom.filters.selection_active \u003d not self.view.custom.filters.selection_active" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "FilterButton", - "tooltip": { - "enabled": true, - "location": "top-left", - "text": "Filter Table" - } - }, - "position": { - "basis": "29px", - "display": false - }, - "props": { - "path": "material/filter_list", - "style": { - "classes": "General/Button", - "fontSize": 12, - "marginBottom": 5, - "marginTop": 5 - } - }, - "type": "ia.display.icon" - }, - { - "meta": { - "name": "Spacer3" - }, - "position": { - "basis": "1px" - }, - "props": { - "style": { - "classes": "General/Divider" - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\n\tcsv_headers \u003d []\n\tcsv_data \u003d []\n\tsystem.perspective.print(\u0027DOWNLOADING TABLE DATA\u0027)\n\tsource_data \u003d self.parent.parent.parent.getChild(\"Table\").props.data\n\theaders \u003d source_data[0].keys()\n\t\n\tif \u0027style\u0027 in headers and \u0027value\u0027 in headers and len(headers) \u003d\u003d 2:\n\t\tdata \u003d [row[\u0027value\u0027] for row in source_data]\n\telse:\n\t\tdata \u003d source_data\n\t\t\n\tfor record in data:\n\t\tif len(csv_headers) \u003d\u003d 0:\n\t\t\tcsv_headers \u003d record.keys()\n\t\t\tcsv_headers.sort()\n\t\t\tcsv_headers \u003d [str(i) for i in csv_headers]\n\t\tcsv_row \u003d []\n\t\tfor index in range(len(record)):\n\t\t\tcsv_row.append(str(record[csv_headers[index]]))\n\t\tcsv_data.append(csv_row)\n\t\n\ttry:\n\t\tcsv_dataset \u003d system.dataset.toDataSet(csv_headers, csv_data)\n\texcept Exception, e:\n\t\tsystem.perspective.print(str(e))\n\tcsv_export \u003d system.dataset.toCSV(csv_dataset)\n\tfilename \u003d \u0027{0}.csv\u0027.format(str(system.date.now()).replace(\u0027 \u0027, \u0027_\u0027))\n\tsystem.perspective.download(filename, csv_export)\n\t\n\tsystem.perspective.print(\u0027DONE DOWNLOADING TABLE DATA\u0027)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "SettingsButton", - "tooltip": { - "enabled": true, - "location": "top-left", - "text": "Download Table Contents" - } - }, - "position": { - "basis": "30px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "LEN({..../Table.props.data})\u003e0" - }, - "type": "expr" - } - } - }, - "props": { - "path": "material/cloud_download", - "style": { - "classes": "General/Button", - "marginRight": 10 - } - }, - "type": "ia.display.icon" - } - ], - "meta": { - "name": "TableActions", - "tooltip": { - "location": "top-right" - } - }, - "position": { - "grow": 1 - }, - "props": { - "justify": "flex-end" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "TableHeader" - }, - "position": { - "shrink": 0 - }, - "props": { - "justify": "space-between", - "style": { - "borderBottomStyle": "solid", - "borderBottomWidth": 1, - "cursor": "pointer" - } - }, - "type": "ia.container.flex" - }, - { - "events": { - "component": { - "onSelectionChange": { - "config": { - "script": "\t# validate the selection data is not null\n\tif self.props.selection.data:\n\t\tfilename \u003d self.props.selection.data[0].Filename\n\t\tself.view.custom.selected_file \u003d filename\n\t\t# send message to update selected file on parent container\n\t\tsuffix \u003d self.view.params.suffix\n\t\tpayload \u003d {\u0027image\u0027: filename.replace(suffix, \u0027\u0027)}\n\t\tsystem.perspective.sendMessage(\u0027update_selected_image\u0027, payload, scope\u003d\u0027session\u0027)\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Table" - }, - "position": { - "basis": "370px", - "shrink": 0 - }, - "propConfig": { - "props.data": { - "binding": { - "config": { - "path": "view.params.files" - }, - "type": "property" - } - }, - "props.filter.enabled": { - "binding": { - "config": { - "path": "../TableHeader/TableActions/FilterCheck.props.selected" - }, - "type": "property" - }, - "onChange": { - "enabled": null, - "script": "\tif not getattr(currentValue, \u0027value\u0027, None):\n\t\t# clear filter text when filter is disabled\n\t\tself.props.filter.text \u003d \u0027\u0027\n\t\t" - } - } - }, - "props": { - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "Filename", - "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": "Filename" - }, - "justify": "center", - "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": "Size", - "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": "Size (bytes)" - }, - "justify": "center", - "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": "LastModified", - "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 Updated" - }, - "justify": "center", - "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": "Key", - "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": "Key" - }, - "justify": "center", - "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": "ETag", - "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": "ETag" - }, - "justify": "center", - "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": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": false, - "field": "StorageClass", - "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": "Storage Class" - }, - "justify": "center", - "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": {}, - "style": { - "margin": "10px" - } - }, - "type": "ia.display.table" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "100%", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "activate-filter", - "pageScope": true, - "script": "\t# implement your handler here\n\tfilter_position \u003d payload[\u0027id\u0027]\n\tsystem.perspective.print(filter_position)\n\tadd \u003d True\n\tfor filter in self.view.custom.filters.active:\n\t\tif filter.id \u003d\u003d filter_position:\n\t\t\tadd \u003d False\n\tif add:\n\t\tfor filter in self.view.custom.filters.deactive:\n\t\t\tif filter.id \u003d\u003d filter_position:\t\t\t\t\n\t\t\t\tself.view.custom.filters.active.append(filter)", - "sessionScope": true, - "viewScope": false - }, - { - "messageType": "deactivate-filter", - "pageScope": true, - "script": "\tfilter_position \u003d payload[\u0027id\u0027]\n\tsystem.perspective.print(filter_position)\n\t\n\tif filter_position \u003d\u003d -1 :\n\t\tself.view.custom.filters.active \u003d []\n\telse:\n\t\tfor index, filter in enumerate(self.view.custom.filters.active):\n\t\t\tif filter.id \u003d\u003d filter_position:\n\t\t\t\tsystem.perspective.print(filter.id)\n\t\t\t\tself.view.custom.filters.active.pop(index)\n\n#\tfor filter in self.view.custom.filter_menu_data:\n#\t\tif filter.filter_id \u003d\u003d filter_position:\n#\t\t\tsystem.perspective.print(filter.filter_id)\n#\t\t\tfilter.active \u003d False\n#\t\t\tbreak", - "sessionScope": true, - "viewScope": false - }, - { - "messageType": "column-visibility", - "pageScope": true, - "script": "\t# implement your handler here\n\ttable_columns \u003d self.getChild(\"FlexContainer\").getChild(\"Table\").props.columns\n\tfor table_column in table_columns:\n\t\t#if payload.keys()[0] \u003d\u003d table_column[\u0027field\u0027]:\n\t\tif payload.keys()[0] \u003d\u003d table_column[\u0027header\u0027][\u0027title\u0027]:\n\t\t\ttable_column.visible \u003d payload.values()[0]", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/e5d598d5aee81f2a0e2b5843d8edfb09dec0ba12270c633d76190981fcf6eaf5 b/.resources/e5d598d5aee81f2a0e2b5843d8edfb09dec0ba12270c633d76190981fcf6eaf5 deleted file mode 100644 index 998ac83b..00000000 --- a/.resources/e5d598d5aee81f2a0e2b5843d8edfb09dec0ba12270c633d76190981fcf6eaf5 +++ /dev/null @@ -1,58 +0,0 @@ -{ - "custom": {}, - "params": { - "text": "value" - }, - "propConfig": { - "params.text": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 30, - "width": 210 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "209px", - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "{view.params.text}" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "Text/RightAlign_with_Padding" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "root" - }, - "props": { - "alignItems": "center", - "justify": "center", - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/e615a82de65aa13c96e5552d3391172efe413f938f85d680ac99400abdc21f19 b/.resources/e615a82de65aa13c96e5552d3391172efe413f938f85d680ac99400abdc21f19 deleted file mode 100644 index b9928cff..00000000 --- a/.resources/e615a82de65aa13c96e5552d3391172efe413f938f85d680ac99400abdc21f19 +++ /dev/null @@ -1,598 +0,0 @@ -{ - "custom": { - "alarm_message": null, - "covert_mode": true, - "disconnected": false, - "display_icon": true, - "error": false, - "isMatch": 0, - "plc": "value", - "priority": 0, - "priority_string": "No active alarms", - "running": false, - "running_status": 0, - "searchId": "PLC01", - "show_error": false, - "show_running": true, - "state": 5, - "state_string": "Unknown" - }, - "params": { - "forceFaultStatus": null, - "forceRunningStatus": null, - "tagProps": [ - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.alarm_message": { - "persistent": true - }, - "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} || {session.custom.alarm_filter.show_running},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\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": { - "binding": { - "config": { - "expression": "{view.custom.running_status} \u003d 3" - }, - "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.show_error": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\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\tFalse)", - "type": "expression" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.show_running": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "expression": "case(\t{value},\r\n\t\t1, False,\r\n\t\t2, False,\r\n\t\t{session.custom.alarm_filter.show_running}\r\n\t\t)", - "type": "expression" - } - ], - "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.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": "SLAM" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "props.elements[0].elements[0].fill.paint": { - "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,if({view.custom.running},{session.custom.colours.state5},{session.custom.colours.state0}),\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)", - "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": [ - { - "elements": [ - { - "d": "M 50.120001,25 C 50.827803,42.132141 31.110082,55.307098 15.552912,48.096988 -0.54598581,42.194727 -5.1724173,18.93609 7.4423281,7.3223305 18.432808,-4.6472699 39.878022,-1.2374264 47.061975,13.018775 49.062621,16.67345 50.124426,20.833557 50.120001,25 Z", - "fill": {}, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 1.5 - }, - "type": "path" - }, - { - "d": "m 18.74,8 c 4.25,0 8.5,0 12.75,0 0,0.5666667 0,1.1333333 0,1.7 -4.25,0 -8.5,0 -12.75,0 0,-0.5666667 0,-1.1333333 0,-1.7 z m 0,2.68 c 4.25,0 8.5,0 12.75,0 0,0.566667 0,1.133333 0,1.7 -4.25,0 -8.5,0 -12.75,0 0,-0.566667 0,-1.133333 0,-1.7 z m 0,2.69 c 4.25,0 8.5,0 12.75,0 0,0.566667 0,1.133333 0,1.7 -4.25,0 -8.5,0 -12.75,0 0,-0.566667 0,-1.133333 0,-1.7 z m 0,2.679999 c 4.25,0 8.5,0 12.75,0 0,0.566667 0,1.133333 0,1.7 -4.25,0 -8.5,0 -12.75,0 0,-0.566667 0,-1.133333 0,-1.7 z M 31.5,18.73 c -0.426667,3.296667 -0.853333,6.593333 -1.28,9.89 -3.4,0 -6.8,0 -10.2,0 -0.423333,-3.296667 -0.846667,-6.593333 -1.27,-9.89 4.25,0 8.5,0 12.75,0 z m 0,13.39 c -0.426667,3.296667 -0.853333,6.593333 -1.28,9.89 -3.4,0 -6.8,0 -10.2,0 -0.423333,-3.296667 -0.846667,-6.593333 -1.27,-9.89 4.25,0 8.5,0 12.75,0 z", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 0.5 - }, - "type": "path" - }, - { - "d": "m 10.24,8 c 1.416667,0 2.833333,0 4.25,0 0,11.333333 0,22.666667 0,34 -1.416667,0 -2.833333,0 -4.25,0 0,-11.333333 0,-22.666667 0,-34 z m 4.25,12.75 c 7.083333,0 14.166667,0 21.25,0 0,0.566667 0,1.133333 0,1.7 -7.083333,0 -14.166667,0 -21.25,0 0,-0.566667 0,-1.133333 0,-1.7 z M 35.740002,8 c 1.416667,0 2.833333,0 4.25,0 0,11.333333 0,22.666667 0,34 -1.416667,0 -2.833333,0 -4.25,0 0,-11.333333 0,-22.666667 0,-34 z", - "fill": { - "paint": "#000000" - }, - "name": "path", - "stroke": { - "paint": "#000000", - "width": 0.5 - }, - "type": "path" - } - ], - "transform": "matrix(0.98146771,0,0,0.97925914,0.29387469,0.4508585)", - "type": "group" - } - ], - "style": { - "overflow": "hidden" - }, - "viewBox": "-0.5 -0.5 51 51" - }, - "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" - } - }, - "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/e6278c0cc1890c4d2541353dc552ab8751f2df025fa5c6223dcbfe7ecb53163a b/.resources/e6278c0cc1890c4d2541353dc552ab8751f2df025fa5c6223dcbfe7ecb53163a deleted file mode 100644 index 6070270e..00000000 --- a/.resources/e6278c0cc1890c4d2541353dc552ab8751f2df025fa5c6223dcbfe7ecb53163a +++ /dev/null @@ -1,522 +0,0 @@ -{ - "custom": {}, - "params": { - "body": "", - "link1": "", - "link1title": "", - "link2": "", - "link2title": "", - "priority": "", - "title": "" - }, - "propConfig": { - "params.body": { - "paramDirection": "inout", - "persistent": true - }, - "params.link1": { - "paramDirection": "inout", - "persistent": true - }, - "params.link1title": { - "paramDirection": "inout", - "persistent": true - }, - "params.link2": { - "paramDirection": "inout", - "persistent": true - }, - "params.link2title": { - "paramDirection": "inout", - "persistent": true - }, - "params.priority": { - "paramDirection": "inout", - "persistent": true - }, - "params.title": { - "paramDirection": "inout", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 227, - "width": 600 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "title" - }, - "position": { - "basis": "50px", - "grow": 1 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "{this.props.text}" - }, - "transforms": [ - { - "fallback": true, - "inputType": "scalar", - "mappings": [ - { - "input": "", - "output": false - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "expr" - } - }, - "props.style.color": { - "binding": { - "config": { - "path": "view.params.state" - }, - "enabled": false, - "transforms": [ - { - "fallback": "var(--info)", - "inputType": "scalar", - "mappings": [ - { - "input": "info", - "output": "var(--info)" - }, - { - "input": "success", - "output": "var(--success)" - }, - { - "input": "error", - "output": "var(--error)" - }, - { - "input": "warning", - "output": "var(--warning)" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "path": "view.params.title" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Alerts/alertTitle", - "color": "#FFFFFF", - "marginLeft": 5 - }, - "textStyle": { - "paddingLeft": 5, - "paddingRight": 5 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "TopRow" - }, - "position": { - "basis": "40px" - }, - "props": { - "style": { - "backgroundColor": "#555555" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Body-Label" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.body" - }, - "type": "property" - } - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "BodyRow" - }, - "position": { - "basis": "90px", - "grow": 1 - }, - "props": { - "style": { - "marginBottom": 2.5, - "marginLeft": 10, - "marginRight": 5, - "marginTop": 5 - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tlink \u003d self.view.params.link1\n\t\n\tsystem.perspective.navigate(url\u003dlink, newTab\u003dTrue)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Icon", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "30px" - }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "path": "view.params.link1" - }, - "type": "property" - } - } - }, - "props": { - "path": "material/open_in_new", - "style": { - "marginLeft": 10, - "marginRight": 10 - } - }, - "type": "ia.display.icon" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tlink \u003d self.view.params.link1\n\t\n\tsystem.perspective.navigate(url\u003dlink, newTab\u003dTrue)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Link1-Label", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "50px", - "grow": 1 - }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "path": "view.params.link1" - }, - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "path": "view.params.link1title" - }, - "type": "property" - } - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "URL1Row" - }, - "position": { - "basis": "40px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.params.link1title" - }, - "transforms": [ - { - "code": "\tif len(value)\u003e0:\n\t\tvalue \u003d True\n\telse:\n\t\tvalue \u003d False\n\treturn value", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "backgroundColor": "#555555", - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tlink \u003d self.view.params.link2\n\t\n\tsystem.perspective.navigate(url\u003dlink, newTab\u003dTrue)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Icon", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "30px" - }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "path": "view.params.link2" - }, - "type": "property" - } - } - }, - "props": { - "path": "material/open_in_new", - "style": { - "marginLeft": 10, - "marginRight": 10 - } - }, - "type": "ia.display.icon" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tlink \u003d self.view.params.link2\n\t\n\tsystem.perspective.navigate(url\u003dlink, newTab\u003dTrue)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Link2-Label", - "tooltip": { - "enabled": true - } - }, - "position": { - "basis": "50px", - "grow": 1 - }, - "propConfig": { - "meta.tooltip.text": { - "binding": { - "config": { - "path": "view.params.link2" - }, - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "path": "view.params.link2title" - }, - "type": "property" - } - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "URL2Row" - }, - "position": { - "basis": "40px" - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "path": "view.params.link2title" - }, - "transforms": [ - { - "code": "\tif len(value)\u003e0:\n\t\tvalue \u003d True\n\telse:\n\t\tvalue \u003d False\n\treturn value", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "backgroundColor": "#555555" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "content" - }, - "position": { - "basis": "500px", - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "classes": "Utilities/m-r-16" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "body" - }, - "position": { - "basis": "200px", - "grow": 1 - }, - "props": { - "alignItems": "flex-start", - "justify": "center", - "style": { - "boxSizing": "content-box", - "classes": "Background-Styles/Controller" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "propConfig": { - "props.style.borderLeftColor": { - "binding": { - "config": { - "path": "view.params.priority" - }, - "transforms": [ - { - "fallback": "state5", - "inputType": "scalar", - "mappings": [ - { - "input": "Healthy", - "output": "state5" - }, - { - "input": "Diagnostic", - "output": "state4" - }, - { - "input": "Low", - "output": "state3" - }, - { - "input": "Medium", - "output": "state2" - }, - { - "input": "High", - "output": "state1" - } - ], - "outputType": "scalar", - "type": "map" - }, - { - "code": "\tprefix \u003d self.session.custom.colours[value]\n\treturn prefix", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "borderBottomStyle": "none", - "borderLeftStyle": "solid", - "borderLeftWidth": 5, - "borderRightStyle": "none", - "borderTopStyle": "none", - "classes": "Background-Styles/Controller" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/e94e656c118cf2c1c674391b4e55a1d081b3c548a5c7a60fc9879e1ffbf31577 b/.resources/e94e656c118cf2c1c674391b4e55a1d081b3c548a5c7a60fc9879e1ffbf31577 deleted file mode 100644 index 9a6d62ea..00000000 --- a/.resources/e94e656c118cf2c1c674391b4e55a1d081b3c548a5c7a60fc9879e1ffbf31577 +++ /dev/null @@ -1,8 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "transparent", - "borderStyle": "none" - } - } -} \ No newline at end of file diff --git a/.resources/e9b7c739b418729e95f27932353937fad4e99cdd88930e599e1a09aa8bbbe0ef b/.resources/e9b7c739b418729e95f27932353937fad4e99cdd88930e599e1a09aa8bbbe0ef deleted file mode 100644 index 143e3e6716b04ef5805ed5da5b378f9866144580..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1696 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 TNku+U|3pPWQ@&32UHJb3G8sRc diff --git a/.resources/ea2faeec8c3166aa056464a09c024f8004134f2bbf12c220c2968404dca27d3b b/.resources/ea2faeec8c3166aa056464a09c024f8004134f2bbf12c220c2968404dca27d3b deleted file mode 100644 index 805802cb..00000000 --- a/.resources/ea2faeec8c3166aa056464a09c024f8004134f2bbf12c220c2968404dca27d3b +++ /dev/null @@ -1,2408 +0,0 @@ -{ - "custom": { - "Enable_input": false - }, - "params": {}, - "propConfig": { - "custom.Enable_input": { - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 1080, - "width": 1920 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Icon" - }, - "position": { - "basis": "32px" - }, - "props": { - "path": "material/edit_attributes", - "style": { - "marginLeft": "10px" - } - }, - "type": "ia.display.icon" - }, - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "232px" - }, - "props": { - "style": { - "marginLeft": "10px" - }, - "text": "Configuration Tags", - "textStyle": { - "fontFamily": "Arial", - "fontSize": "16px", - "fontWeight": "bold" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "50px", - "grow": 1 - }, - "type": "ia.display.label" - }, - { - "custom": { - "dockOpened": true - }, - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tdevice_entry \u003d {\"Device\":\"\",\"Area\":\"\",\"SubArea\":\"\"}\n\tif not self.view.getChild(\"root\").custom.isDockOpen:\n\t\tparams \u003d {\n\t\t\t\"path\":\"Main-Views/Config-Tool/TagViewer\",\n\t\t\t\"params\":device_entry\t\n\t\t}\n\t\t\n\t\tsystem.perspective.sendMessage(\"select-side-view\", payload\u003dparams)\n\t\n\t\t\n\t\n\tsystem.perspective.print(self.view.getChild(\"root\").custom.isDockOpen)\n\tself.custom.dockOpened \u003d self.view.getChild(\"root\").custom.isDockOpen ^ True\n\tsystem.perspective.print(self.view.getChild(\"root\").custom.isDockOpen)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Icon_0" - }, - "position": { - "basis": "30px" - }, - "props": { - "path": "material/local_offer", - "style": { - "margin": "5px" - } - }, - "type": "ia.display.icon" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "50px" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "57px" - }, - "props": { - "text": "FC:", - "textStyle": { - "fontFamily": "Arial", - "fontSize": "16px", - "fontWeight": "bold" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "tagPath": "Configuration/FC" - }, - "meta": { - "name": "TextField" - }, - "position": { - "basis": "175px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.Enable_input" - }, - "type": "property" - } - }, - "props.placeholder": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/FC" - }, - "transforms": [ - { - "code": "\tif value :\n\t\treturn value\n\telse:\n\t\treturn \"No Value Configured\"", - "type": "script" - } - ], - "type": "tag" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/FC" - }, - "transforms": [ - { - "code": "\treturn value", - "type": "script" - } - ], - "type": "tag" - }, - "onChange": { - "enabled": null, - "script": "\tif currentValue.value:\n\t\ttagPath \u003d \"[%s_SCADA_TAG_PROVIDER]%s\"%(self.session.custom.fc,self.custom.tagPath)\n\t\tsystem.perspective.print(tagPath)\n\t\tres \u003d system.tag.writeBlocking([tagPath], [currentValue.value])\n\t\tsystem.perspective.print(res)" - } - } - }, - "props": { - "deferUpdates": false - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_0" - }, - "position": { - "basis": "107px" - }, - "props": { - "style": { - "marginLeft": "25px" - }, - "text": "AWS Prefix :", - "textStyle": { - "fontFamily": "Arial", - "fontSize": "16px", - "fontWeight": "bold" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "key": "prefix", - "tagPath": "Configuration/aws" - }, - "meta": { - "name": "TextField_0" - }, - "position": { - "basis": "175px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.Enable_input" - }, - "type": "property" - } - }, - "props.placeholder": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/aws" - }, - "transforms": [ - { - "code": "\t\n\t\n\tvalue \u003d system.util.jsonDecode(value)\n\t\n\tif value.get(\"prefix\"):\n\t\treturn value[\"prefix\"] \n\telse:\n\t\treturn \"No Value Configured\"", - "type": "script" - } - ], - "type": "tag" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/aws" - }, - "transforms": [ - { - "code": "\treturn system.util.jsonDecode(value).get(\"prefix\", None)", - "type": "script" - } - ], - "type": "tag" - }, - "onChange": { - "enabled": null, - "script": "\tif currentValue.value:\n\t\tfc \u003d self.session.custom.fc\n\t\ttagPath \u003d \"[%s_SCADA_TAG_PROVIDER]%s\"%(fc, self.custom.tagPath)\n\t\ttagData \u003d system.util.jsonDecode(system.tag.readBlocking([tagPath])[0].value)\n\t\ttry:\n\t\t\ttagData[self.custom.key] \u003d currentValue.value.strip()\n\t\texcept Exception as e :\n\t\t\tsystem.perspective.print(e)\n\t\t\treturn \n\t\tsystem.tag.writeBlocking([tagPath], [system.util.jsonEncode(tagData)])\n\t\t\t\n\t\t\t" - } - } - }, - "props": { - "deferUpdates": false - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "initialise-values", - "pageScope": true, - "script": "\t# implement your handler here\n\tsystem.perspective.print(payload)", - "sessionScope": false, - "viewScope": true - } - ] - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_1" - }, - "position": { - "basis": "115px" - }, - "props": { - "style": { - "marginLeft": "25px" - }, - "text": "AWS Region :", - "textStyle": { - "fontFamily": "Arial", - "fontSize": "16px", - "fontWeight": "bold" - } - }, - "type": "ia.display.label" - }, - { - "custom": { - "key": "region", - "tagPath": "Configuration/aws" - }, - "meta": { - "name": "TextField_2" - }, - "position": { - "basis": "175px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.Enable_input" - }, - "type": "property" - } - }, - "props.placeholder": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/aws" - }, - "transforms": [ - { - "code": "\t\n\t\n\tvalue \u003d system.util.jsonDecode(value)\n\t\n\tif value.get(\"region\"):\n\t\treturn value[\"region\"] \n\telse:\n\t\treturn \"No Value Configured\"", - "type": "script" - } - ], - "type": "tag" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/aws" - }, - "transforms": [ - { - "code": "\treturn system.util.jsonDecode(value).get(\"region\", None)", - "type": "script" - } - ], - "type": "tag" - }, - "onChange": { - "enabled": null, - "script": "\tif currentValue.value:\n\t\tfc \u003d self.session.custom.fc\n\t\ttagPath \u003d \"[%s_SCADA_TAG_PROVIDER]%s\"%(fc, self.custom.tagPath)\n\t\ttagData \u003d system.util.jsonDecode(system.tag.readBlocking([tagPath])[0].value)\n\t\ttry:\n\t\t\ttagData[self.custom.key] \u003d currentValue.value.strip()\n\t\texcept Exception as e :\n\t\t\tsystem.perspective.print(e)\n\t\t\treturn \n\t\tsystem.tag.writeBlocking([tagPath], [system.util.jsonEncode(tagData)])\n\t\t\t\n\t\t\t" - } - } - }, - "type": "ia.input.text-field" - }, - { - "meta": { - "name": "Label_2" - }, - "position": { - "basis": "120px" - }, - "props": { - "style": { - "marginLeft": "25px" - }, - "text": "Backend Type :", - "textStyle": { - "fontFamily": "Arial", - "fontSize": "16px", - "fontWeight": "bold" - } - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "175px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.Enable_input" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/BACKEND_EDGE_DEVICE" - }, - "transforms": [ - { - "code": "\tif value:\n\t\treturn value\n\t", - "type": "script" - } - ], - "type": "tag" - }, - "onChange": { - "enabled": null, - "script": "\twhid \u003d self.session.custom.fc\n\tsystem.tag.writeBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/BACKEND_EDGE_DEVICE\"%whid], [currentValue.value])" - } - } - }, - "props": { - "options": [ - { - "label": "Edge To Cloud", - "value": "e2c" - }, - { - "label": "Quattro", - "value": "quattro" - }, - { - "label": "DataBridge", - "value": "databridge" - } - ], - "placeholder": { - "text": "No Value Configured" - }, - "search": { - "enabled": false - } - }, - "type": "ia.input.dropdown" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "40px" - }, - "props": { - "style": { - "marginLeft": "10px", - "marginTop": "10px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "140px" - }, - "props": { - "direction": "column", - "style": { - "borderBottomLeftRadius": "5px", - "borderBottomRightRadius": "5px", - "borderStyle": "solid", - "borderTopLeftRadius": "5px", - "borderTopRightRadius": "5px", - "margin": "10px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Icon" - }, - "position": { - "basis": "32px" - }, - "props": { - "path": "material/settings_applications", - "style": { - "marginLeft": "10px" - } - }, - "type": "ia.display.icon" - }, - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "232px" - }, - "props": { - "style": { - "marginLeft": "10px" - }, - "text": "PLC Configuration", - "textStyle": { - "fontFamily": "Arial", - "fontSize": "16px", - "fontWeight": "bold" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "50px" - }, - "type": "ia.container.flex" - }, - { - "events": { - "component": { - "onEditCellCommit": { - "config": { - "script": "\tif not self.view.custom.Enable_input:\n\t\treturn\n\tcolumn \u003d event.column\n\trow \u003d event.row\n\tself.props.data[row][column] \u003d event.value\n\trow_data \u003d self.props.data[row]\n\tsystem.perspective.print(row_data)\n\twhid \u003d self.session.custom.fc\n\ttag_path \u003d \"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\"%whid\n\ttag_data \u003d system.tag.readBlocking([tag_path])[0].value\n\ttag_data \u003d system.util.jsonDecode(tag_data)\n\t\n\tdef get_child():\n\t\treturn {\n\t\t\t\"Area\":\"\",\n\t\t\t\"SubArea\":\"\"\n\t\t}\n\t\n\tchild \u003d get_child()\n\tchild[\"Area\"] \u003d row_data[\"Area\"]\n\tchild[\"SubArea\"]\u003d row_data[\"SubArea\"]\n\t\n\ttag_data[row_data[\"Device\"]]\u003d child\n\tencoded_data \u003d system.util.jsonEncode(tag_data)\n\tsystem.tag.writeBlocking([tag_path], [encoded_data])\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Table" - }, - "position": { - "basis": "286px" - }, - "propConfig": { - "custom.tagData": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" - }, - "transforms": [ - { - "code": "\ttagData \u003d[{\"Device\":k, \"Area\":v[\"Area\"], \"SubArea\":v[\"SubArea\"]} for k,v in system.util.jsonDecode(value).items()]\n\treturn tagData", - "type": "script" - } - ], - "type": "tag" - } - }, - "props.data": { - "binding": { - "config": { - "path": "this.custom.tagData" - }, - "type": "property" - } - }, - "props.selection.data": { - "onChange": { - "enabled": null, - "script": "\tsystem.perspective.sendMessage(\"selected-plcs\", payload\u003dcurrentValue.value)" - } - } - }, - "props": { - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": true, - "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": "", - "fontSize": "12px" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "visible": true, - "width": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": true, - "field": "Area", - "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": "", - "fontSize": "12px" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "visible": true, - "width": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": true, - "field": "SubArea", - "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": "", - "fontSize": "12px" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "visible": true, - "width": "" - } - ], - "filter": { - "enabled": true - }, - "selection": { - "mode": "multiple interval" - }, - "style": { - "fontSize": "12px", - "marginLeft": "10px" - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "add-device-entry", - "pageScope": false, - "script": "\tdata \u003d payload[\"data\"]\n\tself.props.data.append(data)", - "sessionScope": false, - "viewScope": true - }, - { - "messageType": "update-plc-config", - "pageScope": false, - "script": "\tdata \u003d payload[\"data\"]\n\tself.props.data \u003d data", - "sessionScope": false, - "viewScope": true - } - ] - }, - "type": "ia.display.table" - }, - { - "children": [ - { - "custom": { - "dockOpened": true - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tdevice_entry \u003d {\"Device\":\"\",\"Area\":\"\",\"SubArea\":\"\"}\n\tif not self.view.getChild(\"root\").custom.isDockOpen:\n\t\tparams \u003d {\n\t\t\t\"path\":\"Main-Views/Config-Tool/AddDevice\",\n\t\t\t\"params\":device_entry\t\n\t\t}\n\t\tsystem.perspective.sendMessage(\"select-side-view\", payload\u003dparams)\n\n\tself.custom.dockOpened \u003d self.view.getChild(\"root\").custom.isDockOpen ^ True\n" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "135px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.Enable_input" - }, - "type": "property" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/add_circle_outline" - } - }, - "primary": false, - "style": { - "marginLeft": "10px" - }, - "text": "Add Device" - }, - "type": "ia.input.button" - }, - { - "custom": { - "dataAfterRemoval": { - "ARSAW1301": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1302": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1303": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1304": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1305": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1306": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1307": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1308": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1309": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1310": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1311": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1312": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1501": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1502": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1503": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1504": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1505": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1506": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1507": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1508": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1509": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1510": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1511": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1512": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "FSC1": { - "Area": "", - "SubArea": "" - }, - "FSC10": { - "Area": "OUTBOUND", - "SubArea": "FSC" - }, - "FSC2": { - "Area": "", - "SubArea": "" - }, - "FSC_Cells": { - "Area": "", - "SubArea": "" - }, - "FSC_Induct_1-4": { - "Area": "", - "SubArea": "" - }, - "PLC01": { - "Area": "OUTBOUND", - "SubArea": "SHIP" - }, - "PLC02": { - "Area": "OUTBOUND", - "SubArea": "SHIP" - }, - "PLC03": { - "Area": "OUTBOUND", - "SubArea": "KO \u0026 REJECT" - }, - "PLC06": { - "Area": "OUTBOUND", - "SubArea": "TOTE ROUTER" - }, - "PLC07": { - "Area": "OUTBOUND", - "SubArea": "TOTE ROUTER" - }, - "PLC08": { - "Area": "OUTBOUND", - "SubArea": "TOTE FEED" - }, - "PLC09": { - "Area": "INBOUND", - "SubArea": "RECEIVING" - }, - "PLC09_Receiving2": { - "Area": "", - "SubArea": "" - }, - "PLC09_Receiving3": { - "Area": "", - "SubArea": "" - }, - "PLC1000": { - "Area": "INBOUND", - "SubArea": "RECEIVING" - }, - "PLC1000_Receiving4": { - "Area": "", - "SubArea": "" - }, - "PLC13": { - "Area": "AR FLOOR", - "SubArea": "ARSAW P2" - }, - "PLC13_SC2": { - "Area": "", - "SubArea": "" - }, - "PLC14": { - "Area": "", - "SubArea": "" - }, - "PLC15": { - "Area": "AR FLOOR", - "SubArea": "ARSAW P3" - }, - "PLC15_SC2": { - "Area": "", - "SubArea": "" - }, - "PLC16": { - "Area": "AR FLOOR", - "SubArea": "PICK TO REBIN P3" - }, - "PLC20": { - "Area": "OUTBOUND", - "SubArea": "AFE1 TOTE 1-3" - }, - "PLC20_Tote4-8": { - "Area": "", - "SubArea": "" - }, - "PLC21": { - "Area": "OUTBOUND", - "SubArea": "AFE TRAY ROUTER" - }, - "PLC22": { - "Area": "OUTBOUND", - "SubArea": "AFE TRAY ROUTER" - }, - "PLC23": { - "Area": "OUTBOUND", - "SubArea": "AFE1 TRAY FEED" - }, - "PLC24": { - "Area": "OUTBOUND", - "SubArea": "AFE1 WALL 1,2" - }, - "PLC25": { - "Area": "OUTBOUND", - "SubArea": "AFE1 WALL 3,4" - }, - "PLC26": { - "Area": "OUTBOUND", - "SubArea": "AFE1 WALL 5,6" - }, - "PLC27": { - "Area": "OUTBOUND", - "SubArea": "AFE1 WALL 7,8" - }, - "PLC30": { - "Area": "OUTBOUND", - "SubArea": "AFE1 PACK 1-4" - }, - "PLC31": { - "Area": "OUTBOUND", - "SubArea": "AFE1 PACK 5-8" - }, - "PLC32": { - "Area": "OUTBOUND", - "SubArea": "AFE1 EMP. TOTE" - }, - "PLC60": { - "Area": "OUTBOUND", - "SubArea": "S.PACKING 1" - }, - "PLC61": { - "Area": "OUTBOUND", - "SubArea": "S.PACKING 2" - }, - "PLC69": { - "Area": "OUTBOUND", - "SubArea": "GIFT WRAP" - }, - "PLC70": { - "Area": "OUTBOUND", - "SubArea": "TRANSSHIP" - }, - "PLC71": { - "Area": "OUTBOUND", - "SubArea": "TRANSSHIP" - }, - "PLC80": { - "Area": "OUTBOUND", - "SubArea": "SMART PACKING" - }, - "PLC81": { - "Area": "OUTBOUND", - "SubArea": "SMART PACKING" - }, - "PLC82": { - "Area": "OUTBOUND", - "SubArea": "SMART PACKING" - }, - "PLC97": { - "Area": "SAFETY PLC", - "SubArea": "" - }, - "PLC98": { - "Area": "SAFETY PLC", - "SubArea": "" - }, - "PLC99": { - "Area": "SAFETY PLC", - "SubArea": "" - } - }, - "itemsToRemove": [] - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t\n\twhid \u003d self.session.custom.fc\n\t\n\ttagData \u003d system.util.jsonDecode(system.tag.readBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\"%whid])[0].value) \n\t\n\tfor item in self.custom.itemsToRemove:\n\t\tresult \u003d tagData.pop(item[\"Device\"],None)\n\t\n\tsystem.tag.writeBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\"%whid],system.util.jsonEncode(tagData))" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_2" - }, - "position": { - "basis": "156px" - }, - "propConfig": { - "custom.tagData": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" - }, - "transforms": [ - { - "code": "\treturn system.util.jsonDecode(value)", - "type": "script" - } - ], - "type": "tag" - } - }, - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.Enable_input" - }, - "type": "property" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/remove_circle_outline" - } - }, - "primary": false, - "style": { - "marginLeft": "10px", - "marginRight": "10px" - }, - "text": "Remove Device" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "selected-plcs", - "pageScope": true, - "script": "\t# implement your handler here\n\tself.custom.itemsToRemove \u003d payload", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t\n\ttagPath\u003d \"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\"%self.session.custom.fc \n\t\t\n\tsystem.tag.writeBlocking(tagPath, \"{}\")\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_0", - "visible": false - }, - "position": { - "basis": "135px", - "display": false - }, - "props": { - "image": { - "icon": { - "path": "material/remove_circle_outline" - } - }, - "primary": false, - "style": { - "marginLeft": "10px", - "marginRight": "10px" - }, - "text": "Clear" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\n\tFileHandler.downloader.download_file(\"Device_data.csv\", self.custom.tagData, FileHandler.downloader.device_data_converter)\n" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_3" - }, - "position": { - "basis": "135px" - }, - "propConfig": { - "custom.tagData": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" - }, - "transforms": [ - { - "code": "\ttagData \u003d[{\"Device\":k, \"Area\":v[\"Area\"], \"SubArea\":v[\"SubArea\"]} for k,v in system.util.jsonDecode(value).items()]\n\treturn tagData", - "type": "script" - } - ], - "type": "tag" - } - } - }, - "props": { - "image": { - "icon": { - "color": "#377AAE", - "path": "material/cloud_download" - } - }, - "primary": false, - "style": { - "classes": "\n" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "40px" - }, - "props": { - "style": { - "marginBottom": "10px", - "marginTop": "10px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "414px" - }, - "props": { - "direction": "column", - "style": { - "borderBottomLeftRadius": "5px", - "borderBottomRightRadius": "5px", - "borderStyle": "solid", - "borderTopLeftRadius": "5px", - "borderTopRightRadius": "5px", - "margin": "10px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Icon" - }, - "position": { - "basis": "32px" - }, - "props": { - "path": "material/view_list", - "style": { - "marginLeft": "10px" - } - }, - "type": "ia.display.icon" - }, - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "232px" - }, - "props": { - "style": { - "marginLeft": "10px" - }, - "text": "Detailed View Mapping", - "textStyle": { - "fontFamily": "Arial", - "fontSize": "16px", - "fontWeight": "bold" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "50px" - }, - "type": "ia.container.flex" - }, - { - "events": { - "component": { - "onEditCellCommit": { - "config": { - "script": "\timport ast\n\t\n\tif not self.view.custom.Enable_input:\n\t\treturn \n\t\t\n\tdef is_valid_list(s):\n\t try:\n\t # Try to evaluate the string\n\t result \u003d ast.literal_eval(s)\n\t # Check if the result is a list\n\t return isinstance(result, list)\n\t except (ValueError, SyntaxError):\n\t # If there is a ValueError or SyntaxError, the string is not a valid list\n\t return False\n\n\tcolumn \u003d event.column\n\trow \u003d event.row\n\tself.props.data[row][column] \u003d event.value\n\trow_data \u003d self.props.data[row]\n\twhid \u003d self.session.custom.fc\n\ttag_path \u003d \"[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews\"%whid\n\ttag_data \u003d system.tag.readBlocking([tag_path])[0].value\n\ttag_data \u003d system.util.jsonDecode(tag_data)\n\t\n\tif is_valid_list(event.value):\n\t\ttag_data[row_data[\"DetailedView\"]] \u003d event.value\n\telse:\n\t\tsystem.perspective.print(\"Not a valid list \")\n\t\treturn\n\n\ttag_data \u003d system.util.jsonEncode(tag_data)\n\tsystem.tag.writeBlocking([tag_path], [tag_data])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Table" - }, - "position": { - "basis": "302px" - }, - "propConfig": { - "custom.tagData": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/DetailedViews" - }, - "transforms": [ - { - "code": "\tdata \u003d []\n\t\n\tdef get_item(detailed_view , devices):\n\t\treturn {\n\t\t\t\"Devices\":str(devices),\n\t\t\t\"DetailedView\":detailed_view\n\t\t\t\n\t\t}\n\t\n\tfor k,v in system.util.jsonDecode(value).items():\n\t\titem \u003d get_item(k, v)\n\t\tdata.append(item)\n\t\n\treturn data\n\t\t\n\t\t", - "type": "script" - } - ], - "type": "tag" - } - }, - "props.data": { - "binding": { - "config": { - "path": "this.custom.tagData" - }, - "type": "property" - } - }, - "props.rows.subview.viewParams.value": { - "binding": { - "config": { - "path": "this.props.selection.data" - }, - "type": "property" - } - }, - "props.selection.data": { - "onChange": { - "enabled": null, - "script": "\tsystem.perspective.sendMessage(\"selected-views\", payload\u003dcurrentValue.value)" - } - } - }, - "props": { - "columns": [ - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": true, - "field": "DetailedView", - "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": false, - "sort": "none", - "sortable": false, - "strictWidth": false, - "style": { - "classes": "" - }, - "toggleSwitch": { - "color": { - "selected": "", - "unselected": "" - } - }, - "viewParams": {}, - "viewPath": "", - "visible": true, - "width": "" - }, - { - "align": "center", - "boolean": "checkbox", - "dateFormat": "MM/DD/YYYY", - "editable": true, - "field": "Devices", - "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": "" - } - ], - "filter": { - "enabled": true - }, - "rows": { - "subview": { - "viewParams": { - "rowIndex": "value" - }, - "viewPath": "Main-Views/Config-Tool/TableSubView" - } - }, - "style": { - "fontSize": "12px", - "marginLeft": "10px" - } - }, - "type": "ia.display.table" - }, - { - "children": [ - { - "custom": { - "dockOpened": true - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tdevice_entry \u003d {\"view\":\"\",\"deviceList\":\"\"}\n\tif not self.view.getChild(\"root\").custom.isDockOpen:\n\t\tparams \u003d {\n\t\t\t\"path\":\"Main-Views/Config-Tool/AddDetailedViewMapping\",\n\t\t\t\"params\":device_entry\t\n\t\t}\n\t\tsystem.perspective.sendMessage(\"select-side-view\", payload\u003dparams)\n\n\t\n\tsystem.perspective.print(self.view.getChild(\"root\").custom.isDockOpen)\n\tself.custom.dockOpened \u003d self.view.getChild(\"root\").custom.isDockOpen ^ True\n\tsystem.perspective.print(self.view.getChild(\"root\").custom.isDockOpen)" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "135px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.Enable_input" - }, - "type": "property" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/add_circle_outline" - } - }, - "primary": false, - "style": { - "marginLeft": "10px" - }, - "text": "Add View" - }, - "type": "ia.input.button" - }, - { - "custom": { - "dataAfterRemoval": { - "ARSAW1301": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1302": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1303": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1304": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1305": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1306": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1307": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1308": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1309": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1310": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1311": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1312": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1501": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1502": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1503": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1504": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1505": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1506": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1507": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1508": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1509": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1510": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1511": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "ARSAW1512": { - "Area": "AR FLOOR", - "SubArea": "ARSAW" - }, - "FSC1": { - "Area": "", - "SubArea": "" - }, - "FSC10": { - "Area": "OUTBOUND", - "SubArea": "FSC" - }, - "FSC2": { - "Area": "", - "SubArea": "" - }, - "FSC_Cells": { - "Area": "", - "SubArea": "" - }, - "FSC_Induct_1-4": { - "Area": "", - "SubArea": "" - }, - "PLC01": { - "Area": "OUTBOUND", - "SubArea": "SHIP" - }, - "PLC02": { - "Area": "OUTBOUND", - "SubArea": "SHIP" - }, - "PLC03": { - "Area": "OUTBOUND", - "SubArea": "KO \u0026 REJECT" - }, - "PLC06": { - "Area": "OUTBOUND", - "SubArea": "TOTE ROUTER" - }, - "PLC07": { - "Area": "OUTBOUND", - "SubArea": "TOTE ROUTER" - }, - "PLC08": { - "Area": "OUTBOUND", - "SubArea": "TOTE FEED" - }, - "PLC09": { - "Area": "INBOUND", - "SubArea": "RECEIVING" - }, - "PLC09_Receiving2": { - "Area": "", - "SubArea": "" - }, - "PLC09_Receiving3": { - "Area": "", - "SubArea": "" - }, - "PLC1000": { - "Area": "INBOUND", - "SubArea": "RECEIVING" - }, - "PLC1000_Receiving4": { - "Area": "", - "SubArea": "" - }, - "PLC13": { - "Area": "AR FLOOR", - "SubArea": "ARSAW P2" - }, - "PLC13_SC2": { - "Area": "", - "SubArea": "" - }, - "PLC14": { - "Area": "", - "SubArea": "" - }, - "PLC15": { - "Area": "AR FLOOR", - "SubArea": "ARSAW P3" - }, - "PLC15_SC2": { - "Area": "", - "SubArea": "" - }, - "PLC16": { - "Area": "AR FLOOR", - "SubArea": "PICK TO REBIN P3" - }, - "PLC20": { - "Area": "OUTBOUND", - "SubArea": "AFE1 TOTE 1-3" - }, - "PLC20_Tote4-8": { - "Area": "", - "SubArea": "" - }, - "PLC21": { - "Area": "OUTBOUND", - "SubArea": "AFE TRAY ROUTER" - }, - "PLC22": { - "Area": "OUTBOUND", - "SubArea": "AFE TRAY ROUTER" - }, - "PLC23": { - "Area": "OUTBOUND", - "SubArea": "AFE1 TRAY FEED" - }, - "PLC24": { - "Area": "OUTBOUND", - "SubArea": "AFE1 WALL 1,2" - }, - "PLC25": { - "Area": "OUTBOUND", - "SubArea": "AFE1 WALL 3,4" - }, - "PLC26": { - "Area": "OUTBOUND", - "SubArea": "AFE1 WALL 5,6" - }, - "PLC27": { - "Area": "OUTBOUND", - "SubArea": "AFE1 WALL 7,8" - }, - "PLC30": { - "Area": "OUTBOUND", - "SubArea": "AFE1 PACK 1-4" - }, - "PLC31": { - "Area": "OUTBOUND", - "SubArea": "AFE1 PACK 5-8" - }, - "PLC32": { - "Area": "OUTBOUND", - "SubArea": "AFE1 EMP. TOTE" - }, - "PLC60": { - "Area": "OUTBOUND", - "SubArea": "S.PACKING 1" - }, - "PLC61": { - "Area": "OUTBOUND", - "SubArea": "S.PACKING 2" - }, - "PLC69": { - "Area": "OUTBOUND", - "SubArea": "GIFT WRAP" - }, - "PLC70": { - "Area": "OUTBOUND", - "SubArea": "TRANSSHIP" - }, - "PLC71": { - "Area": "OUTBOUND", - "SubArea": "TRANSSHIP" - }, - "PLC80": { - "Area": "OUTBOUND", - "SubArea": "SMART PACKING" - }, - "PLC81": { - "Area": "OUTBOUND", - "SubArea": "SMART PACKING" - }, - "PLC82": { - "Area": "OUTBOUND", - "SubArea": "SMART PACKING" - }, - "PLC97": { - "Area": "SAFETY PLC", - "SubArea": "" - }, - "PLC98": { - "Area": "SAFETY PLC", - "SubArea": "" - }, - "PLC99": { - "Area": "SAFETY PLC", - "SubArea": "" - } - }, - "itemsToRemove": [] - }, - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t\n\twhid \u003d self.session.custom.fc\n\t\n\ttagData \u003d system.util.jsonDecode(system.tag.readBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews\"%whid])[0].value) \n\t\n\tfor item in self.custom.itemsToRemove:\n\t\tresult \u003d tagData.pop(item[\"DetailedView\"],None)\n\t\n\tsystem.tag.writeBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews\"%whid],system.util.jsonEncode(tagData))" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_2" - }, - "position": { - "basis": "156px" - }, - "propConfig": { - "custom.tagData": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" - }, - "transforms": [ - { - "code": "\treturn system.util.jsonDecode(value)", - "type": "script" - } - ], - "type": "tag" - } - }, - "props.enabled": { - "binding": { - "config": { - "path": "view.custom.Enable_input" - }, - "type": "property" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/remove_circle_outline" - } - }, - "primary": false, - "style": { - "marginLeft": "10px", - "marginRight": "10px" - }, - "text": "Remove View" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "selected-views", - "pageScope": true, - "script": "\t# implement your handler here\n\tself.custom.itemsToRemove \u003d payload", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\twhid \u003d self.session.custom.fc\n\tsystem.tag.writeBlocking([\"[%s_SCADA_TAG_PROVIDER]Configuration/DetailedViews\"%whid], [\"{}\"])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_0", - "visible": false - }, - "position": { - "basis": "135px", - "display": false - }, - "props": { - "image": { - "icon": { - "path": "material/remove_circle_outline" - } - }, - "primary": false, - "style": { - "marginLeft": "10px" - }, - "text": "Clear" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t\n\tFileHandler.downloader.download_file(\"DetailedView_data.csv\", self.custom.tagData, FileHandler.downloader.detailed_views_converter)\n" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button_1" - }, - "position": { - "basis": "135px" - }, - "propConfig": { - "custom.tagData": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/DetailedViews" - }, - "transforms": [ - { - "code": "\treturn [{\"DetailedView\":k,\"Devices\":v}for k,v in system.util.jsonDecode(value).items()]", - "type": "script" - } - ], - "type": "tag" - } - } - }, - "props": { - "image": { - "icon": { - "color": "#377AAE", - "path": "material/cloud_download" - } - }, - "primary": false, - "style": { - "classes": "\n" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "40px" - }, - "props": { - "style": { - "marginBottom": "10px", - "marginTop": "10px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "414px" - }, - "props": { - "direction": "column", - "style": { - "borderBottomLeftRadius": "5px", - "borderBottomRightRadius": "5px", - "borderStyle": "solid", - "borderTopLeftRadius": "5px", - "borderTopRightRadius": "5px", - "margin": "10px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "888px", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "custom": { - "params": { - "Area": "", - "Device": "", - "SubArea": "" - }, - "path": "Main-Views/Config-Tool/TagViewer" - }, - "meta": { - "name": "EmbeddedView" - }, - "position": { - "basis": "320px", - "grow": 1 - }, - "propConfig": { - "props.params.params": { - "binding": { - "config": { - "path": "this.custom.params" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "path": "this.custom.path" - }, - "type": "property" - } - } - }, - "props": { - "useDefaultViewWidth": true - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "select-side-view", - "pageScope": true, - "script": "\t# implement your handler here\n\tself.custom.path \u003d payload.get(\"path\")\n\tself.custom.params \u003d payload.get(\"params\")\n\t", - "sessionScope": true, - "viewScope": false - } - ] - }, - "type": "ia.display.view" - } - ], - "custom": { - "path": "Main-Views/Config-Tool/TagViewer" - }, - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "420px" - }, - "props": { - "direction": "column" - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "select-side-view", - "pageScope": true, - "script": "\t# implement your handler here\n\tif self.position.display and payload.get(\"path\") \u003d\u003d self.custom.path :\n\t\tself.position.display \u003d False\n\telse:\n\t\tself.position.display \u003d True\n\t\t\n\tself.custom.path \u003d payload.get(\"path\")\n\n#\tself.position.display \u003d not self.position.display", - "sessionScope": false, - "viewScope": false - } - ] - }, - "type": "ia.container.flex" - } - ], - "custom": { - "isDockOpen": false - }, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\twhid \u003d self.session.custom.fc\n\ttag_path \u003d \"[%s_SCADA_TAG_PROVIDER]Configuration/PLC\" % (whid)\n\t\n\tif system.tag.exists(tag_path):\n\t\tpayload \u003d {}\n\t\ttag_to_read \u003d system.tag.readBlocking([tag_path])[0].value\n\t\tjson_value \u003d system.util.jsonDecode(tag_to_read)\n\t\tplc_config \u003d []\n\t\tfor k,v in json_value.items():\n\t\t\tplc \u003d k\n\t\t\tarea \u003d v.get(\"Area\")\n\t\t\tsub_area \u003d v.get(\"SubArea\")\n\t\t\titems_to_add \u003d {\"Device\":plc, \n\t\t\t\t\t\t\t\"Area\":area, \n\t\t\t\t\t\t\t\"SubArea\":sub_area}\n\t\t\tplc_config.append(items_to_add)\n\t\tpayload[\"data\"] \u003d plc_config\n\t\tsystem.perspective.sendMessage(\"update-plc-config\", payload, scope \u003d \"view\")\n\t\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "root" - }, - "scripts": { - "customMethods": [ - { - "name": "newMethod", - "params": [], - "script": "\t# implement your method here" - } - ], - "extensionFunctions": null, - "messageHandlers": [] - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/96a1801931cad432e167fac98c387052f5c057f8d5f917cae9fe68189f192f49 b/.resources/eaa3d05e3ff5a8d8c657f04226f3b0ecfcc7c4524af491db18882fc68b2c5bb8 similarity index 100% rename from .resources/96a1801931cad432e167fac98c387052f5c057f8d5f917cae9fe68189f192f49 rename to .resources/eaa3d05e3ff5a8d8c657f04226f3b0ecfcc7c4524af491db18882fc68b2c5bb8 diff --git a/.resources/eafccd145ef43cfe1f363391d6cd52bba8da8308677e3beb0bc651ba55ce651c b/.resources/eafccd145ef43cfe1f363391d6cd52bba8da8308677e3beb0bc651ba55ce651c deleted file mode 100644 index cfcac7b2..00000000 --- a/.resources/eafccd145ef43cfe1f363391d6cd52bba8da8308677e3beb0bc651ba55ce651c +++ /dev/null @@ -1,13 +0,0 @@ -{ - "base": { - "animation": { - "duration": "1s", - "keyframes": { - "0%": { - "backgroundColor": "#FF0000B3" - }, - "100%": {} - } - } - } -} \ No newline at end of file diff --git a/.resources/7cba7247275f7746b1ad72e84e3b81f353349e8fa849d6d0a21246e2601dc81b b/.resources/eb16ae78ce028548bf9309a7559abe59dc4db15cd9b9323eebeaf119518e3636 similarity index 100% rename from .resources/7cba7247275f7746b1ad72e84e3b81f353349e8fa849d6d0a21246e2601dc81b rename to .resources/eb16ae78ce028548bf9309a7559abe59dc4db15cd9b9323eebeaf119518e3636 diff --git a/.resources/eb4ed778e53465d9c5790dc466c7fbb02d8e57ec209301c4b542ec08aa325312 b/.resources/eb4ed778e53465d9c5790dc466c7fbb02d8e57ec209301c4b542ec08aa325312 deleted file mode 100644 index cb775a74..00000000 --- a/.resources/eb4ed778e53465d9c5790dc466c7fbb02d8e57ec209301c4b542ec08aa325312 +++ /dev/null @@ -1,15 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FFFF00B3", - "borderColor": "#000000", - "borderStyle": "solid", - "borderWidth": "0.5px", - "color": "#000000", - "fontFamily": "Arial", - "fontSize": "14px", - "fontWeight": "bold", - "textAlign": "center" - } - } -} \ No newline at end of file diff --git a/.resources/ebbcdd1f207d68aa705801ff32f5c224e3ecb2d32351722b3db63756828de035 b/.resources/ebbcdd1f207d68aa705801ff32f5c224e3ecb2d32351722b3db63756828de035 deleted file mode 100644 index 825d919c..00000000 --- a/.resources/ebbcdd1f207d68aa705801ff32f5c224e3ecb2d32351722b3db63756828de035 +++ /dev/null @@ -1,18 +0,0 @@ -{ - "base": { - "animation": { - "duration": "2.5s", - "keyframes": { - "0%": { - "boxShadow": "0 0 12px 5px rgba(255, 255, 0, 0.8)" - }, - "50%": { - "boxShadow": "0 0 20px 8px rgba(255, 255, 0, 1)" - }, - "100%": { - "boxShadow": "0 0 5px 2px rgba(255, 255, 0, 0.3)" - } - } - } - } -} \ No newline at end of file diff --git a/.resources/ebfd8679a074fffe0db2849b72154c4e397520aae739f08b5f4bdfcc2c97ec06 b/.resources/ebfd8679a074fffe0db2849b72154c4e397520aae739f08b5f4bdfcc2c97ec06 deleted file mode 100644 index 9a384ad7fd4ce939e30e55811aedb19088cd6b4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5882 zcmeHLSyWTYw#DwEAaWFxM(L!JOQ!-N3gjpt2Bil9X`&(^AW1Nipg=fJx&s^$Bceb8 z(su&VCWcM{MFfc;h9)E!ngkF+2yFr+mxQPHeY~Id#vS91afcuKV^{56HP@^;*Q%;` zI~z+e5m^x-At5o~MRNxsp>47JXZQBa7UpPWm5|V(w?OlAPN812Sd~4izdC+V@=r007MGPZ)*1}!)GjqV>_0~c&fvu= z#`9$|T3laWU0+{XUvJ_oOoeOUvkg^%Zyx<-I2-f~kJsV8n06hMgQSjpWnoy}Bk7C2 zgP0RW16Pp!uQd>vymQX0YK!5TOu%E6ZGiJ#HP~ACT|}IG<9dH&h!)~oWgFc~el?AG zN=Nv0RMI}qV%K>$_FSiHX8y~&*dBmS0||1OQX>_GhE`H|?6JF5@lMvw#r^~ZUo z$pR$iQsDMNvPAif7B{mB0!iQWw9(Q1C_Z`&T6IZakQ-`vs3@U>*|nEI@XEqYh5uIm z?Qcjm$uv={mmr*BDD{1e`v~7zO1`Gt!&v{7hJlqBQY_T2cg>OW?&UV?i111L>2EEw zLxPXMDBzGAoW2%Mz({jPq`=t*?TLCB33`UUVy9iuJx=Hz3AHdaO9c_(IVnH1PWR-} zATr_zlnS>NP_7qLR^~}2H#b690P>x&QlqG_%zRZ7+kWu`z4P(YRexKDyZW*}H~3XS zZfiD8474wG;Ox-z0mL`rRwrrVof#NdXPl~xbq8U3!#}G<*aPQz7s@eNda`Eqb~8T%ec zr>nU_kxn;?iW`>-H_%nrRQDr(9{$o=t#)XfV*eaLPhJ-@GEC~UHMUDGvi177v{Yj| zwL@pPT%gJuYF51!1=jMgg>Rr3Q7ozpnowgL#*EzC$$qBv8cUmKI;pQ$|KghU4d(mo zG-Xki{H1W@O(c^1YQ~;T?bDc_&1O#+$5#XDuu&s+dn^-ZV4%#jq^gaf%EEF>DXz{)|p#Q7q%b?x0! z5SgM_eGAmi_1z~VRHxb}Bp{sik%;PB7q8oNx5mT|THJGsZ%cX529Tt=sDb5CS%B>0 z6~_P&FMG!0>oUCO8N26_x;rCI!anzl-0_oCtGh!@E!e`>vcSw`Fbd{U`fqY)S74^R zQWRR-BCXkGuZS?@kdJAa$?6;C3`qRbI`9TF71h>rUB>$d(ZlKsd4sXVd+eN76_zVlr<2ChkFE`?-Y=!``oVV6B@He|WUZ95{4} z+i58r!Et50phW&+>+xl72t#)@(K9RUQKI`DVSNt?! zT8`f;bes=Y=nX%b?LuaJQ3&n*|8=xEgoTBHk)Cfu{fesOv9U82&N+S*z%F)^xQ!{LZy zXN;yNCvV-p?a_EY#Kpx0RA`T*Y-Q?bOZUx;Kxw!)j0>hJ;(tr*j=(?h?MAzSKnil8 zCOu<^R+4qbDNnZBMZngY*rQs;UN$rsABlF%hH|RI*(}vdsmAkd5>%?Io108Y&8?oC zgPK>OVfn3b;<{c9xRR2;8|z>pBVJdpTA_NS1vFkx$;0FEz$a=kqct@((V~@Rar@+q zLz#6Xu&8)bjHpzsG{z(h-V(iMZF#n|sA%^bv9IrPmT3gN8-o~$Fa%n8Z=reiMBnFQ z%4E*V;$r`|4|Zv~ls9ZFlU8O1B~X&R5)5&=HFdvC_jBK_=O+S*FAV~T(W3aOs*|Xc z_gh}mQTLx2s3f6EN=pl^GvMPN9-r`jKSOB@x;j-0-LnadcvDHT0!GA>ty4j<3Hz4`?_a3l|I1L7eH4nkJe*6(gGR0vH5*RJ zX2mT2&Ua8{-{7E({LTNRXI?@cUTA|Esz*Rh|7r7Q4pvInYj4ly&SrD9b_-L{i} zEHIbyv9`7rJ*4IO`p(2GcBILVkeQs9oC%FQ4H0?t0s3Cw`~6>T)xKqJ)oLD}pFVy1 zI8XnApjN?*fZpv%0b_ohCmb?k&NG_$>T7*!)MG^)8Cd&dvq}RW|M7W;{Sz z@?~0_ots--Z|ULzA$xjaoPYxF_O&d$s;*veTIisAh0jiFKJW1Ru`Hnf;G@nu49vu!cWlWw5@ul(?3zem5c$F zrg&2@*8WksZl>qjLpH%cfu{%TJ<1nn?J;2KjjX&1f->;FV2TTq%s#qb~e3SvIN|8v+Ud3IT&ZiL9S z4nrj8!q})-bH*wpOiU{9bo5Ky?|MeB2n(s+t|c9UG31ROU}B^>$lfZo`z(b zuV|5t7t~2jYq^}y1;sor#|%I+g>w@}*14tXrZ{G9ziiX$YV3X!x)rw*dDQR+9c4V! z;a<*2o!OyuHgjGz0En$}>=_iyol^{K^TaozB_K{+XRQaYuXIZlhvyAosqE6<;A zTp1Zyp_Je^sFkaQwCX1=w`F8)3b-eE_f<4P`1`U4SDRHe!Z)(M8pbZ&qg<5d1Gqvr5_dnhlg)~41LMG#OBDC z%hS4R@xwpXv=({EfzdVXf?NUP0x~uhFrO5>o>%3R=g;;g)<4pUV6X7j7l|^Z$m%hG zZ9^EVHLIydT8EJe89w`cP>!0eV|=K!_=^;M^K>JtGu$gLP{-y{izr;JUz{*8I7{gW zdxd9+M|$D7vul~*-h}!>1h>+k^JU5XFeU7}9jwT?N10GTn(v+)F=@nuBd@<3swM4X zM9ytMtqc~anSfo*98De%@{ePuD*3dZZ_2&Or8*C+3C6lBcmmdYhAND^ZIAT`O2MYvY@H!pP0jaL(PEp{1Y diff --git a/.resources/ebffce45f2dc3c07b2815aec7209c3946d83d4b903898e4a17822b350b598351 b/.resources/ebffce45f2dc3c07b2815aec7209c3946d83d4b903898e4a17822b350b598351 deleted file mode 100644 index 9ef8a5a354febafa50e22fa4f219995f21053de5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16086 zcmV;{J}JS8P)5iJ|}r!v??3XM!>LC6FROoEs+OoJInS4cV9Glk9oyO2{1Gx1~^ zmBED=Oahrkfw4m)U151dcek(Q-44qOof5UQ3;4PvWYZ0 zmC2z(bUcMlLrxtF)l3czQBejB27S^%1w=(*7KH|-lj(>KgPswMWs{Fo^a1IKP|<@S zO7Q!sG&-xaNo(;tT#n+L3_)#|#S6bc>DX^SIh(hZPlY^f#a3k8OHdqlNeW`9JZ zls5GAIRdlca7dz5kB%>NHB`tQk*6D>8kgVRFnxRPO&N@v7MXb?2BxJswP*yf?q!p8w7 zmqMmwihBIx-jrmr#4#c3>b81A4He8|>AaEI6Mc2LiRm;v5!D}6_wf{p$?vVm%QQ@G zTv!@m&-d3>5HL$&@^oFI>hUu!MbPtE{wD8+PgOiODUhQG>FhS`oZ{ z`$~QWyWin&uP?wQlg0ic72T1ZEEPQ%q67mRD$HPT%hV%5mqk-h*KZ$n(TK!k5;UZ@ zT5UnSr1e-5zS-ca6Ly$7CsK3M43_D;R=kTB_-t7 zDV$b?$vZhd5$f-1&nR!O`sYpRUNSMgtVL}Z?nq3fXk3o+;(W2fsL`4=8kbGSf4H$GF*%J{+N5`z>&2=8joo0fNUg^Dnu0VE z#L78R(H-f@QqhAVN@TX1#$Y5QlLoC5Dv8qOo2$e^>RgxrbIBAM5t}O7CfH|aA-AOd_VX|KLemb3Fe$5G?fg0s zhbz&ajJ6kpy_(RJWz;L!(g=Dg4p7C1C-rph@S}^dJ_cZ?vK)-{kZc=kT;io>RF_rBJsY z0exG&s7dK`yF4S|sHmh)W(xU&{=V*ZVdr3Dc_})(|4`!^fv{tJ{Y30q3hK^Zy39#P z$n6WCi7FD)$P=el`ou#sYqP}E6zAoaXF3jYT!SU-=nN)Hs!-!LpW)c9L#2g}1MxY^ z$h5^Bu^NZSRF>2d@`e23zQL|urOgx4ss?BjVu7fCuw6*y=6YvN^tROWiWPY*GPkD3 z>kVm@nu1&ymk3F8rs9HvUWq!FO)2R!O^$ncS=`th<%p9@XI2hqL=}Q0Mu~r7wz8O) zLZTn3=)UPmQPG1T$~dsKZ!)s}2$ASaY}FfrSp;NZkwv7?sc>w)n?yzOg#A{%V_h-W z$O!CqQ?iE|%(h8D8(DjW_2$RvVIPQJtKW`m7X zg2d(zPA=G#O^FFfP1ax}=#NHDN{h1MdT@X#u6FSZmJXE`J~qTwy&33QGrWDV8v(k> z!Sn}N^`^lktKJYyp#z;{rjw}gLma8-zUhfj z(E}z*8hX{C&A)qH()Rw{*N-yZ6`H|zZFPkq)@qyQ+P;WuVKzT^)4L*;;+J#B2KGO; zx%1!QNZ=-F;$ylvqtVi~Hb19I0q5 z9ex!(c%nRPz_hSZ)WFL?p0`hHYHaH|JX&~!zX(Sv`uK4~l)C|8^QT3n!n!8##0I0A zrw@X>g1V-5D$LsZ^N(=&aipS;A4f#F4O-uP*E_}DJrivJG~MW;1uIi2ASHRGT5Xl z;}KDAVe3R}dPr>l8_UF;fp$1m>}VTnj_lnEZ?)+{w71*%uDys8<=z-pnEL{jNkDuW zuy|Ie8`@TQtAu!dd)q^iw#jp-Vpu(9#D4geQeo#|hf~hBLgX)0BJoqDyc z`KE8sHrJm=q@oy6>MX7SnM$nC#(`Lu@ys@C?cLnmUVhjxB-a409Fl8~h;kD!lZg70 zgVTX{n^O>HU^E04>ix?=;!u%j3<@1_FQ=g4*QhXzx}$TpN28)K*%XLQf{;LM>12q8 zcngC~n2e4tk#KD=3;T;Wt}{3!3XMc(0X^OpA}|JMKX2ZhX-~<1l@3XYi-!58#mf(s zliK42`U(TgAya8YRAGoT`L%Mj))Qg1XPxhQ8#3Aj|9X6oeXA)*5$Q& z#?9Iu3X~()SPQviQeJJ(V1HrNpnq&)#1n21<&oe@vp4D(akn;g$ju=%8dWb5Pp<6H zwO1E$i`#r&7nIKE6w7;iCG8?%3ZB*?Q`FQ69pm%8O?5JJXv8~eaXAXPJfO#T8>a-5yS9G_wI1S^U&^Xdmi!ZYDWcwkszk1oi%s~F`i7FTE_ z5bAHPrShwM(XlKlA)~TII@FSyMyTr0KPna7mng*wz1HF!R_lQ+rZPFy2CLrgvwMPO zyGtTh52=hMSHLzBFk0;rmC*?DE{{y5Jz%a>Ae;^|Qk5PtCy_j2R2~uKCcwx7q7nIx zSG=Yv)jVZAn&ci&~*F+fGM)otteRcft<(q{Og#Y=D@IbZVY=V!AqynAxHovFYks zZKKBiq~l4&?V9OHCpA5tNTpKv4Nh;Eg-^+Ek(f1|g(A(Zd(XC%WY}Pi_uREm+-wiG^jO&84^4rAmu`YQgObTHGPC&7m@lIK1J} z@O&WX1wBX+dvgzk{fz+*3d~z?c*-B00U2NmEA`fyrPC^d4dmro(-Bd|0ERF`3cI>h z8kinysc*CSeHBHV<4J_FMy+0Kv|2~Yc?5i66L?HkHtH5v&rVN{SCv#aeW9WZB9RVE zgCfu5=}2(2yQ_^vAwdF>$vtJWT8Fhpvn!;Ov=rBB7Ut)bI>+qlQdx11)NCp*DmS~w zsxk?gl46DZmlqhrUfpBdR6-O_(x`63toLgNs>oqy~dG#_^C=e2r zvhf)ri_6O*q~m(YP(PXtr)FX{mE09cM{qkZMf z<?-NwC_d#m%xS}f-N{U6t5 zgJ!?efKN#yK6LnKjPJ^NLT|oun{W)rE^pqrdA+l{yEreqY2s|KPJm0L=_gi}!Xrc+ zE;YM#>HIHYTAsd*4o@!&G{R52HJYeqhlS-?Rx)grzp3eLFLx=?zJdKLxHBA9)nfR z$gNqqdS}GgNup5F$;?NkqWcmhYE-IpBa@3Ot1{`Z!s?$~Sh2f(TBF4hUK({c`V|Jx z_)=tiQYw>6^rMlWC;e0fyc%gOpJ) zpmo~)!JdXXh*7L{jaofpX5Ao#oR;6%>+nsuoSv#8R)J6<>!>8<2=zuqW{$`fnsT@u zqEZnyM>#am4MPk(nI@FD43dW9WP!ySEXacLgwnnSVRHID6F@GHo6lgDcT1WcE`}A7 zL6@_0DqBvSUIJTrb-kxg&0xC(wU%qwPt)*;xV*;8S1%P&N+vJg>8PRM5PCfznnV*u z?uS2y)nmi+3ocmQk16Evn20Ob3h_m`G@lJN<4`T~l9AeN93- z$LJeV$qhq8t>7ePS9Z&W+H%X=#2vK+W{!PoMb=#zpQG$+u4Uv_OH~6YDQPW+F{`qf zK!J#qN2a3t5+yJU#ltG4%|A9hGaw#TJA%>a$$s(hfK;Wng{S7`1 zJ*Q-D?VKkNGD~_Baf!A4!SRWRD?A;s>l@pwXD+N59bVNyJF@h%cO~U9rY-q*O7Zte zlqh1W-XtU@F1G3&kJpE-eKXMyhi$ETBTL(KCY_1s6;MFV#&#E^SXf+@> z76_4u^EpqFeFo(Jrm){S>M<~AQUw@ z$0p~OM#IzYQJ)0R(*X^=F<{F$z?O`c91-OM0U-`(`?{pXo!vJ7ZhEf8YwqX-YrEyY zwpDF+=liK3w(CJLtoD))R=8<4?x3RM$9FV5z;yUySUqO!)PXH^La{?) z0gz<7Fh@lB1OPgUVReMV4U8y@D};b3`y>j$mAim?P-2-Kg+tpi+jku{VAiEnWjG?r z!wcvrhSd=cHz0JVo|9i>w0m?`7of|h3_6R;I3>cgx7G_-aeHZ-^Q6dVPAdpJDx zVb)OS#EQd$Bcj|5=x{ii3hogA7wkB2Zvch?`Fi?Cgu%<#aTnc zsl~F03(oe6TQ4sn8=KDOSRQMGx$j^{LHvxc5N$}q9bw$!8=DnlyJGcY2S*Z?$GY9t zn}1eC9~5Q{ z1Lk3aWn$PFV{H>VHqpI1@;ln@>Tp}Ewpb@S``@?P4(u<|A;qI7N(lW_Hwl?+;vg?V zP-qkwlt7r@IQR=;?zPC*kYOt3{Yz&N(P~Ir)CCuF00v5feDxb0i%}rVF&GKFhQwh* zKA;SdAqMD#2983el9A6P!+0{41hXL2VHla+K))5fc~Im7;+VfW5Dcgqb@Nu)DgXWs z=YLuHtX7|~YySjDZ`;=Acys(OKH}dx#m_3{)EO^t_?+II94rJM1ayM}VPAnq)M+z= zRYO0Sjl48XqN0jNrV=4URgf85GzMBcd>^WrsJA&#xt$;ECR1s63Ji!0bQ06pzgk5p zG#CpJ^zbVBKtD9Fu_ScErl#JEUk|65HCGafNf zf=fuH(OIQUT8rP|vKM3ts#;`rU(oFf)f6%FYK9ek4N0kFkyuq;Dw3Fj-ayo1RFPn~ zMdR`MgR;TCYLVDCK54dE$_w*T2-Hf6H58dt%B9U+s-doW63{kwW}C+Ca{C+(b53F1 zpnRB2;+gzYHAOj`(w^w#Vr@}Q3N3p`Zg-AG%_?bW>0oebN~1H#jPA<(9KKNIap}@X z88VeY0FzTu4&C(=9z>K#E+suXHzySdtcGLf6g0PWb+ote=rF%b*w)$8+)#;6!C_pM zoSu=Nhj?OQJ!Iq-XL0aYKb)MxY%YnDQ`FSlz@ah(1;uG82w#vn85|b7w5F-9x)2#br4}aP3mOzwlZ3*`k(m9F z$vLZ8C$k1aUJHlEXi<;2U0#>R$)(X-O#yvxYeE{ePpK*^;3N~EO7UN%q9&EBrbicy zPAU}gZjGt3K=3ds`e35eid9C9$u2`}L#4@ObqDMtK9$a*wT{|6L91hASOwTnFP3X$ zTC2`%6C>n^yc?r3yES?wW)Gk|&=BO&=3b@NqBT2*)w&^tPNBCd^;Uz!hlXy`YVBUT zCt$SL0Amj8owkvn#o?AJR6|OG*6IO=Gg|CorNQV5Se#yqJ7BUoRYs@P9kh@5Ra&D8 z^beZYK@*MmP;up+;BSwZDCsOtDxT72ni^HPYkcK5WZvk8}wTHojQ z8hR5Gk}LZhA%_;9n9{6pnoK&I-CkB9nz?#c-B(vPZ1qMLjIvf{QLD#eYw9q`o9oJ( z96nS3@r2~sA-hr1R;vtLJUf|R*N)LzwyC(um|kvm|HhA36<;5t?LJhB;M5tOG8t8d9i>|+O~f6 z++atqJaBTxD@je`UwZCUO;7jOsq5}`As|ZswP#NT-GC?;&s?(@6je1+AumoNG2?U0DY^J%Y-Qk@O=F$@gJooI0zPj9` zbZQzAYEcJ=I~tCqKqkMZBEP^n|IAv%O5>F|eGw)JYS(zjCIbb0Rx%~e_OqDk^Phs5gc*-Ob02r`8Qw zA5um4CracMMwQI$KXLk!)nw?As{J#ozCcK4aVX5*@wqjd-EFYChE>Q=SE_YH=GUiZ z#)r@_Ye>Yix${d4a}t?iP-U51yEf(@Q98m4t7{6iZF=q6L?qBNq_Bq<91gd8`t(>J zpmR<{qvIxr*I>2|n?|EE%MPc<6UNH(t)Ae_sp!~*+Gq<* zBO>W-Zn?@Fo?Y|$1D>(vpx-liK+)cIVQ=s^mBBhWxB7^Q5)6Wu%!>8dXg&Ms_KIkyX+m9vUn+>iyVTZ}LxVU)QDDP}H28QdZl8JN@nO4!_II+59 z&};Ma_(^z5gL!;$eo->e)6s9Usk)CHPiwbL4L4LLCa1B=n)FUXlg#LHhgCZLu+cr@ zu$Ghwbq>$4-YsqwmNe>QjiN%KVR>!Eppq5Vx9dkH%tqU=&R_yf`dTxKD@*e8_r|c= zmnc!9NtD{BrlU(iQ#WA4(8)_CoxHNND5*%aa`F0*P*}*%P6oDHLISYoguVUYsSpl% zml3f)tZS4Y_tnH6kptL5ips7R*&(O)sCatWp zyf`VDF@N?7pMs-SIj@{@pz?o?G5aG`R&-je+!UBuS`T=gV!bmwF)cw@_Qd4$ z3B6u#^v~KXR=t1LZMCW0Q&UsZ3Z=ShQ0^XI9&tK)#j-w`F*38Lx41(Si^F2E!M_;x zdpr9jCjYG6X6+o5d#6^sfuP>vkSLA8sU?kiSZ*7em>e6FDG&CQ^EkvigTJkw-H1#r zJ#wPNe1;jvlgWMNh~40H2Yfsx5m=NSm#L;f=5?x*lOcU%qE6Iibp+eny6sL|W0x@+ zFf(Z2vH$QEWpcA>)S_(5tdZWn_l1faraW@x?2IQV5kKf!ynf?UHl1AEJ)&$DAr_^v zk3b;dX_=#|Uzl}C7)9+@@4e7botKnG#%7nc%fCNS9z$sII63#qt-DH<<(U`nLJ2t6 z(q-?6wWFnhP+GULaa-5jQ(sw{3hJWFNX)OBT$sRZ5~V#9a7-+l)IgC&!=6h)TUlyO z<@wVKc#y<4{ zQx~2+e|qK8*+p7vNi9s72{> zSC>{At=>FFmSy4gYycQ;Mu$aT+oKBvY&0mt?u(S}wJ4Pyy{dQ6=B%m6>oAUA-dL%~ zhmWN}54I>DMn&E7mU>`Os=AueiBvo-;~`aaU!p|fQL60|3u|uQ_{`Etxm+S7X(T#(((Un^kZ~^Z0=RfsDK&Y5;}e@isdI&=Mk6!sQNP_g<_pgU{38;BJ32Kh zQ`vlxNu9+Po}9G@CM_1bF);5N8R?g)_3r5S+=|mRGCHwfwpa#{=}UcZa^7fjhh|Pq z&YqZXoPfQ3k?e7N@EHBj6S5Mvi)~a72Y@1w;)+OguUcbDSis!GKI?n=Dp>ye*KmO;w99DJY z)NEH>N(wUBNh}>Wb!w(d?mIVS1>2-D@wMwKysVP7jZ5X6jNs`jtpXyb);@FA*;)xQ zbLX##irAu)DnWMD&LYjdN0wF`?nDF|& zecipSy-K?$q*V=&DU^yXZA*12nOoqUS?p_T>Kjz@$b{Txg=fSgQ)r5EVO%04(V2=1 z3VNk#0h=O{I>v%FHW!Y~QI0ryFuQSBQ(4GP%d8Ddj+gSGBqA)7{#7b!*GQ|ob%DsF z(Wv3Fp?bAP*;esqRdg>=BDc3pZSYKuPfi1a&Of#4b~!y0i)O2-dq_59@Qh6_$)v-; z;5*C(?h6J-hmoM>Th{i&ikm;Lov@jB< z&=4_@AXmuY_KJ;F+e4J7J&8+`xq{^x$bt+hyU}Wq8T96|qHN^0XYjp?XQIBa-7JF$ zh)D_RkaJ3PW^J4oR5nW{9pC4gR@ZRZxk`hgpu9u5arsPDUX?~|;Ue}bJiT(cM_6u{ zy*O)^xAu!&{)tFrOjO3i9Zwzbj0OE;p_!@1A_#XpV>BFs!8lx`0{0o{yhQ8hD@CN0 zyP}g*GhY8lIXy?`^yh=7jJm052b7Hdh{HmaJ6657mwyhTL=ju{MwEfPwdx(OfCMgs zx2<|((ag|5YCtpb6gpag1G5nV0u8~g2d;V}ZP_%Kk&dVk;@0z5t0=PSO-5fydUzGx zhbWcWLAl-$n9v*aJwwC8MvvPca{8l2ixpYU*4q6O%c1dEZy=&jp(`hHH8LgO4~pf; zY%b5lN;niYf|2{! zTxe_>Fz0|m?+DI@#%6-!b7r%lUugvtqmav$U?dd`4@i`NsI69ezf@%p%|<5|0%KEJ zz10<*(CIW{y(c&}Ay=pm)p`!Lj1v$3_O~KR8hSb7k<+$&itY248Ov|4xz)*MIH{p^ zu#bYGHDkw$&3wly#2aq)w)q{=eE>Z;%o=uUCnloH$eU@)9E#W5s=QUU)nGHlx{LkW zX9h9eYF8AuSk=uI+m98`#OrP=Ia~>K^L%u{-}Y0mIO2-2PaVveaZ{IeHs4(z^P|Le z#XeyBNK`c5!$Yg+UZO#UjuJfXf zK{~8C+6ws#x&@#dokxBG4gpxWVIdh zG}=5OBF3SL`4)$CTkyBPAyGb|fc`$htR2qOcoh8YA%GF(zG2pO#8Q)QZDJ+cYi<_q zZi_XH@4{Ne+wQ7^lTl`lZ+&d& z9%%aufi-FA?8`5y0L%`AXR>*9Vr`dauFE}hxZs(q6YGF@*hxNE91-Oaj_~;bZXsYx zX7ckJ+PYzO#@-5t6F}6)w(iW_LIROoH>9oo!q0P_|AXN9PY)GG{@ zE_m_Z<$(fv1Wn!G(tzX#`RVfkK5jR0vAJ6VoYlh{YvSp;SBx z#%cs=aYU*1`t3(~WLk@4Gqfd;)wce*m{3){a zIDyb7%HGO*+Wuui0s(*+h%miFKrkR45E6(A1m2e`vHs)bo2M}*8=b|Ay$`zi>fXNC z|KvZt*dm=RqC`d*crs0Avc3G;o9}(&+vhG_<>wbQw|CVxwx*M)TP8)!-h9|IhMFBa zHenXh!`_;ojV+nuMETtB1JN~^7cURkvr-vw!m;x}w$!+W&>g?)bu^Dh)P1k@_SW`(L(XvWK zo&6F~b!BEjMP7Cm9^#c$iP$iN#^2x5)h@8OV3f@o4rHJIKE%xdqi?vP72+3Dl8=^ zDS$h;i0-1gjw$hOsdfU~51?nW%irA53vK`c>d}TLQCYlft26Mnp-9 zM5YqxOgaO(qeygm8j-qV?lpE7Ati{lj^@cU8iC4;7w(m3`+>lrfdD`ZAPf+Rh`P%G zA%UnsVC01Cbov8V1o6nDAfH3P-e@M0D0qlLh2T^Y6=JYb(}_fIy66lfn!_g7qi2|n zktq!1WOA@j4zY9inUwl;U@uXE69TU3l^f6e>rZ~>^aLbw^~EbUzW%N6fAHaNhGdH5 zbOLhi(6|^W>4c;-LUKBZ49p00Oomb+cofC**!XM{Y&?lfqGRWl4Z+NGJPDYqNoiyX zjIb?s36NczLw=+LEsy0lErSOT<)>WhYDVCC=F;n|K_^=oVM|6cXI@4I;I}{6B(Goc z?|zI7&tLe1;JM#!aUVvS@l8-IZZpRD^geP3!SjFM-~Msd!W%hvewDraZuZ8{_;(RP z+)+Q?+2c~UJ?L8`k4G<7!i$SPngZreg zw9@SK(YNstMvnPCvcY{`H5 z@lQeicuE@Xc(Sm*>9?Q$>HquR|GQ^EoPsBTaw3^p(qQ}IyWjcxKYsV_wUxXaPAY+% zMxX%oBT!*Lh^YipDo{TfGaY1zlr$1KAqn!FxTI>RI+jjh(CO*L^(S9?=bPX9=Xc+_ zQCUpDC6NFHC*vvT$G*u)srVEk8BeApBScJ0NhczV47Snx?tw&UJIV82Vl;{=NjOS+ z3PaSxY*X=qHxaJH=`(pdb>-1x?aGz>uDjf=j|TY9glIMnFcHqJEP@HRK4$O^Taw?*w}7nP;&3~j#~OfE7tS=XPn`Yx3~;Q6lPzWhJ3i#v&ul0xZx=DAm@^C`jGZ%BG;@wqi7o4u?kr$g;op7#tZ&9|Oilu9JkWw~TJ zF^$@F>;9KIYDg*6g2KWwh4q<@RYe+s*DF<2lorr9gMc?pq6f88}59&h^WSdRDdK@~tytE7uo8j^s2F z^1UiL2ehE`%4K?cPg5<8nc2`SRvU~(dGyxd>o4A!F35$`*;zGptr;+ryhkeR=-{B> z&_IA)OE;LzKwyQ=yo)H4NwELig^AUTdtX?A6LC07&BhC_t7~}aoQAv4-4#kY@4f%0 zTk}r7XyD@AbrJy#80ehJCcW8KU6Bp*$~%TsYK@8ovDWV0clwNgm>HRZ+QvExw9ov* z(}cZ5nV5%P(9jF3&T}Tzl=!cTO(_s^!t2eDZ() z{KwxlHP#VR(vpS!-}>}Fr+kju#+uCB^2sY-`pyr3cyZZFpp=ZAxO?sOuUrAonIPkCA=Tqos?zstY*1CA=fkvp0FQ`u+UVh=g8@BA?{IL)@+ z5yw1Rfk)VPa6AmND=JQ|X3 zZ--kz$KA|UMb^qYl$7I{3tvXA)6Jg)fGY=AG$S0k^3G18q@|J?H=h04)s6KF=O(M# zd*`p-wOIq}H&$nsZ#{Q=Za|`a`HQbOL$e##PSHupsg&l+_y6&k8*{_TrPJrGPmZ0P z3K_if=U)Eu8(;qN3xV}JFTVPGe^V7qWj)9y!tM~Q#RU{D&W7<_pak2sjgL5BP|Ggt zonODTwisns_no}B5nVp#(P~$3T&}O6HpzW=?w+bHqa07oo<4Is73-IZ<6!OTabLxqxcIi}f@#^?ubYg9ql9o)XXj{Jd1*;{veq+u# zvhm!DSAA0(i!+As(&Eg`SHeD7Z)oLA*qM}yjx_fO`P5)vqWtPVen%o#0pk&~<-s`z zgBu(!0h<~|#vBAzWu{*e*O6}QTrEv^6y`L_TJmS_~i9F_ip^d@BjTb z|HZ885)Mp!_^01qxqj!@|M5R(qjO*W(T7*2{rrqiY7}KmFkkzqdXXPy}v# z^!^WZw&0Kc^og}zaqFEw{@V}l)mQYs@byo>_S!km?XUfxzx}ZzJpRF-{zKYPokRdO zC2xPCw6F1e8_ae!l}JQ>T23LeO-V1TVavmU7e3|R`L*Eocj5BBjJ2QVe(_Vm%m10_ z3DX;0S+h6j)zZw9Z^9MTyvaA&t&JSdZFc(*Z{iJhYZoW*mf*SH37-2kcW8iK+{{v) z$T{~GEb7d@1&C74n|znm*2Nr}W{QMN+cj=m7hP!1T=^FNnO{FWM2XDnGhhOv&=pzJ zYL&I3n%v4JcVwcgsSOOhTdIpCo@irD0WJ+ZoTvp2y}p1koj@!RHRlQVyS@Rk8^|&a zjb2=vb@p2{b|$OOD){1mfNPoi%712^e2+>Za!gCy(Mwb!evd`@T1|eE@yz`jr!HQ+ zdLiK$dFkeviOJ=Nv$e2IeC?tZ$Evt^=fzTL(s63{?fb8F2~%*y-V2wXnV!6`I5l?l z{u>dmx}~GHsJK>an7(v+p^!x*!uyYKu{&fyrt0V&+M1!?G$&aZ*(S$mmSD%S39<{K z;c)cX=ik%!cIj5{|LUXn@;PMpnOD{#HXM$0{)J28P8u$`?*1#UmS!dNPhB~4_WaV> z2<}+v^7zfD@#@l?Mm4&2|7-6$#KI&z4c>1O5ZYW~GC90JjO|7x5E6(A1n!qAcM~On z8n}E-(p?LlbFKEpYxggmzJ6aT$^;hWoiE&OF)GF{oTFvezx?x`-oLS&d<-Y(HQamd z4h~0Hym9Wt^37;}160|*dhN{mjZ1wJ+33AMr84% z*`&{|={f(UZ+-jgU$J^#_|@+}T06NsePX_`Me*8CKJwHR;Sz{!I+Rq|_0|W!S(%MA zR#jSAX%byi=G+ zpgn*n|G+h$;EkMTwrfxmgh!*pU|GkZ~hB+SP!>2vTyuaa2F8e2Tuo4#ujs6 zZc$60q_wq~0miBM!ma^{u%?1Qf^tf$GPAR(3^tX{WM<_RmKFm(DHb;7@&6oAqCJDN z18jb-{WK*J2gcf&^RMze7ipYKC?hxL>W^VzHx-$~*)>P`%$f5iPc1K(W(m4|b62k3 z8w<+{MBS&aUT~`oE=LnFPvjq;7SQmiwEF1uvZ#cRNN(^2Ck%$DP2XJCZ9cJn(Pos@ z$|YlS7gv|(xNKx~=s`qDqQM0v6%JpNotc9tQL*Vr3Y`f|iS9ue7?p1~=&(DgMdLbg z`t0K3OeURLHW0aZ>I5|{1iU_BT}^oz?XnZ6FRfp??2+^m3+f!RQ_071gQ4^5%l>o%DV>=; z7+Bc2ayJ-|wsdx+Y>uN|JEk zdw=-TU{fieJ}Zx)Ak|C=Rf7&`v_Pe*%yAmXp~S%q}ZDsoJ?TmaJ17%g4l=N{YznAHbFuH6U(@NIa?`3$_IWi}`emLvO zhk|>*dWwiLWfi=|lt3&ViB@`4oz*EM=(A>`p9<_EN(dcUBi;q=U9Z3W)vvtu?yIlA^NnwRe_?rzh=5{aa&%2uV`u2#!= zTux49v(jLyttvqDCo`|5Uz{u8(-3zBW>I6m)?gM@7Nruo4V{we0s)c2scj#sE*Ees zntIz?>Fk`Q0STX<4emZ5;XXup`vd;nj|4CMkx|#TMNBL%$j68hS)2Y9|JmPWuf3iT zx|4PGpZU-IKIiP)8IfmmZhykR@(!bQFk|A?tdrm5-~BjyzqOIJ0xrbV8)|2|h499bZyTF_Oq|xqXd@qrA9{Oi4r{ zBb}HGX(Z>XjR`>JOA9V(%<{>6C{)NCtH3OvR(!HD>78w8$(BXh$Iu2l3@BR@_u3+C z)*Cj`lt-Q{KM2)OX;@yc9vAPLyIUB>SR4G~*C_l`Qs0zQrIL-k!P{HHWqE9FUV0Wa z>U+P-LIO-$Yc_kpj{2@%$z24ZFOVzx5%PW&{B40pqp^0DG^Khnuuj*LER&Q!1T|Qd&4vvtU;BLL1_wxFXS}qE<>4xi!vh6`xen~jFSlNFb{f3Pz_yE9 zK?f#Ga^YHMH0!HL>9>L-$Y>j-!SNqa4tfyRTQ0pWDw`BTw@Uow(elDciyH9UuWc9G zWJ|;VrKqh2yc|y&M(dzi={gw<2N${J{WeyVrrZ9*xy7tVOg3VkPrrY8v~uk2HBHUu zzQLbeZ+AhhJ9v>Fb?pXTDgiWU`&%H(TWKa#4mvzI<=@g+QNM@Kwiv1lvMq93iR%!X`DDpWxKu;f4&Ur8yy%7sR&L_H8#UN zL~y!{@4EXZEnOL$CBLW$_EC{YSZw3c(pyl**A-PY&uXH0rk`QCQhUvGr%(E2UUyENA}b0F(JaWv9R!lhRZ$7%&>O)xjA zcGUWk`kKISfQm;-@B(|HV0aG^;S>c}ZWPy(2HHAczg)S_JWhQ-;rc%T%~pXAO)WWO z&F4AVzHsXfa2xADA|F5vbfWqcxi5)1VH=0MxRBw=e=tmqSUWF~MmA6^CAUv_)vU;` zA4YG6u0~U2KV)ymh`PM}walyZJ+J!Nf^4u(T)c_?*t*;up7_C=ot@AmXJ^5l+dz~u z;jgo2Ok7pXhKF1@ZcA^KSaa7MVDJROkpaXFU3<3u!#WTl;Lp$KFVIK+Ty)p&G(g&K z$6wz& z1I&Y7h^7wx-h6jutoa}!0>)#}y-B_@cDM0mO83b(IQ9yX!z@N{J1xIuL8I)UYMRt779tHwkgFT8Mkg$^ zs3GXGA8=gysYZ}p{zT=}QW&6rgpC`oOggd<7W(tk9q6+aI(yxlT|;>O{r0QT2(xkM zFDms(jX!gPavgPtkD@4c%3A0)RG=-qHf zE=QSk*{!SoVHKE&JDAkjq0G)1CN!<8VpJo-j{F&1QOYSTdG1%S#;Pxib-PgKT4O7kWWLEY#EJicA(kI>Gz*+e1elDWnxx{y2mv2v%FYf1}NJ%;gkjh&;PhN|;lWso9<8!}4w| zrt+nHDWium=*Hk)#o)h>s@_aMjGc4(Y@g?Wk74bHlFh?E}UJ= z64n-EjAqh-ZE56L%!<2VthKe5Jre^Ml6vpCTCTNYaCu?jkJT(p5U$Z^3LEcjY zUvHc7+;6S|ie3}pb1-zLK*vtshD3crBS{T16(bHTFZ+)eN52j?cNi7%kClqYb-8#= z5w_!VUKh}VFshS^Eq^e*vg+23jv!F^s8Z;;q+JEm!SW)5ow|W(j1(fauJLRmD}Vh- zn4SBn)NuH1c(}sd$$Mh2nCka>>kwyH+^sC7&;fE#{?p%%-O{JYdHwx#Olebf#Ppgl+0PrIr-6w&D1*&vQnE|jXqaY#GaB8 zeKzM$OE#|%v03^pe|J`o&n%}A0$bw`VI0Mj9U9?!rTth*D;QrH9e=BpL4ocqqVA$S@?8y&ryW%$Nc%;$sTAP zo+eo=ddt}dUvO*D=c*v%VSuJ8S%tQ!_k*MA%sx{G4b!v}Tuzbinjky&JGaS9-m!mr z1aflC!s%a-(?x+G4!2OG9Mg^DHW^SE@Mv#dt%j|(T_yn?rLYkRC95{pBikkCTtno)(oKN zvu^FWdG+-;#JHIHte5aN14>j)()KPui@eUtD!R)CMt^~Tla8RR`Tf@6+Hgo|Q3YXg}%A4=hxKH{+m z$cOq)LN_FIx8rU~;0#Ypi{CAuvJLq=GQ_6Q^}Xok-0p%)=VDJ-h&C11rm0zo2!Z+eP_r3J*AKzx@Bz e|DhY_pkeNAs+(`1(ZA=F#!%Np=kr~ssQ&@{&qmJx diff --git a/.resources/edf3e0cacab2da391972d7af1d21c5f064fe0bebb5f2649f386f142978833081 b/.resources/edf3e0cacab2da391972d7af1d21c5f064fe0bebb5f2649f386f142978833081 deleted file mode 100644 index fb2475eed31056aadd87f590111a67c2b2344cea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19576 zcmYIvWmFsCx^-KixLeU6r8pFKD6YkdySuwnT!K@exLXMl+}+(Bg1ZEF_&8^M_ugMK zYh~6unPg_$vnN7PUJ@0F5b48*52(^oV#@E^_75LEh9Z1^-|M5}JN)oLPDolzSj9u{ zv<+TGd#Jvm%)Q6+JnQ?}m%Hfni6-;xac@2&C%18)mEX~h^^Pa?e0S@aLEi2SYeOW& zyp5S%I~iRDc^?8W!ZVyPWD4HYk}#wwZtJT;)Q7g&Wa(#R-qNhq=0LPc+S+_H<>j^q zYA(VQWhRrByb2u|)9dR2731>xo}rVbBqk&?59l?vl9KRNM`;*@*&{_iQ(_w!ckS2C zJywn?RgJtbFAH#=wW4dv3-##Z{fsC!8yXt&n+l_KHF#~cFf!G(AyGwp^Oz$5vy}+D zJ&zT^QNMu|x4d+o^?LLgNJRbag4NC?xE^;ZD5tizR%B`}!iVCKUqoFUpT4%RE^|tP z$;6bgsRZ%CMoTDLWa0ShF?GR6oVLnP(O5mBr&ifu1l+(r_z+Te+H>L_XnS}QLCy6` z&hA@>+P1xQ#Da`i_75an-&hI6)K;XzYSx?Oj_1(=D8{)A%WBl)N>t4Uv5Dt7yHPHeKOT1if*oGUE01@znVHCFVzEoUfDj>C%2XdKwXnxIW-TLQkXieMg&JM_+xlT z+j-rlI|jZ_9N%x$veXRm(^uP6?6Yv%)@Im`G}KkuhUt(Td85WHe5|`x)4nz80-0}^ zaiQCBI!8OyalYEs+F;B)_^iZ3Z2{-?qDk6E_rCz)?Pw*1#d+>-?qM}$^kG-ME28b{BHD3|)1Mm}#XDhk5{jFk_poFOh z!u~oguN$rLD+-K{+bo%tlCxrbyy5=(sw=_uk6ytGw{kQ-UaV-h^?&)?nR=G{W5(EY z&!@INQAk9{gdLcK+Ic$_HKD$xNHOmWDp61r1nmOc2Ve{4w#5L2LFlIo{y*yihpej;@SP zPp3bzEf1@x8QX9zGF@CArMz-kur=Yy7p*+^$jd}1QqWG%eKKv%pvWUpud7YxV?m#C zOuc^;7O*CDs>@>g2R#&C($qFyT4v<-+4+tJ5DZ*fS?C#eBhB~>mn-CuSvPg=;bILE znk2W*%{Dg>4z&-=HDwbdr*ml#mvvlRz$Z<|@3Gx9;`F_y5s+AO^s?22(YE%=s2!au z&rQsSS%q)Vt)C>Ace~njHmHhv5!5&`L+7LT%EiT%Z~UGAThCSQ?u_+@NFUFFmDHcm zeO8y~P=?yg+t0_~<1JWkK6eifKGHE0QEeDwqmD!F+R+8$xPv%^rDM` z3!dUN{y0L*Qm*H#E{T_-8z<*t)g9xXhLZ2sQ}vtE*>^qj!=Ee8&K#VodNO!wSiHxH zGo=oO;(&difXwknMWDFC_>iWMK&(bN&)=V*pc>$K;ApAmoTS~af9pDZF87nZvU}J6(hxOeb z_sK4{JMx$%9PjLHg*WXye$l0bH!2K2I0>&y6W!Aut1+agp;$=J`U!9DbVUL(taG6r zX74;z7uc+t#-{E2DKYRD-2^Da4&gjUrC0YxjEs z`X~IC-{}7ASSw)ir;JgF)OF=09XmeHT4o5k5)-L0eZ@~2)vhL%Eah0Q4bEsqcJl&| zD|`jZ??{|1`XWf8pY{awP(!D|Z4O{+Jd+Wo48IGi4DMR^tJBl)q#Ei#$Ob#?=>w4?&1zJ4iv!FDO~Fh_ueXWUPFfJJ?0!d zm2l|}*Mpcgn$2I(#5^9a(%G!Pt)q{Nm=5cD*!l;p4Q}0MR~Z*mGr{3kopZgO0Lxp@ zHxAB792#muGFLu%kY4wJ+w>eLxa^TN-S$rCJuY^XKzci{+U8t7q-jI-FPmkt;N>xb z+pD1)?iZ}_ES~7-YeLL;W?gWQ#z2oo#~2K?LUy+yK>0Oqm)qx3oLHzCK#$jiVa-pJ ze%p?2tH9`1p&z9Gi%6=}3ijCpP0~kS#6t~rWg^7*7~JvlHb_bc?*g|02KB*@Qblq%}OMT z*g@czgKVY660`lB3hB`Oe@$jsud6)VfH>jEQ^}pNi7Ft%R>?W-$w~*zmF}KV$bj_D zf~#1d^|7c>KP-A*|Gh0$o%BxWyrdeIw=e8@01%`smkhw0Crx4#h9I$=4N|e99 z#(o+h<-dEry5GL?@9nyKX8Ez_TW3w_cG5PM3=e=vf+BEBDo>7%eru}9V(2f%?C8sP zyY^U4$}Z|91gp!Rbe-u+IwtVvjHFZs`U`XABpBBmqi|PTg#?1sF`xvk6Mg~mPLrm6 zo;eF0`RthO@NMysq96YHLUhAO&=lV=N4_Rl-7!^~3Y#C+rkwoAOIXOhDI~v)jTw)$ zEF)wFcd1Istj(_aULoB_hsBOZPFOez8a9wtl5!J2J!tXYo9>#w;_IwT!1=AokATLw z<4xad-j#~7c0AmhW>%37PlAaidlA~yiXpVlUj?m+!kRWq+WvmHOVLQTRZ(6UV(%o< zxY?A79IrAPa6muccrrj!U5HodS=s5#{2ZYpOJuWt7^KU`iBUe3y45--AX{@~VDo+dX5Kt|(VDrzs2-c;dj>v7LvkL??_MFZypGIF+?1=_>`N zCCf`;+Z)n)ZclTS8VUqkCAOPZLQ-;nW(BfaQa!FXZyKTj6<%1Wy@?hXm&1?ac}_YH zi;MFK8`>X`_eN{`n5BESuIDxny!aN&c>@WZD(1i`Ri=sKpCoh;j>e(DO=!I}(upIAa3D^^SRg2#OMI|AhN`tWT z<3d&IYc@A{0WqBU$U=wnEQ?EgaSMec^`8DA0Reuiya#abDIC4SBt7%Oz;lt{b0aQv zPU|*u_1n#9T6F%K=WK_qMA?$#10r5^X(J3y=9>OJHc0jP{%!g1JMZgnR*s?JTShp( zLi%7u`PAX6d`Q&VTW&gqpFY-?J9RauFoO@FK)}{@82*yWZDwrM)D_>i=D$}1 z-~D^^T;d;W6EL_ZbfW$mId!`dXk45iHzq3~Iu7n@h*!`qedxk(V@YY$1>!RX*5sqU zvKxOh8%q-f9oU0Tg6$PHV#kl;6|z)+x{*1OEReOd0H|miprbVtTZ`pl_4*21%eGBl zc+VVVV1)Xekva1tiO2V!<~N+*T&~eodYtnqPcrZfrt%)D(gcDULCwQw_Kuz=^l4zbW;`uJFb?(&4+@dVvG5xKg7J*0QpjPnCRH529Nx=6F*py^Ii1m z`&=wdpfBEbv>yG`VYdF}Ch9x=)MyIti#*Y-0PYo6m8o)mfb9mHHIc~P_f}H0=WYiU zLIoXutAOea*OpzOg14*`Y=_77@aJ}X0VS)X*F#2Nx7!+zy^vjmG1dH7jpFT{Z>66< zV+h+#|MGX3*Yv!B0a2kR>hrQh|6@4OxMt7NuO{-GRbKA^Qn8s~0tJ!Zo;u!`PgWJg zSAd~(v|l}q3ch|LBfqArFDFCKOXMTAmBeo!-|G0m@OlOH+{dfASNCaSG46Nv$Qn%- z)uHi)n+|Oqt0#HD@=c@jsI2LE9&4#`zazELsEg5HVfOKOAT6QS#(Ln`%|qwe zT);@sL^m}>!kh5@IO0w!>JmCm6yRW_^rw^1?&d*5*sYKqq1+ zkB2qX=-rbbu^U}^~li`z{ z$N8$5P98yH{14kE6z${}`ciiiYQf15&w^_aV=a|&Lmzdn^C@Zh^o3EW{L zN=Zo#U`nIli|TV?XUR=Nng-<+#6^5QwZ8!IOYx6ZbwpWy-3_ddqp_Kd^`GKYL(ZNr zLKK3oEkS6_d>Wu}jc#`;-0mee`glcQ#vDR*K`%H`Qg}x`wQ;6Z>MXr`!RkO>kKU~n zbj{~~C4eedAeZ+3>rMV&!v?g}Ip2eGseY~M*cQvR19g-5$U(VQgSto!E+<^AOYoHC zXE%Q+JrYtiblmzpH`*rK_YU>hu!zVHC@p%Q>J#gQA^{gG2c3wh_FbZ>biLlGMF$AIQffgY~N)b2Cv6+$Hp5$_iyI; z`%|gVR?Tl4#iY13vV&*D(Z81P%;%!qPJy$&^|oD-Dfvscujd}!S0Wgi4S=wEhOXNN zm%wMEH{M0Y_24IT*6@}3_}2J}@AUV_>$VQs`yqC$nIvu>Coouov01J;`nM-HDJ@i7 zw~};$(36uw1e}@3^3Q(y{=Y@TOMrFR@W0$3!O42nP z$N$XwJO1pzJ@FTKj#XgNrgyU3iqp~_@#Tv97rakKrX&$_!P2(TG5M5Hh5|z51$SRO1Z(FxFFk;Fzs-ZoV)nu zZ7!@KzZRzfJVBB)Rmo=|Ud4^BARoMb%U#zfxZA(Yydc#u1e@b^E+wnQf1-k(Qw!il zOU~p|UO2>y3yvT`KlL_PYIlaN6Y*omj_O1m6w$e1sT3*NRc#XVUi7T`=`q8#KnLp_kAXyiNjM%&Yf2VR@bqG&z>I8q- zOR-C(OJ=MP`qh35#$6`~;xyBaxL-^vn_1_QFNYt{2%hU&iDTqqFQ9yf+uZ21U43d= z@=qmQ(D~lOJvQcRy3oOJIo+_hrZ0Rmp(%9jAZDz%-EbddQ_))-rm#K!g0=h{fTk++ zxKaSsv_y{$a$l@(xU~&Beq6KBB6P=85ZL`}#?ANZ;&7ttz&6?7_*oOAYPnSZ(hDh) z-+)S{?ZnoNt3i1|Wo)Z_!rHEC0dwB6#v890jP0n#Net|2e-h!P8`gwlRWtotEHMAbla&5f@^Z|<%x~xa6oQP`= ze?jW`mEKRJ`&1pxL7b6M<#C9|sQ~#Wnl3{^jAwMWo)2BD{Sp%+@8FbUdy8D<4I$Sh zkVG@QI-=USA9P$E4e0R#7?lp%{(K;axiYJ7;m&$5!(MO}oLA+vORjNrHNiBTYev*P4OE#vM{^LY}eD+>Ob4+U5*n4R^KZ z3@eG|VbsHO!x&Rk?S( ziK%1boi7*1jwnV39eKE$Vw^MV{@U&$o%`0h%Db?5 zT^x;ZOJBQO9tbix*7daVIJ=JR)S~VHk!ne@IlYfo{4@t(HOG0s4YoFkRn5;|g)U!Mws2+6-&IfDge_lauACZBPb%`g zW+-_XQbU|&wP7TV=Uf~egKt_l+dn@l9^REQ_hj*7)Yo$^zFe5H*JJ%Ewe24W3m3As zEw15ZswMHyIx~xNuB$6mg<4U36jD88ZfdIqUy z+;~s=eIlCov@o@0yY8&9{;oAqUS>H_Zuh2AP@CPmG?kU4P|3{k*+l?;zUYj9+>y6y zOjUh+l7qETpR%F`=s3Z6nwT?kSTB0__YYre1~wn(izg~6(J6hdFSiPpi@>siNMGCe zv31;#Nt{gKiT%_DWVR)xD#KzV!1EigZ}gHg-@|Y@OQ=93PES$cl((Ivov7gzYEjrc z2ZQ$khiT)B1vPu4&q3&y^O5hNCLr!)%wvMnUk&>3-rfw5W?-A=t(Q$OwrBcbh=tcl zs3~e@Y}c#n!1uUh$TOr`sL|?9E3FGXViwi;s zVB4c|D)whX)*0Uogd~DP|F8+4x#O92JWIg(`flgrmN2(sW!H|5VEw`LO_OmQHBr~=WLCA0RCikZtO~_*`fc!REzw@@qhkKRhATaL*qro=L z{)%QzV|sjuGxrPtb4-kbI9VqQ+N{Ul(gm+JArP`u8^|(DAJUV0R^{g7tKlT4gU3`b zYj8&`w2}0S+Tk`yU869d$8-9-ldBis3dYPL{6uVfPg!vjlt+O{B1xO0d=(3j-NKte zovEbl>am-ARq!6#c{+dFm)^HOYua@vV)Oq6LJMPCd(br;A|6ldK1Y-FBd+>EJ(EL& z$NK$&$!dHyzl>YnM%n9lCO~&$qbJl~#23g=#+S>L8a^ z*5bZi&@|%kGWRCK^2;MX-Yx&cve~L@F&405l^1iWrJ1=?4W0R9u@%j3yg7g_CMM<` z-zZz%?0P=A<8w|L&{&L`dR(_Lh5EZ3G&h@wKThffDK0AwZ$-giwgs(Foba3=11if! zMR`!u(OnlZSAUtS+d$d?#ShN8>df$KdrPb*#Q6 zP}&AbPHRP#(fyF3XW8iSI~HR1JL9eB1k*$`2|u*O@&@3c$v^i623Kh>Rxjf^?=2aR6`d|N_ygQdS0mw= z*ylp{IBiz~7}L27TK1W2RvIyhIPLl#UCWl51=q7QSRn*Jb-UlOv0U>N8l#_i7FYO; z`j&q}ms-%*vsRWgAX8Xh96uA_yq@gx#jni8cHdk7H9rr|ABZt**yp?_77W-Ph%q`< zc3w>;_mp)aIGHv$Exz^}JpMfz2@R{V>3K9xKf>!@arn57~F zGqX|TbzsUE8Vjs{C%1_mAprB(u?EM@MeR_+ev&GVW2?GpgzAa1wML zC$^d$J(39y)UhD+aJj8(h|n+|gmJ>8PhsviU+Bj4dm#e3)OQn?QE}hp3mKj1_9L}4 zao^uI3`#}!y^aCF9zo1l)4v?tR_KUdHoSNE!w2Xk`N4kMoE~S3ks(*Qk|b55j-=xE z>KoN=)Vz;R5i8gTEt>w_r?oN^r>r)bm;P0U+hn(787sA4#*YEpxKjX_qDhEEbgEeWPHC75LqwU;b`=8P%_9s!h*(Jf1ykL> zJ+!gcK(F(9Pfc8ej`kixQ)n|RIly8{OMC1?KXWr_1;uu>1`jrhiNQZ@ z_ADqEHnr4@F8~}t8B@XMa={9WerC`G2E(~KOe_=>9OL82V(^m>EcUB;7E#sAzIw7A zbRTBrVsvK0pk}|};1uTU;S3;m%t~MM(F z|KLVuBwAto@=5!I8jp|Xno!MtHJH9@sPSg5%wyA&-p7dtHDCc z)$?w?-3$xB>b{`Zv6*jucTB?Su{Z9);-h%Z7rRIFc!H`iXxEWu6=YSp9Acday9&EZU!s;bq*%WzD)I6xLjLT?Z-4}Xs+kGi+$8dPE zePoe}_oa6G{9@524#k>MRuB}ID~m_d z0bg#Pd3kuMz82iFKP34PSclb5QE6`FWyj@aX*>OlPBd()a`Q@486Fyfi*dUiVBV`{ zumn;{8belj&r3jhEzcwHl30!J>k2YAd3X7@%3 zR?xZ}$59q}xI1G)uAE5WXQyY1IuwLnaQyuI8vR~)?N%GRSYRlF0W*uSa0Bbzdr7ij zza9yYen-~T-^D6J7`1Y(kXWJDFY1+geRmN5Sb*PsfbnM+K|x%9Z}`XNWlYWDF8#A! zii3IkM%O1aJ4pMO=cuBr|LJm_Wh_-2II5b;os+Y>vVdgY*y*<(#~(V5S*!7FiTtS_ zWpnb@2Rs_n12o!BIwG9oeMws*i^M22Et5-yzeTz>`T1+-su~(nUh2!K40evL>6bCp z=AxPNYCdxCXozz)xA0_yg++E$+TY`E0qzD$oMdN$!&K-Rp*&_`?=xbl_np9AqYwpe zJ8xbsOr5Tf2^OJ5Ji$_r=^L6C7#AAe^r3ci-^>lR?~@aBRolK%#;z*5;UHDPRw%sn zWzW^YT|_dGA6F`u5rKI#3&G|u@H9(fXtv>n!Yy0VO>}nx8ygaI?uBkXkM0{I9lcr>Uu}nU^?37PduEd}joFC^WlPa>$=LGJZ zvv_zPtbgf24^h%^Dg~ja_n|ia;H!H5yg8G2d^jbNOc+ukNBijI9d5xSQ+z+8{lYNk7h8vIGvw+4Yjb*`;PR8?@93w9%{#LjNV=` zN(Kg$tu3v2Fxw?#7g(hqThR4qiRnTup25oVJ{eZTm$&ObY=M{BQ~Cq}{$!AIoT&D; zsp1CW5&e6vjM)4ppZ?dsb908&lEKW}FgHI2W*SDhiCqIl1 zem*-<6Gvy#Ik9*tCgVp>wBMuc+FF&gv@G^0{lN=iZf_L{h5(~VFm{sabJWXN-BP({ zLNDGqhvP+u{{(3YA_UA9O^hS<#`k}mctZo~x5L-+ch& z&eneaf{1}_I|Q0w!XWKY`mZM;Z(;mj-=0sfOjKORA8x~J_|L0Pi=tbb>+uNK{*eZBPQ2k^ z4QdAp5)aq&_6Eak$^U@0(oz|Wi487@LiXontA|GLb@Ru$F?jD~Z#XhJSx9^Pa^R%- zU8{ZD(tmA3K#ui`>7=($Z0HiAsLsQDDt|?`LDw}pCarn1zh9uT7s)z~eY<&kg(rSt z_%MB74~>0;3OTT`Vp6B@qrzuTEH%IEaE~r$l-Ar^?et3Kl>CG1vy7L*NXc(!fLEe@ zIQi@bt7yAki(uv9k40ivCEB`n5d&Wv4ME$eQj<)sa(>nSf5B4hk}MLdPlc`vO6A70PSGN@0`|(~EE5=c_jv60cBeUk&pRa^ou`5jD-yn3e)u=`ZV7jJLym|0pEXtW>#*;nW}6q4;IsUyQrd+w>x!q^Qm ze}${mi=pgqPpQL;Ax(b9=sqXkVi=bfWx438wW9KRtR0j^>hYC^i*%YMFaLVQAw#1= z=)$S8Azbvu^wP%!KPfTsT-Zv5#%Txj;QUlf#^{rkb{&luMvt~@5zjVaw(mEK@z(4= z!4i)^EEuE$Ox=Uz8;WQT_|1sJxLsg8Ig{b>!bmj+9_B(#u zGhv7!u@FcA$9P_D>?R$|3nTY-(jGRGt+xe-)C-^bvkkv62Hu8~ znXDm%Y+n@KObK+&FFfy7rSiD*XhDDz=H(HsZ1d7fQ$PfWqO6aCfbiXZH@SxZD2@Dv z>HAI*v9Pk3f~d|p1MmFc`BftldIM0hwkD$4J9zis{oPx^kn)31eZ*j1;&F|4Nr62B z{K0}ETQrr*Kk{iHL$ODOFUH~+NJTcBsP>zJ31nb6r0zrrHPvCV*#Dt$?!dqncJ+O7 zmLmC@#nF`)Q@64!OqiBtd_*FK8^5WEc)W)a52&P~5}c5L^)B-46r1J}hHWj95|Fcv z-7YULG4SyRMC2(bC`kG8mgnW?ovjx$JjvBi&W;>L5m6;eN=pOez7ZMv0^swU7k(+u zOvi9iJd*~wJ%7ZlTy+`^Q!WkGVKPtFr-8X01qL- zT^$Lz4_NsR4?9mD#|ps*`PQ^0MdiF^IPIGV3<6fsq0xDHTk}@lE|g%4diL^UQ(5DV z_PmLD3Gxwk!aAkY(EJAO8Q}Z>99hq;A9LC2B%$d?V3Hv6?J@5e>$c6tLK6{bs2Yp2 z(#9g)D8fZ~3tzP%%4XnAJ4Au8cJr?`@7i49Z?$|831y0%IopHtg&gj?kAXp=7$8tY zgji_Rku3MW%g~f%BIX9&A8B$T!HffAMR#EJ!|1l7w#CBrfNkCEO+U>~>qoa;cC7Zy znvfucdHI=$wJMVx1X)rv z3`xtBJ`cujOIRAl3OIuqpD@tBN;fB9K|2zb?f*6X>~xMoh#WSahxPjQ#-U3=v>&@Y zxRHj{sLA-4+2A8FIMT>LpCRTaeD7r_Nj*#}4?WSePzw?`7@aI&1H(JYUL8V7z-QiC8`%5a~_mIb`(U0KJYQPv0 zhgEpr+e6B6cw~gIiVI5Mna+Ugn}#yiWL~jkP~eV3ufwK-c0aD5qvNotB{ypo;dz5t zPG}=%YOm1(uIUB__;Q~x??QXU(rCqY^T+F0H%jX~9*U*(SN=^DZ|<(oY@0IeeZwQ+ zBkYb;>MFk=!4hm{vZNDRDXc(1=uRMEj^xKCxyZ)w54|QsO4@W1a{q$0pQ-;ih6tHl zaA5=A(0UVCjV`PuHJ%yMY7mknDRa63($$}KhG43E4RFWj)`U$gzXuNIkum+j0tzV~ z6jiZr?zy>2++DmVYRrYiEQ_o*69uQ?!2y9xJ{Td5Hau1`)s3-lu~DU==6d@ z@HK!O(2Q1cR5S?>4H^;3?WxI9G2K+y z!-vaUwaof7<*(mNt1Q)uxN!;ka3^mqnxMtx?*t;E?HU;|f~|T(FaNJ~({l3PuPpUY zeeKsMb?pvGLqEhzBxfZua(~%wM+whQ?y_uy^*gAF-@TUdS*SGe`t1kQ4_M1elR%=8 z@-w%d$*R!}+d^QuuRf9OB>s)%evKsh60pn@De*Tb^cBjim49Y&ktP3dVE&?bhO9XA z@eAB?w(h%mvAs+9{-cP(t>V8GZ{A+ksHtfu_1UYbq_&y@12BUly zFK$kV%R_jzMDOjss2Fy?@+d(vNZC3x4eZ6<+^eAC;vz^QF5Xebu2tO%XcN#Z8$Om)reOllGh1aKn;Xx@6_Vl4U-NPhGgCtUD-Sd zKo6xF5Y*9N#kI2brE+ra8yp%EmNq59%uYt-v#F>Q7C0sUW@Hbd6_t0xyDX$qEOF_< zI&|n6ug6nST>vA`m8&G2|D+i$?#TTU)cT2lw^>z@zC}@88+cn`_stIuv+Z9QNufB_ zPI%uS)p6uifyMEWh^rg)X#Aq%F+l1|A(xk#R90bSVwR;q8&nLeLR;#J~Iys_uS? zS5b++wW57~fr(F|7k08i2+UKSDxJ*<(>UCUlJdFgVXURGbPFL>!C4>p*`bJogGa$a zfk6&VHEEL<3k}Wzg_s#r+JA6GSGnnfws@u|(TbfG_wnUhKVLb_kpjYTW z9Btuit#IYSc$|uoBZ3vmuegu^jp(2*mOklwI&{O>OLmILE62KRGBX2GJ?o~RP-22{ z3-#@|EmoN;Iz{EUh=#cpmM{kY(ii-}%Y#Lo2Sv^HNNnz0?m%3JuF_jR8al*oH4umW zt{SyZnmRS%bR=G~U_nC*=12Dz#f7Dyz(xa;KXbxqSdoJ#(_H|)S&A1wEIO^(gI}Bp z@Z^MG7VzL7wFFZbnxq19s#y6%1%I})wHrxYclh@ftdbp>kGL(1r?DwYa_N&rvo(hJ zu+<@v0fY$1wgE`{fa@3`L4-e=%KHsR&{4Ael=t`PKQ4{>+JkAS-a%~g6qSvzabpd^ zsxPwet(c4>{ZDHvn=7uks#~86)Lz2NVFd60ZByEuuEcU{vi!S}iGaGA_TfP!WgNfA zTi0(TnfX&ZW1O5pIK|)DC%CaBR6~vG-QJt@h2)mx5r|70N+qZXujxfkc6x_Px5fr0 z$XG<6EBHS*Z;> zI>D}9h`twQmNZl2hL3Yp=O|ezK5-yX{XtT8Klmrky;Kp?syiFx3OD1tA%}{M*zxCn zL&%LZgw4iK@^y@oa~+Y-QC}?#s4KWw?1OJ#)(WnC(rv9+4l&kEQOf=Wl-99# zePq2DRd`=Zj&-v|=d<8yQpKRX*olOu5o>MQ6qkJ8V{LGpkLf2NS0aBuWGF>e$^NKB zzpSY97q|%h06TyYk6o65OZ2<51P4d9uhDgz$%^+$QT_QhRcfK9`g9^T20?l#lPRAO zWslN)!B@35V3TwrmY+FlcXuNc0FRC6U(gpzh9{IdTG_v_=DktQ9eXnUf#NJgLk#xS zX@zkX$E2&loeHxK`(YnNl6ANI8E3aC`d$r;zcM$wMU4&2j=Iu)ssiu-EJzCLF7|Kn ze4j)*yL#cEHoBWn&PAXLr-87hLF|7xUC?>IYQbWwmz01$I~sOL;qTWJWFso&N~O%_ zsAWa(tO~1#`D_J#l3sFc1OR|qeIH~6S7cvljw3ONgxbqy$VPqx++9hLv5_Ey1417m zXOz7Ikl15Y%SNd^`^jfG+$~-mOCjOshg6TIq*?s3_U=zxZTcWov08qtjyeAyq`+M$ zJ$-M|_=`iI)z&s(z_EM&ReZ6OKkRz?`w7`=`#Y9PsM%d%`kj-Ot`55-tswXp#0}f} zO5>e9!cp+)2mWbv2<|NurjsYPlM}?InJcX?MA=k|ph+;>s@F%b@au~zpjkzY5>HQ1 zu{&QASq;*`*)gLmuKJ_$7r5yURI%&(mZa^k+%y(XCPWE$cLsMcd}{puwhK|i(LKhk zL6{epU#Wc8Y0({2W<^};>Yt(_adgTbZ-;g!9IiA-e?&}29$814#siWHPT}^=*-N7$ ze#Gxkg`xMFd(v+CZMWa9X7ErU&DWKVid8OFh6lrHs$Ws*Y<)E4R$rzvq_yoWoQt@r ziMD)bmm`R#=QV(#$!_!fOLK)}{(PE=rp~h1ks8iLU$*!W)0SIu=V+94)#U0YrZ{wE zA{T!@u%-r|I*U1*alSAKiK)eu(e8rG@SR7)3V}h#w#&g;f7sRO`e$kC(8A_`ewJ*e6zS&&YK|_D6Z|pVV&1MDt4&wc?aMuadE5GsimN3#_j!d7bQ_0Q*SS04r`(&SS9lhI5L zHI&hq=g@7UOqs#dGP55iCiIeGOWWO};NuHJ6|%9m`$6g1cpybfcfZ$6$X@4~QwJs; zD<`obU1?w8mQAyK$T%Dl>rRo0bkHY_>Aa*d$^|NY9g?)MM9AB*# zLVT}RN>vzzLRv)l<&SDz3~~(NC@B+J%T(o^#9c#^^v+8I*hJS)2(*1md$@wGO4mVS zqIn5QVtUf4noA{i7Q(_>?8<{P|ENa15jErQpgE05A*EA;bRfeef@T~U3suH&6x2CW z>3mT*$t862N0uyTDF^cy^MHG#Kvh5MvvO+0XD}?Y<-$hJ7VFXFzYWMWty(wSZ57p9 z#zvtZ!9{_5n*LE(-QQ?WlO>4T=jW$!Zlm{Fs zEUj&nI>NSe2-cPDyN7PmY2w8VDK)od9#|-Lz>VrJ0`u4rfU{PyRXjwBVG+l&vq}xN zDn!WaBV{!^lBW192VGF(EMNs*ZQJMPckuOv$&*yUaP=rrvRsHl4L}wv5PFO%)GHxL zM#GOcMzR)X+DoDOK1%y*kO>9!Mq~KNiNWH(V)u)67cWJ1obg6wwmpR_a%}*cKeSd} zcLK%kBkJ}e>L4MonpDGACMDzLU75G)RYm9A(}lYwSPK*l*IXd-WWh$U&}JQ;vPrxI z*1p1z&`yyP6+nRfonOYu<8K6gyY;Faa$xqC2%S{<(QEh}FYmhEtpSR*Dq_NDBmu2z zH1Pc)m8#tR(lp_n6G%NjAH>hdGv`$LSYDyL=FDg~!Y2QoL2dUxozfk01_?n8F+kAzY$i)(iSy%KAFun}Ntg_^S z!>{kb*AT)RQJ^96th2?0duGPOnv(G3uL8I%Vl1MiDbKv}0?!0hn$`-v za2=f<^D(icB02#oI{jG6V{L3A_wIwMRE;X}5=WRJgN&1>5Ky-{wNyGC(NROnHWptp&OyJ&j@!l(!(-SE(`;Q~sKJV%ZGe-B<&3b1J>j zod3+0=QyR{{|(DeI3W1`h+Q=&>gSBhZ>nBN=J*4@%P=j6(t^bT7;BFek!roejR`n{ zl(OT_=@*nqsE-moxC+Plb~OesG$&hV3m&q_9|R4xTZ0j%uX}u;9Nv`U`-a!f^tFpd zEZ4z_9GTZ;L}DBuPjA7kF#9uDipBc92V~rB68uJkNmYa&(ESeMzash&g%q?tMmAOj zzGrkrDF16(vHhM@RP1<&u^Hs=>&i1h`|}xNsl+j~c+}7T6BDK>Mj~gkiND8skb7QY z+_BSxlY<}j>Uf11B0f-|F(x@M^K%+NV+eQ$Bi6Kl{#AX%&r&s!Y(#8Qxc( zKEiXUO{f0Y=Ye*WKB1(><_9uu4D`?^BS$$?hO|9V0uQbpd6Rvl|4$!5EG|Dc7B zZ!}9WvWLZ#wLANtoK?T!P_w=?zVBvAB(HMQDW^GTJp7B7FJaf_ZolI#rN67sD);kL z@)WD2w)r2|0mgJTDmjMd(y;=Gclw!Urhx2XWVYd;YWlJzOatQ#-@o4srUrv=juywg z?#Cnv+gSy@C%|+BqnQpI48d1k}D`#XuhX-rNaeg+}Bm%CzK5|sJXj_7;V?0 zI5O#4qIX2s+t9vhc1w$fK2D*OiJ!>}t#TE+!sI`IQ~3dimQogJ_B9X%Ot{4Z4_%3eJ1% z7)M_w5yDR7c}b|;o+h9oPB27M0+MX{iY>kyebQ*LP8$6WmB7-n#PV0XWmdz!(tl|s zJ5A2YbdZ49=GC~*S7k?ytmzUSG{70|hcYDAmik_5V?b^rq^MXY9dx3=Oo&6b)fZx4 zBauRBi_kv{&IkVrd3`0t+3h7~k_^piC#CR7Q~5^_Z@5{adY~M29S1KWB+-za1c(W& z-s_UH6#zv&|B+hVr$u5+jtCLrNS(bt6t76x%j0Pw;4$qm-0!pt{}ahnqiT24y|6zw zh1|i-m8^L$NHP1EK>U@T3_dA66y9^!L|({b3-;?S9y(G-dMoWR2JTMm{k4vilk?!Q zTuh7|E)mxc@yzTmkyQscTLZh~i5j6yg-GIuU@10frN2YJaI{d~&BDKTofoXkp15pQ zj*eD>)~VfsN&j?r`1$=U*^y7U?Sdg2b?L9+(J>M(HYj$wEx~brD860VJSzTa5ME=D z6qBQ?HL+vC^xHz%e2Qj#4pt17ppM1x`zL1qe#49BhOp#9i@zr>mvnQPd&Pqp{ZP7< zO?s^le{4kSV`30SHy&U-d!2GRntMe6vciMOH_^3BgKVrqE5-*4YQ5B{kq&zo&QA*u zWxV3?@gqmKtOlngk+QX)B_~XRg_2TdB^r5u#fwbN4loZ#{t(kbv@#|5&%_8kEo1k8 z10$Q{S*iPYa`J*{+YF(Zs^^n#t7Q9{{2J`EEIk#O1P89Kn5X~rTpCn1*E3s6ER{qO zzQi!l-dzB=u#x?(*h-^IR@3;jFD=S>cdK1Yq=(7Jq{C_xMi*#u6{l(gaivCZ@~ipL zU)^6YNw9+^Cmp0@hT}8i1Jcye#N0G8igsr#lf8@6>*s06+5tfuli!13v90wrLfc;j z2idka-I)i*Dmdb-U2T-ILqyoU-8AuryH)0zf_j5)%qae3i&2Zf~;%x-zx!C zVMevC1N7-^9PdwOU|{J)f!S<;sl2**IHo}Uqu$(`kMs4a(|f2E-_7;JobJs1?Hz|Koy~N8 zYn19u2s3$dPK-MA`<92^I|ae7RSo~Ik82NyGHv6rv`o>=d}D-|8HWfd=cREP$3}%I zL#AcKI<80&B{Ge5=rfHlgOZ%uX^65p6=8;$C^@#4Y=dbkS)&xYI_&dO*Y0(FyWc-E z^IY@3&vQTb@AtgV{oeQQeGeJA`ul5WBLzXO!vh1USFe(1(B5_53w$~imQ9S!1In%Hs$n26>+3`tEEm5!qe8vDBLgV*jz5zCtyN zQ2z`i5a4HmHukFEvokq;~6gSLIn2Tsv3swEqUG4H9q zv9I`F$}`PX{6rL(RyTK|$bI?N;Wwx5&Wa1~iH}{i%thR_o%F}-ioQgM*@(c)-(811Fe92u8dpjB`8Zp_iQPkzgs-?u$fr6eanfxET#+~*g5f5?Y&K5lb{2^@3MH_U}fymB$)kMq)W_6wIdcM!_x_2JplUwyFQ z7$%&l@<}GRcq#O9uSOYlEs5O$AB}rQENn0VqdJaT&vl&B-;of} z7$}7fOds8_0%G>PbPr4gyFT)$+tI?gNFwh-Trt{OsOvn?!Y0~}Gw1~gc`P>8$U>#q z=1kq)jb5qAa`GPb``PP1`02bR1wB2nWJIbovqC9<%;k0RbX{(|+05Ex$QzW3cIvHL zsEIY$*Z3EYb2!6IpXBa}Lu@ayep`MffB^!Xs zXf>&WUoFh5W#zz2X#edD3r1O%HnzfY1{QkuFhKE}?Vh{glYpuz9FnOGh@a<6iS8s& zMA@gG%ujhw@h(NRW&Zqw$IbQW%x%|Q9Rjz`B#vZ+C1R?+W?;R^SyL@uCfAfag+nJD zjfvV7zcF~AE;Ak#2nj{kMl%p8PX-FLIR!JE=~=%14EE4j{6D9ikQvPr9TvDf;~4(Vms?UUxhi6s8P@ zyBl>k@g{MY6e*+OZshE@ow311A*6EN4xQ+nQ`@6+;-1{_nce#_Afq-SH{;%pg2q^P zXYOc(=e7q9ZZUA$Spw5%G=p&)sa+|``OeH4docTfbAvJvhAS(K}d6 z<_h00j$4M!MF9~6(J+~O4YN^dF9!7I*CZ!zrbsq8q!S65X9rx7lOa zda-agYz6E)$r1<3JN$N?w6E z#U$Mn4Wi|1J*+-q0jRi$YZS#^RIq!T0O|qbv@iNHIt&y^uUN%%mNAwgbC6U)e{hdFXW^&}DtEx00JhpmQAV zq&Rj)H{j_*OaKDNwj`;DKbBjC?<<51~B){D6c^K|%>NXj;gRyCBDYT68g9QKR#SE{c_yDjtKbxat5Nlp&^xb>WCGAFbtF| zX<%$RUC+2x4y6Gcf-J*_%j!+>U{GV@svEs_LH@|#G}Pz5op}9h4}%FWzH^yY#EQR# z5H7_CkIB%UXV>z*1|}E}8H$SwfVB2-rIA}#@|TzLAqcTft@^SN34lD*j0#9HA_h(j z#GRZzjC!*Wenk~@Pp5qme*jiX;ke&Fn_J!@#0|!uSfG=(bl`~hw>z6&o6v_GYM(Kv zE#g#1hm;Cb))=B%Dg6L)95utwZ#?Yz&ahCrqL3EKRc>i_@% diff --git a/.resources/ee036193cf51abbd36872be2bb81cae3c817e286c7600483a9867641b6babf17 b/.resources/ee036193cf51abbd36872be2bb81cae3c817e286c7600483a9867641b6babf17 deleted file mode 100644 index 93ea58299b7776e813d0933cfbd0ab9ca3aeec56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1758 zcmV<41|j*0P)&X`*6lO-!m3 zQngwaG=ezn4yY_M?23XcI?Tqf7KNwxy#o|yyTf9H@sRv7XU=(__rkfE`|#dnL^_=w z46Rm&o^B&l_02piX1UQiL$5c$*wyt)Zal1J;KrEer=m3&3}|gvBTHV%$L4i=TE=9z zYfn4ctNhYBRMkGAUfI!7uPke}wA3rhnk_B$%Ccrl`?`81GT(qL^U&+{=+x-=#<19Y za+YiB=!CjcYf+zyR%mC~(@tf(_OwDf!=833+ZEDMuPp1fwA3rhx-BjB%Cc@t`!@AT z#3o^AG+J~UyP)KZql&|5H1ZQ_w0a&L*NEmet|@s+J|4|8*tjlkd|qiiD(jm0c-pj_ z+qH0i)HQh(A5Ta-mF)^>S%2i*&Zyva2KCCmmU`v5mU`v5mU`v5_I311#9WBMjAL-1 z7xfQY(A3Zb^ytyA>%@Rw!!y{Wg|59Fw{!3D@o1jWuT}HoOYbVtQ1j5F<#Nue?KEi> zN;HmX9qg5ERI5T`?TFT?`#gnSO=-KcQA@pYTuZ%jT>E-@B^o_V#a0{*kDel@tPvSC zS`-<8JPn7|M1dZ-)$tN1%hY_#a&ir07mSgOFI+B0=3$jxeu;aJ$JiC6sfSu#sk4JWj ztDnATk$>B?tY2GCWFYmg97M`e;qu8^h*u@R{qv1HZY$YqJUmw?jKr_Pavoewyei(J zPFl-4X-R8dBduj^GTO1zR_r|3Ft;RO{|PhW2yvT>&z3DlbVMjm%p%k4D9e{bV1dLF zl6fxh7te#A`v;JYz+!6%)r9Kix!I@<@Nk9OyYJxZFIMufnB~mJS<{ZM3DwPWq_vJv zO{i|3Bdv9WYC?7M9BHj1R1>P3=j>_6E|{~6Ane>bI~B!N9LpmYBfnUIs+tB=R@b9K zWulTpRojT{Tsija{Q*J23*hA=fnPuXeEs|h0sI2y!_{4kxHW5eSj=+f;|PKvW-=nf z$Zc2b>N&dz!p?cI(^JvmAt=75#4{uCq;nW;dZ1lzil27_*>{SeP$+Qr>^X#mg~7|q z3sR{RzP`SM9sK(G^ zA41>25NcZoP~AF=f3of%H#Y}$b#*v=_zLk1!MnFm1-&VWe4Eh+SD^`STL zw`mpVMpho2dE73lKr?41{hVox{up{+qVn+|N*+8yc5XiM3QAB|tib;L2Ot)U=|Cs| znFm1-&VWeG9%Rwz(9))cuDt`dI$mHaXC5DiFGNmZIUYV6LS1V=zv5u8%H}>O8hW5= z`4>&4=2l>V|!XAqCWZ% zIR*Do{`dv*R7Mokbfb`?sJ0g+b-gIA?M6Yh0g6V>P#$+fCffxM4>6>4AhZja2SE_d zfJn=}yTr+5=05|2Oxc_Jnx68FizbnVy8@sVHD*=15WH?=N30F!Q zk+l7LxVg^5{J{AZlM|MZc@PBQ4A?M_3@i%`#*N%kls5L^cwPp+y|NOq7lIIbJ{VtK z3C5Z~mLf8CDZJe!NKD#>l$71@^z@{=tpp(RAPB-4uxTEVp+UHoa~J95H?aOvG-59X z;j6#Hu>K;}U>8&VE`iDXK!In3uJW;Qm= zBOTGE;B=43XaYsB7lQ$ws zmVk9haR>|vfR~3CqGMvPNtTHC ~ 75 kb -# req = Request(url=upload_url, method='PUT', headers=self._headers, data=obj_data) -# resp = self._opener(req).read() -# msg = '** Successfully uploaded %s to %s bucket!\nResponse: %s' % (obj_key, bucket, pformat(resp)) - resp = system.net.httpPut(upload_url, putData=obj_data, contentType=content_type) - msg = '** Successfully uploaded %s to %s bucket!' % (obj_key, bucket) - l.debug(msg) - return {'code': 200, 'message': msg} - except Exception, e: - msg = '++ Error uploading %s to %s bucket: %s' % (obj_key, bucket, str(e)) - l.error(msg) - return {'code': 400, 'message': msg} - - def fetch_upload_url(self, obj_key, bucket=None, region=None, expiration=3600, content_type="image/svg+xml", **kwargs): - """ - Retrieves a pre-signed URL for the obj key and bucket and the `put_object` client method. - Caller then uses pre-signed URL to upload the file to S3 directly. - - :param obj_key: Path and object name of the object to create in S3 - :param bucket: S3 bucket to write data to. - :param region: AWS region that hosts the target S3 bucket. - :param expiration: int; number of seconds until the link expires (default = 3600, 1 hour) - :param content_type: str; the content-type of the object (default = 'image/svg+xml') - :return: str; presigned URL as string. - """ - l = self._logger - if not bucket: - # if no bucket provided, use repo bucket name from stage config - bucket = self._repo_bucket - if not region: - # if no region provided, use region name from stage config - region = self._s3_region - l.info('Fetching upload pre-signed URL for %s object in %s bucket' % (obj_key, bucket)) - operation = 'fetch_upload_url' - params = { - 'bucket': bucket, - 'obj_key': obj_key, - 'expiration': expiration, - 'region': region, - 'content_type': content_type - } - try: - resp = self._send(operation, params, print_resp=kwargs.get('print_resp', False)) - l.debug('** Fetching Upload URL Completed for %s' % obj_key) - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def add_new_site(self, site=None, bucket='both', **kwargs): - """ - Adds a new site folder to either repo, source, or both buckets - - :param site: str; name of site/WHID. Must be 4 chars in format of "ABC1" - :param bucket: str; name of the bucket (S3_REPO_BUCKET_NAME, S3_SOURCE_BUCKET_NAME, or 'both') to add site folder to - if = 'both', then site folder will be added to both buckets - :return: dict; {'message': str} summarizing the folder add operation - """ - l = self._logger - l.info('Adding site %s folder' % (site)) - operation = 'add_new_site' - params = {'site': site, 'bucket': bucket} - try: - resp = self._send(operation, params, print_resp=kwargs.get('print_resp', False)) - l.debug('** Adding Site Complete. Successfully added %s to %s bucket(s)' % (site, bucket)) - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def download(self, obj_key, bucket=None, region=None): - """ - Downloads a JSON object from S3. File is received as a compressed binary Parquet file - :param obj_key: Path and object name of the data stored in S3 - :param bucket: Bucket the target object is stored in. - :param region: AWS Region of the target bucket. - :return: JSON data object generated from the Parquet file stored in S3 - """ - l = self._logger - if not bucket: - # if no bucket provided, use repo bucket name from stage config - bucket = self._repo_bucket - if not region: - # if no region provided, use region name from stage config - region = self._s3_region - # - Only used for logging; extract dates and data source from the object key - obj_key_parts = obj_key.split('/') - l.info('-- Downloading %s object from bucket %s' % (obj_key, bucket)) - operation = 'download' - params = { - 'bucket': bucket, - 'obj_key': obj_key, - 'region': region - } - try: - resp = self._send(operation, params) - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def get_presigned_url(self, bucket=None, obj_key='', client_method='get_object', expiration=3600, region=None, content_type="text/plain"): - """ - Generate a presigned URL to object from S3. - Used primarily for retreiving image objects in Ignition - - :param obj_key: str; uri of object to fetch - :param bucket_: str; bucket name where object resides - :param client_method: str; (default = 'get_object') - :param expiration: int; number of seconds until the link expires (default = 3600, 1 hour) - :param content_type: str; the content-type of the object (default = 'text/plain') - :return: str; presigned URL as string. If no client_method or error, returns None. - """ - l = self._logger - if not bucket: - # if no bucket provided, use repo bucket name from stage config - bucket = self._repo_bucket - if not region: - # if no region provided, use region name from stage config - region = self._s3_region - if not content_type: - msg = 'content_type cannot be null!' - l.error(msg) - raise InvalidParametersS3Manager(msg) - l.info('Fetching pre-signed url for %s from bucket %s' % (obj_key, bucket)) - operation = 'get_presigned_url' - params = { - 'bucket': bucket, - 'obj_key': obj_key, - 'client_method': client_method, - 'expiration': expiration, - 'content_type': content_type - } - try: - resp = self._send(operation, params) - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def delete(self, obj_key, bucket=None, region=None): - """ - Deletes a JSON object from S3. File is flagged for deletion in the S3 bucket - :param obj_key: Path and object name of the data stored in S3 - :param bucket: Bucket the target object is stored in. - :param region: AWS Region of the target bucket. - :return: Boto3 `delete_object` response - """ - l = self._logger - if not bucket: - # if no bucket provided, use repo bucket name from stage config - bucket = self._repo_bucket - if not region: - # if no region provided, use region name from stage config - region = self._s3_region - l.info('Deleting %s object from bucket %s' % (obj_key, bucket)) - operation = 'delete' - params = { - 'bucket': bucket, - 'obj_key': obj_key, - 'region': region - } - try: - resp = self._send(operation, params) - l.debug('** Complete. Successfully deleted %s' % obj_key) - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def list_objects(self, bucket=None, prefix='', start_after='', region=None): - """ - Fetches a list of objects within a specified bucket, prefix, and starting point - - :param bucket: str; Bucket target object is located - :param prefix: str; Limits the response to keys that begin with the specified prefix - :param start_after: str; StartAfter is where you want Amazon S3 to start listing from. - Amazon S3 starts listing after this specified key. StartAfter can be any key in the bucket. - :param region: Region of the target S3 Bucket - :return: Boto3 `list_objects_v2.Contents` response. This consists of the following keys per object returned: - { - 'ETag': str; unique id, - 'Key': str; path to object in bucket, - 'LastModified': datetime.datetime(); time object last modified, - 'Size': int; size in bytes of the object, - 'StorageClass': str; type of storage used on the object - } - """ - l = self._logger - if not bucket: - # if no bucket provided, use repo bucket name from stage config - bucket = self._repo_bucket - if not region: - # if no region provided, use region name from stage config - region = self._s3_region - l.info('Fetching list of objects from bucket %s' % bucket) - operation = 'list_objects' - params = { - 'bucket': bucket, - 'prefix': prefix, - 'start_after': start_after, - 'region': region - } - try: - resp = self._send(operation, params) - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def list_object_versions(self, bucket=None, prefix='', region=None): - """ - Fetches a list of object versions within a specified bucket, prefix, and starting point - - :param bucket: str; Bucket target object is located - :param prefix: str; Limits the response to keys that begin with the specified prefix - :param region: Region of the target S3 Bucket - :return: Boto3 `list_object_versions.Versions` response. This consists of the following keys per object returned: - { - 'ETag': str; unique id, - 'IsLatest': bool; only true for the current version, - 'Key': str; path to object in bucket, - 'LastModified': datetime.datetime(); time object last modified, - 'Owner': {'DisplayName': str; name of owner/group, 'ID': str;,} - 'Size': int; size in bytes of the object, - 'StorageClass': str; type of storage used on the object, - 'VersionId': str; ID of object version - } - """ - l = self._logger - if not bucket: - # if no bucket provided, use repo bucket name from stage config - bucket = self._repo_bucket - if not region: - # if no region provided, use region name from stage config - region = self._s3_region - l.info('Fetching list of object versions from bucket %s' % bucket) - operation = 'list_object_versions' - params = { - 'bucket': bucket, - 'prefix': prefix, - 'region': region - } - try: - resp = self._send(operation, params) - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def list_object_delete_markers(self, bucket=None, prefix='', region=None): - """ - Fetches a list of object delete markers within a specified bucket, prefix, and starting point - - :param bucket: str; Bucket target object is located - :param prefix: str; Limits the response to keys that begin with the specified prefix - :param region: Region of the target S3 Bucket - :return: Boto3 `list_object_versions.DeleteMarkers` response. This consists of the following keys per object returned: - { - 'IsLatest': bool; only true for the current version, - 'Key': str; path to object in bucket, - 'LastModified': datetime.datetime(); time object last modified, - 'Owner': {'DisplayName': str; name of owner/group, 'ID': str;,} - 'VersionId': str; ID of object version - } - """ - l = self._logger - if not bucket: - # if no bucket provided, use repo bucket name from stage config - bucket = self._repo_bucket - if not region: - # if no region provided, use region name from stage config - region = self._s3_region - l.info('Fetching list of object delete markers from bucket %s' % bucket) - operation = 'list_object_delete_markers' - params = { - 'bucket': bucket, - 'prefix': prefix, - 'region': region - } - try: - resp = self._send(operation, params) - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def copy_single(self, source_bucket=None, dest_bucket=None, source_key='', dest_key='', region=None): - """ - Method to copy a single object from source bucket|key to destination bucket|key. - - :param source_bucket: str; Source bucket name to copy from - :param dest_bucket: str; Destination bucket name to copy to - :param source_key: str; Source object key name to copy - :param dest_key: str; Destination object key name to copy to - :param region: Region of the target S3 Bucket - :return: null or ClientError; returns null if successfully copied - """ - l = self._logger - if not source_bucket: - # if no source bucket provided, use repo bucket name from stage config - source_bucket = self._repo_bucket - if not dest_bucket: - # if no destination bucket provided, use repo bucket name from stage config - dest_bucket = self._repo_bucket - if not region: - # if no region provided, use region name from stage config - region = self._s3_region - l.info('Copying %s object from bucket %s to object %s in bucket %s' % (source_key, source_bucket, dest_key, dest_bucket)) - l.debug('++ Copying data in S3') - operation = 'copy_single' - params = { - 'source_bucket': source_bucket, - 'dest_bucket': dest_bucket, - 'source_key': source_key, - 'dest_key': dest_key, - 'region': region - } - try: - resp = self._send(operation, params) - l.debug('** Complete. Successfully copied object %s from bucket %s to object %s in bucket %s' % - (source_key, source_bucket, dest_key, dest_bucket)) - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def fetch_site_list(self, bucket=None): - """ - This method will compile a list of all sites configured in the requested S3 bucket - - :param bucket: str; the S3 bucket to fetch sites from. (Default = S3_REPO_BUCKET_NAME) - :return: list; array of whids present in the S3 bucket - """ - l = self._logger - if not bucket: - # if no bucket provided, use repo bucket name from stage config - bucket = self._repo_bucket - l.info('Requesting site list for bucket: %s' % bucket) - operation = 'fetch_site_list' - params = { - 'bucket': bucket - } - try: - resp = self._send(operation, params) - l.debug('** Complete. Successfully returned %d sites for bucket %s' % (len(resp), bucket)) - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def fetch_object_list_by_site_and_bucket(self, site='', bucket=None): - """ - This function fetches the list of file objects - from the S3 folder specified by the bucket and site args supplied. - - :param site: str; whid name of the site to fetch from - :param bucket: str; name of the bucket where the files reside - :return: Dict[str, Any]; {'instance_configs': Dict[str,Any], 'flow_views': List[str]} - """ - l = self._logger - if not bucket: - # if no bucket provided, use repo bucket name from stage config - bucket = self._repo_bucket - l.info('Requesting object list for site %s in bucket: %s' % (site, bucket)) - operation = 'fetch_object_list_by_site_and_bucket' - params = { - 'site': site, - 'bucket': bucket - } - try: - resp = self._send(operation, params) - l.debug('** Complete. Successfully returned object list for site %s on bucket %s' % (site, bucket)) - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def query_audit_table(self, start_time = None, end_time = None, operation = None, copy_option = None, - destination_bucket = None, destination_view = None, destination_object_key = None, - destination_site = None, destination_stage = None, destination_version_id = None, - error_message = None, error_occurred = None, expires = None, - source_bucket = None, source_view = None, source_object_key = None, source_site = None, - source_stage = None, source_version_id = None, timestamp = None, username = None, - return_items_only = True, **kwargs): - """ - Query/scan the audit table and return records matching the supplied parameters - - :param start_time: Optional[Union[str,datetime]]; if provided, will define the beginning of the - time range to filter on the `timestamp` column. `timestamp` column is a string in the format - "%Y-%m-%d %H:%M:%S" - :param end_time: Optional[Union[str,datetime]]; if provided, will define the beginning of the - time range to filter on the `timestamp` column. `timestamp` column is a string in the format - "%Y-%m-%d %H:%M:%S" - :param operation: Optional[Union[str,List,Dict]]; match on operation column - :param copy_option: Optional[Union[str,List,Dict]]; match on copy_option column ('svg', 'json', 'both') - :param destination_bucket: Optional[Union[str,List,Dict]]; match on destination_bucket column - :param destination_view: Optional[Union[str,List,Dict]]; match on destination_view column - :param destination_object_key: Optional[Union[str,List,Dict]]; match on destination_object_key column - :param destination_site: Optional[Union[str,List,Dict]]; match on destination_site column - :param destination_stage: Optional[Union[str,List,Dict]]; match on destination_stage column - :param destination_version_id: Optional[Union[str,List,Dict]]; match on destination_version_id column - :param error_message: Optional[Union[str,List,Dict]]; match on error_message column - :param error_occurred: Optional[Union[bool,List,Dict]]; match on error_error_occurred column - :param expires: Optional[Union[str,List,Dict]]; match/filter on expires column - :param source_bucket: Optional[Union[str,List,Dict]]; match on source_bucket column - :param source_view: Optional[Union[str,List,Dict]]; match on source_view column - :param source_object_key: Optional[Union[str,List,Dict]]; match on source_object_key column - :param source_site: Optional[Union[str,List,Dict]]; match on source_site column - :param source_stage: Optional[Union[str,List,Dict]]; match on source_stage column - :param source_version_id: Optional[Union[str,List,Dict]]; match on source_version_id column - :param timestamp: Optional[Union[str,List,Dict]]; match/filter on timestamp column - (overridden by `start_time` and `end_time` args) - :param username: Optional[Union[str,List,Dict]]; match on username column - :param return_items_only: bool; if true, strip the `Items` from boto3 response, - if false, return the entire response object - :returns: List[Dict[str,Any]]; array of items that match the scan filters supplied - """ - l = self._logger - # build params to send to Lambda using `locals()`. I know it's frowned upon but I'm not trying to type all that!! - params = {k:v for k,v in locals().items() if k not in ('self', 'l', 'kwargs') and v not in (None, '')} - # override `operation` arg for pass to `_send` method, as the value to query is already packed in `params` - operation = 'query_audit_table' - try: - resp = self._send(operation, params) - l.debug('** Complete. Successfully queried audit table using supplied query params') - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def check_user_site_permissions(self, whid = None, obj_key = None): - """ - Check if a given username has permissions to the site folder in the flow-view S3 bucket - - :param whid: str; warehouse id/site name to check - :param obj_key: str; [OPTIONAL] if provided, will check user permissions to the object key, rather than the whid - :return: Dict[str,Any]; { - 'code': int; 200 if the user has permissions, 403 if Forbidden to access - 'message': str; explanation to display, if needed. Will include necessary group memberships missing if Forbidden - } - """ - l = self._logger - operation = 'check_user_site_permissions' - params = {'whid': whid, 'obj_key': obj_key} - try: - resp = self._send(operation, params) - l.debug('** Complete. Successfully checked user site permissions on backend') - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def fetch_user_site_permissions_and_area_list(self, username = None, stage_name = 'beta'): - """ - Fetch the sites for which the user has flow-view write permissions for the given stage. - Also fetches the list of "area" names that flow-views can be created for - - :param username: str; user alias/id to fetch sites for - :param stage_name: str; stage folder of flow-view resources to check permissions on - :return: Dict[str,Any]; response object including a list of sites and area names. - { - "code": int; 200 if successful call, 4** if user not found, - "sites": List[str]; List of site names, - "areas": List[str]; List of valid flow-view area names - } - """ - l = self._logger - operation = 'fetch_user_site_permissions_and_area_list' - params = {'username': username, 'stage_name': stage_name} - try: - resp = self._send(operation, params) - l.debug('** Complete. Successfully fetched user site permissions and area list') - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - - def fetch_master_area_list(self): - """ - Download a master list of valid flow-view area names, stored in S3 - - :return: List[str]; returns list of area names - """ - l = self._logger - operation = 'fetch_master_area_list' - params = {} - try: - resp = self._send(operation, params) - l.debug('** Complete. Successfully fetched master area list') - return resp - except HTTPErrorS3Manager, e: - return {'code': e.code, 'message': e.message} - -class InvalidOperationS3Manager(Exception): - """ - Invalid operation requested for S3Manager class - """ - def __init__(self, code=400, msg='Invalid operation requested for S3Manager class'): - self.code = code - self.message = msg - - -class InvalidParametersS3Manager(Exception): - """ - Invalid parameters for S3Manager operation - """ - def __init__(self, code=400, msg='Invalid parameters for S3Manager operation'): - self.code = code - self.message = msg - - -class HTTPErrorS3Manager(Exception): - """ - HTTP Error for S3Manager Request - """ - def __init__(self, code=500, msg='HTTP Error Encountered Sending S3Manager Request'): - self.code = code - self.message = msg - \ No newline at end of file diff --git a/.resources/ceb1bd53ebf03f508b238269c4d0cd6fb5e7e5791cecbc0d9193b59d4f89cb40 b/.resources/eeb4790e24903137b5325eaea70843bca8da8b3a96b31e3a8799182fcde2ff0c similarity index 100% rename from .resources/ceb1bd53ebf03f508b238269c4d0cd6fb5e7e5791cecbc0d9193b59d4f89cb40 rename to .resources/eeb4790e24903137b5325eaea70843bca8da8b3a96b31e3a8799182fcde2ff0c diff --git a/.resources/eee9e72ded7f967144f636fcb1adc95b25fa4583fc0f4a899b3055f437cfe718 b/.resources/eee9e72ded7f967144f636fcb1adc95b25fa4583fc0f4a899b3055f437cfe718 deleted file mode 100644 index c4943687..00000000 --- a/.resources/eee9e72ded7f967144f636fcb1adc95b25fa4583fc0f4a899b3055f437cfe718 +++ /dev/null @@ -1,124 +0,0 @@ -import re -import os -import json -import sys -#Stores the page configuration for the project. -#This global variable is accesible form all gateway scoped events using "." notation -#congig.project_config.global_project_page_ids -global_project_page_ids = {} - - - -def get_project_config(): - """ - Function searches through the project directory Detailed-Views. - It looks for all the source ids on each Detailed-View and returns a - Dict with source ids as the keys and page ids as the values. - - Args: - param1: self. refrence to the object being called. - param2: source_id. The source_id of the alarm. - - Returns: - N/A. - - Raises: - KeyError: Will log an error message to the console if the basepath is not found. - logger = {whid}_get_project_config - """ - if not global_project_page_ids: - try: - basePath = os.getcwd().replace('\\','/') + '/data/projects/' + system.util.getProjectName() + '/com.inductiveautomation.perspective/views/Detailed-Views' - files = os.listdir(basePath) - files_found = True - except: - whid = system.tag.readBlocking("Configuration/FC")[0].value - logger = system.util.getLogger("%s-get_project_config" % (whid)) - exc_type, exc_obj, tb = sys.exc_info() - lineno = tb.tb_lineno -# logger.error("Error: %s, %s, %s" % (lineno, exc_type, exc_obj)) #JCM - files_found = False - if files_found: - for i in files: - jsonPath = basePath+'/'+str(i)+'/view.json' - with open(jsonPath, 'r') as f: - data= f.read() - obj = json.loads(data) - for child in obj['root']['children']: - tag_props = child.get("props",{}).get("params", {}).get("tagProps") - if tag_props: - source_id = tag_props[0] - global global_project_page_ids - global_project_page_ids[source_id] = i - -def open_pop_up(message): - error_message = message - system.perspective.openPopup("ErrorPopUP", "PopUp-Views/Error", - params ={"Error_message":error_message}, - showCloseIcon = False, modal = True, - viewportBound = True, - draggable = False, - overlayDismiss = True - ) - - - - -def navigate_to_url(self, source_id, page_id): - url_to_navigate = "/DetailedView/%s/%s" % (page_id, page_id) - navigation.amzl_navigation.set_session_variables(self, source_id, False) - system.perspective.navigate(page = url_to_navigate) - -def source_id_lookup(self, source_id): - """ - This function looks for the source_id in - the global_project_page_ids variable. - If found it returns the corrresponding page id. - If no page id is found it will search up the hierachy - of the source_id until it finds a match. It will then - navigate the user to the correct page and set the session - custom variable search_id. - - Args: - param1: self. refrence to the object being called. - param2: source_id. The source_id of the alarm. - - Returns: - N/A. - - Raises: - KeyError: N/A. - """ - logger = system.util.getLogger("Naviagtion function") -# logger.info(str(global_project_page_ids)) - page_id = global_project_page_ids.get(source_id) - found = False - if page_id: - found = True - navigate_to_url(self, source_id, page_id) - else: - items = source_id.split("/") - length_of_items = len(items)-1 - while length_of_items > 0: - items.pop() - source_id = "/".join(items) - page_id = global_project_page_ids.get(source_id) - if page_id: - found = True - navigate_to_url(self, source_id, page_id) - break - length_of_items -= 1 - if not found: - open_pop_up("No page id found") - -def get_child_scada_projects(): - """ - This function returns an alphabetically sorted list of - child SCADA projects, that inherit the SCADA_PERSPECTIVE_PARENT_PROJECT. - Each of these projects follow the naming convention "{WHID}_SCADA" - - :return: List[str]; List of project names on gateway - """ - pattern = '[A-Z]{3}[0-9]|K[A-Z]{3}_SCADA' - all_projects = system.project.getProjectNames() - return sorted([x for x in all_projects if re.match(pattern, x)]) diff --git a/.resources/f0469537e04facb5ac7e013b14737f8eaad2ef9fcd88ebae457b0c943ba4ab06 b/.resources/f0469537e04facb5ac7e013b14737f8eaad2ef9fcd88ebae457b0c943ba4ab06 deleted file mode 100644 index 1b67501b..00000000 --- a/.resources/f0469537e04facb5ac7e013b14737f8eaad2ef9fcd88ebae457b0c943ba4ab06 +++ /dev/null @@ -1,15 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FF6000B3", - "borderColor": "#000000", - "borderStyle": "solid", - "borderWidth": "0.5px", - "color": "#000000", - "fontFamily": "Arial", - "fontSize": "14px", - "fontWeight": "bold", - "textAlign": "center" - } - } -} \ No newline at end of file diff --git a/.resources/f0b285a16f8e35a2d05c4a68bbd10a60615fffbaadad54e3fbc7b4c1a5b898ec b/.resources/f0b285a16f8e35a2d05c4a68bbd10a60615fffbaadad54e3fbc7b4c1a5b898ec deleted file mode 100644 index 5ab8a809..00000000 --- a/.resources/f0b285a16f8e35a2d05c4a68bbd10a60615fffbaadad54e3fbc7b4c1a5b898ec +++ /dev/null @@ -1,211 +0,0 @@ -import java.net.http.WebSocketHandshakeException -from java.net.http import HttpClient; -from java.net.http import WebSocket; -from java.net import URI -from java.lang import Thread -import uuid -import json -import time - -#Check for a http client stored in the globals. -whid = system.tag.readBlocking(["Configuration/FC"])[0].value -client = system.util.getGlobals().get(whid, {}).get("http_client", None) -#Store the http client as a global variable to be reused on project saves. -if not client: - client = HttpClient.newHttpClient() - system.util.getGlobals()[whid]["http_client"] = client - -class Listener(WebSocket.Listener): - """ - Creates a Listener for receiving web socket messages. - The mehtods in this class are standard Java methods - that have been overidden to include additional functionality. onOpen, - onText, onClose and onError are called by the class whenthe web socket - is opened, when the web socket receives data, - when the web socket is closed, when the web socket encounters an error, - respectively. Messages are sent from the web socket by calling the sendText - method on the Listener object. - - Args: - whid: Warehouse id for the tag provider (string). - message_handler: A message handler object which parses - the messages received from the onText - method (class) - - Returns: - Listener object. - - Raises: - Error handling is performed by the onError method. - This method can be overidden with additional logic - for handling errors detected by the Listener object. - """ - def __init__(self, whid, message_handler): - self.whid = whid - self.alarms = {} - self.tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (self.whid) - self.logger = system.util.getLogger("%s-Web-Socket-Listener" % (self.whid)) - self.message = "" - self.message_handler = message_handler - - def onOpen(self, websocket): - #Generate uuid to help track the connection in aws. - uid = uuid.uuid4() - on_open_subscribe = json.dumps({"action": "subscribe", - "parameters": {"siteId": self.whid, - "clientName": str(uid)}} - ) - websocket.sendText(on_open_subscribe, True) - logger = system.util.getLogger("Web-Socket-OnOpen") - self.logger.info("message sent =" + str(on_open_subscribe)) - websocket.request(1) - - def onText(self, websocket, data, last): - self.message += str(data) - if not last: - websocket.request(1) - else: - json_message = json.loads(self.message) - self.message = "" - self.message_handler.handle_message(json_message) - websocket.request(1) - - def onClose(self, websocket, error): - self.logger.info("Onclose method " + str(error)) - - def onError(self, websocket, error): - self.logger.error("OnError method " + str(error)) - - -def web_socket_main(whid, provider, region, message_handler, secret_name): - """ - Main function for running a web socket. This function can - be called in an asynchronous thread and should only exit - when the socket has been closed or an error is encountered. - The function will create a web socket object and run in a - while loop to keep the socket connection open. - It will exit if an error is encounterd, the socket is manually - closed from the tag provider or the socket is closed. - - Args: - whid: Warehouse id for the tag provider (string). - provider: Tag provider that the web socket will use to write messages to/from (string). - region: The AWS region of the api endpoint. Usally the same region as the EC2 - running the web socket (string). - message_handler: message handler object used for parsing of the web socket messages (class). - secret_name : name of the secret to be passed into the web socket. This will retreive the api endpoint for AWS. - - Returns: - N/A. - Raises: - Secrets manager error - web socket error - """ - thread_name = str(Thread.getId(Thread.currentThread())) - system.tag.writeAsync([provider + "system/thread_id"],[thread_name]) - system.util.getGlobals()[whid]["wbsckt_running"] = True - system.tag.writeAsync([provider + "System/wbsckt_running"],[1]) - logger_name = "%s-web-socket-main" % (whid) - logger = system.util.getLogger(logger_name) - timer_end = None - timer_started = False - """The heartbeat is initalised with the current time on first connect - Each time a new heartbeat is recieved in AWS.message_types - the current time is written to the tag wbsckt_heartbeat_interval. - The websocket checks that a heartbeat has been recieved at least every 120 secs. - If a heartbeat is not recieved within the 120 sec duration the connection is closed and the loop will exit. - """ - AWS.heartbeat.get_heartbeat(provider) - tags_to_read = system.tag.readBlocking([provider + "System/wbsckt_heartbeat_interval"]) - wbsckt_heartbeat_interval = tags_to_read[0].value - #Return api endpoint from secrets manager. - API_ID, STAGE, ACC_ID, FUNC_URL = AWS.secrets_manager.get_secret(whid, secret_name) - - try: - credentials = AWS.credentials.assume_role(profile_name = "default", region = region, arn = ACC_ID, api_id = API_ID, stage = STAGE) - except: - AWS.errors.error_handler(whid, "AWS.credentials.assume_role") - return - - logger.info("Building URL ....") - url, headers = AWS.build_url.make_websocket_connection(API_ID, region, STAGE, credentials) - listener = AWS.web_socket.Listener(whid, message_handler) -# client = HttpClient.newHttpClient() - #set the client as global (stored in the system global variables). - global client - uri = URI.create(url) - logger.info(str(uri)) - logger.info("Building web-socket object ....") - wsBuilder = client.newWebSocketBuilder() - wsBuilder.header("Authorization", headers["Authorization"]) - wsBuilder.header("X-Amz-Date", headers["X-Amz-Date"]) - wsBuilder.header("X-Amz-Security-Token", headers["X-Amz-Security-Token"]) - - try: - wsObj = wsBuilder.buildAsync(uri, listener) - except: - AWS.errors.error_handler(whid, "Build web socket") - return - - web_socket = wsObj.get() - logger.info("Web socket object built, starting while loop ....") - running = 1 - - while True: - time.sleep(0.1) - if running == 1: - logger.info("While loop running ....") - running = 0 - - if AWS.heartbeat.check_heartbeat(provider, 70): - web_socket.sendClose(web_socket.NORMAL_CLOSURE, "Missing heartbeat") - logger.warn("socket closed , missing heartbeat") - web_socket.abort() - text_val = web_socket.sendText(str({"action":"abort"}), True) - break - - check_socket_closed_in_loop = AWS.wbsckt_abort.check_web_socket() - if check_socket_closed_in_loop: - web_socket.sendClose(web_socket.NORMAL_CLOSURE, "") - logger.info("socket close initiated") - # web_socket.abort() - text_val = web_socket.sendText(str({"action":"abort"}), True) - break - - if not timer_started: - timer_start = system.date.now() - timer_started = True - - timer_end = system.date.now() - time_diff = system.date.secondsBetween(timer_start, timer_end) - if time_diff >= wbsckt_heartbeat_interval: - send_heartbeat = True - timer_started = False - - if web_socket.isOutputClosed(): - logger.info("Websocket output closed") - break - - if web_socket.isInputClosed(): - logger.info("Websocket input closed") - break - - this_thread = system.tag.readBlocking(provider + "System/thread_id")[0].value - if this_thread != thread_name: - logger.warn("thread_id does not match current thread_id") - break - - tags_to_read = system.tag.readBlocking(["System/wbsckt_messages_send"]) - messages = system.util.jsonDecode(tags_to_read[0].value) - message_list = messages.get("message_list") - if message_list: - for i in message_list: - message_string = str(i) - formatted_string = message_string.replace("u'","'") - json_string = formatted_string.replace("'","\"") - web_socket.sendText(str(json_string), True) - logger.info("Message sent: " + str(json_string)) - system.tag.writeAsync(["System/wbsckt_messages_send"], "{}") - system.util.getGlobals()[whid]["wbsckt_running"] = False - web_socket.abort() - system.tag.writeBlocking([provider + "System/wbsckt_running"], [0]) \ No newline at end of file diff --git a/.resources/f0c8349105016514c382121cded2027ef5b2895003898a72d4b60fbcb78aa0f8 b/.resources/f0c8349105016514c382121cded2027ef5b2895003898a72d4b60fbcb78aa0f8 deleted file mode 100644 index 2269d5a5..00000000 --- a/.resources/f0c8349105016514c382121cded2027ef5b2895003898a72d4b60fbcb78aa0f8 +++ /dev/null @@ -1,321 +0,0 @@ -{ - "custom": { - "alarm_message": null, - "button_type": "", - "disconnected": true, - "plc": "System", - "priority": 0, - "priority_string": "No Active Alarms", - "searchId": "PLC01", - "state": 0, - "state_string": "Unknown" - }, - "params": { - "color": 3, - "forceFaultStatus": null, - "tagProps": [ - "System/MCM01/Station/S_PB/UL12_3_S2", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.alarm_message": { - "persistent": true - }, - "custom.button_type": { - "binding": { - "config": { - "expression": "if({view.params.color} \u003d 1, \"PR_PB_\",\r\n if({view.params.color} \u003d 2, \"GS_PB_\", \"\")\r\n)\r\n" - }, - "type": "expr" - }, - "persistent": true - }, - "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": 0, - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": 1 - }, - { - "input": 2, - "output": 0 - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.priority_string": { - "binding": { - "config": { - "expression": "case({view.custom.state},\r\n1, \"Low\",\r\n2, \"No Active Alarms\",\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}", - "type": "{view.custom.button_type}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/{type}STATE" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.state_string": { - "binding": { - "config": { - "expression": "case(\r\n {view.custom.state} + \"-\" + {view.params.color},\r\n \"1-1\", \"Package Release Pressed\",\r\n \"1-2\", \"Gaylord Start Pressed\",\r\n \"0-1\", \"Normal\",\r\n \"0-2\", \"Normal\",\r\n \"2-2\", \"Normal\",\r\n \"Unknown\"\r\n)\r\n" - }, - "type": "expr" - }, - "persistent": true - }, - "params.color": { - "paramDirection": "input", - "persistent": true - }, - "params.forceFaultStatus": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 25, - "width": 25 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Button" - }, - "position": { - "height": 1, - "width": 1 - }, - "propConfig": { - "props.elements[0].fill.paint": { - "binding": { - "config": { - "expression": "if(\r\n {view.custom.disconnected},\r\n \u0027#999999\u0027,\r\n if(\r\n {view.custom.state} \u003d 1 || {view.custom.state} \u003d 2,\r\n \u0027#D5D5D5\u0027,\r\n if(\r\n {view.custom.state} \u003d 0,\r\n \u0027#D5D5D5\u0027,\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n)\r\n" - }, - "type": "expr" - } - }, - "props.elements[1].fill.paint": { - "binding": { - "config": { - "expression": "if(\r\n {view.custom.disconnected} \u0026\u0026 {view.params.color} \u003d 1,\r\n \"#D5D5D5\",\r\n if(\r\n {view.custom.disconnected} \u0026\u0026 {view.params.color} \u003d 2,\r\n \"#00D900\",\r\n if(\r\n {view.params.color} \u003d 1,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \"#FF0000\",\r\n \"#D5D5D5\"\r\n ),\r\nif(\r\n {view.params.color} \u003d 2,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \"#FF0000\",\r\n if(\r\n {view.custom.state} \u003d 2,\r\n \"#FF0000\",\r\n \"#00D900\"\r\n )\r\n ),\r\n \"#D5D5D5\"\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-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/.resources/f110f762603a90e6a03a3c725fdc9e7bd7c49dcaf69b7e8fac0532c2595036cb b/.resources/f110f762603a90e6a03a3c725fdc9e7bd7c49dcaf69b7e8fac0532c2595036cb deleted file mode 100644 index 030be53c..00000000 --- a/.resources/f110f762603a90e6a03a3c725fdc9e7bd7c49dcaf69b7e8fac0532c2595036cb +++ /dev/null @@ -1,1954 +0,0 @@ -{ - "custom": { - "api_region_name": "na", - "bucket_options": [ - { - "label": "Image Files", - "value": "na-ignition-image-repo" - }, - { - "label": "Source Files", - "value": "na-ignition-image-source" - } - ], - "copy_option_options": [ - { - "label": "Both", - "value": "both" - }, - { - "label": "SVG", - "value": "svg" - }, - { - "label": "DRAWIO", - "value": "drawio" - } - ], - "default_query_params": { - "copy_option": null, - "destination_bucket": null, - "destination_site": null, - "destination_view": "", - "end_time": null, - "error_occurred": null, - "operation": null, - "source_bucket": null, - "source_site": null, - "source_view": "", - "start_time": null - }, - "destination_view_options_by_site_and_bucket": [], - "destination_view_suffix": null, - "destination_whid_options": [], - "error_occurred_options": [ - { - "label": "True", - "value": true - }, - { - "label": "False", - "value": false - } - ], - "operation_options": [ - { - "label": "Copy Single", - "value": "copy_single" - }, - { - "label": "Upload", - "value": "upload" - }, - { - "label": "Delete", - "value": "delete" - }, - { - "label": "Add New Site", - "value": "add_new_site" - } - ], - "source_view_options_by_site_and_bucket": [], - "source_view_suffix": null, - "source_whid_options": [], - "stage_config": { - "account_id": "925510716640", - "endpoint": "https://scada-s3-management.narme-scada.rme.amazon.dev/", - "lambda_name": "RMESDScadaS3ManagementFlaskLambda-prod", - "region": "us-east-2", - "repo_bucket": "na-ignition-image-repo", - "s3_region": "us-east-1", - "source_bucket": "na-ignition-image-source" - } - }, - "params": { - "query_params": { - "copy_option": null, - "destination_bucket": null, - "destination_site": null, - "destination_view": "", - "end_time": null, - "error_occurred": null, - "operation": null, - "source_bucket": null, - "source_site": null, - "source_view": "", - "start_time": null, - "username": "" - } - }, - "propConfig": { - "custom.api_region_name": { - "binding": { - "config": { - "path": "session.custom.aws.prefix" - }, - "type": "property" - }, - "persistent": true - }, - "custom.bucket_options": { - "binding": { - "config": { - "path": "view.custom.stage_config" - }, - "transforms": [ - { - "code": "\treturn [{\u0027value\u0027: value.repo_bucket, \u0027label\u0027: \u0027Image Files\u0027},\n\t\t\t{\u0027value\u0027: value.source_bucket, \u0027label\u0027: \u0027Source Files\u0027}]", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.copy_option_options": { - "persistent": true - }, - "custom.default_query_params": { - "persistent": true - }, - "custom.default_query_params.username": { - "binding": { - "config": { - "path": "session.props.auth.user.userName" - }, - "type": "property" - } - }, - "custom.destination_view_options_by_site_and_bucket": { - "binding": { - "config": { - "expression": "{view.params.query_params.destination_site}+{view.params.query_params.destination_bucket}" - }, - "transforms": [ - { - "code": "\tbucket \u003d self.params.query_params.destination_bucket\n\tsite \u003d self.params.query_params.destination_site\n\tif bucket and site:\n\t\tfrom AWS.s3 import S3Manager\n\t\tfrom helper.helper import sanitize_tree\n\t\tfrom pprint import pformat\n\t\t\n\t\tapi_stage \u003d \u0027prod\u0027\n\t\tusername \u003d self.session.props.auth.user.userName\n\t\tapi_region_name \u003d self.view.custom.api_region_name\n\t\t\n\t\ts3m \u003d S3Manager(api_stage, api_region_name, username)\n\t\tsuffix \u003d self.custom.destination_view_suffix\n\t\tfiles \u003d sanitize_tree(s3m.fetch_object_list_by_site_and_bucket(site, bucket))\n\t\treturn [{\u0027value\u0027: x[\u0027Filename\u0027].replace(suffix,\u0027\u0027), \n\t\t\t\t\u0027label\u0027: x[\u0027Filename\u0027].replace(suffix,\u0027\u0027)} for x in files]\n\treturn []", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.destination_view_suffix": { - "binding": { - "config": { - "path": "view.params.query_params.destination_bucket" - }, - "transforms": [ - { - "code": "\tif value:\n\t\tstage_config \u003d self.custom.stage_config\n\t\tif value \u003d\u003d stage_config.get(\u0027repo_bucket\u0027, None):\n\t\t\treturn \".svg\"\n\t\tif value \u003d\u003d stage_config.get(\"source_bucket\", None):\n\t\t\treturn \".drawio\"\n\treturn value", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.destination_whid_options": { - "binding": { - "config": { - "path": "view.params.query_params.destination_bucket" - }, - "transforms": [ - { - "code": "\tif value:\n\t\tfrom AWS.s3 import S3Manager\n\t\t\n\t\tapi_stage \u003d \u0027prod\u0027\n\t\tusername \u003d self.session.props.auth.user.userName\n\t\tapi_region_name \u003d self.custom.api_region_name\n\t\t\n\t\ts3m \u003d S3Manager(\u0027prod\u0027, api_region_name, username)\n\t\t\n\t\treturn [{\u0027value\u0027: x, \u0027label\u0027: x} for x in s3m.fetch_site_list(value)]\n\treturn []", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.error_occurred_options": { - "persistent": true - }, - "custom.operation_options": { - "binding": { - "config": { - "expression": "1" - }, - "transforms": [ - { - "code": "\tfrom AWS.s3 import OPERATION_MAP\n\treturn [{\u0027value\u0027:k, \u0027label\u0027:k.replace(\u0027_\u0027,\u0027 \u0027).title()} \n\t\t\tfor k,v in OPERATION_MAP.iteritems()\n\t\t\tif v.get(\u0027method\u0027, \u0027\u0027) in (\u0027PUT\u0027, \u0027POST\u0027, \u0027DELETE\u0027)\n\t\t\tand k not in (\u0027query_audit_table\u0027, )]", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.source_view_options_by_site_and_bucket": { - "binding": { - "config": { - "expression": "{view.params.query_params.source_site}+{view.params.query_params.source_bucket}" - }, - "transforms": [ - { - "code": "\tbucket \u003d self.params.query_params.source_bucket\n\tsite \u003d self.params.query_params.source_site\n\tif bucket and site:\n\t\tfrom AWS.s3 import S3Manager\n\t\tfrom helper.helper import sanitize_tree\n\t\tfrom pprint import pformat\n\t\t\n\t\tapi_stage \u003d \u0027prod\u0027\n\t\tusername \u003d self.session.props.auth.user.userName\n\t\tapi_region_name \u003d self.view.custom.api_region_name\n\t\t\n\t\ts3m \u003d S3Manager(api_stage, api_region_name, username)\n\t\tsuffix \u003d self.custom.source_view_suffix\n\t\tfiles \u003d sanitize_tree(s3m.fetch_object_list_by_site_and_bucket(site, bucket))\n\t\treturn [{\u0027value\u0027: x[\u0027Filename\u0027].replace(suffix,\u0027\u0027), \n\t\t\t\t\u0027label\u0027: x[\u0027Filename\u0027].replace(suffix,\u0027\u0027)} for x in files]\n\treturn []", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "custom.source_view_suffix": { - "binding": { - "config": { - "path": "view.params.query_params.source_bucket" - }, - "transforms": [ - { - "code": "\tif value:\n\t\tstage_config \u003d self.custom.stage_config\n\t\tif value \u003d\u003d stage_config.get(\u0027repo_bucket\u0027, None):\n\t\t\treturn \".svg\"\n\t\tif value \u003d\u003d stage_config.get(\"source_bucket\", None):\n\t\t\treturn \".drawio\"\n\treturn value", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.source_whid_options": { - "binding": { - "config": { - "path": "view.params.query_params.source_bucket" - }, - "transforms": [ - { - "code": "\tif value:\n\t\tfrom AWS.s3 import S3Manager\n\t\t\n\t\tapi_stage \u003d \u0027prod\u0027\n\t\tusername \u003d self.session.props.auth.user.userName\n\t\tapi_region_name \u003d self.custom.api_region_name\n\t\t\n\t\ts3m \u003d S3Manager(\u0027prod\u0027, api_region_name, username)\n\t\t\n\t\treturn [{\u0027value\u0027: x, \u0027label\u0027: x} for x in s3m.fetch_site_list(value)]\n\treturn []", - "type": "script" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.stage_config": { - "binding": { - "config": { - "expression": "{view.custom.api_region_name}" - }, - "transforms": [ - { - "code": "\treturn AWS.s3.STAGE_CONFIG[\u0027prod\u0027][value]", - "type": "script" - } - ], - "type": "expr" - }, - "persistent": true - }, - "params.query_params": { - "onChange": { - "enabled": null, - "script": "\tif not missedEvents and origin in (\u0027Binding\u0027, \u0027Script\u0027, \u0027BindingWriteback\u0027):\n\t\tpayload \u003d currentValue.value\n\t\tsystem.perspective.sendMessage(\u0027audit_table_query_params_changed\u0027, payload, scope\u003d\u0027session\u0027)\n\t\t" - }, - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 600 - } - }, - "root": { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "shrink": 0 - }, - "props": { - "style": { - "borderStyle": "none", - "classes": "Framework/Card/Title_transparent" - }, - "text": "Select Query Params" - }, - "type": "ia.display.label" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t# reset query params to default values \n\t# (stored in `view.custom.default_query_params`)\n\tself.view.params.query_params \u003d self.view.custom.default_query_params" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button", - "tooltip": { - "enabled": true, - "location": "bottom-right", - "text": "Clear Selections" - } - }, - "position": { - "shrink": 0 - }, - "props": { - "image": { - "icon": { - "path": "material/clear_all" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\t# refresh audit table query via message handler\n\tsystem.perspective.sendMessage(\u0027refresh_audit_table_data\u0027, scope\u003d\u0027session\u0027)\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Refresh Button", - "tooltip": { - "enabled": true, - "location": "bottom-right", - "text": "Refresh Data" - } - }, - "position": { - "shrink": 0 - }, - "props": { - "image": { - "icon": { - "path": "material/refresh" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "grow": 1 - }, - "props": { - "justify": "flex-end" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer Header" - }, - "position": { - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Title_transparent", - "marginBottom": "2px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Operation" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": "view.custom.operation_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.operation" - }, - "type": "property" - } - } - }, - "props": { - "dropdownOptionStyle": { - "overflowWrap": "break-word", - "whiteSpace": "normal" - }, - "multiSelect": true, - "showClearIcon": true - }, - "type": "ia.input.dropdown" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.operation \u003d None\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.operation})\r\n\u0026\u0026{view.params.query_params.operation}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Operation" - }, - "position": { - "basis": "335px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Copy Option" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": "view.custom.copy_option_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.copy_option" - }, - "type": "property" - } - } - }, - "props": { - "dropdownOptionStyle": { - "overflowWrap": "break-word", - "whiteSpace": "normal" - }, - "showClearIcon": true - }, - "type": "ia.input.dropdown" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.copy_option \u003d None\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.copy_option})\r\n\u0026\u0026{view.params.query_params.copy_option}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Copy Option", - "visible": false - }, - "position": { - "basis": "335px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "shrink": 0 - }, - "props": { - "justify": "center" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Username" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "TextField" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.username" - }, - "type": "property" - } - } - }, - "props": { - "placeholder": "Enter username..." - }, - "type": "ia.input.text-field" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.username \u003d None\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.username})\r\n\u0026\u0026{view.params.query_params.username}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Username" - }, - "position": { - "basis": "335px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Error Occurred?" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": "view.custom.error_occurred_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.error_occurred" - }, - "type": "property" - } - } - }, - "props": { - "dropdownOptionStyle": { - "overflowWrap": "break-word", - "whiteSpace": "normal" - }, - "showClearIcon": true - }, - "type": "ia.input.dropdown" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.error_occurred \u003d None\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.error_occurred})\r\n\u0026\u0026{view.params.query_params.error_occurred}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Error Occurred" - }, - "position": { - "basis": "335px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "shrink": 0 - }, - "props": { - "justify": "center" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Dest. Bucket" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": "view.custom.bucket_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.destination_bucket" - }, - "type": "property" - } - } - }, - "props": { - "dropdownOptionStyle": { - "overflowWrap": "break-word", - "whiteSpace": "normal" - }, - "showClearIcon": true - }, - "type": "ia.input.dropdown" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.destination_bucket \u003d None\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.destination_bucket})\r\n\u0026\u0026{view.params.query_params.destination_bucket}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Destination Bucket" - }, - "position": { - "basis": "335px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Source Bucket" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "props.options": { - "binding": { - "config": { - "path": "view.custom.bucket_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.source_bucket" - }, - "type": "property" - } - } - }, - "props": { - "dropdownOptionStyle": { - "overflowWrap": "break-word", - "whiteSpace": "normal" - }, - "showClearIcon": true - }, - "type": "ia.input.dropdown" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.source_bucket \u003d None\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.source_bucket})\r\n\u0026\u0026{view.params.query_params.source_bucket}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Source Bucket" - }, - "position": { - "basis": "335px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "shrink": 0 - }, - "props": { - "justify": "center" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Dest. Site" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.destination_bucket})\r\n\u0026\u0026len({view.params.query_params.destination_bucket})\u003e0" - }, - "type": "expr" - } - }, - "props.options": { - "binding": { - "config": { - "path": "view.custom.destination_whid_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.destination_site" - }, - "type": "property" - } - } - }, - "props": { - "dropdownOptionStyle": { - "overflowWrap": "break-word", - "whiteSpace": "normal" - }, - "showClearIcon": true - }, - "type": "ia.input.dropdown" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.destination_site \u003d None\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.destination_site})\r\n\u0026\u0026{view.params.query_params.destination_site}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Destination Site" - }, - "position": { - "basis": "335px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Source Site" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.source_bucket})\r\n\u0026\u0026len({view.params.query_params.source_bucket})\u003e0" - }, - "type": "expr" - } - }, - "props.options": { - "binding": { - "config": { - "path": "view.custom.source_whid_options" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.source_site" - }, - "type": "property" - } - } - }, - "props": { - "dropdownOptionStyle": { - "overflowWrap": "break-word", - "whiteSpace": "normal" - }, - "showClearIcon": true - }, - "type": "ia.input.dropdown" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.source_site \u003d None\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.source_site})\r\n\u0026\u0026{view.params.query_params.source_site}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Source Site" - }, - "position": { - "basis": "335px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_2" - }, - "position": { - "shrink": 0 - }, - "props": { - "justify": "center" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Dest. View" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "len({view.custom.destination_view_options_by_site_and_bucket})\u003e0" - }, - "type": "expr" - } - }, - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.destination_bucket})\r\n\u0026\u0026len({view.params.query_params.destination_bucket})\u003e0\r\n\u0026\u0026!isNull({view.params.query_params.destination_site})\r\n\u0026\u0026len({view.params.query_params.destination_site})\u003e0" - }, - "type": "expr" - } - }, - "props.options": { - "binding": { - "config": { - "path": "view.custom.destination_view_options_by_site_and_bucket" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.destination_view" - }, - "type": "property" - } - } - }, - "props": { - "dropdownOptionStyle": { - "overflowWrap": "break-word", - "whiteSpace": "normal" - }, - "showClearIcon": true - }, - "type": "ia.input.dropdown" - }, - { - "meta": { - "name": "TextField" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "len({view.custom.destination_view_options_by_site_and_bucket})\u003d0" - }, - "type": "expr" - } - }, - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.destination_bucket})\r\n\u0026\u0026len({view.params.query_params.destination_bucket})\u003e0\r\n\u0026\u0026!isNull({view.params.query_params.destination_site})\r\n\u0026\u0026len({view.params.query_params.destination_site})\u003e0" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.destination_view" - }, - "type": "property" - } - } - }, - "props": { - "placeholder": "Enter View..." - }, - "type": "ia.input.text-field" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.destination_view \u003d \u0027\u0027\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.destination_view})\r\n\u0026\u0026{view.params.query_params.destination_view}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Destination View" - }, - "position": { - "basis": "335px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Source View" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Dropdown" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "len({view.custom.source_view_options_by_site_and_bucket})\u003e0" - }, - "type": "expr" - } - }, - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.source_bucket})\r\n\u0026\u0026len({view.params.query_params.source_bucket})\u003e0\r\n\u0026\u0026!isNull({view.params.query_params.source_site})\r\n\u0026\u0026len({view.params.query_params.source_site})\u003e0" - }, - "type": "expr" - } - }, - "props.options": { - "binding": { - "config": { - "path": "view.custom.source_view_options_by_site_and_bucket" - }, - "type": "property" - } - }, - "props.value": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.source_view" - }, - "type": "property" - } - } - }, - "props": { - "dropdownOptionStyle": { - "overflowWrap": "break-word", - "whiteSpace": "normal" - }, - "multiSelect": true, - "showClearIcon": true - }, - "type": "ia.input.dropdown" - }, - { - "meta": { - "name": "TextField" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "len({view.custom.source_view_options_by_site_and_bucket})\u003d0" - }, - "type": "expr" - } - }, - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.source_bucket})\r\n\u0026\u0026len({view.params.query_params.source_bucket})\u003e0\r\n\u0026\u0026!isNull({view.params.query_params.source_site})\r\n\u0026\u0026len({view.params.query_params.source_site})\u003e0" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "bidirectional": true, - "path": "view.params.query_params.source_view" - }, - "type": "property" - } - } - }, - "props": { - "placeholder": "Enter View..." - }, - "type": "ia.input.text-field" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.source_view \u003d \u0027\u0027\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.source_view})\r\n\u0026\u0026{view.params.query_params.source_view}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Source View" - }, - "position": { - "basis": "335px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_3" - }, - "position": { - "shrink": 0 - }, - "props": { - "justify": "center" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "Start Time" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "DateTimeInput" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "props.value": { - "binding": { - "config": { - "path": "view.params.query_params.start_time" - }, - "transforms": [ - { - "code": "\tif value:\n\t\ttry:\n\t\t\treturn system.date.parse(value, \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\texcept:\n\t\t\treturn None\n\treturn value", - "type": "script" - } - ], - "type": "property" - }, - "onChange": { - "enabled": null, - "script": "\tif not missedEvents and origin in (\u0027Browser\u0027,):\n\t\tif currentValue.value:\n\t\t\tdt \u003d currentValue.value\n\t\t\tdt_str \u003d system.date.format(dt, \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\t\tself.view.params.query_params.start_time \u003d dt_str" - } - } - }, - "props": { - "format": "YYYY-MM-DD HH:mm:ss", - "formattedValue": null, - "placeholder": "Select start time" - }, - "type": "ia.input.date-time-input" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.start_time \u003d None\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.start_time})\r\n\u0026\u0026{view.params.query_params.start_time}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Start Time" - }, - "position": { - "basis": "335px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "125px", - "shrink": 0 - }, - "props": { - "style": { - "classes": "Framework/Card/Label", - "textAlign": "right" - }, - "text": "End Time" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "DateTimeInput" - }, - "position": { - "basis": "175px", - "shrink": 0 - }, - "propConfig": { - "props.value": { - "binding": { - "config": { - "path": "view.params.query_params.end_time" - }, - "transforms": [ - { - "code": "\tif value:\n\t\ttry:\n\t\t\treturn system.date.parse(value, \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\texcept:\n\t\t\treturn None\n\treturn value", - "type": "script" - } - ], - "type": "property" - }, - "onChange": { - "enabled": null, - "script": "\tif not missedEvents and origin in (\u0027Browser\u0027,):\n\t\tif currentValue.value:\n\t\t\tdt \u003d currentValue.value\n\t\t\tdt_str \u003d system.date.format(dt, \u0027yyyy-MM-dd HH:mm:ss\u0027)\n\t\t\tself.view.params.query_params.end_time \u003d dt_str" - } - } - }, - "props": { - "format": "YYYY-MM-DD HH:mm:ss", - "formattedValue": null, - "placeholder": "Select end time" - }, - "type": "ia.input.date-time-input" - }, - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\tself.view.params.query_params.end_time \u003d None\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Clear Button" - }, - "position": { - "basis": "80px" - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "!isNull({view.params.query_params.end_time})\r\n\u0026\u0026{view.params.query_params.end_time}!\u003d\u0027\u0027" - }, - "type": "expr" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/clear" - } - }, - "primary": false, - "style": { - "classes": "Input/Button/Secondary_minimal" - }, - "text": "" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "End Time" - }, - "position": { - "basis": "335px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_4" - }, - "position": { - "shrink": 0 - }, - "props": { - "justify": "center" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/f153ec2da3260155b2098104f8d407dedcee4ade397d07cf98ec8a2eb5734c78 b/.resources/f153ec2da3260155b2098104f8d407dedcee4ade397d07cf98ec8a2eb5734c78 deleted file mode 100644 index 35bc7547..00000000 --- a/.resources/f153ec2da3260155b2098104f8d407dedcee4ade397d07cf98ec8a2eb5734c78 +++ /dev/null @@ -1,141 +0,0 @@ -{ - "custom": {}, - "events": { - "system": { - "onStartup": { - "config": { - "script": "\tself.params.request_focus \u003d True\n\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "params": { - "enabled": true, - "placeholder": "enter password...", - "request_focus": false, - "text": "" - }, - "propConfig": { - "params.enabled": { - "paramDirection": "input", - "persistent": true - }, - "params.placeholder": { - "paramDirection": "input", - "persistent": true - }, - "params.request_focus": { - "onChange": { - "enabled": null, - "script": "\t# if focus request set externally, set focus via message and clear request\n\tif currentValue.value:\n\t\tsystem.perspective.sendMessage(\u0027request_focus\u0027, scope\u003d\u0027view\u0027)\n\t\tself.params.request_focus \u003d False\n\t" - }, - "paramDirection": "inout", - "persistent": true - }, - "params.text": { - "paramDirection": "inout", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 50, - "width": 200 - } - }, - "root": { - "children": [ - { - "events": { - "dom": { - "onKeyPress": { - "config": { - "script": "\tif event.key \u003d\u003d \u0027Enter\u0027:\n\t\tsystem.perspective.sendMessage(\u0027password_entered\u0027, {\u0027value\u0027: self.props.text}, scope\u003d\u0027session\u0027)\n\t\t" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "PasswordField" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "path": "view.params.enabled" - }, - "type": "property" - } - }, - "props.placeholder": { - "binding": { - "config": { - "path": "view.params.placeholder" - }, - "type": "property" - } - }, - "props.style.classes": { - "binding": { - "config": { - "expression": "if({this.props.enabled},\u0027Input/Text/text_field_enabled\u0027,\u0027Input/Text/text_field_disabled\u0027)" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "path": "view.params.text" - }, - "type": "property" - } - } - }, - "props": { - "style": { - "margin": "1%", - "padding": "1%" - } - }, - "scripts": { - "customMethods": [ - { - "name": "set_focus", - "params": [], - "script": "\tfrom time import sleep\n\tsleep(0.50)\n\tself.focus()\n\t" - } - ], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "request_focus", - "pageScope": false, - "script": "\tsystem.util.invokeAsynchronous(self.set_focus())\n\t", - "sessionScope": false, - "viewScope": true - } - ] - }, - "type": "ia.input.password-field" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/33582f883d9ee999e79dbb8f179580aafd1e2cc18d61d576a42949c0adaf471c b/.resources/f15a02d910493be1aac6c9542bab4dac0f0f3d4a3b63eab71122ded96e1d4168 similarity index 100% rename from .resources/33582f883d9ee999e79dbb8f179580aafd1e2cc18d61d576a42949c0adaf471c rename to .resources/f15a02d910493be1aac6c9542bab4dac0f0f3d4a3b63eab71122ded96e1d4168 diff --git a/.resources/f19576fbea3b986cca89ed526d439d4ea177d61506ea0180bdba21840903edc8 b/.resources/f19576fbea3b986cca89ed526d439d4ea177d61506ea0180bdba21840903edc8 deleted file mode 100644 index 3f225e0c..00000000 --- a/.resources/f19576fbea3b986cca89ed526d439d4ea177d61506ea0180bdba21840903edc8 +++ /dev/null @@ -1,17 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "var(--info)", - "borderTopLeftRadius": "4px", - "borderTopRightRadius": "4px", - "borderBottomLeftRadius": "4px", - "borderBottomRightRadius": "4px", - "color": "var(--neutral-10)", - "fontSize": "12px", - "fontWeight": "bold", - "lineHeight": "16px", - "padding": "2px", - "textAlign": "center" - } - } -} \ No newline at end of file diff --git a/.resources/b7e89706cd7a028c7a608af9391877f7e908120f8609c0e593ea731d0bab3a66 b/.resources/f1ff8e33a5500c7b5a35d7c99017f994f59522fc311edf7f81bea3f8f6d0e891 similarity index 100% rename from .resources/b7e89706cd7a028c7a608af9391877f7e908120f8609c0e593ea731d0bab3a66 rename to .resources/f1ff8e33a5500c7b5a35d7c99017f994f59522fc311edf7f81bea3f8f6d0e891 diff --git a/.resources/f2221b92ca9c8668ac53e5fd0046f50256d64e02659d725252458a10158773e1 b/.resources/f2221b92ca9c8668ac53e5fd0046f50256d64e02659d725252458a10158773e1 deleted file mode 100644 index 50c4f2a1..00000000 --- a/.resources/f2221b92ca9c8668ac53e5fd0046f50256d64e02659d725252458a10158773e1 +++ /dev/null @@ -1,315 +0,0 @@ -{ - "custom": { - "disconnected": false, - "plc": "", - "priority": 0, - "priority_string": "No Active Alarms", - "searchId": "PLC01", - "state": 0, - "state_string": "Normal" - }, - "params": { - "forceFaultStatus": null, - "tagProps": [ - "/System/Field_Devices/SIO/SIO1", - "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": 0, - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": 1 - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "property" - }, - "persistent": true - }, - "custom.priority_string": { - "binding": { - "config": { - "path": "view.custom.state" - }, - "transforms": [ - { - "fallback": "Unknown", - "inputType": "scalar", - "mappings": [ - { - "input": 0, - "output": "No Active Alarms" - }, - { - "input": 1, - "output": "High" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "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.state_string": { - "binding": { - "config": { - "expression": "case({view.custom.state},\r\n0, \"Normal\",\r\n1, \"Communication Faulted\",\r\n\"Unknown\")" - }, - "type": "expr" - }, - "persistent": true - }, - "params.forceFaultStatus": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps": { - "paramDirection": "inout", - "persistent": true - }, - "params.tagProps[0]": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps[1]": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps[2]": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps[3]": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps[4]": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps[5]": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps[6]": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps[7]": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps[8]": { - "paramDirection": "input", - "persistent": true - }, - "params.tagProps[9]": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 40, - "width": 40 - }, - "styles": "value" - }, - "root": { - "children": [ - { - "meta": { - "name": "Icon" - }, - "position": { - "basis": "264px" - }, - "propConfig": { - "props.color": { - "binding": { - "config": { - "expression": "if(\r\n {view.custom.disconnected},\r\n \u0027#D3D3D3\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": { - "path": "material/place", - "style": { - "classes": "State-Styles/State1" - } - }, - "type": "ia.display.icon" - } - ], - "events": { - "dom": { - "onClick": { - "config": { - "script": "\t\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" - }, - "scope": "G", - "type": "script" - }, - "onDoubleClick": { - "config": { - "script": "\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "root", - "text": "", - "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/High" - }, - { - "input": 2, - "output": "Alarms-Styles/High" - }, - { - "input": 3, - "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_fio" - }, - "type": "property" - } - } - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/f28f2bff7f79debb6866c7ac8a504d9062797ad1a026b25e30bc22a9b78b82ec b/.resources/f28f2bff7f79debb6866c7ac8a504d9062797ad1a026b25e30bc22a9b78b82ec deleted file mode 100644 index d11998fc..00000000 --- a/.resources/f28f2bff7f79debb6866c7ac8a504d9062797ad1a026b25e30bc22a9b78b82ec +++ /dev/null @@ -1,16 +0,0 @@ -# This function is not intented to be called. This docstring template should be used on all function call. - -def docstring(): - """ - This is an example of Google style. - - Args: - param1: This is the first param. - param2: This is a second param. - - Returns: - This is a description of what is returned. - - Raises: - KeyError: Raises an exception. - """ diff --git a/.resources/f2d39668e63e1fe07a66c0bd7d0004cbd269c95c040a7b5dbdcf2ff1fd00e0f3 b/.resources/f2d39668e63e1fe07a66c0bd7d0004cbd269c95c040a7b5dbdcf2ff1fd00e0f3 deleted file mode 100644 index e6ac6145..00000000 --- a/.resources/f2d39668e63e1fe07a66c0bd7d0004cbd269c95c040a7b5dbdcf2ff1fd00e0f3 +++ /dev/null @@ -1,113 +0,0 @@ -{ - "custom": {}, - "params": { - "breakpoint": 500, - "params": {}, - "path": "Header/Header" - }, - "propConfig": { - "params.breakpoint": { - "paramDirection": "input", - "persistent": true - }, - "params.params": { - "paramDirection": "input", - "persistent": true - }, - "params.path": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "height": 58, - "width": 512 - } - }, - "root": { - "children": [ - { - "meta": { - "name": "Large" - }, - "position": { - "size": "large" - }, - "propConfig": { - "props.params.params": { - "binding": { - "config": { - "path": "view.params.params" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "path": "view.params.path" - }, - "type": "property" - } - } - }, - "props": { - "params": { - "size": "medium" - }, - "style": { - "backgroundColor": "#2B2B2B" - } - }, - "type": "ia.display.view" - }, - { - "meta": { - "name": "Small" - }, - "propConfig": { - "props.params.params": { - "binding": { - "config": { - "path": "view.params.params" - }, - "type": "property" - } - }, - "props.path": { - "binding": { - "config": { - "path": "view.params.path" - }, - "type": "property" - } - } - }, - "props": { - "params": { - "size": "small" - }, - "style": { - "backgroundColor": "#2B2B2B" - } - }, - "type": "ia.display.view" - } - ], - "meta": { - "name": "root" - }, - "propConfig": { - "props.breakpoint": { - "binding": { - "config": { - "path": "view.params.breakpoint" - }, - "type": "property" - } - } - }, - "type": "ia.container.breakpt" - } -} \ No newline at end of file diff --git a/.resources/f3357decc249c75133c28d584bd4961eb138021df42a36a52c90ef2323834236 b/.resources/f3357decc249c75133c28d584bd4961eb138021df42a36a52c90ef2323834236 deleted file mode 100644 index 68b4ff43..00000000 --- a/.resources/f3357decc249c75133c28d584bd4961eb138021df42a36a52c90ef2323834236 +++ /dev/null @@ -1,237 +0,0 @@ -{ - "custom": {}, - "params": {}, - "props": { - "defaultSize": { - "height": 1080, - "width": 400 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "custom": { - "selected_tag": "[BRS1_SCADA_TAG_PROVIDER]System/device_count" - }, - "events": { - "component": { - "onNodeClick": { - "config": { - "script": "\tpath \u003d event.path\n\tinfo \u003d system.tag.getConfiguration(path)\n\ttag_type \u003d str(info[0].get(\"tagType\"))\n\tif tag_type \u003d\u003d \"AtomicTag\":\n\t\tself.custom.selected_tag \u003d path\n\telse:\n\t\tself.custom.selected_tag \u003d None" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "TagBrowseTree" - }, - "position": { - "basis": "669px" - }, - "propConfig": { - "custom.tag_value": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "selected_tag": "{this.custom.selected_tag}" - }, - "tagPath": "{selected_tag}" - }, - "transforms": [ - { - "code": "\timport org.python.core.PyUnicode as uni\n\tif value \u003d\u003d None:\n\t\treturn \"N/A\"\n\t\t\n\tif isinstance(value, uni) and len(value) \u003e 50:\n\t\treturn (value[:50])\n\treturn value", - "type": "script" - } - ], - "type": "tag" - }, - "onChange": { - "enabled": null, - "script": "\tpayload \u003d {}\n\ttag_value \u003d self.custom.tag_value\n\tpayload[\"data\"] \u003d tag_value \n\tsystem.perspective.sendMessage(\"update-tag-value\", payload, scope \u003d \"view\")" - } - }, - "props.root.path": { - "binding": { - "config": { - "expression": "concat(\"[\",{session.custom.fc},\"_SCADA_TAG_PROVIDER]\")" - }, - "type": "expr" - } - } - }, - "props": { - "root": {}, - "selection": { - "mode": "single", - "values": [ - "[BRS1_SCADA_TAG_PROVIDER]System/device_count" - ] - } - }, - "type": "ia.display.tag-browse-tree" - }, - { - "children": [ - { - "meta": { - "name": "Icon" - }, - "position": { - "basis": "32px" - }, - "props": { - "path": "material/local_offer", - "style": { - "marginLeft": "10px" - } - }, - "type": "ia.display.icon" - }, - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "80px" - }, - "props": { - "style": { - "textIndent": "10px" - }, - "text": "Tag Value", - "textStyle": { - "fontSize": "12px", - "fontWeight": "bold" - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "40px" - }, - "props": { - "style": { - "borderBottomLeftRadius": "5px", - "borderBottomRightRadius": "5px", - "borderStyle": "none", - "borderTopLeftRadius": "5px", - "borderTopRightRadius": "5px", - "marginLeft": "10px", - "marginRight": "10px", - "marginTop": "10px" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "meta": { - "name": "Markdown" - }, - "position": { - "basis": "301px" - }, - "props": { - "source": "{}", - "style": { - "fontFamily": "Arial", - "textIndent": "10px" - } - }, - "scripts": { - "customMethods": [], - "extensionFunctions": null, - "messageHandlers": [ - { - "messageType": "update-tag-value", - "pageScope": false, - "script": "\tdata \u003d payload[\"data\"]\n\tself.props.source \u003d data", - "sessionScope": false, - "viewScope": true - } - ] - }, - "type": "ia.display.markdown" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "112px" - }, - "props": { - "style": { - "borderBottomLeftRadius": "5px", - "borderBottomRightRadius": "5px", - "borderStyle": "solid", - "borderTopLeftRadius": "5px", - "borderTopRightRadius": "5px", - "margin": "10px", - "marginLeft": "10px", - "marginRight": "10px", - "marginTop": "10px", - "paddingBottom": "10px", - "paddingLeft": "10px", - "paddingRight": "10px", - "paddingTop": "10px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "1025px" - }, - "props": { - "direction": "column", - "style": { - "borderBottomLeftRadius": "5px", - "borderBottomRightRadius": "5px", - "borderStyle": "solid", - "borderTopLeftRadius": "5px", - "borderTopRightRadius": "5px", - "margin": "10px" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "361px", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/3f7c6fe18e205174ab91875e1a2c6ff245c62fc9519092acc7a1bbb6980b3a0f b/.resources/f3558835c5f3f85ecb17f6ba35b3885ffc717c6d5ef91556d36a3e1645072de8 similarity index 100% rename from .resources/3f7c6fe18e205174ab91875e1a2c6ff245c62fc9519092acc7a1bbb6980b3a0f rename to .resources/f3558835c5f3f85ecb17f6ba35b3885ffc717c6d5ef91556d36a3e1645072de8 diff --git a/.resources/f40812aa47b32848a1c88ec6ba637d0116a1f71ae211b8526f4644ae143fc074 b/.resources/f40812aa47b32848a1c88ec6ba637d0116a1f71ae211b8526f4644ae143fc074 deleted file mode 100644 index d740f8f1..00000000 --- a/.resources/f40812aa47b32848a1c88ec6ba637d0116a1f71ae211b8526f4644ae143fc074 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "base": { - "style": { - "color": "#2B2B2B", - "fontSize": "12px", - "fontWeight": "bold", - "lineHeight": "16px" - } - } -} \ No newline at end of file diff --git a/.resources/f62eaa10fa30b4cb58ff69c5c6b6fa81f00c57a19cd4acd870e5809fc8af2bef b/.resources/f62eaa10fa30b4cb58ff69c5c6b6fa81f00c57a19cd4acd870e5809fc8af2bef deleted file mode 100644 index 22437650b311496fc28759830d6b4cc3c127a50a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 zcmV-p0i6DcP)ZQp|iVA5I+FFeXsoEs_C!4g0BF~+H1&z>RV-FsF@G>)R zXLokvNvS{xA<@(ZH?xExO)-}zl+rL&^)2=l%4u8Ej(72Dt&u(D82BOUc7B_e*tf6e z#IC_8rBIZTH%Yp^5XF|y1@c1t$anGX8q79tm%bhyo+wL!+Ej?_P$m{*3@=&=#YnrU zWN9}TM66w$pt{P|2jdySX~O!?y!JLzd$68AVf`y_hrS-Y41$L8_PWM=ks_YQz{Y-S zf%i%>AGN)`mlZ~%Yt}AKP#x7@j&E^4eK?HQ@8I2|ujhUpdMPxN^Q#3;q8!6)joxF8 ze$p_5w87b(#!(Qnc5#C0hS>(k7a2~&73=@*{RBCy5CB_--|hea002ovPDHLkV1gdm Bqr(6I diff --git a/.resources/c94989174290bda69b34244f35bee5b7e72003edcee3cf8aa5946f00568406b9 b/.resources/f69ee52e3aee3ab6bb10378d7848b4b9d8c4ac1338eb3d5d74b485bc3c77e273 similarity index 100% rename from .resources/c94989174290bda69b34244f35bee5b7e72003edcee3cf8aa5946f00568406b9 rename to .resources/f69ee52e3aee3ab6bb10378d7848b4b9d8c4ac1338eb3d5d74b485bc3c77e273 diff --git a/.resources/83dfbaabbb8ed9a901910e53f71967b254f2e785c1c1bad6dfc806198cb6f8f9 b/.resources/f755f6110cbbd4e7ec796dce0432bb61ed3c9d97742f78f9547542f77198d9ea similarity index 100% rename from .resources/83dfbaabbb8ed9a901910e53f71967b254f2e785c1c1bad6dfc806198cb6f8f9 rename to .resources/f755f6110cbbd4e7ec796dce0432bb61ed3c9d97742f78f9547542f77198d9ea diff --git a/.resources/f7700c0d5fb86d1e281a55bb7adb7f5594fb6c527ac72dccb9ae5ec601ed685a b/.resources/f7700c0d5fb86d1e281a55bb7adb7f5594fb6c527ac72dccb9ae5ec601ed685a deleted file mode 100644 index cf8e3c8b..00000000 --- a/.resources/f7700c0d5fb86d1e281a55bb7adb7f5594fb6c527ac72dccb9ae5ec601ed685a +++ /dev/null @@ -1,1621 +0,0 @@ -{ - "custom": { - "PLC_list": [ - "MCM01", - "MCM02", - "MCM03", - "MCM04", - "MCM05", - "MCM06", - "MCM07" - ], - "running_state": -1, - "state": 0, - "views_data": [] - }, - "params": { - "tagProps": [ - "System/MCM04/Conveyor/Extendo/FL1038_4_EX1", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.PLC_list": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" - }, - "transforms": [ - { - "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", - "type": "script" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.running_state": { - "binding": { - "config": { - "expression": "try(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),-1)\t\r\n" - }, - "transforms": [ - { - "expression": "if({value} !\u003d -1, try(jsonGet({value},\"state\"),4),{value})", - "type": "expression" - } - ], - "type": "expr" - }, - "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": "if(isNull({value}), 0, {value})", - "type": "expression" - }, - { - "fallback": null, - "inputType": "scalar", - "mappings": [ - { - "input": 3, - "output": 3 - }, - { - "input": 2, - "output": 2 - }, - { - "input": 1, - "output": 1 - }, - { - "input": 0, - "output": 0 - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.views_data": { - "binding": { - "config": { - "struct": { - "equipment_id": "{view.params.tagProps[0]}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\tproject_info \u003d system.perspective.getProjectInfo()\n\t#self.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\t#equipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ value.equipment_id)]\n\t#self.custom.views_data \u003d views_data\n\t\n\treturn views_data", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "width": 400 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "color": "#FFFF", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tsystem.perspective.closeDock(\u0027Docked-East-Extendo\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Icon", - "tooltip": { - "enabled": true, - "style": { - "cursor": "pointer" - }, - "text": "Close faceplate" - } - }, - "props": { - "path": "material/close", - "style": { - "cursor": "pointer", - "marginBottom": 5, - "marginLeft": 5, - "marginRight": 5, - "marginTop": 5 - } - }, - "type": "ia.display.icon" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px", - "display": false - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" - }, - "enabled": false, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "Labels/Label_1", - "marginTop": 20 - }, - "text": "No Active Alarms" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "AlarmStatusTable" - }, - "position": { - "basis": "400px", - "grow": 1 - }, - "propConfig": { - "props.filters.active.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "transforms": [ - { - "code": "\treturn value[1:]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "columns": { - "active": { - "displayPath": { - "enabled": false - }, - "priority": { - "enabled": false - }, - "source": { - "enabled": false - }, - "state": { - "enabled": false - } - } - }, - "filters": { - "active": { - "priorities": { - "critical": false, - "high": false, - "low": false, - "medium": false - }, - "states": { - "clearUnacked": false - } - } - }, - "refreshRate": 500, - "toolbar": { - "enabled": false - } - }, - "type": "ia.display.alarmstatustable" - } - ], - "meta": { - "name": "Active_tab" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "NameField" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "NAME" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "DeviceName" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "transforms": [ - { - "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "backgroundColor": "#FFFFFF", - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Name" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Name" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "AOPEN ACTIVE" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Aopen Active" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Aopen_Active" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "ACTIVE" - }, - { - "input": 0, - "output": "NOT ACTIVE" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "ACTIVE", - "output": "#47FF47" - }, - { - "input": "NOT ACTIVE", - "output": "#FF0000" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Aopen Active" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "FULLY EXTENDED" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Fully Extended" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Fully_Extended" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "EXTENDED" - }, - { - "input": 0, - "output": "NOT EXTENDED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "EXTENDED", - "output": "#47FF47" - }, - { - "input": "NOT EXTENDED", - "output": "#FF0000" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Fully Extended" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "FULLY RETRACTED" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Fully Retracted" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Fully_Retracted" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "RETRACTED" - }, - { - "input": 0, - "output": "NOT RETRACTED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "RETRACTED", - "output": "#47FF47" - }, - { - "input": "NOT RETRACTED", - "output": "#FF0000" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Fully Retracted" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "LOADING MODE" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Loading Mode" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Loading_Mode" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "ON" - }, - { - "input": 0, - "output": "OFF" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "ON", - "output": "#47FF47" - }, - { - "input": "OFF", - "output": "#FF0000" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Loading Mode" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "UNLOADING MODE" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Unloading Mode" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Unloading_Mode" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "ON" - }, - { - "input": 0, - "output": "OFF" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "ON", - "output": "#47FF47" - }, - { - "input": "OFF", - "output": "#FF0000" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Unloading Mode" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "POWER SAVING MODE" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Power Saving Mode" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Unloading_Mode" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "ON" - }, - { - "input": 0, - "output": "OFF" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "ON", - "output": "#47FF47" - }, - { - "input": "OFF", - "output": "#FF0000" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Power Saving Mode" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Info_tab" - }, - "position": { - "tabIndex": 1 - }, - "props": { - "direction": "column", - "style": { - "margin-left": "" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc + \"_SCADA_TAG_PROVIDER]\" + tag_name + \"/PEC_Override_PB\"\n\tcurrent_value \u003d system.tag.readBlocking([tag_path])[0].value\n\tnew_value \u003d not current_value\n\tsystem.tag.writeBlocking([tag_path], [new_value])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" - }, - "type": "expr" - } - }, - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#9661A3\",\r\n if(\r\n {this.props.text} \u003d \"PEC OVERRIDE: ON\",\r\n \"#E888FF\",\r\n if(\r\n {this.props.text} \u003d \"PEC OVERRIDE: OFF\",\r\n \"#CC00FF\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/PEC_Override_PB" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "fallback": "PEC OVERRIDE: OFF", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "PEC OVERRIDE: ON" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "classes": "Background-Styles/Controller" - } - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "PEC Override" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "padding": "" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc + \"_SCADA_TAG_PROVIDER]\" + tag_name + \"/Extendo_Faults_Reset_PB\"\n\tcurrent_value \u003d system.tag.readBlocking([tag_path])[0].value\n\tnew_value \u003d not current_value\n\tsystem.tag.writeBlocking([tag_path], [new_value])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" - }, - "type": "expr" - } - }, - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#BB5050\",\r\n if(\r\n {this.props.text} \u003d \"EXTENDO FAULTS RESET PRESSED\",\r\n \"#FF9191\",\r\n if(\r\n {this.props.text} \u003d \"EXTENDO FAULTS RESET\",\r\n \"#FF0000\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Extendo_Faults_Reset_PB" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "fallback": "EXTENDO FAULTS RESET", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "EXTENDO FAULTS RESET PRESSED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "style": { - "classes": "Background-Styles/Controller" - } - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Extendo Fault Reset" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "padding": "" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "100px", - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "gap": 6, - "paddingBottom": 20, - "paddingLeft": 10, - "paddingRight": 10, - "paddingTop": 13 - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Commands_tab" - }, - "position": { - "tabIndex": 2 - }, - "props": { - "direction": "column", - "style": { - "paddingTop": 1 - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "tabs" - }, - "position": { - "grow": 1 - }, - "props": { - "menuType": "modern", - "tabSize": { - "width": 1000 - }, - "tabStyle": { - "active": { - "classes": "", - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - }, - "inactive": { - "classes": "", - "color": "#B8B8B8", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - } - }, - "tabs": [ - "Alarms", - "Info", - "Commands" - ] - }, - "type": "ia.container.tab" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "670px", - "grow": 1 - }, - "props": { - "style": { - "border-top": "1px solid white", - "gap": "" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "800px", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "Buttons/Button-Menu" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/f7962ba99b917f06579ed51ced0bbef945a7810bc7e27227cae8daf4944c1513 b/.resources/f7962ba99b917f06579ed51ced0bbef945a7810bc7e27227cae8daf4944c1513 deleted file mode 100644 index bb1e66d3..00000000 --- a/.resources/f7962ba99b917f06579ed51ced0bbef945a7810bc7e27227cae8daf4944c1513 +++ /dev/null @@ -1,2961 +0,0 @@ -{ - "custom": { - "PLC_list": [ - "MCM01", - "MCM02", - "MCM03", - "MCM04", - "MCM05", - "MCM06", - "MCM07" - ], - "running_state": -1, - "state": 0, - "views_data": [] - }, - "params": { - "tagProps": [ - "System/MCM01/MCM01", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value", - "value" - ] - }, - "propConfig": { - "custom.PLC_list": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC" - }, - "transforms": [ - { - "code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n", - "type": "script" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.running_state": { - "binding": { - "config": { - "expression": "try(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),-1)\t\r\n" - }, - "transforms": [ - { - "expression": "if({value} !\u003d -1, try(jsonGet({value},\"state\"),4),{value})", - "type": "expression" - } - ], - "type": "expr" - }, - "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": "if(isNull({value}), 0, {value})", - "type": "expression" - }, - { - "fallback": null, - "inputType": "scalar", - "mappings": [ - { - "input": 3, - "output": 3 - }, - { - "input": 2, - "output": 2 - }, - { - "input": 1, - "output": 1 - }, - { - "input": 0, - "output": 0 - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - }, - "persistent": true - }, - "custom.views_data": { - "binding": { - "config": { - "struct": { - "equipment_id": "{view.params.tagProps[0]}" - }, - "waitOnAll": true - }, - "transforms": [ - { - "code": "\tproject_info \u003d system.perspective.getProjectInfo()\n\t#self.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\t#equipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ value.equipment_id)]\n\t#self.custom.views_data \u003d views_data\n\t\n\treturn views_data", - "type": "script" - } - ], - "type": "expr-struct" - }, - "persistent": true - }, - "params.tagProps": { - "paramDirection": "input", - "persistent": true - } - }, - "props": { - "defaultSize": { - "width": 400 - } - }, - "root": { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}" - }, - "type": "expr" - } - } - }, - "props": { - "style": { - "color": "#FFFF", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - }, - { - "events": { - "dom": { - "onClick": { - "config": { - "script": "\tsystem.perspective.closeDock(\u0027Docked-East-MCM\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Icon", - "tooltip": { - "enabled": true, - "style": { - "cursor": "pointer" - }, - "text": "Close faceplate" - } - }, - "props": { - "path": "material/close", - "style": { - "cursor": "pointer", - "marginBottom": 5, - "marginLeft": 5, - "marginRight": 5, - "marginTop": 5 - } - }, - "type": "ia.display.icon" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "30px", - "shrink": 0 - }, - "props": { - "style": { - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Label" - }, - "position": { - "basis": "32px", - "display": false - }, - "propConfig": { - "position.display": { - "binding": { - "config": { - "expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)" - }, - "enabled": false, - "type": "expr" - } - } - }, - "props": { - "style": { - "classes": "Labels/Label_1", - "marginTop": 20 - }, - "text": "No Active Alarms" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "AlarmStatusTable" - }, - "position": { - "basis": "400px", - "grow": 1 - }, - "propConfig": { - "props.filters.active.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "transforms": [ - { - "code": "\treturn value[1:]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "columns": { - "active": { - "displayPath": { - "enabled": false - }, - "priority": { - "enabled": false - }, - "source": { - "enabled": false - }, - "state": { - "enabled": false - } - } - }, - "filters": { - "active": { - "priorities": { - "critical": false, - "high": false, - "low": false, - "medium": false - }, - "states": { - "clearUnacked": false - } - } - }, - "refreshRate": 500, - "toolbar": { - "enabled": false - } - }, - "type": "ia.display.alarmstatustable" - } - ], - "meta": { - "name": "Active_tab" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "NAME" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "DeviceName" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.text": { - "binding": { - "config": { - "path": "view.params.tagProps[0]" - }, - "transforms": [ - { - "code": " return value.rsplit(\u0027/\u0027, 1)[-1]", - "type": "script" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "backgroundColor": "#FFFFFF", - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "overflow": "hidden" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Name" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "MOTOR FAULT" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Motor Fault" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Motor_Fault" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "MOTOR FAULTED" - }, - { - "input": 0, - "output": "MOTOR NOT FAULTED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "MOTOR FAULTED", - "output": "#FF0000" - }, - { - "input": "MOTOR NOT FAULTED", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Motor Fault" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "JAM FAULT" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Jam Fault" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Jam_Fault" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "JAM FAULTED" - }, - { - "input": 0, - "output": "JAM NOT FAULTED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "JAM FAULTED", - "output": "#FFC000" - }, - { - "input": "JAM NOT FAULTED", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Jam Fault" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "FIRE RELAY DE ENERGIZED" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Fire Relay De Energized" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Fire_Relay_De_Energized" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "DE ENERGIZED" - }, - { - "input": 0, - "output": "NOT DE ENERGIZED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "DE ENERGIZED", - "output": "#FF0000" - }, - { - "input": "NOT DE ENERGIZED", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Fire Relay De Energized" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "ESTOPPED" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Estopped" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/EStopped" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "ESTOPPED" - }, - { - "input": 0, - "output": "NOT ESTOPPED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "ESTOPPED", - "output": "#FF0000" - }, - { - "input": "NOT ESTOPPED", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Estopped" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "ESTOPPED LOCALLY" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Estopped Locally" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/EStopped_Locally" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "ESTOPPED" - }, - { - "input": 0, - "output": "NOT ESTOPPED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "ESTOPPED", - "output": "#FF0000" - }, - { - "input": "NOT ESTOPPED", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Estopped Locally" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "STOPPED" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "Stopped" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Stopped" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "STOPPED" - }, - { - "input": 0, - "output": "NOT STOPPED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "STOPPED", - "output": "#FF0000" - }, - { - "input": "NOT STOPPED", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Stopped" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "NAT SWITCH FAULT" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "NAT Switch Fault" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/NAT_Switch_Fault" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "SWITCH FAULTED" - }, - { - "input": 0, - "output": "SWITCH NOT FAULTED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "SWITCH FAULTED", - "output": "#FF0000" - }, - { - "input": "SWITCH NOT FAULTED", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "NAT Switch Fault" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "ON UPS BATTERY" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "On UPS Battery" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/On_UPS_Battery" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "ON UPS BATTERY" - }, - { - "input": 0, - "output": "NOT ON UPS BATTERY" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "NOT ON UPS BATTERY", - "output": "#FF0000" - }, - { - "input": "NOT ON UPS BATTERY", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "On UPS Battery" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "UPS BATTERY FAULT" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "UPS Battery Fault" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/UPS_Battery_Fault" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "BATTERY FAULTED" - }, - { - "input": 0, - "output": "BATTERY NOT FAULTED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "BATTERY FAULTED", - "output": "#FF0000" - }, - { - "input": "BATTERY NOT FAULTED", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "UPS Battery Fault" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "UPS BATTERY LOW" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "UPS Battery Low" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/UPS_Battery_Low" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "BATTERY LOW" - }, - { - "input": 0, - "output": "BATTERY NOT LOW" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "BATTERY LOW", - "output": "#FF0000" - }, - { - "input": "BATTERY NOT LOW", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "UPS Battery Low" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "UPS BATTERY ON" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "UPS Battery On" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/UPS_Battery_On" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "ON" - }, - { - "input": 0, - "output": "OFF" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "ON", - "output": "#FF0000" - }, - { - "input": "OFF", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "UPS Battery On" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "meta": { - "name": "Name" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "props": { - "style": { - "paddingLeft": 20 - }, - "text": "UPS FAULT" - }, - "type": "ia.display.label" - }, - { - "meta": { - "name": "UPS Fault" - }, - "position": { - "basis": "50%", - "grow": 1 - }, - "propConfig": { - "props.style.backgroundColor": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#D5D5D5", - "inputType": "scalar", - "mappings": [ - { - "input": "UNKNOWN", - "output": "#FFFFFF" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/UPS_Fault" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")", - "type": "expression" - }, - { - "fallback": "UNKNOWN", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "UPS FAULTED" - }, - { - "input": 0, - "output": "UPS NOT FAULTED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - }, - "props.textStyle.color": { - "binding": { - "config": { - "path": "this.props.text" - }, - "transforms": [ - { - "fallback": "#000000", - "inputType": "scalar", - "mappings": [ - { - "input": "UPS FAULTED", - "output": "#FF0000" - }, - { - "input": "UPS NOT FAULTED", - "output": "#47FF47" - } - ], - "outputType": "color", - "type": "map" - } - ], - "type": "property" - } - } - }, - "props": { - "style": { - "classes": "Text-Styles/Ariel-Bold-12pt", - "paddingLeft": 10 - } - }, - "type": "ia.display.label" - } - ], - "meta": { - "name": "Property" - }, - "position": { - "basis": "35px", - "shrink": 2 - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "UPS Fault" - }, - "position": { - "basis": "35px" - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Info_tab" - }, - "position": { - "tabIndex": 1 - }, - "props": { - "direction": "column", - "style": { - "margin-left": "" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "children": [ - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Start_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" - }, - "type": "expr" - } - }, - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#7DB17D\",\r\n if(\r\n {this.props.text} \u003d \"STARTED\",\r\n \"#41E841\",\r\n if(\r\n {this.props.text} \u003d \"START\",\r\n \"#00A700\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Start_PB_STATE" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "fallback": "START", - "inputType": "scalar", - "mappings": [ - { - "input": 2, - "output": "STARTED" - }, - { - "input": 4, - "output": "STARTED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/not_started" - } - }, - "style": { - "classes": "Background-Styles/Controller" - } - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Start" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "padding": "" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Stop_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" - }, - "type": "expr" - } - }, - "props.style.backgroundColor": { - "binding": { - "config": { - "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#BB5050\",\r\n if(\r\n {this.props.text} \u003d \"STOP PRESSED\",\r\n \"#FF0000\",\r\n if(\r\n {this.props.text} \u003d \"STOP\",\r\n \"#CA0D0D\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n" - }, - "type": "expr" - } - }, - "props.text": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Stop_PB" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "fallback": "STOP", - "inputType": "scalar", - "mappings": [ - { - "input": 1, - "output": "STOP PRESSED" - } - ], - "outputType": "scalar", - "type": "map" - } - ], - "type": "tag" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/stop_circle" - } - }, - "style": { - "classes": "Background-Styles/Controller" - } - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Stop" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "padding": "" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Motor_Fault_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" - }, - "type": "expr" - } - }, - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Motor_Fault_Reset_PB_STATE" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#BCBC52\",\r\n if(\r\n {value} \u003d 2 || {value} \u003d 4,\r\n \"#FCFF86\",\r\n if(\r\n {value},\r\n \"#DCDC03\",\r\n \"#BCBC52\"\r\n )\r\n )\r\n)\r\n", - "type": "expression" - } - ], - "type": "tag" - } - } - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/refresh" - } - }, - "style": { - "classes": "Background-Styles/Controller" - }, - "text": "MOTOR FAULT RESET", - "textStyle": { - "color": "#000000" - } - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Motor Fault Reset" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "padding": "" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Power_Branch_Fault_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" - }, - "type": "expr" - } - }, - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Power_Branch_Fault_Reset_PB_STATE" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#BCBC52\",\r\n if(\r\n {value} \u003d 2 || {value} \u003d 4,\r\n \"#FCFF86\",\r\n if(\r\n {value},\r\n \"#DCDC03\",\r\n \"#BCBC52\"\r\n )\r\n )\r\n)\r\n", - "type": "expression" - } - ], - "type": "tag" - } - } - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/power" - } - }, - "style": { - "classes": "Background-Styles/Controller" - }, - "text": "POWER BRANCH FAULT", - "textStyle": { - "color": "#000000" - } - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Power Branch Fault Reset" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "padding": "" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Low_Air_Pressure_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" - }, - "type": "expr" - } - }, - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Low_Air_Pressure_Reset_PB_STATE" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#9090C2\",\r\n if(\r\n {value} \u003d 2 || {value} \u003d 4,\r\n \"#5D5DFF\",\r\n if(\r\n {value},\r\n \"#0A0AA4\",\r\n \"#9090C2\"\r\n )\r\n )\r\n)\r\n", - "type": "expression" - } - ], - "type": "tag" - } - } - }, - "props": { - "image": { - "icon": { - "path": "material/waves" - } - }, - "style": { - "classes": "Background-Styles/Controller" - }, - "text": "LOW AIR PRESSURE RESET" - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Low Air Pressure Reset" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "padding": "" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Jam_Restart_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" - }, - "type": "expr" - } - }, - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Jam_Restart_PB_STATE" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#A1A1A1\",\r\n if(\r\n {value} \u003d 2 || {value} \u003d 4,\r\n \"#FFFFFF\",\r\n if(\r\n {value},\r\n \"#D4D4D4\",\r\n \"#A1A1A1\"\r\n )\r\n )\r\n)", - "type": "expression" - } - ], - "type": "tag" - } - } - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/sync_problem" - } - }, - "style": { - "classes": "Background-Styles/Controller" - }, - "text": "JAM RESTART", - "textStyle": { - "color": "#000000" - } - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Jam Restart" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "padding": "" - } - }, - "type": "ia.container.flex" - }, - { - "children": [ - { - "events": { - "component": { - "onActionPerformed": { - "config": { - "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Setup_Motor_Speeds\"\n\tsystem.tag.writeBlocking([tag_path],[True])" - }, - "scope": "G", - "type": "script" - } - } - }, - "meta": { - "name": "Button" - }, - "position": { - "basis": "80px", - "grow": 1 - }, - "propConfig": { - "props.enabled": { - "binding": { - "config": { - "expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0" - }, - "type": "expr" - } - }, - "props.style.backgroundColor": { - "binding": { - "config": { - "fallbackDelay": 2.5, - "mode": "indirect", - "references": { - "0": "{view.params.tagProps[0]}", - "fc": "{session.custom.fc}" - }, - "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Setup_Motor_Speeds" - }, - "transforms": [ - { - "expression": "coalesce({value},{view.params.forceFaultStatus},0)", - "type": "expression" - }, - { - "expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#A1A1A1\",\r\n if(\r\n {value} \u003d 1,\r\n \"#FFFFFF\",\r\n \"#A1A1A1\"\r\n )\r\n)\r\n", - "type": "expression" - } - ], - "type": "tag" - } - } - }, - "props": { - "image": { - "icon": { - "color": "#000000", - "path": "material/speed" - } - }, - "style": { - "classes": "Background-Styles/Controller" - }, - "text": "SETUP MOTOR SPEEDS", - "textStyle": { - "color": "#000000" - } - }, - "type": "ia.input.button" - } - ], - "meta": { - "name": "Setup Motor Speeds" - }, - "position": { - "basis": "35px" - }, - "props": { - "style": { - "classes": "PopUp-Styles/InfoLabel", - "padding": "" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer_0" - }, - "position": { - "basis": "100px", - "grow": 1 - }, - "props": { - "direction": "column", - "style": { - "gap": 6, - "paddingBottom": 20, - "paddingLeft": 10, - "paddingRight": 10, - "paddingTop": 13 - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "Commands_tab" - }, - "position": { - "tabIndex": 2 - }, - "props": { - "direction": "column", - "style": { - "paddingTop": 1 - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "tabs" - }, - "position": { - "grow": 1 - }, - "props": { - "currentTabIndex": 1, - "menuType": "modern", - "tabSize": { - "width": 1000 - }, - "tabStyle": { - "active": { - "classes": "", - "color": "#FFFFFF", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - }, - "inactive": { - "classes": "", - "color": "#B8B8B8", - "fontFamily": "Arial", - "fontSize": 14, - "fontWeight": "bold", - "paddingLeft": 10 - } - }, - "tabs": [ - "Alarms", - "Info", - "Commands" - ] - }, - "type": "ia.container.tab" - } - ], - "meta": { - "name": "FlexContainer_1" - }, - "position": { - "basis": "670px", - "grow": 1 - }, - "props": { - "style": { - "border-top": "1px solid white", - "gap": "" - } - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "FlexContainer" - }, - "position": { - "basis": "800px", - "grow": 1 - }, - "props": { - "direction": "column" - }, - "type": "ia.container.flex" - } - ], - "meta": { - "name": "root" - }, - "props": { - "direction": "column", - "style": { - "classes": "Buttons/Button-Menu" - } - }, - "type": "ia.container.flex" - } -} \ No newline at end of file diff --git a/.resources/f7f96eac4b23626432ba950804045f275f4eb76dee0d23133495424849d69a5f b/.resources/f7f96eac4b23626432ba950804045f275f4eb76dee0d23133495424849d69a5f deleted file mode 100644 index a5e37f0df8e7caf93ee35453f4873bf72f377cc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1975 zcmV;o2T1sdP)3$g6h1RkWf2t7utp6eO0Wn4+@hv`AOWm|#3&eR{3RhV8vj_Rk|=*ff(<_)Dk27r zWhv6I7^6Wb6xsKsw9|dsBG7iaFm0#n^mx8|=EC%Krk$a6k}vPgeea(8-Lv0E4GoP9 z)Yms~b8~>N7gh4ff-3ekG;?uHBbU@R-9>5L9j>Sk^cssqxjZYAcbwycnM?5!EUjze zqT7vpwYtvSI|X6v+6_M!-fHOcd@yqf!~nm)o&$k9oG%2A3&HaGX7&ofB6$fY@!#Rg zRdu}USb@2>7v?TQqmZ-^I+G%-w>X2!w!+-ebL7AG zZph@6ms5D`u(3=;iZO!ef`x()1XpYRUxJauTH9JVdrvl}E=c7OG(riD6)Yn5eC=UR zj^Mb5-Gy#;7rEKxbuk^Rl0+HKRY(Cl%Ug$pV0(MJfgu)bat|B2)C}a78i-NO)GvRBYlow=qB+~MKYfU;hI!J=hn*HVM%i-BGW-GDBgw#qQ zmFrRM6od&`GQc^(`3U%=2BHKZ%OjDl$@Q6ZfJjS}p!GHUe3d>x%3#5U9YrH_KjcyhVK3tf;~Mw zylm+*tq_~TNjQ;If{lP6Og&mKRd6!=ES68kL(rOb?}5GSA{Tq!x({*|n1iyHNowje zQdzOAV0;iHW7J|qEJ(HlTXXw36J!Yvl6E_2DzMp8q@@2OJ<*}cAoXBAWX2@e zspeguxn6_gN006-8bRz9i$P2KNRNw8l4=B|i^MR}V`YXQkM5ZigfqkM;K+H6dK2tZ zN#w-eE#^&mDTV0~GN-So!2#jdNh9*z@B#p;#fO58q*{dOz9B7NNYHo((Yum#bC3;E zRt8cJNSh#W)M9)q!LLNh+L+;E%(>MZ4V~HpIcP1Lw6;RsPa^g3RZ3)_7I6!Kqr%0V2Cb6WPe(HoJ zTtcc%5PFt0XfXB(sdl587@xrKTR2Y|(uc`>j_Bim_z!0X!9Peff`acPG7vDQRIq`R z5ZW)u0_Ib+AZa$==X$z=JblUxLjvDQdT9@u`XVgwD+mcM2RGSm`2gdQ=-6p1P%fP{`@+re_|~sL40<_ zm(6nT75zRZIqhzO1`rtElkRj~SWrAZHxR5A-y~DDj899l{tvj?p)5Wxv8(_9002ov JPDHLkV1fh;u4@1Q diff --git a/.resources/5797aa4146c55af16036bf03ebcb7556e019ac6f94541aac279bd28468da89d6 b/.resources/f86043fbc0c250ed4cdc8ed5b364bb915e81606d474f82c40b611c25aa4ad5fc similarity index 100% rename from .resources/5797aa4146c55af16036bf03ebcb7556e019ac6f94541aac279bd28468da89d6 rename to .resources/f86043fbc0c250ed4cdc8ed5b364bb915e81606d474f82c40b611c25aa4ad5fc diff --git a/.resources/f8a5f91e4ab378e9716b7354ae966baf2e5643e2ef098d9f85423da46f861cdf b/.resources/f8a5f91e4ab378e9716b7354ae966baf2e5643e2ef098d9f85423da46f861cdf deleted file mode 100644 index b0b80760..00000000 --- a/.resources/f8a5f91e4ab378e9716b7354ae966baf2e5643e2ef098d9f85423da46f861cdf +++ /dev/null @@ -1,12 +0,0 @@ -{ - "base": { - "style": { - "backgroundColor": "#FFFFFF", - "color": "#000000", - "fontFamily": "Arial", - "fontSize": "12px", - "fontWeight": "bold", - "textAlign": "center" - } - } -} \ No newline at end of file diff --git a/.resources/b1d239481690f9e0d2199262c71542e039d829d38b3d4e02a4e1fda70d73a9a2 b/.resources/f91a4fcd0ab7693c84cbeec3771747e40b3abdd9beeee40b798005cff1d3fc3b similarity index 100% rename from .resources/b1d239481690f9e0d2199262c71542e039d829d38b3d4e02a4e1fda70d73a9a2 rename to .resources/f91a4fcd0ab7693c84cbeec3771747e40b3abdd9beeee40b798005cff1d3fc3b diff --git a/.resources/f929e4738ce19a55423375b15e014e6cbd301a92fe67d3b653306c8cdfb7d24b b/.resources/f929e4738ce19a55423375b15e014e6cbd301a92fe67d3b653306c8cdfb7d24b deleted file mode 100644 index 7abf0a7a6968a4a4e335d0c75c07e4dbe0c4b86a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19548 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 diff --git a/.resources/f95833f03a342ffa31e1bfcc8f6f7a45e17cf7f3d2e8525b4e3e008a4d854f49 b/.resources/f95833f03a342ffa31e1bfcc8f6f7a45e17cf7f3d2e8525b4e3e008a4d854f49 deleted file mode 100644 index 89ac8e150be975714b6c122bca8707073e5be2b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2798 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 PU_Vk~@}ec54E+8V#H86$ literal 131471 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

4EkAfobOc6P&iK0e9a>e6b6LvOQg8i)wSi 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 Y6UNWpu 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 -o`2CxV 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 diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Alarms/RealTime/view.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Alarms/RealTime/view.json index 57419edb..073131d5 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Alarms/RealTime/view.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Alarms/RealTime/view.json @@ -464,6 +464,7 @@ ], "custom": { "priorities": { + "critical": false, "diagnostic": false, "high": false, "low": false, @@ -2682,7 +2683,7 @@ "children": [ { "custom": { - "SetFilter": false + "SetFilter": true }, "events": { "component": { @@ -2785,17 +2786,17 @@ "$": [ "ts", 192, - 1750436956149 + 1755608469647 ], - "$ts": 1750436956149 + "$ts": 1755608469646 }, "startDate": { "$": [ "ts", 192, - 1750436956149 + 1755608469646 ], - "$ts": 1750435156149 + "$ts": 1755606669646 } }, "meta": { @@ -2912,7 +2913,7 @@ "component": { "onActionPerformed": { "config": { - "script": "\tmessaging.message_handler.set_time_from_filters(self)\n\t" + "script": "\tautStand.messaging.message_handler.set_time_from_filters(self)\n\t" }, "scope": "G", "type": "script" @@ -2963,12 +2964,12 @@ }, "onChange": { "enabled": null, - "script": "\tmessaging.message_handler.set_time_from_filters(self)" + "script": "\tautStand.messaging.message_handler.set_time_from_filters(self)" } } }, "props": { - "formattedValue": "Jun 20, 2025 7:59 PM", + "formattedValue": "Aug 19, 2025 4:31 PM", "style": { "margin": 15 } @@ -3047,13 +3048,13 @@ }, "onChange": { "enabled": null, - "script": "\tmessaging.message_handler.set_time_to_filters(self)" + "script": "\tautStand.messaging.message_handler.set_time_to_filters(self)" }, "persistent": true } }, "props": { - "formattedValue": "Jun 20, 2025 8:29 PM", + "formattedValue": "Aug 19, 2025 5:01 PM", "maxDate": { "$": [ "ts", @@ -3068,10 +3069,10 @@ "value": { "$": [ "ts", - 201, - 1750436956149 + 192, + 1755608469647 ], - "$ts": 1750436956149 + "$ts": 1755608469646 } }, "scripts": { @@ -3123,7 +3124,7 @@ "component": { "onActionPerformed": { "config": { - "script": "\tmessaging.message_handler.set_priority_filters(self)" + "script": "\tautStand.messaging.message_handler.set_priority_filters(self)" }, "scope": "G", "type": "script" @@ -3195,14 +3196,13 @@ } ], "custom": { - "ShowFilters": false + "ShowFilters": true }, "meta": { "name": "Filters" }, "position": { "basis": "180px", - "display": false, "grow": 1, "shrink": 0 }, @@ -3261,17 +3261,17 @@ "$": [ "ts", 192, - 1755532385239 + 1755608469647 ], - "$ts": 1750435156149 + "$ts": 1755606669646 }, "time_to_filter": { "$": [ "ts", 192, - 1755532385239 + 1755608469647 ], - "$ts": 1750436956149 + "$ts": 1755608469646 } }, "events": { @@ -4411,17 +4411,17 @@ "$": [ "ts", 192, - 1755532385239 + 1755608469647 ], - "$ts": 1750435156149 + "$ts": 1755606669646 }, "time_to_filter": { "$": [ "ts", 192, - 1755532385239 + 1755608469647 ], - "$ts": 1750436956149 + "$ts": 1755608469646 }, "type_filters": null }, @@ -4678,7 +4678,6 @@ "contentStyle": { "classes": "Background-Styles/Grey-Background" }, - "currentTabIndex": 2, "menuType": "modern", "style": { "classes": "Background-Styles/Grey-Background" diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Docked-West/resource.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Docked-West/resource.json index 91aa32ac..6d88de50 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Docked-West/resource.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Docked-West/resource.json @@ -10,8 +10,8 @@ "attributes": { "lastModification": { "actor": "admin", - "timestamp": "2025-08-19T08:36:40Z" + "timestamp": "2025-08-19T12:27:54Z" }, - "lastModificationSignature": "33e6935db616a5830005ef8b0e01e416aeaed54b4f0ddc71deb0f451ce59fe55" + "lastModificationSignature": "f8544c5b53685867e273f89a181bb90b77e130dcd5cadc8b1231013cec913a59" } } \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Docked-West/thumbnail.png b/BNA8/com.inductiveautomation.perspective/views/autStand/Docked_Views/Docked-West/thumbnail.png index c60c7fb13a3047f9a6fe6c4ce5b366edbcf6f1c7..89e22379901039a8c1b6b5e5dbf1ac6197e1b900 100644 GIT binary patch literal 6423 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 literal 6296 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 delta 963 zcmV;!13diV2jT~iEq_l>6Hye!XUp0hC`wz1{Re>!{Rp~ITw&ryaOo#7nz(S~Lfx_T z1F$tl6NExEk;+0^qqKk#w1u>tnYLgc7`eXtXdC*b?Myook)Fjb^X8s+`r5PT&6}B4 zGYpd$T{mcVr$nEU8xkIKt)ergS)fv}SW`O=YXvb!t-J9S3V#Lqk;&4_=&~HEdNVK6 z?z+vqm8=$GD-{3o4OunuA}g!b$cwD3S|cyAvTBXI?PR5?=0=UdG)>Co4f&yYtS-*A z^j40tIo+bW@!AF5%|W?s9Xn|a-=Yv)B)R=trISy}Z)USws}8+p%4RvJ%W@_C(h zN<~VDrVtmDN`ECeIj@@%Lwv}MwD`dD2|2FR8J<@Z^XFqpT3*?ZA{RdX-0a_&V|&b`RWxwqA+F@CTO+lMOO8_$jZ4F zSvmJ2E9c(Uv(hS;j(De#TK`TnA698PRit+XqPg55Me|3@>qM_Izi4W4TaGJrhUdLC ziJmX(G`+eb#~tHMx$wGK_kZ*vE9YKh<=l&`oO>N+b*wS)PT{Lqv_$9cJ|^Flaq^Dc zA@B9u5`WJ%K2FfUjmh%37OwRR%{Mk-(c!h~@WQKV@LDx^|BbhLDT%K;9f~am?-YDj z$7!hN9EJNm6!u=MA*7tEnw_rJ;H{6HW~Zw)cScDh=Fw?1~7on9GN zZ$9(Q2)?Hz>% z9fX$V$Cc0+0001#(H7GtnY?Q-3-VE=1)b0s005wa(X#v_jJ!dc=`0zUEqa|fKw|&^ zfDT6EAGW3WC)^8hnwedqso1uBY$@dFMPmQ}fDS~{`M)x7DG2}oK$+^F=;7uw00006 zjeh|E06-0B3;=-k2@3{Yz<%{Lfh1f;t?@Bbr>@R*0~!MWplt%40Qr0U?Qy|Rfxdv{ zHBXX2ARtler;$tHF!c#4=iChVJRpv~P)Hsd&2ktY#~JZ+I@ z5gL6oO2apYDd?~B`X>N4gs}MXWKMH);5-K46Yue1cQ@Vd>5=0>@qWFc8Qc@+@vbg< lAhZE-&btJ4uDY9Ohd(@3V8zsYlBoay002ovPDHLkV1j%b+!z1= diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Beacon/resource.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Beacon/resource.json index 6bc72ea1..6fbcbe53 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Beacon/resource.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Beacon/resource.json @@ -8,9 +8,9 @@ ], "attributes": { "lastModification": { - "actor": "external", - "timestamp": "2025-08-18T16:55:42Z" + "actor": "admin", + "timestamp": "2025-08-19T09:26:57Z" }, - "lastModificationSignature": "2307db3c3e2e5786f6050300d4b472c9a32bfe26b2ba7bb40ce9911322cb6e13" + "lastModificationSignature": "73e039a970ca282909374a668a9c7c05f468488d3aa4353484bf11e5e1c0d224" } } \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/resource.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/resource.json index 48b7c8a1..fc8a64ce 100644 --- a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/resource.json +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Camera/resource.json @@ -9,9 +9,9 @@ ], "attributes": { "lastModification": { - "actor": "external", - "timestamp": "2025-08-18T16:55:42Z" + "actor": "admin", + "timestamp": "2025-08-19T09:26:57Z" }, - "lastModificationSignature": "92b6fa153917df5c8a8a8aa0c98fddca1dac2f8932051baf1efa8117e6975f7a" + "lastModificationSignature": "c32cce2d3881aadd3d827b343cdcf3864a03069776b3604f60e810fb066f6655" } } \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlAlarms/resource.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlAlarms/resource.json new file mode 100644 index 00000000..f36e8be0 --- /dev/null +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlAlarms/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-19T13:03:56Z" + }, + "lastModificationSignature": "96f1d1092391bfd9af173e3bd6d73f21947be6ea42ab15e9baa2ab29b42a40a6" + } +} \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlAlarms/thumbnail.png b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlAlarms/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f2c9b36b6027d692cd120b646a65b52b3e260a GIT binary patch literal 1723 zcmV;s21NOZP)z=#*uq+5FvOe$3H+$}R{P*1RpL_1T z{|YrVdJuHF8r0RAkdvq8AewlRoS@emU@{t;@H{~>1Jm*5x5w6CFre&)2Fc27PJ7E+ zvnAZ^xUJbru}aIh3RQ0LV-qVQlL=C%t%T9*^{Cd?aEFNYei-q}E2^QX)-{v2$F{8? zv}W6$aa*%(D`8r*ZO^!E*>-fSZZKPcCQ8t1b*MENafv01ios+u@ds#idX5_AfV!MH zlX{8M5}!bNMy8*dk%#Q7YEIuXTbA`DY!XRI6{qjWwmsvvVN3B*vV^(F66SG<)xVkf z5NLG}C|PV)Gx7>bP;{*bsAqkH4t8S=hqIPta8(sjlv$jX_yp1;{mgS$P?&eULu{3) zcW>LCaUVw8j*3;*`CJIn7DSaLzpxbY%xl=As=~1{Gm?r;47D7|C3V=Jug6A3A*Uri zN0Eu^Z#`9l-4`m|wng{awxAuh?HTuBwC$K!Z97xynJ^_NW|d`+N`oy$E~M$~I9cU@ zLeq#8hE%Py3C|NsCR0|oEPrDAXxKJvNwg1B**RKjM!MDxzy>%OTppmlQ*6p>A{TEh ze`5Pc*ftz`>0m>9)#0LA$XPZynQ^_<2CMi4PtXX#aP!(kr(rta(4Ix*hce14im+HL z5SgOQ#vt_>En2OxFmQegXiI)SU}e5b{!^d($oe!-Z{23_n0qssk8wX^E0oif>Q)J3 zcY!yjoh#d&QrG4tXya<(p@g>NzK5g1C-R?ojm_19ep5IaLeX62Ye>zT?+XZL%k|Jx zm0|aGx=tml>!7G&XBd|q7Go9CQc_T+HN$SV!>lcXLXnCZivtDcjw4xl5e^5_tFPy) zk5JEO8`CYil#WxGxv!3(3$OA_kL6wQFQx#onm`FkJD87B)Qe<_ML-QAdekEbXU{c z*&SMgprH>u?EF$vu7Q!=!|7_Js1$hyn=T(hfY1p$6l#_j4yYA7APD|YlsJ&IX%XU< zZewSin@i8Dt&a&t|ELun9A~q^eF6#;6&K?bj13Z)|DCW)d7UvF_%v!T>kF8*_HPeA z-Oa&*ElMSowNk}qrrQT;71U!dLfWQ%2zuevzMnl5eP55~w8(fQqh#`K;?1h+w2P4H ztHa)?=l%TKfj}SZ%IR}*nhGhYS^N&K)X*)7B~0!S^y|?R`?JlwZ_eJ29szxjTI#@w zUzcIwngmcHBqyxHXjvFOS-A>xX3Rozjs`oHOu&#aGciAAGRBOZfg{-!aJd{Tvwd7? z8WQF*CXMO`fB&wC{UHfXoeE=Rf#~Jm19QG%3F9zhb9@X!LqqYwy4|QF8><0Zmd%DN zd^|o}@D6(R4acb)6p8zrFq_^F$4k>za+(sx%3?~(Huq#ArjH9lm@FCz$FIOvb{f;B zyoszTpzy>NL`{l8VI6RG?`lk+w;Cpw3l0{aJE@j}j{Ya`+LBJ*tT2Y$6BruM1wp|f z2n!2CNN^B3`wvDYbKsY_K?t0<3fh9B=*Cv*@~w&3xi*%s*gwuz;I9>t=-h1}{`}`K z=DpGz!P8cO)~mE4e1?XE$w9=(AVf@zLgZV^k(RU_VK0wCq-;3izB`CxKhKB%z-Y)% zCL#3s?pS~5D$XS=X7hOw2?q`%e(DGa&xIi40jMxPy%&bzQ{2_tYOZ5vOBaj<3JmJn z6$>`(M&h>5@swX59KU!0Zw!1EUms8*ad`xPH;L!fSUqD1UR|(-+tV|>$7u}>e?EF1 zdK(kwI8T@nvhj$Hj>dS|2y|fylTiu$wn&E2u^W(a@LN3HD+FpXsLw=jcR&1|UWHwY z$6-Lk68@ZntEVC`^j%P$ax|O|d;}?BOgWGZ3dGX2>oIM@7>o-KLEM@ju`qHZ-d?v8 zU(S>vpnoXl&W**;-u{@iW*@eH^cn_D_>9k?_}E7HJu?iaE2;P3B#fo5j{m0b{Q`b3 zj6wnL=@Bu&5Ag|SuJOuJ90%p9jzw)-+N1GtTIRa*j?)IYN^I;RlRdgOxoS{M1P7A}#b>#^R z)0S9t0fh=(OngV$fuG@V4H_Tc$YFc8AnhB|Qq>pfCKj}ewEs&RX5I-}&W}a~vqc4S zUvjmQ+=JkM2gAkUwOhy?6p`Q01E+NCm^g1(62D0mT&rPOOG`WOGdzyRCpUlKF!ysR zS}lHkZJ2p)qjp-kN~f|A!4||T%iduLvE)AHGc|lJx3F;J5>3fs@dWSoY`k1Lly=~k z24emm}J^Ea(M2%!x#?`_mhCs(gmOM?Yd#1XA5^BEm;`Aa0sb9|{?U`g+@ zOvDX;$Tx^aF|GdhxYFJYZEs8BeVCV>Po);tjB@}U;1ibv@Uh<+_6@~5|Bfr|ozV80 zUT$o7uX>+vB1YBZllZjlq1{m^`UvOhv5C83Zg6pR)U}Cz5 z3;ztQ_8HDP3Pm5WUa?{GDnrlh{5bWY(4-y)-5<9yzCzJQ==_3*`j=uwhjm=V$AbIV*mH+?% literal 0 HcmV?d00001 diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlStatus/view.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlStatus/view.json new file mode 100644 index 00000000..e8b68b17 --- /dev/null +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/CommandControlStatus/view.json @@ -0,0 +1,227 @@ +{ + "custom": { + "state": { + "$": [ + "ds", + 192, + 1755595218713 + ], + "$columns": [ + { + "data": [ + "MCM01", + "MCM01", + "MCM01", + "MCM02", + "MCM03", + "MCM04", + "MCM04", + "MCM05", + "MCM06", + "MCM07", + "MCM07" + ], + "name": "Location", + "type": "String" + }, + { + "data": [ + "Diagnostic", + "High", + "Medium", + "Diagnostic", + "Diagnostic", + "Diagnostic", + "High", + "Diagnostic", + "Diagnostic", + "Diagnostic", + "High" + ], + "name": "Priority", + "type": "String" + }, + { + "data": [ + 3, + 5, + 2, + 2, + 1, + 2, + 5, + 1, + 1, + 2, + 3 + ], + "name": "Count", + "type": "Long" + } + ] + }, + "status": "" + }, + "params": { + "value": { + "tagProps": [ + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ] + } + }, + "propConfig": { + "custom.state": { + "binding": { + "config": { + "polling": { + "enabled": true, + "rate": "1" + }, + "queryPath": "Alarms-autStand/GetActiveAlarmsByLocationAndPriority" + }, + "type": "query" + }, + "onChange": { + "enabled": null, + "script": "\tMCM \u003d self.params.value.tagProps[0]\n\tqueryData \u003d currentValue.value\n\t\n\tif not queryData:\n\t self.custom.status \u003d \"\"\n\t\n\t# Define priority order from highest to lowest\n\tpriority_order \u003d [\"Critical\", \"High\", \"Medium\", \"Low\", \"Diagnostic\"]\n\texisting_priorities \u003d set()\n\tmyPriority \u003d \"\"\n\t\n\t# Populate the set\n\tfor row in range(queryData.rowCount):\n\t mcm_val \u003d queryData.getValueAt(row, 0)\n\t severity \u003d queryData.getValueAt(row, 1).capitalize()\n\t count \u003d queryData.getValueAt(row, 2)\n\t\n\t if mcm_val \u003d\u003d MCM and count \u003e 0:\n\t existing_priorities.add(severity)\n\t\n\t# Find the highest one that exists\n\tfor priority in priority_order:\n\t if priority in existing_priorities:\n\t myPriority \u003d priority\n\t break\n\t\n\tself.custom.status \u003d myPriority" + }, + "persistent": true + }, + "custom.status": { + "persistent": true + }, + "params.value": { + "paramDirection": "input", + "persistent": true + } + }, + "props": { + "defaultSize": { + "height": 50, + "width": 300 + } + }, + "root": { + "children": [ + { + "events": { + "dom": { + "onClick": { + "config": { + "script": "\tnavigation.navigate_to_page.detailed_view(self, self.view.params.value.tagProps[0],self.view.params.value.tagProps[0], self.view.params.value.tagProps[3])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Label" + }, + "position": { + "grow": 1 + }, + "propConfig": { + "props.style.classes": { + "binding": { + "config": { + "path": "view.custom.status" + }, + "transforms": [ + { + "fallback": "State-Styles/Background-Fill/State5", + "inputType": "scalar", + "mappings": [ + { + "input": "High", + "output": "State-Styles/Background-Fill/State1" + }, + { + "input": "Medium", + "output": "State-Styles/Background-Fill/State2" + }, + { + "input": "Low", + "output": "State-Styles/Background-Fill/State3" + }, + { + "input": "Diagnostic", + "output": "State-Styles/Background-Fill/State4" + } + ], + "outputType": "style-list", + "type": "map" + } + ], + "type": "property" + } + }, + "props.text": { + "binding": { + "config": { + "path": "view.custom.status" + }, + "transforms": [ + { + "fallback": "HEALTHY", + "inputType": "scalar", + "mappings": [ + { + "input": "Diagnostic", + "output": "DIAGNOSTIC" + }, + { + "input": "Low", + "output": "HALF WORKFLOW" + }, + { + "input": "Medium", + "output": "CONTROLLED STOP" + }, + { + "input": "High", + "output": "UNCONTROLLED STOP" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "property" + } + } + }, + "props": { + "style": { + "borderColor": "#555555", + "borderStyle": "none", + "cursor": "pointer", + "marginBottom": 8, + "marginTop": 8 + }, + "textStyle": { + "fontSize": 12, + "textAlign": "center" + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "root" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } +} \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/ControllerStatus/resource.json b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/ControllerStatus/resource.json new file mode 100644 index 00000000..9e1a09e5 --- /dev/null +++ b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/ControllerStatus/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-19T12:48:16Z" + }, + "lastModificationSignature": "cc3de7e4038c9e1403e6d59dc2b9cbd00312c8b90ddd1db5bd396fd9593b6c0f" + } +} \ No newline at end of file diff --git a/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/ControllerStatus/thumbnail.png b/BNA8/com.inductiveautomation.perspective/views/autStand/Equipment/Controller-Views/ControllerStatus/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..c079147cbc3552a744b03cea282ace79e543ad4f GIT binary patch literal 9598 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: + instances = [] + dashboard_devices = {} + for i in devices_list: + area = data[i]['Area'] + if len(data[i]['Area'])>0: + + dashboard_devices.update({i:area}) + else: + dashboard_devices.update({i:'unknown'}) + instances.append({ + "instanceStyle": { + "classes": "", + "margin": "5px" + }, + "instancePosition": {}, + "tagProps": [ + i, + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value", + "value" + ],"Counts":{"Diag":0, "High":0, "Low":0, "Medium":0}, + "area":data[i]['Area'], + "subarea":data[i]['SubArea'] + }) + self.custom.Devices = sorted(dashboard_devices.items(), key=lambda x:x[1], reverse = False) + self.getChild("FlexRepeater").props.instances = sorted(instances, reverse = False) + +def get_counters(alarm_counters, controller): + counters = alarm_counters.get(controller,{"High":0, "Medium":0, "Low":0, "Diagnostic":0}) + return counters + + +def get_device_values(tag_provider, devices_list): + tag_paths_to_read = [] + read_values = [] + for device in devices_list: + tag_path = "%s%s/ALARMST" % (tag_provider, str(device[0])) + tag_paths_to_read.append(tag_path) + values = system.tag.readBlocking(tag_paths_to_read) + for i,j in enumerate(values): + value = values[i].value + if value == None: + read_values.append(0) + else: + read_values.append(value) + return read_values + + +def update_home_status(self): + orderBy = self.session.custom.alarm_filter.orderby + fc = self.session.custom.fc + tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (fc) + alarm_counters = system.tag.readBlocking([tag_provider + "System/device_count"])[0].value + counters_decoded = system.util.jsonDecode(alarm_counters) + if not counters_decoded: + counters_decoded = {} + devices_list = self.custom.Devices + values = get_device_values(tag_provider, devices_list) + + devices_only = [] + for device in devices_list: + devices_only.append(str(device[0])) + + if orderBy == True: + zipped_list = zip(values, devices_only) + else: + zipped_list = sorted(zip(values, devices_only), reverse = True) + + devices_sorted = [y for x, y in (zipped_list)] + for i,j in enumerate(devices_sorted): + counters = get_counters(counters_decoded, j) + self.getChild("FlexRepeater").props.instances[i].tagProps[0] = j + self.getChild("FlexRepeater").props.instances[i].Counts.Diag = counters.get("Diagnostic") + self.getChild("FlexRepeater").props.instances[i].Counts.Low = counters.get("Low") + self.getChild("FlexRepeater").props.instances[i].Counts.Medium = counters.get("Medium") + self.getChild("FlexRepeater").props.instances[i].Counts.High = counters.get("High") \ No newline at end of file diff --git a/BNA8/ignition/script-python/messaging/message_handler/resource.json b/BNA8/ignition/script-python/autStand/Visualisation/home_page/resource.json similarity index 52% rename from BNA8/ignition/script-python/messaging/message_handler/resource.json rename to BNA8/ignition/script-python/autStand/Visualisation/home_page/resource.json index de2660f5..458e9d08 100644 --- a/BNA8/ignition/script-python/messaging/message_handler/resource.json +++ b/BNA8/ignition/script-python/autStand/Visualisation/home_page/resource.json @@ -8,10 +8,10 @@ ], "attributes": { "lastModification": { - "actor": "external", - "timestamp": "2025-08-18T16:55:42Z" + "actor": "admin", + "timestamp": "2025-08-19T12:13:56Z" }, "hintScope": 2, - "lastModificationSignature": "24a508b92c889d2c94d34e5371509fae1e461928b3a3717b090eec6a40f34a21" + "lastModificationSignature": "d44fd4f391a04fa02f88f34b355edd759b571e38729888653b1779bb2f399621" } } \ No newline at end of file diff --git a/BNA8/ignition/script-python/autStand/messaging/message_handler/code.py b/BNA8/ignition/script-python/autStand/messaging/message_handler/code.py new file mode 100644 index 00000000..f737d287 --- /dev/null +++ b/BNA8/ignition/script-python/autStand/messaging/message_handler/code.py @@ -0,0 +1,22 @@ +def set_priority_filters(self): + filters = self.props.value + payload = {} + payload["data"] = filters + system.perspective.sendMessage("set-priority-filters", payload = payload, + scope = "page") + +def set_time_from_filters(self): + "This filter sets the time from for history" + time = self.props.value + payload = {} + payload["data"] = time + system.perspective.sendMessage("set-from-filters", payload = payload, + scope = "page") + +def set_time_to_filters(self): + "This filter sets the time to for history" + time = self.props.value + payload = {} + payload["data"] = time + system.perspective.sendMessage("set-to-filters", payload = payload, + scope = "page") \ No newline at end of file diff --git a/BNA8/ignition/script-python/autStand/messaging/message_handler/resource.json b/BNA8/ignition/script-python/autStand/messaging/message_handler/resource.json new file mode 100644 index 00000000..c4a387db --- /dev/null +++ b/BNA8/ignition/script-python/autStand/messaging/message_handler/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-08-19T13:00:57Z" + }, + "hintScope": 2, + "lastModificationSignature": "65cbc6ef0a1286d7cef775a0028382a084d76661f2e808c2b1e41fd998a60ecc" + } +} \ No newline at end of file diff --git a/BNA8/ignition/script-python/autStand/navigation/additional_view/code.py b/BNA8/ignition/script-python/autStand/navigation/additional_view/code.py new file mode 100644 index 00000000..c3bf1081 --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/additional_view/code.py @@ -0,0 +1,20 @@ +def navigate_to_additional_view(self): + """ + This function is used to navigate to a page from a navigation button. + This function can be used on any button that has a property called "self.custom.page_id" + which is the target page for the button. + Args: + self: Refrence to the object that is invoking this function. + + Returns: + This is a description of what is returned. + + Raises: + KeyError: Raises an exception. + """ + + page_id = self.custom.page_id + plc = page_id.split("-")[0] + url_to_navigate = "/DetailedView/%s/%s" % (page_id, plc) + system.perspective.navigate(page = url_to_navigate) + diff --git a/BNA8/ignition/script-python/autStand/navigation/additional_view/resource.json b/BNA8/ignition/script-python/autStand/navigation/additional_view/resource.json new file mode 100644 index 00000000..e363244f --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/additional_view/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-08-19T12:31:53Z" + }, + "lastModificationSignature": "9db18fbcf40c5119c8bedfb1d3d4f170352447911e3d4625d892bc8d9ef66cf6", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/BNA8/ignition/script-python/autStand/navigation/alarm_navigation/code.py b/BNA8/ignition/script-python/autStand/navigation/alarm_navigation/code.py new file mode 100644 index 00000000..939193be --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/alarm_navigation/code.py @@ -0,0 +1,79 @@ +def set_session_variables(self, search_id, device_search_id): + """ + chnaged from:(self, search_id, device_search_id, plc_tag_path, display_cc, detailed_view) + This function is used to set the custom session variables in the perspective session. + + Args: + self: This is a reference to the object that is calling this function. + search_id: Type string, this should be a UDT name. + device_search_id: Type string, display path of the alarm. + Returns: + None. + + Raises: + None. + """ + self.session.custom.searchId = search_id + self.session.custom.deviceSearchId = device_search_id + +def navigate_to_alarm(self, event): + """ + This function is used to navigate to a detailed view when double + clicking a row in the active alarm table. It takes the Ignition alarm id + to return the alarm information from the "System/ActiveAlarms" tag. + + Args: + self: This is a reference to the object that is clicked on the screen. + event: This is a reference to the event that is clicked on the screen. + Returns: + None. + + Raises: + None. + """ + alarm_id = event.value.get("AlarmId") + tags_to_read = system.tag.readBlocking(["Configuration/DetailedViews","System/ActiveAlarms"]) + pages_decoded = system.util.jsonDecode(tags_to_read[0].value) + active_alarms = system.util.jsonDecode(tags_to_read[1].value) + UDT = active_alarms.get(alarm_id,{}).get("UDT_tag") + bit_position = active_alarms.get(alarm_id,{}).get("bitPosition") + name = active_alarms.get(alarm_id,{}).get("Name") + page_id = active_alarms.get(alarm_id,{}).get("PageId","None") + page = UDT.split("_")[0] + + if page_id != "None" and len(page_id)>0: + page_id = page_id.split("-")[0] + udt_to_read = "%s/Parameters.AREA" % (page_id) + else: + udt_to_read = "%s/Parameters.AREA" % (page) + system.perspective.print(udt_to_read) + read_area = system.tag.readBlocking([udt_to_read]) + area = read_area[0].value + + page_name = "/"+page + display_path = active_alarms.get(alarm_id,{}).get("DisplayPath") + check_keys = pages_decoded.get(page,0) + + if page_id != "None" and page_id != "": + page = page_id.split("-")[0] + url_to_navigate = "/DetailedView/%s/%s" % (page_id, page) + set_session_variables(self, UDT, display_path) + system.perspective.navigate(page = url_to_navigate) + system.perspective.sendMessage("plc-to-display", payload = {"device":page_id, "show_controls":True, "area":area}, scope = "page") + + elif check_keys != 0: + set_session_variables(self, UDT, display_path) + url_to_navigate = "/DetailedView/%s/%s" % (page, page) + system.perspective.navigate(page = url_to_navigate ) + system.perspective.sendMessage("plc-to-display", payload = {"device":page, "show_controls":True, "area":area}, scope = "page") + + else: + for i in pages_decoded: + page_list = pages_decoded[i] + if page in page_list: + set_session_variables(self, UDT, display_path) + url_to_navigate = "/DetailedView/%s/%s" % (i,i) + system.perspective.navigate(page = url_to_navigate) + system.perspective.sendMessage("plc-to-display", payload = {"device":i, "show_controls":True, "area":area}, scope = "page") + + diff --git a/BNA8/ignition/script-python/autStand/navigation/alarm_navigation/resource.json b/BNA8/ignition/script-python/autStand/navigation/alarm_navigation/resource.json new file mode 100644 index 00000000..403bd24d --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/alarm_navigation/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-08-19T12:31:53Z" + }, + "lastModificationSignature": "146e3e4da1d4446472bd4e9e3cc7a5070c6857aa52ebd48b5693a8e1aa7a2348", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/BNA8/ignition/script-python/autStand/navigation/amzl_navigation/code.py b/BNA8/ignition/script-python/autStand/navigation/amzl_navigation/code.py new file mode 100644 index 00000000..636cdc5c --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/amzl_navigation/code.py @@ -0,0 +1,65 @@ +def set_session_variables(self, search_id, covert): + """ + chnaged from:(self, search_id, device_search_id, plc_tag_path, display_cc, detailed_view) + This function is used to set the custom session variables in the perspective session. + + Args: + self: This is a reference to the object that is calling this function. + search_id: Type string, this should be a UDT name. + device_search_id: Type string, display path of the alarm. + Returns: + None. + + Raises: + None. + """ + self.session.custom.searchId = search_id + self.session.custom.covert = covert + + +def navigate_to_alarm(self, mhe_id): + """ + This function is used to navigate to the location of an alarm within SCADA + + Args: + self: This is a reference to the object that is clicked on the screen. + event: This is a reference to the event that is clicked on the screen. + Returns: + None. + + Raises: + Logs and error to the gateway if the Config/cfg tag is not found + or the LinkToPage field is empty. + """ + + config = "%s/Config/cfg" % (mhe_id) + tags_to_read = system.tag.readBlocking(["Configuration/FC", "Configuration/DetailedViews"]) + tag_provider = "[%s_SCADA_TAG_PROVIDER]" % (tags_to_read[0].value) + tags_config = system.tag.readBlocking([tag_provider + config]) + tag_config_value = system.util.jsonDecode(tags_config[0].value) + if tag_config_value: + link_to_page = tag_config_value.get("LinkToPage") + if link_to_page == None or len(link_to_page) == 0: + error_message = "No page id found in Cfg tag" + system.perspective.openPopup("ErrorPopUP", "PopUp-Views/Error", + params ={"Error_message":error_message}, + showCloseIcon = False, modal = True, + viewportBound = True, + draggable = False, + overlayDismiss = True + ) + else: + url_to_navigate = "/DetailedView/%s/%s" % (link_to_page, link_to_page) + #Update the session variables to flash the pointers. + set_session_variables(self, mhe_id, False) + system.perspective.navigate(page = url_to_navigate) + else: + error_message = "No cfg tag found" + system.perspective.openPopup("ErrorPopUP", "PopUp-Views/Error", + params ={"Error_message":error_message}, + showCloseIcon = False, modal = True, + viewportBound = True, + draggable = False, + overlayDismiss = True + ) + diff --git a/BNA8/ignition/script-python/autStand/navigation/amzl_navigation/resource.json b/BNA8/ignition/script-python/autStand/navigation/amzl_navigation/resource.json new file mode 100644 index 00000000..9736b064 --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/amzl_navigation/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-08-19T12:31:53Z" + }, + "lastModificationSignature": "73e2d8722fd9be1ae040137d8ba6e62583a6dccc1f2c956ad897449219bf43c9", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/BNA8/ignition/script-python/autStand/navigation/basic_navigation/code.py b/BNA8/ignition/script-python/autStand/navigation/basic_navigation/code.py new file mode 100644 index 00000000..65db1c1f --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/basic_navigation/code.py @@ -0,0 +1,15 @@ +def detailed_view(page_id): + """ + This function is used to naviagte to a page from a navigation button + This function takes one parameter "page_id. This is the id of the page + the user wishes to navigate to. + + Args: + page_id : Target page the function will use to navigate to. + Returns: + None. + + Raises: + None. + """ + system.perspective.navigate(page_id) diff --git a/BNA8/ignition/script-python/autStand/navigation/basic_navigation/resource.json b/BNA8/ignition/script-python/autStand/navigation/basic_navigation/resource.json new file mode 100644 index 00000000..e518fdc3 --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/basic_navigation/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-08-19T12:31:53Z" + }, + "lastModificationSignature": "8662526bf88e1e4e213ed9ffd694e945aa9fd12eeaf88af1fd1e363f3679a81e", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/BNA8/ignition/script-python/autStand/navigation/navigate_to_page/code.py b/BNA8/ignition/script-python/autStand/navigation/navigate_to_page/code.py new file mode 100644 index 00000000..e5bd1aac --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/navigate_to_page/code.py @@ -0,0 +1,50 @@ +def detailed_view(self, tag_name, device_id, area): + """ + This function is used to naviagte to a detailed view + For example an on click event of a component. + The input paramter array to the component contains a reference to the PLC. + Detail view display all devices and equipement connected to a particular PLC. + The PLC ID is looked up in the "Configuration/DetailedViews" dictionary. + if found it navigates to the detailed view of the page_name {/}. + + Args: + self: This is a reference to the object that is clicked on the screen. + tag_name: Hold information on the particular event that call this function. + area : The area within the FC + Returns: + None. + + Raises: + None. + """ + device = tag_name.split("_") + device = device[0] + # Example: page_name = /F01 + pages = system.tag.readBlocking(["Configuration/DetailedViews"]) + pages_value = pages[0].value + pages_decoded = system.util.jsonDecode(pages_value) + for view , devices in pages_decoded.items(): + if device in devices: + self.session.custom.searchId = tag_name + self.session.custom.deviceSearchId = device_id + system.perspective.sendMessage("plc-to-display", payload = {"device":view,"show_controls":True,"area":area}, scope = "page") + url_to_navigate = "/DetailedView/%s/%s" % (view, view) + system.perspective.navigate(page = url_to_navigate) + return + +def navigate_to_deatiled_view(source): + page_id = config.project_config.get_project_config.global_project_page_ids.get(source) + if page_id: + url_to_navigate = "/DetailedView/%s/%s" % (page_id, page_id) + navigation.amzl_navigation.set_session_variables(self, page_id, False) + system.perspective.navigate(page = url_to_navigate) + elif not page_id: + data = source.split("/") + pass + + + + + + + \ No newline at end of file diff --git a/BNA8/ignition/script-python/autStand/navigation/navigate_to_page/resource.json b/BNA8/ignition/script-python/autStand/navigation/navigate_to_page/resource.json new file mode 100644 index 00000000..186a1a39 --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/navigate_to_page/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-08-19T12:31:53Z" + }, + "lastModificationSignature": "cc115c5b4b980f6f872d364cbf30cfc5b2353a3f7b2e3700cc55c2db4d7d7aa9", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/BNA8/ignition/script-python/autStand/navigation/search/code.py b/BNA8/ignition/script-python/autStand/navigation/search/code.py new file mode 100644 index 00000000..078717cb --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/search/code.py @@ -0,0 +1,44 @@ +def generate_tag_config(self,event): + """This function generates the tag config in the search window. + + Args: + self: A reference to the object that is invoking this function. + event: A reference to the event object that is being called by this function.. + + Returns: + This is a description of what is returned. + + Raises: + None. + + """ + + tag = event.value.get("Tags") + fc = system.tag.read("Configuration/FC").value + path ="[%s_SCADA_TAG_PROVIDER]%s/OPC/" % (fc, tag) + results = system.tag.browse( path = path) + tag_list = results.getResults() + data = [i["fullPath"] for i in tag_list] + table_data = [] + for i in data: + config = system.tag.getConfiguration(i) + alarms = [x.get("alarms") for x in config] + try: + for alarm in alarms: + for x in alarm: +# replace = "[%s_SCADA_TAG_PROVIDER]" % (fc) + system.perspective.print(x) + full_path = str(i) + name = x.get("name") + additional_info = x.get("AdditionalInfo") + priority = x.get("priority") + bit_position = x.get("bitPosition") + row = row_builder.build_row(FullPath = full_path, AdditionalInfo = additional_info, + Priority = priority, Name = name, StyleClass = {"classes":"Alarms-Styles/NoAlarms"}) + table_data.append(row) + except: + system.perspective.print("object not iterable") +# self.getSibling("Table_0").props.data = table_data + payload = {} + payload["table_data"] = table_data + system.perspective.sendMessage("build-tag-config", payload = payload, scope = "view") diff --git a/BNA8/ignition/script-python/autStand/navigation/search/resource.json b/BNA8/ignition/script-python/autStand/navigation/search/resource.json new file mode 100644 index 00000000..fb34ebb6 --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/search/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-08-19T12:31:53Z" + }, + "lastModificationSignature": "5a3cfae3bf8cd49c72d23c590046a23dc0cdfed2cb648f575f0c9c6eb3524ccf", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/BNA8/ignition/script-python/autStand/navigation/show_alarms/code.py b/BNA8/ignition/script-python/autStand/navigation/show_alarms/code.py new file mode 100644 index 00000000..ffedf84e --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/show_alarms/code.py @@ -0,0 +1,34 @@ +def show_alarm_from_docked_window(self,event): + #Get the alarm properties from the alarm object. + """ + Displays the currently active alarm from the south docked alarm table in the detailed view. + If the alarm is on a different page to the current page the function will navigate the user + to the correct page and show the alarm. + + Args: + self: Refrence to the object thats invoking this function. + event: Refrence to the event that is invoking this function. + + Returns: + The fucntion doses not return any values. + + Raises: + KeyError: None + """ + + + alarm_id = event.value.get("AlarmId") + tags_to_read = system.tag.readBlocking(["System/ActiveAlarms"]) + active_alarms = system.util.jsonDecode(tags_to_read[0].value) + UDT = active_alarms.get(alarm_id,{}).get("UDT_tag") + plc = UDT.split("_")[0] + name = active_alarms.get(alarm_id,{}).get("Name") + page_id = active_alarms.get(alarm_id,{}).get("PageId","None") + display_path = active_alarms.get(alarm_id,{}).get("DisplayPath") + + #Set the session custom variables to highlight the selected alarm. + self.session.custom.searchId = UDT + self.session.custom.deviceSearchId = display_path + + url_to_navigate = "/DetailedView/%s/%s" % (page_id, plc) + system.perspective.navigate(page = url_to_navigate) diff --git a/BNA8/ignition/script-python/autStand/navigation/show_alarms/resource.json b/BNA8/ignition/script-python/autStand/navigation/show_alarms/resource.json new file mode 100644 index 00000000..731cfcec --- /dev/null +++ b/BNA8/ignition/script-python/autStand/navigation/show_alarms/resource.json @@ -0,0 +1,17 @@ +{ + "scope": "A", + "version": 1, + "restricted": false, + "overridable": true, + "files": [ + "code.py" + ], + "attributes": { + "lastModification": { + "actor": "admin", + "timestamp": "2025-08-19T12:31:53Z" + }, + "lastModificationSignature": "8a1d4c8cf48f5dfe7e85698cfe72206d2e445c5c47e6df537a1a870981d5ffc1", + "hintScope": 2 + } +} \ No newline at end of file diff --git a/BNA8/ignition/script-python/messaging/message_handler/code.py b/BNA8/ignition/script-python/messaging/message_handler/code.py deleted file mode 100644 index c4da4af4..00000000 --- a/BNA8/ignition/script-python/messaging/message_handler/code.py +++ /dev/null @@ -1,6 +0,0 @@ -def set_priority_filters(self): - filters = self.props.value - payload = {} - payload["data"] = filters - system.perspective.sendMessage("set-priority-filters", payload = payload, - scope = "page") \ No newline at end of file diff --git a/conversion-report.txt b/conversion-report.txt index 124328a3..d9832a79 100644 --- a/conversion-report.txt +++ b/conversion-report.txt @@ -4,3 +4,7 @@ Starting conversion: 20250815:23.07.32 Conversion finished. Elapsed time: 12 ms Starting conversion: 20250818:20.55.38 Conversion finished. Elapsed time: 9 ms +Starting conversion: 20250819:12.44.35 +Conversion finished. Elapsed time: 10 ms +Starting conversion: 20250819:14.28.01 +Conversion finished. Elapsed time: 10 ms diff --git a/tags/tags.json b/tags/tags.json new file mode 100644 index 00000000..4578bd75 --- /dev/null +++ b/tags/tags.json @@ -0,0 +1,245 @@ +{ + "name": "", + "tagType": "Provider", + "tags": [ + { + "name": "System", + "tagType": "Folder", + "tags": [ + { + "valueSource": "memory", + "dataType": "Boolean", + "name": "close_socket", + "value": true, + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "aws_data", + "value": "{}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "DateTime", + "name": "wbsckt_heartbeat_interval", + "value": 1747926522907, + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "download", + "value": "", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "device_count", + "value": "{}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "wbsckt_messages_send", + "value": "{}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "IdToStatus", + "value": "{}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "thread_id", + "value": "421", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "Boolean", + "name": "wbsckt_logging", + "value": false, + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "Boolean", + "name": "wbsckt_running", + "value": true, + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Configuration", + "tagType": "Folder", + "tags": [ + { + "valueSource": "memory", + "dataType": "String", + "name": "aws", + "value": "{\"prefix\":\"na\",\"region\":\"us-east-1\"}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "BACKEND_EDGE_DEVICE", + "value": "quattro", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "DetailedViews", + "value": "{ \"MCM01 Fluid Inbound\": [ \"MCM01\" ], \"MCM02 Non Con Sorter\": [ \"MCM02\" ] }", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "PLC", + "value": "{ \"MCM01\": { \"Area\": \"Fluid Inbound\", \"SubArea\": \"\" }, \"MCM02\": { \"Area\": \"Non Con Sorter\", \"SubArea\": \"\" } }", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "FC", + "alarmEvalEnabled": false, + "value": "BNA8", + "tagType": "AtomicTag" + }, + { + "valueSource": "reference", + "dataType": "String", + "sourceTagPath": "[System]Gateway/SystemName", + "name": "SystemName", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "SiteLatLng", + "value": "{\"lat\":40.19567891533845, \"lng\":-74.56542081870408}", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Latency", + "tagType": "Folder", + "tags": [ + { + "valueSource": "memory", + "dataType": "String", + "name": "avg_latency", + "value": "", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "Boolean", + "name": "first_pass", + "value": true, + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "DateTime", + "name": "last_alarm_change_ts", + "formatString": "yyyy-MM-dd h:mm:ss aa", + "tagType": "AtomicTag" + }, + { + "valueSource": "reference", + "dataType": "String", + "sourceTagPath": "[~]System/aws_data.value", + "name": "aws_data_copy", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "StringArray", + "name": "rolling_latency", + "alarmEvalEnabled": true, + "value": [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "prev_key", + "value": "", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "_types_", + "tagType": "Folder", + "tags": [ + { + "name": "TagProp", + "tagType": "UdtType", + "tags": [ + { + "valueSource": "memory", + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "name": "DCN", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "name": "ALARMST", + "tagType": "AtomicTag" + } + ] + } + ] + } + ] +} \ No newline at end of file