Compare commits

...

859 Commits

Author SHA1 Message Date
peterlu14 3db09734d2 [update] use deviceParameterWindow instead 2022-07-15 10:08:24 +08:00
peterlu14 c0e3a9c61a [update] rename param-table to config-table & add api to config 2022-07-15 10:08:24 +08:00
peterlu14 bcf7b51dc6 [update] mapping unify format string 2022-07-15 10:05:24 +08:00
peterlu14 ba660ac952 [update] fix girdsource not clear problem 2022-07-14 10:21:39 +08:00
peterlu14 d171d8b572 [update] only refresh chart which device running 2022-07-12 10:41:43 +08:00
peterlu14 1e57bde1df [update] chartID uuid && fix mappingID -1 && reset series data && chart created manual or default 2022-07-12 10:38:04 +08:00
peterlu14 0946b01a41 [update] prop chartID add new type 2022-07-12 10:30:36 +08:00
peterlu14 a25e784fd4 Merge branch 'release/v1.2.4/develop_env_var' 2022-07-07 09:35:39 +08:00
peterlu14 ff18fdd8bd [update] add development env variable to control websocket ip 2022-06-29 15:58:23 +08:00
peterlu14 4c4631e89b [update] add debug page 2022-06-29 11:42:03 +08:00
peterlu14 7480717cac Merge branch 'release/v1.2.2/led_testing&download_all' 2022-06-24 15:11:44 +08:00
peterlu14 a29d32fd0f [update] add download all 2022-06-23 20:01:41 +08:00
peterlu14 942e98199e [update] add developer page with LED testing 2022-06-23 20:00:40 +08:00
peterlu14 482caf9650 Merge branch 'release/v.1.2.1/restruct_taskInfo_and_param' 2022-06-23 17:50:36 +08:00
peterlu14 3dfbf809e0 [update] fix chart source name with memory board 2022-06-23 17:35:11 +08:00
peterlu14 e15b1ea27c [update] add frontend version 2022-06-22 22:01:52 +08:00
peterlu14 5829c6c0f4 [update] cut old new file 2022-06-22 19:24:27 +08:00
peterlu14 eeb0775aa3 [update] replace item with new item 2022-06-22 17:23:29 +08:00
peterlu14 fbf8fe1a19 [update] fix eis replay mode problem (temp) 2022-06-22 16:31:41 +08:00
peterlu14 1172b1220c [update] fix pulse sensing replay parameter 2022-06-22 16:12:07 +08:00
peterlu14 f6ef173edb [update] fix eis equation correction 2022-06-22 13:36:56 +08:00
peterlu14 5d03d156e1 [update] fix unit μ encoding problem 2022-06-22 11:20:16 +08:00
peterlu14 7eaf49e19e [update] fix pulseing download 2022-06-21 16:14:01 +08:00
peterlu14 704b3bf0af [update] remove resource error 2022-06-17 19:49:48 +08:00
peterlu14 a44e96a96c [update] add input range slider component 2022-06-17 19:48:31 +08:00
peterlu14 a69b980684 [update] add pulse sensing mode 2022-06-17 19:48:09 +08:00
peterlu14 280951aa05 [update] remove key && fix isNaN('') equal false problem 2022-06-14 18:04:44 +08:00
peterlu14 f0af54aacd [update] add new component MultiInputField 2022-06-14 18:01:17 +08:00
peterlu14 05dc4d278c [update] recover FREQ component & fix current range option 2022-06-14 18:00:02 +08:00
peterlu14 cab5f91a18 [update] add new component for display and update 2022-06-14 16:59:15 +08:00
peterlu14 cd0665dbb3 [update] add EIS & EliteZM15 DPV mode 2022-06-14 16:58:41 +08:00
peterlu14 9265a45371 [update] fix disable HIGHZ & guide show in ZM15 2022-06-14 16:56:18 +08:00
peterlu14 a8663fc9b9 [update] paramTable MODE_OPTIONS replace local options 2022-06-14 16:51:38 +08:00
peterlu14 5acbab5b37 [update] add memory info 2022-06-07 15:03:39 +08:00
peterlu14 31680a6360 [fix] download export header error 2022-06-07 14:45:02 +08:00
peterlu14 5beaaf2d3d [fix] replay showing parameter errror 2022-06-07 14:44:27 +08:00
peterlu14 8519f70fb3 [update] remove taskInfo use newDeviceList instead & new parameter table 2022-06-07 14:43:52 +08:00
peterlu14 52c391fea1 [update] add new parameter response speed 2022-05-20 14:03:04 +08:00
peterlu14 7cb1286af3 [update] cp mode download timestamp fix 2022-05-18 13:14:33 +08:00
peterlu14 4b7961a388 Merge branch 'feature/time_control' into release/v1.1.4_merge_with_configuration 2022-05-18 10:42:17 +08:00
peterlu14 f3841c1008 [update] add new parameter time_duration 2022-05-18 10:23:44 +08:00
peterlu14 66673ff3cb Merge branch 'feature/merge_with_config' into release/v1.1.4_merge_with_configuration 2022-05-11 19:23:25 +08:00
peterlu14 e222a6a5d4 Revert "[update] fix chart source duplicate problem"
This reverts commit d7d49db966.
2022-05-11 19:23:06 +08:00
peterlu14 6985bf79ba Merge branch 'feature/merge_with_config' into release/1.1.4_merge_with_comfiguration 2022-05-11 18:23:32 +08:00
peterlu14 6fa80c4e47 [update] append formula function in dev mode 2022-05-11 17:57:50 +08:00
peterlu14 0d13a10a99 [update] disable chart show filter & cursor change 2022-05-11 17:57:24 +08:00
peterlu14 5781e7398b [update] change legend & axis label color 2022-05-11 17:56:51 +08:00
peterlu14 d7d49db966 [update] fix chart source duplicate problem 2022-05-11 17:56:07 +08:00
peterlu14 f86c82825e [update] fix html element end tag error 2022-05-11 17:54:33 +08:00
peterlu14 ebdc2355f9 [update] fix merge configuration causing problems 2022-05-11 17:25:54 +08:00
peterlu14 5a56aedfd0 [update] fix header value not follwing unit error 2022-05-10 19:37:06 +08:00
peterlu14 dbaefcb6bb Merge branch 'feature/configuration_1.0' into release/v1.1.3_csv_header 2022-05-10 10:50:19 +08:00
peterlu14 e60e17fa28 [update] fix replay eis unit error 2022-05-09 17:20:11 +08:00
peterlu14 32ee3b815e [update] change cg mode sample rate display 2022-05-09 17:02:28 +08:00
peterlu14 4dbc8bddfd [update] add export controller info 2022-05-09 17:01:58 +08:00
peterlu14 ce376fd5a9 [update] update pulse mode parameter setting 2022-05-09 16:58:38 +08:00
peterlu14 3bfabb8333 [update] update eis parameter table 2022-05-09 16:57:35 +08:00
peterlu14 2232c1e17c [update] header-param & showName enable call func 2022-05-09 16:56:51 +08:00
peterlu14 06386fff2a [update] sample_rate name from string to function 2022-05-09 16:55:12 +08:00
peterlu14 5a45d33d63 [update] change headerParameter from array to func 2022-05-09 16:53:41 +08:00
peterlu14 a27503c09b [update] fix download data spacing problem (when data is not defined) 2022-05-06 21:53:38 +08:00
peterlu14 1282b10c34 [update] add same func to offline (change data scale) & fix empty data error 2022-05-06 21:28:34 +08:00
peterlu14 8f718b7372 [update] add all channel mode & data scale can follow unit in param-table 2022-05-06 21:12:00 +08:00
peterlu14 5714bce5c0 [update] download remove duplicate data (time) 2022-05-06 21:08:58 +08:00
peterlu14 ce374a5a4c [update] add readable header & title with flexiable way 2022-05-06 21:06:29 +08:00
peterlu14 8e493c9ec1 [update] add param-table EliteZM15 key to handle download header issue 2022-05-06 21:00:52 +08:00
peterlu14 ddffa2a212 [update] temp chart label color 2022-05-06 10:48:36 +08:00
peterlu14 bd646fafc0 [update] add cp_mode & change parameter order & change cg mode name 2022-05-06 10:48:10 +08:00
peterlu14 1a69bb5822 [update] disable hover stop 2022-05-04 18:36:08 +08:00
peterlu14 0e2ecc763d [update] split project list into config & running & stop project & add lockMode 2022-05-04 18:34:08 +08:00
peterlu14 8a785ca15a [update] consistency parameter name 2022-05-04 18:16:27 +08:00
peterlu14 e2c5845bb8 [update] add running project list 2022-05-03 17:37:56 +08:00
peterlu14 782176bc29 [update] edit project & task name & styling 2022-04-29 17:09:30 +08:00
peterlu14 cd3a2d66a2 [update] fix multi same devices error 2022-04-29 17:07:28 +08:00
peterlu14 829fce435d [update] show device mac_address 2022-04-29 17:06:51 +08:00
peterlu14 b457aa5496 [update] task name solate from project 2022-04-29 17:01:58 +08:00
peterlu14 0cfa124f00 [update] realtime refresh chart 2022-04-29 13:43:15 +08:00
peterlu14 e8b175de7b [update] add new feature project saving & styling 2022-04-29 13:33:22 +08:00
peterlu14 4c2a398841 [update] add key enter event 2022-04-29 13:30:55 +08:00
peterlu14 8bf5c4befc [update] hide filter with developer mode 2022-04-28 13:01:39 +08:00
peterlu14 57b1dcc8d5 [update] add new font roboto 2022-04-28 11:08:04 +08:00
peterlu14 7140ba345c [update] style format 2022-04-28 11:07:34 +08:00
peterlu14 5905e34697 [update] reorder & remove ocp & fix mode & highz error 2022-04-28 10:59:43 +08:00
peterlu14 40ffe28ac7 [update] fix device status problem 2022-04-27 16:03:41 +08:00
peterlu14 bf3f08629e [update] add broadcast change device status 2022-04-27 15:00:09 +08:00
peterlu14 ed3cd23dc1 [update] disable highz on first & switch mode change highz 2022-04-27 13:52:39 +08:00
peterlu14 2708a5f8bf [update] change mode reset highz 2022-04-26 19:10:19 +08:00
peterlu14 c71e00b89e [update] sample rate default & volt param show error 2022-04-26 16:05:28 +08:00
peterlu14 75bab13768 [update] add new parameter table & remove edit icon 2022-04-26 15:06:54 +08:00
peterlu14 bb4020d2d0 [update] project deviceList into device 2022-04-25 11:58:03 +08:00
peterlu14 7e902c3236 [update] project taskList to task 2022-04-25 11:41:42 +08:00
peterlu14 c7a5689023 [update] add project api 2022-04-25 11:40:50 +08:00
peterlu14 7a303f2da2 [update] add after project & task run & previous task run condition & broadcast mes from backend 2022-04-18 01:46:27 +08:00
peterlu14 e49af9ccbd [update] pair device status in backend 2022-04-17 23:43:43 +08:00
peterlu14 49e5c206dc [update] fix project param show error & able to change & restruct param 2022-04-17 23:43:19 +08:00
peterlu14 0d83011474 [update] add developer mode 2022-04-15 20:11:22 +08:00
peterlu14 229fa15d15 [update] get file meta info faster 2022-04-15 15:21:29 +08:00
peterlu14 ac243f926b [update] improve init filetable & fix delete 2022-04-15 15:13:03 +08:00
peterlu14 b7e1315a1e [update] getParmDone fix 2022-04-13 10:50:40 +08:00
peterlu14 a5804d24e7 [update] replace task page api call & file control change 2022-04-12 13:59:56 +08:00
peterlu14 4177c2c706 [update] change pic size 2022-03-24 16:54:09 +08:00
peterlu14 9b212398ce [update] project device & select all & delete task 2022-03-24 16:53:52 +08:00
peterlu14 e2161f02bd [update] fix offline download 2022-03-24 11:01:20 +08:00
peterlu14 039a8efad8 [update] update wire connect pics 2022-03-22 18:35:53 +08:00
peterlu14 841de96a78 [update] excel headstage add memoryboard number 2022-03-14 13:32:08 +08:00
peterlu14 19922faa6b [update] improve download 2022-03-08 13:04:19 +08:00
peterlu14 e96e759081 Merge branch 'feature/project' into dev/merge_replay/help_pic/sample_rate 2022-03-07 14:34:27 +08:00
Roy 29124b43a2 Merge remote-tracking branch 'origin/bug/elite_replay_download' into dev/test_csv 2022-03-04 18:07:23 +08:00
peterlu14 81e59b6147 [update] folder delete 2022-03-04 18:06:46 +08:00
peterlu14 2af8710afc [update] replay download 2022-03-04 16:38:49 +08:00
Roy 99ab06b64f Merge remote-tracking branch 'origin/bug/elite_download_sample_rate_wrong' into dev/test_csv 2022-03-04 15:58:42 +08:00
Roy a42d6b678c Merge remote-tracking branch 'origin/feature/working_mode_help_pic' into dev/test_csv 2022-03-04 15:58:33 +08:00
peterlu14 80105a80dc [update] elite download sample rate wrong 2022-03-04 15:18:33 +08:00
peterlu14 29aa7ddb8e [update] help_doc show 2022-03-04 14:25:28 +08:00
peterlu14 982ac7804b [update] temp save 2022-03-02 16:08:36 +08:00
peterlu14 dc81c3d387 [update] fix parameter_set 2022-02-15 16:59:48 +08:00
Jordan Hsu 0ecd2b50dd [fix] configuration refresh bug 2022-02-12 17:17:34 +08:00
peterlu14 922816cb04 [update] getSelectProject 2022-02-09 10:22:05 +08:00
peterlu14 e53c260a69 [update] project device 2022-01-21 20:15:41 +08:00
peterlu14 3ced97eede [update] license check disable * 2022-01-20 15:54:29 +08:00
peterlu14 5e54ed8701 [update] export csv title Elite EIS added 2022-01-20 15:06:14 +08:00
peterlu14 d02a6c0fbc [update] project action add delete & style change 2022-01-20 10:41:06 +08:00
peterlu14 6c09a62546 [fix] spelling error & parameter name 2022-01-19 17:06:54 +08:00
peterlu14 74a1740b2f [update] button size small 2022-01-19 16:24:41 +08:00
peterlu14 cd18165270 [update] task-view rename & path change 2022-01-19 16:09:51 +08:00
peterlu14 4e5055f344 [update] path rename & change 2022-01-19 15:50:15 +08:00
peterlu14 0f4df7d473 [update] fix parameter not change 2022-01-19 15:45:03 +08:00
peterlu14 3332cf8b8e [update] project condition & action & parameter 2022-01-19 14:46:02 +08:00
Jordan Hsu c984bebf6f [modify] separate chartKey and panelKey 2022-01-14 17:26:13 +08:00
Jordan Hsu 06766f1ac4 [add] can save chart source setting 2022-01-14 15:54:06 +08:00
peterlu14 716a624fb5 [update] parameter set temp save 2022-01-14 14:24:38 +08:00
Jordan Hsu 9981958160 typo 2022-01-12 18:06:11 +08:00
Jordan Hsu e1d6dbd38e fix chart data display bug 2022-01-12 18:01:06 +08:00
Jordan Hsu 96b38e5570 fix cache chart bug 2022-01-12 15:52:23 +08:00
peterlu14 dccd1d960d [update] project task device action condition done 2022-01-12 15:50:29 +08:00
Jordan Hsu ffd246124f tmp 2022-01-10 17:12:27 +08:00
Jordan Hsu 834bcbc4df add missing code 2022-01-10 15:56:25 +08:00
Jordan Hsu 8f6f437f14 [add] missing localforage package dependency 2022-01-10 15:49:17 +08:00
Jordan Hsu e5bc63e5d5 [add] real-time chart add / remove update with cache 2022-01-10 15:38:55 +08:00
Jordan Hsu 5d3dbbac4f [modify] real-time chart data object to vuex 2022-01-10 12:56:35 +08:00
Jordan Hsu 9a77e6dcff [modify] neulive 3.5 sti constraint 2022-01-06 13:09:52 +08:00
peterlu14 5328bd76ba [fix] sd data from api 2022-01-04 14:13:38 +08:00
Jordan Hsu 9d19fd3fc9 add neu 3.1 sample rate option 2022-01-04 11:14:46 +08:00
Alan Lin 1e2bf182bf neu31 update adc_clk ratio formula 2022-01-04 11:03:23 +08:00
Roy e811f6a510 fix eis dc_volt value 2022-01-03 15:49:56 +08:00
Alan Lin 288f9b325c update download SD function 2021-12-27 18:22:03 +08:00
peterlu14 444663def3 Merge branch 'feature/dpv' into testing/security 2021-12-22 13:36:39 +08:00
Alan Lin 0afd9edd7b [fix] download & sd_card click 2021-12-15 17:32:51 +08:00
TommyXin 44d2ba6b41 fix google font error 2021-12-14 18:50:53 +08:00
TommyXin d567186240 fix sti3.5ex channel display 2021-12-07 13:38:46 +08:00
TommyXin cbb81add56 fix 3.5 sti ex ch error 2021-12-07 13:31:50 +08:00
TommyXin c8dded35f5 neulive3.5 sti ex 2021-12-06 18:26:50 +08:00
TommyXin d5dac7a9b3 Merge branch 'neulive_hide_gimer' into testing/security 2021-12-01 16:31:27 +08:00
TommyXin 1a183322ab fix device id not found 2021-12-01 10:55:54 +08:00
TommyXin 7e401621c7 fix default chart generator only consider RECORDING_CH 2021-12-01 10:45:10 +08:00
TommyXin 1485eba2b3 fix check ch number 2021-11-30 10:31:59 +08:00
TommyXin e908f73857 fix file can not show data 2021-11-29 18:40:30 +08:00
TommyXin f587f2b689 fix sd-card api 2021-11-29 18:20:32 +08:00
TommyXin 12eb41fcad fix sd-card icon 2021-11-29 17:38:34 +08:00
TommyXin 4a2b3f6a94 fix font error & auto get controller id 2021-11-29 17:03:34 +08:00
TommyXin 8e9dd79002 change id 2021-11-26 10:34:33 +08:00
TommyXin ea2f9c6748 Merge branch 'neulive_hide_gimer' into testing/security 2021-11-26 10:31:42 +08:00
TommyXin 4af2178225 Merge remote-tracking branch 'origin/feature/AS_wish' into testing/security 2021-11-26 10:31:26 +08:00
peterlu14 cc451f53cc [update] fix realtime filter channel & collapse open 2021-11-25 15:15:14 +08:00
Jordan Hsu 419b8e373f [add] sti pattern sketch map 2021-11-25 15:13:55 +08:00
peterlu14 ffd2b611d3 [update] fix realtime filter channel & collapse open 2021-11-25 14:43:57 +08:00
Jordan Hsu e05fa1c26b [add] chart pointer 2021-11-25 11:00:19 +08:00
Jordan Hsu 98d431fac0 [modify] filter popup without confirm button 2021-11-25 10:31:50 +08:00
Jordan Hsu c1fb4e3488 [add] select all / inverse select button 2021-11-24 18:17:55 +08:00
Jordan Hsu 3239728b0d [add] auto-resize real-time grid 2021-11-24 17:54:06 +08:00
Jordan Hsu 8941e827c1 [add] individual grid iir filter 2021-11-24 15:14:06 +08:00
Jordan Hsu d2eb180381 tmp 2021-11-23 18:14:59 +08:00
peterlu14 01a55781dd [update] sdcard filename change & modal style 2021-11-23 16:39:39 +08:00
warren30815 c2e8aaae06 fix EliteDataReplay overview bug 2021-11-23 02:04:50 +00:00
peterlu14 594fc9da13 [update] update message & api server fail not show 2021-11-22 18:38:06 +08:00
Jordan Hsu 721bab177b [fix] replay bug 2021-11-22 17:11:55 +08:00
peterlu14 6b7828a944 [update] sd card upload show message 2021-11-19 18:03:14 +08:00
Roy c388474952 update global chart lib 2021-11-19 11:42:52 +08:00
peterlu14 75db0a3c13 [update] new module vue notification 2021-11-18 20:42:15 +08:00
Alan Lin 802d6f7d3a swap stop all ins 2021-11-18 17:22:10 +08:00
peterlu14 830e93d9d1 [update] notify rebuild 2021-11-18 14:15:52 +08:00
Jordan Hsu 09c46a282b Merge remote-tracking branch 'origin/feature/download_offline' into neulive_hide_gimer 2021-11-18 12:04:44 +08:00
peterlu14 50693075f9 [update] add sercurity feature 2021-11-17 19:06:48 +08:00
Jordan Hsu 9d22f80c0e [add] elite replay can set window start and size 2021-11-16 16:32:05 +08:00
Jordan Hsu 41a7991255 Merge remote-tracking branch 'origin/feature/dpv' into feature/dpv 2021-11-16 16:31:06 +08:00
peterlu14 623ff914bf Merge branch 'feature/download_offline' into feature/dpv 2021-11-16 14:49:53 +08:00
peterlu14 99dc8d7996 [update] excel format fix 2021-11-16 14:47:36 +08:00
peterlu14 e30416e910 Merge branch 'feature/download_offline' into feature/dpv 2021-11-16 11:37:35 +08:00
peterlu14 72a9ded776 [update] recover controller id 2021-11-15 15:59:06 +08:00
peterlu14 dfbbcdedf1 [update] remove download time limit 2021-11-12 11:01:30 +08:00
Jordan Hsu 1bcbfa953d [add] dpv cycle & check E final 2021-11-11 16:53:39 +08:00
peterlu14 282e435217 [update] add user guide 2021-11-10 16:22:23 +08:00
peterlu14 23d45cfa2f [update] remove device store 2021-11-10 16:19:02 +08:00
peterlu14 da4049bf77 [update] remove guide doc 2021-11-10 16:08:52 +08:00
peterlu14 73ccc68220 [update] connection timeout 2021-11-10 13:24:36 +08:00
Jordan Hsu 25f36a54dd [fix] pdf path error 2021-11-10 11:59:31 +08:00
peterlu14 0bfba093fd [update] download 2021-11-10 10:49:16 +08:00
Jordan Hsu 5e0b14c8e0 [add] device guideline pdf 2021-11-09 20:23:50 +08:00
Jordan Hsu df6e05c8c0 fix trigger UI bug 2021-11-08 14:33:00 +08:00
peterlu14 36c72e27a6 Merge branch 'feature/download_offline' into neulive_hide_gimer 2021-11-05 18:40:24 +08:00
peterlu14 a141535fc9 Merge remote-tracking branch 'origin/feature/neulive31_35_sti_1104' into neulive_hide_gimer 2021-11-05 18:40:11 +08:00
peterlu14 50a2254d44 [update] hide gimer icon 2021-11-05 18:39:55 +08:00
Jordan Hsu 3aaefa6529 bug fix 2021-11-05 17:53:50 +08:00
peterlu14 74d8fdb077 [update] add package file-saver 2021-11-04 22:25:38 +08:00
peterlu14 5b655b2cd0 [update] offline download 2021-11-04 21:51:22 +08:00
Jordan Hsu 8e7f0ecb71 [modify] neulive 3.1/3.5 sti 2021-11-04 14:08:16 +08:00
peterlu14 c8aae625e5 [update] remove offline download directory 2021-11-04 13:58:17 +08:00
peterlu14 a1bb7517f7 [update] offline download excel format & memory & data loss 2021-11-03 10:12:29 +08:00
TommyXin fc65108051 fix bug repeat interval 2021-11-02 17:05:12 +08:00
TommyXin ff0be97176 hide repeatNumber when unlimit cycle 2021-11-02 17:00:29 +08:00
TommyXin 6cdd0f772e fix check recording channels 2021-11-02 16:29:34 +08:00
TommyXin b61f51cab2 cycle unlimited no setStiTimeout & check recording one channel at least 2021-11-02 15:43:26 +08:00
Jordan Hsu b00649f03e bug fix 2021-11-01 18:34:45 +08:00
Jordan Hsu 755525dc28 [fix] elite replay cycle bug 2021-11-01 17:36:34 +08:00
Jordan Hsu 91929c0a34 Merge branch 'release/AS_1027' into feature/dpv 2021-11-01 17:04:30 +08:00
Jordan Hsu 389040a98a [add] elite replay param table 2021-11-01 16:49:50 +08:00
Jordan Hsu 2908f2c510 [modify] replay UI layout 2021-11-01 16:04:32 +08:00
Jordan Hsu 08c732ace8 toggle color to green 2021-10-29 18:54:19 +08:00
Jordan Hsu 73fbaf92ab adjust trigger UI 2021-10-29 18:50:49 +08:00
Jordan Hsu 80d8bdf7f9 [add] trigger block 2021-10-29 17:15:53 +08:00
Jordan Hsu 40c09de1dd [modify] UI disable mode color 2021-10-29 16:00:17 +08:00
Jordan Hsu 1541a57b1b [modify] dpv UI and switch 2021-10-29 15:32:19 +08:00
Jordan Hsu 2f5ef791e4 [modify] dpv rule 2021-10-29 15:18:25 +08:00
Jordan Hsu cc64f62335 Merge branch 'feature/elite_trigger' into feature/dpv 2021-10-28 14:52:33 +08:00
Jordan Hsu 66c19ab51b [modify] dpv slider two pins 2021-10-28 14:51:48 +08:00
Jordan Hsu fa7b51143b [update] neulive 3.5 repeatIntervalCheck with cycle 2021-10-28 09:54:45 +08:00
peterlu14 7c300a4ce2 [update] neulive3.5 repeatIntervalCheck 2021-10-28 00:04:32 +08:00
TommyXin e6a9a3fbd6 Merge branch 'neulive_sunpower' into release/AS_1027 2021-10-27 22:16:35 +08:00
TommyXin f523c189dc remove console.log 2021-10-27 22:15:42 +08:00
TommyXin bc86b2f541 Merge branch 'neulive_sunpower' into release/gimer_1026 2021-10-27 22:14:05 +08:00
peterlu14 5ea023df43 [update] remove filetable get sd card uuidList 2021-10-27 22:08:57 +08:00
TommyXin ebf912a971 clear stiTimeOut 2021-10-27 21:59:15 +08:00
TommyXin d440dfbe39 clear stiTimeOut 2021-10-27 21:51:52 +08:00
Jordan Hsu 8257a30118 [modify] elite replay layout 2021-10-27 16:29:50 +08:00
Jordan Hsu 68cec7d482 [fix] abs toggle bug 2021-10-27 16:28:42 +08:00
TommyXin e61d4340a7 gimer id 2021-10-27 16:12:33 +08:00
TommyXin 810e8c46e9 update 2021-10-27 16:12:12 +08:00
TommyXin 1c32850990 remove gimer routes 2021-10-27 16:02:46 +08:00
TommyXin 21bb7440f1 Merge remote-tracking branch 'origin/release/gimer_1026' into release/gimer_1026 2021-10-27 15:50:32 +08:00
TommyXin 505a2a9e03 Merge branch 'neulive_sunpower' into release/gimer_1026 2021-10-27 15:48:13 +08:00
TommyXin f6a6c4101d update gimer icon 2021-10-27 15:47:34 +08:00
TommyXin c4fc506f9f ch number for filter 2021-10-27 15:28:20 +08:00
TommyXin 3a8315339a Merge remote-tracking branch 'origin/neulive_sunpower' into neulive_sunpower 2021-10-27 15:27:06 +08:00
TommyXin 08b3904cb9 channel number & amplitude change 2021-10-27 15:26:55 +08:00
peterlu14 b2ba658e6e [update] add library name list 2021-10-27 15:12:21 +08:00
peterlu14 76a16cae1a [update] ampgain diff from library 2021-10-27 15:01:21 +08:00
peterlu14 04d564afd8 [update] offline download 2021-10-27 14:49:47 +08:00
TommyXin 9c42c05621 [bug] sti ex time = interval * number 2021-10-27 14:46:33 +08:00
Jordan Hsu 42925bec2d Merge branch 'release/neulive_elite_1012' into feature/dpv 2021-10-27 13:56:51 +08:00
Jordan Hsu 5be30fc910 [modify] elite replay abs button style 2021-10-27 13:55:36 +08:00
Jordan Hsu c26a72749e [fix] dpv bug 2021-10-27 13:21:23 +08:00
Jordan Hsu ca41619338 [modify] elite replay UI layout 2021-10-27 12:10:28 +08:00
Jordan Hsu 4e119b5eaf [modify] dpv UI layout 2021-10-27 11:16:56 +08:00
TommyXin 468c5a2567 regular 3.5 check sti done 2021-10-27 11:01:43 +08:00
TommyXin 70651f55c0 [update] neulive regular 3.5 UI 2021-10-27 10:33:19 +08:00
Jordan Hsu 02aff9f02c [fix] typo 2021-10-27 10:21:42 +08:00
Jordan Hsu c1dbf93d65 [add] missing formula 2021-10-27 00:29:26 +08:00
Jordan Hsu 6effc08904 [init] trigger UI 2021-10-27 00:03:39 +08:00
TommyXin f237efc430 Merge remote-tracking branch 'origin/feature/sd_card_check_and_init' into release/gimer_1026 2021-10-26 18:45:34 +08:00
TommyXin ab15129100 Merge branch 'neulive_sunpower' into release/gimer_1026 2021-10-26 18:43:46 +08:00
TommyXin 38f440ea67 add gimer icon to app sidebar 2021-10-26 18:32:18 +08:00
peterlu14 6c9fb2e513 [update] update transmission_type status 2021-10-26 17:15:05 +08:00
peterlu14 92e8c15308 [update] restruct download 2021-10-26 17:13:42 +08:00
TommyXin 7c6a05ecc4 amplitude * 10 (for UI) 2021-10-26 16:15:54 +08:00
TommyXin f63fca5fc4 remove console.log 2021-10-26 14:46:21 +08:00
TommyXin b59262643f Merge remote-tracking branch 'origin/feature/sd_card_check_and_init' into neulive_sunpower 2021-10-26 14:36:20 +08:00
TommyXin 2650ba10fb Merge branch 'feature/dpv' into neulive_sunpower 2021-10-26 14:35:56 +08:00
TommyXin 578578a312 multi filter & check stimulation 2021-10-26 14:35:04 +08:00
peterlu14 6e700e7201 [update] disable device_update_usb 2021-10-26 11:31:01 +08:00
TommyXin 99ef7bfe04 Merge branch 'neulive_sunpower' into feature/dpv 2021-10-26 11:07:52 +08:00
TommyXin 0d88866001 sti check exTime 2021-10-26 11:07:25 +08:00
TommyXin 0150eebb0c fix amp gain bug 2021-10-26 10:36:31 +08:00
Jordan Hsu f885812258 [add] missing code 2021-10-26 09:21:40 +08:00
Jordan Hsu 21f5c75836 [init] dpv front end with formula 2021-10-25 16:34:38 +08:00
TommyXin bf20a50107 realtime filter [notch] 2021-10-25 15:36:28 +08:00
TommyXin d72e59bb81 amp gain change 500&300 2021-10-22 22:00:48 +08:00
TommyXin 69058bd0f0 deviceList vuex 2021-10-22 21:25:45 +08:00
TommyXin 6639560dd4 Merge remote-tracking branch 'origin/release/neulive_elite_1012' into neulive_sunpower 2021-10-22 17:26:42 +08:00
Jordan Hsu 3ed4253b13 [update] gimer / 3.5 t range constraint rule 2021-10-22 11:27:25 +08:00
Jordan Hsu c6555cb4f3 Merge branch 'neulive_sunpower' into release/neulive_elite_1012 2021-10-21 14:18:55 +08:00
TommyXin 62d4b634c2 set power enable while record 2021-10-21 14:09:35 +08:00
Jordan Hsu a8e2ec509e [add] repeat interval rule 2021-10-21 13:51:24 +08:00
Jordan Hsu 5c35bff99f [add] gimer t range rule 2021-10-20 18:15:01 +08:00
TommyXin 2e76071ea6 Merge branch 'iir_filter' into neulive_sunpower 2021-10-20 15:21:38 +08:00
TommyXin ce9cac1f02 gimer ui 2021-10-20 15:20:18 +08:00
Jordan Hsu feb9c84488 [add] abs toggle 2021-10-19 19:37:04 +08:00
TommyXin ac0aef6109 [TODO] filter by chart and detect device from ch (get fs) 2021-10-19 18:47:47 +08:00
Jordan Hsu 1b424bcfd2 [fix] elite replay param panel mode bug 2021-10-19 15:15:05 +08:00
Jordan Hsu 05b33bd9bf [fix] neulive replay missing code 2021-10-19 15:14:12 +08:00
Jordan Hsu 62424e3438 [modify] replay axis log scale 2021-10-19 14:46:57 +08:00
TommyXin 16799a85bd Merge branch 'neulive_sunpower' into iir_filter 2021-10-19 14:11:35 +08:00
TommyXin 7f295cc86e Merge remote-tracking branch 'origin/feature/sd_card_check_and_init' into iir_filter 2021-10-19 14:11:16 +08:00
TommyXin 5651cb68a5 fix button 256 2021-10-19 08:57:43 +08:00
TommyXin 80e1841776 repeat num 255 2021-10-18 19:17:26 +08:00
TommyXin af337bdde6 check stimulating & auto close save power node while recording 2021-10-18 16:27:20 +08:00
TommyXin 9e59da8fd1 gimer start condition 2021-10-18 14:23:45 +08:00
TommyXin df2815eb0e sti check recording status 2021-10-15 19:05:11 +08:00
TommyXin 70750de23d taskDeviceList doesn't destroy deviceList 2021-10-15 18:12:57 +08:00
TommyXin 89f45520d3 fix hide device panel bug 2021-10-15 17:31:17 +08:00
peterlu14 8b08cd899b [update] usb & rename api & check sd usb when connect 2021-10-15 16:02:11 +08:00
TommyXin e808352244 electrode site support double color button 2021-10-15 16:00:19 +08:00
TommyXin 4e777fff1b check device status 2021-10-14 19:00:19 +08:00
peterlu14 3e9db25dad [update] recover controller id 2021-10-14 11:03:51 +08:00
peterlu14 033088ddde [update] sdcard check and init 2021-10-13 22:01:50 +08:00
peterlu14 47712e5ff1 [update] fix spike first timemark 2021-10-13 21:59:26 +08:00
Alan Lin 5e883ef672 Merge branch 'neulive_sunpower' of gitlab.com:bioproscientific/bioprovue into neulive_sunpower 2021-10-13 16:17:07 +08:00
Alan Lin a7591860cf update T2, T4 counter 2021-10-13 16:16:44 +08:00
Jordan Hsu 68510b3c42 [fix] import path error 2021-10-13 16:11:21 +08:00
TommyXin 1f102c3816 route task Gimer 2021-10-13 15:27:16 +08:00
Alan Lin 1b1ee5f58a update Giner STI.vue 2021-10-13 13:55:20 +08:00
Jordan Hsu a20f24c45f [fix] t range rounding and GM channel bug 2021-10-13 11:55:17 +08:00
peterlu14 e29e0caee6 Merge branch 'feature/spike_UI_enhance' into release/neulive_elite_1012 2021-10-12 17:38:41 +08:00
peterlu14 715f1ef1d0 [update] align controller_id 2021-10-12 17:30:40 +08:00
Jordan Hsu 537b668d1e click stop to click native stop 2021-10-12 16:03:12 +08:00
Jordan Hsu a658203c0a Protect recording channels button add parasend event 2021-10-12 15:50:12 +08:00
Alan Lin 63e00b91f6 update t3t4 counter formula 2021-10-12 15:08:52 +08:00
peterlu14 cc7e2adc81 Merge branch 'feature/add_sd_icon' into feature/spike_UI_enhance 2021-10-12 12:16:05 +08:00
peterlu14 98738bcb10 [update] remove export info 2021-10-12 12:09:02 +08:00
peterlu14 e34605c488 [update] spike update 2021-10-12 11:29:19 +08:00
TommyXin 887ebc0907 real time iir filter 2021-10-08 18:08:11 +08:00
Jordan Hsu 91e4acbcb0 [fix] real time chart mode 2021-10-08 17:11:57 +08:00
Jordan Hsu 4bb59d5c87 [add] elite replay circle dot 2021-10-08 16:54:23 +08:00
peterlu14 ed3d8a81ff Merge branch 'feature/neulive3.5-sti-amp' into feature/spike_UI_enhance 2021-10-08 10:14:55 +08:00
peterlu14 87c9cba03c [update] spike data mqtt add 2021-10-08 10:09:25 +08:00
Jordan Hsu 1a08d7ff28 [modify] 3.5 & gm t range 2021-10-08 10:08:18 +08:00
TommyXin 641b001b88 fix realtime lose data 2021-10-07 19:44:02 +08:00
Jordan Hsu aeb265b206 [fix] eis param bug 2021-10-07 18:39:54 +08:00
Jordan Hsu 932b8c8025 [fix] freq start and end bug 2021-10-07 17:42:10 +08:00
Alan Lin f040150ac3 updata repeat time formula 2021-10-07 17:02:45 +08:00
Alan Lin 956f84476f Merge branch 'neulive_sunpower' of gitlab.com:bioproscientific/bioprovue into neulive_sunpower 2021-10-07 16:46:25 +08:00
TommyXin c028d14ade repeat number & interval 2021-10-07 16:44:54 +08:00
Alan Lin 5108c7ffd9 Merge branch 'neulive_sunpower' of gitlab.com:bioproscientific/bioprovue into neulive_sunpower 2021-10-07 15:38:33 +08:00
TommyXin 33f78b0f83 save power mode bool to number 2021-10-07 15:36:36 +08:00
Alan Lin c12ded4834 Merge branch 'neulive_sunpower' of gitlab.com:bioproscientific/bioprovue into neulive_sunpower 2021-10-07 15:34:06 +08:00
TommyXin ad3553a68e fix save power mode 2021-10-07 15:33:50 +08:00
Alan Lin 6608ee9e86 Merge branch 'neulive_sunpower' of gitlab.com:bioproscientific/bioprovue into neulive_sunpower 2021-10-07 15:17:53 +08:00
Alan Lin 2388e82c5d T3, T4 counter use correct formula 2021-10-07 15:17:42 +08:00
TommyXin 72d87712b3 save power mode & protect channels 2021-10-07 15:15:42 +08:00
Alan Lin 2e1c3237f4 add new parameter 2021-10-07 14:08:10 +08:00
Jordan Hsu dec21dfee0 [modify] eis ui 2021-10-07 14:06:02 +08:00
Jordan Hsu 7bde032cf6 [fix] eis param typo 2021-10-07 13:49:21 +08:00
Jordan Hsu f83ad1efbf Merge branch 'feature/eis_replay' into release/elite_1007 2021-10-07 13:47:24 +08:00
TommyXin b04d9ff29e fix Trange_CH0 cannot refresh 2021-10-06 15:57:46 +08:00
TommyXin 86e3cee7ec add save power mode / protect channel 2021-10-06 15:03:46 +08:00
TommyXin 6a96620549 fix bug 2021-10-05 18:15:20 +08:00
TommyXin 1d5813c8fa window 2021-10-05 18:00:39 +08:00
TommyXin b717bf8906 electrode site 2021-10-05 16:42:17 +08:00
peterlu14 de8fbc9bbe [update] spike button eventproof 2021-10-05 15:33:33 +08:00
peterlu14 403be30139 Merge branch 'release/merge_SD_card_UI_0924_2' into feature/neulive3.5-sti-amp 2021-10-05 11:09:59 +08:00
Jordan Hsu c307735dc3 [done] eis replay 2021-10-04 18:39:01 +08:00
TommyXin f88e28616e sti pos 2021-10-04 18:00:22 +08:00
TommyXin a102567dea recording site 2021-10-04 17:51:23 +08:00
peterlu14 46017134d8 [update] spike optimize 2021-10-01 14:21:12 +08:00
peterlu14 e2298a6ccc [update] download excel bug fix 2021-09-27 20:21:01 +08:00
peterlu14 5a61e24495 [update] icon usb to sd card & remove ! 2021-09-24 19:37:38 +08:00
peterlu14 c4007b7930 Merge branch 'feature/SD_card_UI' into release/merge_SD_card_UI_0924 2021-09-24 12:52:21 +08:00
peterlu14 2fe1cd6e00 [update] add progress bar & controller sd_uploading check 2021-09-24 12:50:29 +08:00
peterlu14 4cc7b9e12f [update] mac address change & get sync to async 2021-09-22 14:33:06 +08:00
peterlu14 8b4f210f95 Merge commit '1af50d0bfc7ec75a6aaf1aa493b31b29fc20882a' into feature/SD_card_UI 2021-09-22 14:31:46 +08:00
peterlu14 1af50d0bfc [update] databatch 2021-09-17 13:26:36 +08:00
TommyXin 99b2b9dfce remove check param 2021-09-16 17:05:24 +08:00
TommyXin 1004c7075e [update] EIS unit ch4&8, window by elite lib ver. 2021-09-16 17:05:16 +08:00
peterlu14 8f4cbc0eeb Merge remote-tracking branch 'origin/feature/neulive_replay_wish' into release/neulive_elite_0913 2021-09-15 19:07:12 +08:00
TommyXin f741a2d018 fix x-axis unit 2021-09-15 19:06:46 +08:00
TommyXin 008897830d fix source X 2021-09-15 19:06:41 +08:00
TommyXin 5c297687f1 multi channel & unit 2021-09-15 19:06:32 +08:00
Jordan Hsu 213caf9796 [fix] replay window can't zoom bug 2021-09-15 17:10:21 +08:00
peterlu14 0fda2141dd [update] add record_in_sd option 2021-09-15 02:36:16 +08:00
peterlu14 3761493ec1 [update] remove sd card delete 2021-09-15 01:04:18 +08:00
peterlu14 87300e7a43 Merge remote-tracking branch 'origin/feature/SD_card_UI' into release/neulive_elite_0913 2021-09-15 00:59:47 +08:00
peterlu14 85103f5f12 [update] expand action width & change order 2021-09-15 00:56:58 +08:00
Jordan Hsu 1059a98c27 [add] sd button confirm modal before uploading 2021-09-14 15:54:57 +08:00
Jordan Hsu 8150afc624 Merge remote-tracking branch 'origin/feature/SD_card_UI' into feature/SD_card_UI 2021-09-14 14:13:30 +08:00
Jordan Hsu b0de357d89 [add] replay check if sd uploaded 2021-09-14 14:12:53 +08:00
peterlu14 44c1a41d99 Merge branch 'feature/SD_card_UI' into release/neulive_elite_0913 2021-09-14 14:00:28 +08:00
peterlu14 a6a9b64da2 [update] getSDuuidList 2021-09-14 13:05:05 +08:00
Jordan Hsu a4ccee71a8 [fix] sd card UI bug 2021-09-14 11:47:45 +08:00
Jordan Hsu 2cbdab696c Merge branch 'feature/neulive_replay_wish' into release/neulive_elite_0913 2021-09-13 18:48:35 +08:00
Jordan Hsu 3fe5e4af0c adjust UI 2021-09-13 18:42:51 +08:00
Jordan Hsu 577cf09951 [add] replay custom window start and size 2021-09-13 17:48:11 +08:00
peterlu14 0c18ce1829 Merge remote-tracking branch 'origin/feature/elite_replay_down_scale' into release/neulive_0913 2021-09-13 14:52:03 +08:00
peterlu14 7c336d4bd3 Merge remote-tracking branch 'origin/feature/neulive_replay_wish' into release/neulive_0913 2021-09-13 14:51:31 +08:00
Jordan Hsu 95955e23e0 [add] lock button 2021-09-13 14:07:44 +08:00
peterlu14 d387f83f87 [update] setting pic update & display fix 2021-09-10 20:03:13 +08:00
Jordan Hsu 0e1695bb4e [modify] elite replay will detect resample rate and auto down rate 2021-09-10 20:02:53 +08:00
peterlu14 fba42100d8 Merge branch 'feature/setting_update' into devlop/neulive_merge_sd_card 2021-09-10 12:39:56 +08:00
peterlu14 acd1b300d7 Merge branch 'feature/SD_card_UI' into devlop/neulive_merge_sd_card 2021-09-10 12:39:26 +08:00
Jordan Hsu 3f4d5de662 [modify] nprogress color to red 2021-09-10 12:09:49 +08:00
Jordan Hsu 56f4f0274c [remove] elite sd card button 2021-09-10 11:51:31 +08:00
Jordan Hsu e6aeb9203d [fix] sd card UI won't re-render after changing page bug 2021-09-09 21:02:41 +08:00
Jordan Hsu da7581de63 [update] shell script readme 2021-09-09 18:29:14 +08:00
Jordan Hsu 6d9294775d clean up sd card code 2021-09-09 18:08:14 +08:00
Jordan Hsu 3a7d685d31 [fix] monophasic checkpoint bug 2021-09-09 17:50:51 +08:00
peterlu14 16df8514ba [update] setting pic update & display fix 2021-09-09 13:39:21 +08:00
Jordan Hsu a5085cbbe6 sd card UI 2021-09-08 21:29:55 +08:00
peterlu14 1fbf8c0022 [update] download replay data 2021-09-08 20:07:28 +08:00
peterlu14 0f5cbaf778 [update] sd_data download & replay 2021-09-08 16:26:49 +08:00
Jordan Hsu 2b5b42dd61 tmp for api debug 2021-09-08 13:52:59 +08:00
Jordan Hsu 4221a35f00 Merge remote-tracking branch 'origin/develop/neulive_0901' into feature/SD_card_UI 2021-09-08 11:06:41 +08:00
peterlu14 c3fc287b0f [update] add sdcard api & get sd data 2021-09-08 11:02:44 +08:00
Jordan Hsu 047a72e9c6 [add] SD card init func 2021-09-07 16:56:29 +08:00
Jordan Hsu b79a4a2091 [init] SD card UI 2021-09-07 15:44:44 +08:00
Jordan Hsu 4a8be436ce [fix] monophasic bug 2021-09-06 15:53:52 +08:00
peterlu14 102d39b4b5 [update] add sample rate 2021-09-06 14:11:14 +08:00
peterlu14 e8479f80ca [update] support past replay & data:axis 75:1 2021-09-06 13:18:17 +08:00
peterlu14 3aa5db1455 [update] sti channel support 16 channel 2021-09-06 11:44:47 +08:00
peterlu14 2e33ef7abb [update] fix download bug & add 0 ~ 11 device 2021-09-06 11:41:28 +08:00
Jordan Hsu 78ec2fd492 [modify] spike UI with lttb algo. 2021-09-03 21:09:09 +08:00
peterlu14 d12084324a [update] spike ui save 2021-09-03 19:14:18 +08:00
Jordan Hsu b3580bfa76 [modify] neulive replay unit uV and clear redundant code 2021-09-03 16:15:18 +08:00
peterlu14 5b57e40575 [update] remove 3.5 rf & led 2021-09-02 20:26:38 +08:00
peterlu14 14679182df [update] move mem RF & RF & led to setting 2021-09-02 20:20:44 +08:00
peterlu14 db0111d1db [update] amplitude rebuild & fix STI_T4 2021-09-01 10:57:35 +08:00
peterlu14 21cb382a1f [update] replace ADC_CLOCK to SAMPLE_RATE & 3.5 RECORDING_CH 2021-09-01 10:55:58 +08:00
peterlu14 1d8ef94ec6 Merge remote-tracking branch 'origin/feature/spike_UI' into release/0824_test 2021-08-27 19:08:52 +08:00
peterlu14 e49b6fb791 [update] export fix & subplot message & download 2021-08-27 19:07:57 +08:00
peterlu14 52e3d70dc8 [update] neulive ui switch & STI cycle amplitude T1-T4 fix 2021-08-26 16:59:39 +08:00
Roy a33bbd0581 fix current input value 2021-08-26 11:58:43 +08:00
Roy cd97260230 fix volt input value 2021-08-26 11:38:38 +08:00
Roy b9242764ab Merge branch 'e_0824_func_gen_bug' into release/0824_test 2021-08-26 10:46:36 +08:00
Jordan Hsu e8d75b9877 [init] spike ui 2021-08-26 02:03:30 +08:00
TommyXin 433e567e74 neulive 3.5 UI 2021-08-25 20:44:28 +08:00
TommyXin fbbebb3423 fix grid uV 2021-08-25 16:33:40 +08:00
Roy 6f2aab5276 OCP mode add current range button 2021-08-25 16:12:44 +08:00
TommyXin d82b1cb735 grid support input 'auto' 2021-08-25 01:17:07 +08:00
Roy 8aa87d587f update elite1.5 button 2021-08-24 17:40:32 +08:00
TommyXin 38503e198e EIS volt range 2021-08-24 04:35:02 +08:00
Jordan Hsu 8b78cdcdbd Merge remote-tracking branch 'origin/release/0812_test' into feature/spike_UI 2021-08-20 16:08:37 +08:00
peterlu14 94feff568a Merge remote-tracking branch 'origin/release/0812_test' into release/0812_test 2021-08-20 15:49:07 +08:00
peterlu14 06336bbd61 [update] add api spikeDetect 2021-08-20 15:48:18 +08:00
TommyXin 33b041a31b Merge remote-tracking branch 'origin/release/0812_test' into release/0812_test 2021-08-19 10:40:27 +08:00
TommyXin 14dda58fac neulive uV 2021-08-19 10:40:12 +08:00
Jordan Hsu f9bf41980b [modify] neulive replay function name 2021-08-18 14:55:45 +08:00
Jordan Hsu 6b20902c74 [fix] neulive stimulation phasic bug 2021-08-18 14:16:45 +08:00
peterlu14 ced0362910 Merge remote-tracking branch 'origin/release/0812_test' into release/0812_test 2021-08-17 16:59:13 +08:00
peterlu14 467016140f [update] real-time axis setting & edf format 2021-08-17 16:58:40 +08:00
Jordan Hsu f6e642cd5f Merge remote-tracking branch 'origin/release/0812_test' into release/0812_test 2021-08-13 16:00:48 +08:00
Jordan Hsu 7c5aed4dbc [fix] sti t range check bug 2021-08-13 15:54:55 +08:00
peterlu14 c069354415 [fix] EIS download 2021-08-13 13:14:10 +08:00
Jordan Hsu 738b58fded [modify] speed up neulive replay 2021-08-12 18:59:19 +08:00
Jordan Hsu f7c89585ac [modify] elite chart sampling method to lttb algo. and fix overview scale bug 2021-08-12 18:06:34 +08:00
peterlu14 36ed59816d Merge branch '0809_release_version' into release/0812_test 2021-08-12 17:01:34 +08:00
Jordan Hsu 516d20333c Merge remote-tracking branch 'origin/0809_release_version' into 0809_release_version 2021-08-12 17:00:56 +08:00
Jordan Hsu 74b8472c1d [modify] replay resampling method 2021-08-12 17:00:34 +08:00
peterlu14 ecb9e02610 [update] about to setting 2021-08-12 16:54:44 +08:00
peterlu14 74dea74476 Merge remote-tracking branch 'origin/0809_release_version' into release/0812_test 2021-08-12 14:40:47 +08:00
TommyXin 588a791bc1 Merge remote-tracking branch 'origin/0809_release_version' into 0809_release_version 2021-08-12 14:20:48 +08:00
TommyXin cd3e6f08f5 time 500ms&neulive uV&device panel height 2021-08-12 14:20:06 +08:00
peterlu14 1370e5659e [update] axis data divide 100 2021-08-12 13:42:48 +08:00
peterlu14 e18fa916b5 Merge branch 'download_rebuild' into 0809_release_version 2021-08-12 13:11:04 +08:00
peterlu14 b5a920338a [update] remove old download routes 2021-08-12 13:10:19 +08:00
peterlu14 6c4660966c [update] adjust tooltip formatter 2021-08-12 12:57:27 +08:00
peterlu14 0db13d3404 [update] remove old download pages 2021-08-12 12:55:45 +08:00
TommyXin 8b96a7308c fix stop button 2021-08-12 11:06:05 +08:00
peterlu14 d7e69e250e Merge remote-tracking branch 'origin/0809_release_version' into download_rebuild 2021-08-12 10:30:25 +08:00
TommyXin 14217aa1ea fix EIS freq max 2021-08-12 09:50:50 +08:00
peterlu14 506080c518 [update] replay download url fix 2021-08-12 04:23:53 +08:00
peterlu14 794b71cc9f [update] rebuild download structure 2021-08-12 04:16:40 +08:00
Jordan Hsu 7e355448e0 [fix] replay change scale bug 2021-08-10 19:53:37 +08:00
TommyXin 1bcf0d99e9 Merge remote-tracking branch 'origin/0809_release_version' into 0809_release_version 2021-08-10 19:28:48 +08:00
TommyXin af094ad93a fix subplot deviceOpions lose time 2021-08-10 19:28:37 +08:00
Jordan Hsu 062023bd95 [add] replay overview sampling function 2021-08-10 18:43:20 +08:00
Jordan Hsu fcef23b199 [fix] delete bug 2021-08-10 17:59:31 +08:00
Jordan Hsu 56051c881a [fix] replay layout bug 2021-08-10 17:29:19 +08:00
TommyXin 9bc027b445 fix subplot multi device selection 2021-08-10 16:27:57 +08:00
TommyXin 06528addc7 remove some style 2021-08-10 16:17:24 +08:00
peterlu14 279a1056f4 Merge branch '0809_release_version' into feature/edf_format 2021-08-10 13:31:09 +08:00
peterlu14 0ef305c434 Merge remote-tracking branch 'origin/file_page_rebuild' into 0809_release_version 2021-08-10 00:21:45 +08:00
TommyXin 2161b37932 subplot add error mes 2021-08-09 23:20:24 +08:00
TommyXin 6b63b2b406 multi-device register 2021-08-09 21:09:36 +08:00
TommyXin ccdc193067 fix mlit-page start plot error 2021-08-09 17:47:02 +08:00
TommyXin 2ba4644a78 [api] collection add /file 2021-08-09 13:28:58 +08:00
Jordan Hsu 72dbb2abf5 [fix] both replay download bug by adding sleep function 2021-08-06 11:06:48 +08:00
Jordan Hsu 7f498c01ed [modify] pulse sensing cycle is unified to CYCLE_NUMBER and wait for elite 2021-08-06 10:46:50 +08:00
Jordan Hsu d9f7813a3c [fix] download bug by adding sleep function 2021-08-06 10:18:19 +08:00
peterlu14 35c436ee67 [update] data timestamp align 2021-08-05 18:21:39 +08:00
Jordan Hsu 2f82138097 [remove] redundant code 2021-08-05 15:16:53 +08:00
Jordan Hsu e4d2186d86 [fix] replay change cycle bug 2021-08-05 15:07:03 +08:00
Jordan Hsu 749fd86c65 Merge branch 'feature/DPV_UI' into 0726_test_version 2021-08-05 14:35:04 +08:00
Jordan Hsu 95bb4afa49 [fix] replay cycle bug 2021-08-05 13:51:06 +08:00
Jordan Hsu 6c5c832fde [add] neulive sti T range check point 2021-08-05 12:25:52 +08:00
Jordan Hsu 256070ae76 [fix] typo 2021-08-04 18:44:07 +08:00
TommyXin 7edde3d7b2 vuex download 2021-08-04 18:25:08 +08:00
TommyXin 8ba6bcb8cb [api] get meta by limit&offset 2021-08-04 17:17:32 +08:00
Jordan Hsu 1398ffad4c [modify] EIS VoltRange component path 2021-08-04 16:55:13 +08:00
Jordan Hsu e82d17ab4f [add] pulse sensing mode segment hover effect, [remove] replay exp display 2021-08-04 16:43:53 +08:00
TommyXin d116c9951a CV formula 2021-08-02 17:04:53 +08:00
TommyXin d3e02ee4db ppd NaN error 2021-08-02 16:39:51 +08:00
TommyXin 2f9cd9fae0 Merge branch 'debug_0722' into 0726_test_version 2021-08-02 15:49:02 +08:00
TommyXin cfca599408 [EIS] add CV mode & formula changing 2021-08-02 15:46:23 +08:00
Jordan Hsu fecbd4e4da [modify] neulive sti time range rule 2021-07-31 22:22:09 +08:00
peterlu14 08fcba3f58 [update] axis value divide 100 2021-07-28 16:03:13 +08:00
Jordan Hsu e4da226a03 [init] DPV UI 2021-07-27 21:08:33 +08:00
peterlu14 b68471eff6 [update] elite download update 2021-07-27 17:32:27 +08:00
peterlu14 5cf83f18c4 [update] download file split raw and acc data 2021-07-27 12:23:01 +08:00
peterlu14 11f4793a7a Merge remote-tracking branch 'origin/feature/replay' into 0726_test_version 2021-07-26 15:51:47 +08:00
peterlu14 7d615e0e53 Merge remote-tracking branch 'origin/debug_0722' into 0726_test_version 2021-07-26 10:29:04 +08:00
peterlu14 589727142c Merge remote-tracking branch 'origin/feature/pulse_sensing_UI' into 0726_test_version 2021-07-26 10:26:30 +08:00
peterlu14 230fb4f8a4 [update] fix delete data & delete multi data 2021-07-26 10:24:00 +08:00
peterlu14 058057dca4 [update] add mem_rf_set 2021-07-26 04:41:06 +08:00
Jordan Hsu 9a13720f04 [fix] typo 2021-07-23 16:35:58 +08:00
Jordan Hsu d7fd0426bd [add] segment_ui_order param 2021-07-23 13:31:12 +08:00
Jordan Hsu 5addbef71c adjust UI 2021-07-23 11:08:33 +08:00
Jordan Hsu 9f988edd63 [modify] segment order param for roy 2021-07-22 23:55:08 +08:00
TommyXin e5ff49333d clear task info while leave page 2021-07-22 22:38:38 +08:00
TommyXin 2b70a54a07 dev tool for EIS&clear task info 2021-07-22 22:38:03 +08:00
TommyXin 9b64a5484e add subplot 2021-07-22 21:54:11 +08:00
TommyXin e6dcb0d389 new chart grid unit 2021-07-22 21:34:54 +08:00
TommyXin 8a2f001f28 fix add chart repeat 2021-07-22 21:20:17 +08:00
TommyXin 4fa122c754 fix page height error 2021-07-22 21:05:58 +08:00
TommyXin 1ebfa0b343 elite grid 2021-07-22 20:49:07 +08:00
Jordan Hsu 076f8111eb change meaning of segment_order 2021-07-22 17:48:49 +08:00
Jordan Hsu dd895bb177 [fix] if delete segment, reset t_pulse to 0 2021-07-22 16:40:57 +08:00
Jordan Hsu e3b9a00071 [modify] pulse sensing mode UI for roy testing 2021-07-22 16:13:01 +08:00
Jordan Hsu 8697e94aa7 [add] ui for pulse sensing mode 2021-07-21 22:57:48 +08:00
TommyXin e786ce437d rec_ref 2021-07-19 16:03:54 +08:00
TommyXin 8b841a8524 Merge remote-tracking branch 'origin/EIS_UI_rough' into EIS_UI_rough 2021-07-19 13:11:20 +08:00
TommyXin fabeca30b6 [fix] send "delay" parameter error 2021-07-19 13:10:32 +08:00
Roy 23a430d7e4 Merge commit '5a8147476c4e7dbf5a9c0419c3aeab2bba381f1a' into EIS_UI_rough 2021-07-16 14:34:57 +08:00
TommyXin 979918b31b change parameter formula 2021-07-14 17:21:12 +08:00
Jordan Hsu cee179b1f7 [modify] default showed unit 2021-07-14 16:49:21 +08:00
Jordan Hsu 758aac1909 [modify] both replay will re-download data, elite default only download first cycle
To be tested: elite if scale = 100 or 1000, will close chart averaging
2021-07-14 16:38:37 +08:00
TommyXin f7a487d316 EIS UI done 2021-07-14 12:48:08 +08:00
peterlu14 cf648fe862 Merge branch '0701_test_version' 2021-07-12 07:23:13 +08:00
peterlu14 d3610b3430 [fix] elite download 2021-07-12 07:22:16 +08:00
Roy 5a8147476c update elite1.5 UI 2021-07-09 16:23:25 +08:00
Roy 9ced5cfcc8 It Rt new Vout out UI 2021-07-08 11:44:11 +08:00
peterlu14 b1dd6d1750 Merge branch 'feature/download' into 0701_test_version 2021-07-05 19:47:03 +08:00
peterlu14 b27fb72401 [update] download feature 2021-07-05 19:44:50 +08:00
TommyXin 2fc79e9e27 init uint 2021-07-01 23:15:13 +08:00
TommyXin ac520b5451 add interval unit 2021-07-01 23:10:49 +08:00
TommyXin 6022d01c51 Merge branch 'opt_ui_1' into 0701_test_version 2021-07-01 21:53:43 +08:00
TommyXin 38395fb579 Merge remote-tracking branch 'origin/master_ocp' into 0701_test_version 2021-07-01 21:52:42 +08:00
TommyXin 2138e1eafc Merge remote-tracking branch 'origin/feature/replay' into 0701_test_version 2021-07-01 21:52:12 +08:00
TommyXin 120553f8c0 replay double markArea 2021-07-01 21:25:06 +08:00
Jordan Hsu 054a8a6382 [modify] no matter how both replay will re-download data 2021-07-01 21:02:59 +08:00
TommyXin e50f2b5efc realtime elite unit 2021-07-01 20:07:34 +08:00
TommyXin c780fd7a57 realtime unit 2021-07-01 19:59:43 +08:00
TommyXin bd298b73bc interval & task config stimulate 2021-07-01 19:40:43 +08:00
TommyXin c3e2f7f6e5 task config 2021-07-01 13:54:26 +08:00
peterlu14 311f89df15 Merge remote-tracking branch 'origin/master_ocp' 2021-06-30 17:36:37 +08:00
Roy b2465c70bc modify mode defulat chart 2021-06-28 18:29:20 +08:00
Jordan Hsu 9ec3ee46e6 fix fool-proof bug for elite 2021-06-28 17:19:34 +08:00
Jordan Hsu 1a5bd6da85 Merge remote-tracking branch 'origin/master_ocp' into feature/replay 2021-06-28 16:53:36 +08:00
Jordan Hsu 0915c28917 Merge branch 'master' into feature/replay 2021-06-28 16:22:34 +08:00
TommyXin c8c1abc2a5 [update] api opt 2021-06-27 23:42:17 +08:00
Jordan Hsu 37e07ec0ed [modify] both replay don't download existing data 2021-06-25 11:32:06 +08:00
Jordan Hsu 86440bfaba [fix] elite replay bug 2021-06-24 21:13:30 +08:00
Roy 4855ca30d9 OCP UI 2021-06-24 15:09:24 +08:00
Jordan Hsu dc4ae8fb1f [add] fool-proof for task content neulive param setting 2021-06-24 13:13:04 +08:00
Jordan Hsu 9a7d00645d [modify] elite replay append download data in dataInfo 2021-06-24 13:08:07 +08:00
Jordan Hsu ef77084297 clean redundant code 2021-06-23 11:27:18 +08:00
Jordan Hsu 5ee2d796cb [modify] echart sampling method and change neulive 3-axis legend name 2021-06-22 22:22:08 +08:00
Jordan Hsu 6689d64b0d [fix] neulive replay distribute bug 2021-06-19 21:55:41 +08:00
Jordan Hsu fe5f52472b [fix] neulive replay 3 axis bug, change scale bug 2021-06-19 20:53:28 +08:00
TommyXin dd5a8bfe27 Merge remote-tracking branch 'origin/master' into opt_ui_1 2021-06-19 11:50:39 +08:00
peterlu14 ac889e5410 Merge remote-tracking branch 'origin/feature/replay' 2021-06-16 02:24:31 +08:00
Jordan Hsu 9584d751fe [update] replay change log scale logic 2021-06-11 22:43:17 +08:00
Jordan Hsu fd31d41bdb [fix] elite cycle bug 2021-06-11 13:09:29 +08:00
peterlu14 9087f6776b Merge remote-tracking branch 'origin/feature/replay' 2021-06-10 18:48:26 +08:00
peterlu14 2cdd14d97d [update] elite download 2021-06-10 18:32:12 +08:00
Jordan Hsu fca7f1a093 [add] filetable delete selected files 2021-06-10 18:03:31 +08:00
Jordan Hsu e63e40caad Merge branch 'master' into feature/replay 2021-06-10 17:22:04 +08:00
peterlu14 68bf3cda73 [fix] elite range parameter mouse leave 2021-06-10 17:18:21 +08:00
Jordan Hsu fed196a0da [fix] elite overview bug 2021-06-10 14:35:44 +08:00
peterlu14 557629fb8c [fix] replay series data wrong index 2021-06-10 14:17:45 +08:00
Jordan Hsu 60f4e0fd10 [add] elite two mode 2021-06-10 10:22:15 +08:00
Jordan Hsu c72a55fd5a change parameter word style 2021-06-09 22:27:37 +08:00
Jordan Hsu da242910f6 [add] elite parameter and update UI layout 2021-06-09 22:02:01 +08:00
Jordan Hsu 3e62775857 remove redundant code 2021-06-09 20:06:42 +08:00
Jordan Hsu 2723d4dbb1 remove redundant code 2021-06-09 18:43:44 +08:00
Jordan Hsu f2b828b8af [add] check if show overview chart and update UI 2021-06-09 18:26:07 +08:00
Jordan Hsu 0954c8a778 [update] elite replay UI and fix change axis bug 2021-06-09 18:05:25 +08:00
Jordan Hsu 61616dead0 [update] change cycle logic and unit ohm default value 2021-06-09 17:58:36 +08:00
peterlu14 e9c339450f [update] y-interval default value 2021-06-09 14:10:03 +08:00
peterlu14 5ef75b972f [update] filename repeat & both button & replay download 2021-06-09 14:05:59 +08:00
Jordan Hsu dccc30df3d [add] change cycle vue 2021-06-09 14:03:39 +08:00
Jordan Hsu 90f78d2c24 [init] elite replay 2021-06-08 22:30:36 +08:00
Jordan Hsu 94c265da5d adjust elite parameter recording cycle min from 0 to 1 2021-06-08 18:29:54 +08:00
peterlu14 df52ad3ff9 Merge remote-tracking branch 'origin/feature/replay' 2021-06-08 17:55:14 +08:00
Jordan Hsu 341035f8c4 [hotfix] neulive UI layout bug 2021-06-08 17:05:19 +08:00
peterlu14 25740a6c82 Merge remote-tracking branch 'origin/feature/aboutPage' 2021-06-08 10:03:20 +08:00
peterlu14 c378dc5749 Merge branch 'feature/download-rebuild' 2021-06-08 10:01:32 +08:00
peterlu14 85be4bb558 Merge remote-tracking branch 'origin/opt_ui_1' 2021-06-08 10:01:24 +08:00
peterlu14 7f18bd4672 Merge remote-tracking branch 'origin/feature/replay' 2021-06-08 10:01:12 +08:00
peterlu14 a88833bf87 [update] file system restruct in vuex 2021-06-08 09:59:04 +08:00
TommyXin 30b4d3c76b [add] x-interval & y-interval 2021-06-07 21:14:56 +08:00
Jordan Hsu 74c58b131f [modify] adjust neulive UI layout 2021-06-07 19:02:02 +08:00
Jordan Hsu 266a227b47 [6/7] neulive replay, only wait for download function 2021-06-07 14:33:31 +08:00
Jordan Hsu 86f965a445 typo 2021-06-07 13:37:11 +08:00
Jordan Hsu 18fa86820d [add] replay toolbox: change scale (linear/log), [fix] small bug 2021-06-06 23:01:58 +08:00
Jordan Hsu c29dded14f [add] change min max panel position and remove redundant code 2021-06-06 09:40:47 +08:00
Jordan Hsu b72977b35f [fix] press button won't recover automatically 2021-06-04 18:08:55 +08:00
Jordan Hsu 7391e0a5a0 [add] neulive sti parameter illustration 2021-06-04 18:07:01 +08:00
Jordan Hsu e1a0d996ad [add] replay toolbox: set min/max and show param and use for neulive replay 2021-06-04 14:22:32 +08:00
Jordan Hsu 2ba5fb2683 [add] replay toolbox and use for neulive replay top panel 2021-06-03 22:57:04 +08:00
TommyXin 671b8ad668 [feature] multiple file replay 2021-06-02 03:11:05 +08:00
TommyXin 0de6d455a0 neulive replay opt 2021-06-02 02:28:07 +08:00
peterlu14 9d4836ee28 [update] sample rate 20K 2021-05-31 13:41:01 +08:00
peterlu14 d49dbfda43 [fix] neulive amp gain wrong index 2021-05-26 02:40:43 +08:00
peterlu14 73edf21824 [update] controller & device info setting page 2021-05-20 03:59:25 +08:00
peterlu14 486fc067ea Merge branch 'fix/replay_mini_no_data' 2021-05-14 00:15:20 +08:00
peterlu14 ad404819b3 Merge branch 'fix/replay_mini_no_data' into feature/aboutPage 2021-05-12 11:46:16 +08:00
peterlu14 8732386d45 [update] remove formula & filename duplicate 2021-05-12 11:44:08 +08:00
TommyXin bed8e72340 clear neulive replay 2021-05-10 20:05:26 +08:00
peterlu14 67a397c27d [fix] edit filename & change accS & side bar hide & per sampleRate 2021-05-09 23:14:49 +08:00
peterlu14 51dfcfd335 [fix] replay ch+1 & download format & RF & STI_T3 2021-05-06 15:34:53 +08:00
peterlu14 49896d3465 Merge remote-tracking branch 'origin/fix/neulive_bugs' into fix/replay_mini_no_data 2021-05-03 09:04:54 +08:00
TommyXin f05581dcf9 change data stream format 2021-04-29 20:14:43 +08:00
peterlu14 ed526604b9 Merge branch 'feature/download_temp' into fix/replay_mini_no_data 2021-04-29 18:11:46 +08:00
peterlu14 94e6e1153f [update] replay not showing 2021-04-29 18:10:23 +08:00
peterlu14 5a4c91e5bc [fix] NaN time 2021-04-28 11:08:15 +08:00
peterlu14 7ea36c565e [update] about page white list connect 2021-04-28 11:06:20 +08:00
peterlu14 bc38b1bcc8 [fix] download error 2021-04-27 10:43:17 +08:00
peterlu14 fe6622b86c Merge remote-tracking branch 'origin/fix/neulive_bugs' 2021-04-26 22:01:38 +08:00
TommyXin b12332eaac Merge remote-tracking branch 'origin/fix/neulive_bugs' into fix/neulive_bugs 2021-04-26 22:01:10 +08:00
TommyXin 8267dbd302 update 4/26 2021-04-26 22:00:52 +08:00
peterlu14 5653c4d3de [update] about content & add new api and factory 2021-04-22 11:32:11 +08:00
peterlu14 227d61d8e4 [update] about page vuex 2021-04-22 11:31:14 +08:00
peterlu14 94b0a795e4 [update] download split file temp 2021-04-20 16:44:40 +08:00
peterlu14 d09405755f Merge remote-tracking branch 'origin/master_sps' 2021-04-19 16:21:00 +08:00
Roy 9c83b6e4f8 RT receive resister in denomination of mOhm 2021-04-19 15:56:26 +08:00
peterlu14 38bd091d44 [update] broadcast stop remove streambuffer 2021-04-16 21:09:52 +08:00
peterlu14 4bf2e529c0 Merge remote-tracking branch 'origin/master_sps' 2021-04-16 16:06:02 +08:00
Roy 0803b2b8ab remove Data_Resolution_Scan, and use SAMPLE_RATE only 2021-04-16 13:03:25 +08:00
royluo c6436b205d remove ADC_Test and Cyclic Voltammetry-hi-cycles mode 2021-04-14 15:43:06 +08:00
royluo 0796621f3b Merge remote-tracking branch 'origin/master' into master_sps 2021-04-14 13:45:25 +08:00
peterlu14 af87e9b122 [fix] neulive replay split-number replace max-min 2021-04-13 18:57:54 +08:00
royluo 184ce1af5f new sps on IT.VT.RT.CC.VOUT mode 2021-04-13 11:21:46 +08:00
peterlu14 2dced2922a [fix] elite replay worng channel data 2021-04-13 10:40:44 +08:00
peterlu14 fd06ce3018 Merge branch 'fix/neulive_bugs' 2021-04-09 15:08:39 +08:00
peterlu14 6a4db3512e Merge remote-tracking branch 'origin/feature/elite_display' 2021-04-09 15:08:32 +08:00
peterlu14 24d1ac3438 [fix] replay splice spread 2021-04-08 19:32:42 +08:00
Jordan Hsu 7749d33105 [modify] neulive replay show time fixed to h m s 2021-04-08 17:29:51 +08:00
Jordan Hsu 7dd8d5eb77 [add] elite replay resample rate 2021-04-08 16:26:43 +08:00
Jordan Hsu 2d0c865e13 [add] both replay delete button 2021-04-08 16:15:42 +08:00
Jordan Hsu a6300e8e40 [add] both replay download button 2021-04-08 15:31:19 +08:00
Jordan Hsu e45ef9d8de remove redundant code 2021-04-08 14:33:31 +08:00
Jordan Hsu e6ef637c97 [fix] elite replay hover edge unit bug 2021-04-08 13:45:03 +08:00
Jordan Hsu 49cf46fe44 [add] elite replay change filename button 2021-04-08 13:19:17 +08:00
Jordan Hsu c7add6f7da [fix] elite replay graph blank bug 2021-04-08 13:01:23 +08:00
Jordan Hsu 4c562e720a [add and fix elite] add auto detect mode and change x y, fix Resistance bug 2021-04-08 11:57:29 +08:00
peterlu14 05e55d4dbf [update] download speed increase 2021-04-08 11:34:06 +08:00
Jordan Hsu f24f5f6636 [add] neulive replay can change filename 2021-04-01 14:54:10 +08:00
Jordan Hsu 6441e5d2ec [modify] filename and param display to vuex style 2021-04-01 13:22:31 +08:00
Jordan Hsu c75089f10e [fix] button color won't recover in scan and stop all 2021-03-31 11:58:07 +08:00
Jordan Hsu d28538cebe [fix] button color won't recover by adding no-dark-style-va-button class 2021-03-31 11:28:26 +08:00
Jordan Hsu 5cb9924e7d [fix] elite axis unit won't change with axis bug 2021-03-31 10:47:48 +08:00
Jordan Hsu eab9ee944a Merge remote-tracking branch 'origin/fix/neulive_bugs' into feature/elite_display 2021-03-31 10:42:56 +08:00
peterlu14 076469e270 [fix] onchange & hide detect 2021-03-31 00:25:09 +08:00
peterlu14 950c5dcc55 [update] stimulate & fast settle buttons 2021-03-31 00:24:25 +08:00
peterlu14 0831873136 [fix] replay data only has scale 1 cause error 2021-03-30 15:28:19 +08:00
peterlu14 d9700b96d3 [update] time scale && time formatter 2021-03-29 17:01:01 +08:00
peterlu14 7234692e67 [fix] onchange input 2021-03-29 16:57:04 +08:00
peterlu14 ca12e1858c [update] size-time float to string 2021-03-29 16:38:59 +08:00
peterlu14 fae9308bed Merge remote-tracking branch 'origin/feature/elite_display' 2021-03-29 16:33:02 +08:00
Jordan Hsu 6b1fee3f5f [fix] zoom bug 2021-03-25 17:51:27 +08:00
Jordan Hsu 5834172d96 [fix and todo] fix: distribute function axis bug, todo: but zoom in will show nothing 2021-03-25 17:23:43 +08:00
Jordan Hsu 598fe285bf [add] hide grid function 2021-03-25 16:41:12 +08:00
Jordan Hsu 0580a15e25 Merge remote-tracking branch 'origin/master' into feature/elite_display 2021-03-25 14:29:37 +08:00
peterlu14 dece25f2ff [fix] devices list hide start not working 2021-03-24 16:48:05 +08:00
peterlu14 2e58d1d9f6 [fix] sti pattern time error & hide detect 2021-03-24 11:45:01 +08:00
Jordan Hsu 6fe57af6bd [to test] neulive replay double click bug 2021-03-19 19:30:47 +08:00
Jordan Hsu 35b5c7681b [modify] neulive channelID -> id 2021-03-19 15:19:06 +08:00
Jordan Hsu bd0517c8d1 [modify] adjust elite display min max function UI panel 2021-03-19 15:19:06 +08:00
Jordan Hsu fd08f45278 [remove] neulive replay redundant code 2021-03-19 15:19:06 +08:00
peterlu14 f0a06f0370 Merge branch 'feature/neulive_bugs' 2021-03-19 14:58:59 +08:00
peterlu14 4001bb8f58 [fix] recoring & stimulate bugs 2021-03-19 14:57:46 +08:00
peterlu14 fc9140115b [fix] cycle data bug 2021-03-19 12:10:44 +08:00
Jordan Hsu 18800cc142 [modify] neulive valueRange id from string to int 2021-03-18 18:13:30 +08:00
Jordan Hsu f3aeb8931f [fix] elite replay max min bug 2021-03-18 18:09:45 +08:00
Jordan Hsu 6543dc07fa [modify] neulive remove mapMultiRowFields 2021-03-18 17:53:50 +08:00
Jordan Hsu 841a2f1f85 [fix] neulive replay max min bug 2021-03-18 17:35:52 +08:00
Jordan Hsu 805a582b5d [fix] elite replay watch small bug 2021-03-18 16:43:43 +08:00
Jordan Hsu 6e3548eca0 [fix] neulive replay to vuex error 2021-03-18 16:41:35 +08:00
Jordan Hsu b676987f29 Merge remote-tracking branch 'origin/feature/elite_display' into feature/elite_display 2021-03-18 16:32:56 +08:00
Jordan Hsu 74aba10199 [add] vuex-map-field package and elite replay to vuex 2021-03-18 16:30:37 +08:00
Jordan Hsu 23f0130564 [codeReview] convert partial elite replay code to vuex style 2021-03-18 16:07:39 +08:00
Jordan Hsu 69b2d8b3bd [codeReview] convert partial neulive replay code to vuex style 2021-03-18 16:07:39 +08:00
peterlu14 55e7f9b857 [fix] replay scale bug 2021-03-18 16:03:34 +08:00
Jordan Hsu a4fe50898a [codeReview] convert partial elite replay code to vuex style 2021-03-18 14:26:13 +08:00
Jordan Hsu b290093ad9 [codeReview] convert partial neulive replay code to vuex style 2021-03-18 14:25:19 +08:00
peterlu14 675aa7001c [fix] elite replay get empty scale 2021-03-18 10:14:23 +08:00
Jordan Hsu e9d343461a Merge branch 'feature/elite_display' 2021-03-18 09:53:27 +08:00
Jordan Hsu 987a840923 [fix] neulive bug 2021-03-18 09:51:40 +08:00
peterlu14 f0c811e402 [recover] controller_id 2021-03-16 10:21:23 +08:00
peterlu14 8e87c4492e Merge remote-tracking branch 'origin/master_detect' 2021-03-16 10:16:34 +08:00
peterlu14 1e39d25cff Merge branch 'fix/replay_bug' 2021-03-16 10:15:47 +08:00
peterlu14 ff855de99a [update] elite replay get all data 2021-03-16 10:15:14 +08:00
peterlu14 3a2ae1703f [update] n-replay get all data & default second 2021-03-16 10:14:16 +08:00
peterlu14 56421aca14 [update] new api & get mini files change ways 2021-03-16 10:12:54 +08:00
peterlu14 50ae46a8f2 [fix] file path reassign 2021-03-16 10:11:27 +08:00
peterlu14 33dd3c6cc8 Merge remote-tracking branch 'origin/feature/elite_display' into fix/replay_bug 2021-03-14 23:51:58 +08:00
Jordan Hsu cd52ca351c [modify] ui layout 2021-03-12 19:00:21 +08:00
Jordan Hsu debe6acd73 [modify] neulive display valueRange to vuex and bug fix 2021-03-12 17:22:51 +08:00
Jordan Hsu fa4539efc6 [add] current scale 2021-03-12 15:17:07 +08:00
Jordan Hsu 3086b2781d [fix] [modify] neulive replay y axis show only 3 interval 2021-03-11 15:58:04 +08:00
Jordan Hsu e05893d606 [modify] neulive replay y axis show only 3 interval 2021-03-11 14:12:45 +08:00
Jordan Hsu 487d830cd0 Merge remote-tracking branch 'origin/fix/replay_bug' into feature/elite_display 2021-03-11 10:34:04 +08:00
royluo 7b2d2a7375 Merge remote-tracking branch 'origin/fix/replay_bug' into master_detect 2021-03-10 16:07:32 +08:00
royluo af3b3fd18f update sample rate button 2021-03-10 15:44:53 +08:00
royluo cdac8ed871 update feature of detection 2021-03-10 09:26:54 +08:00
royluo e0bdf00e81 update feature of detection 2021-03-09 16:42:20 +08:00
royluo b716058f91 update feature of detection 2021-03-09 14:52:52 +08:00
royluo af405c951f new feature of detection 2021-03-09 10:02:40 +08:00
peterlu14 adee49335c [update] replay open new window 2021-03-09 01:38:40 +08:00
peterlu14 725413dbe3 [update] sample rate ui 2021-03-09 01:34:18 +08:00
peterlu14 890d0aa888 [update] series.data splice according to library 2021-03-09 01:33:43 +08:00
peterlu14 7788bde9be [update] disable file component keepAlive 2021-03-09 01:32:32 +08:00
peterlu14 22afaf746f [update] remove fixed scale 2021-03-02 20:14:06 +08:00
peterlu14 01ed8df633 [update] instruction diff from library 2021-03-02 15:50:49 +08:00
peterlu14 03662d8762 [update] instruction recover 2021-03-02 11:52:49 +08:00
peterlu14 6e811fafef [update] start button replace record button 2021-03-02 11:26:18 +08:00
peterlu14 4ed1b45eb1 Merge remote-tracking branch 'origin/feature/elite_display' 2021-02-28 16:56:04 +08:00
peterlu14 2329d9f40f Merge remote-tracking branch 'origin/master_update1.5UI' 2021-02-28 16:55:58 +08:00
Jordan Hsu 7b832fa5b2 [add] elite grid x, y min and max 2021-02-27 00:07:55 +08:00
Jordan Hsu 11233ffbf6 [add] neulive select x and y unit 2021-02-26 22:04:25 +08:00
Jordan Hsu 53492b5373 [add] neulive control each grid y min and max 2021-02-26 20:21:07 +08:00
Jordan Hsu 1c36aae2ff [add] elite display parameter panel 2021-02-26 17:05:53 +08:00
Jordan Hsu c501485ecd [add] neulive filename 2021-02-25 21:57:14 +08:00
Jordan Hsu d2cd90b593 [add] elite display x y axis format 2021-02-25 21:49:54 +08:00
royluo 92dc397d39 [update] fix start/stop/start all/stop all 2021-02-25 18:38:11 +08:00
Jordan Hsu 483bc7e2c9 Merge remote-tracking branch 'origin/feature/neulive3.0-sti' into feature/elite_display 2021-02-25 17:28:35 +08:00
Jordan Hsu 4ebe429130 [add] after edit, delete then go to same page 2021-02-25 17:13:20 +08:00
Jordan Hsu 7dabbac852 [add] when previous page, not refresh 2021-02-25 16:04:23 +08:00
Jordan Hsu f62e8d6d5b [add] replay to neulive or elite 2021-02-25 16:03:49 +08:00
Jordan Hsu 2efa3c50f3 [bugfix] consider may have no cycle channel data (channelCycleID) 2021-02-25 14:03:15 +08:00
royluo 58308232d7 [update] fix button of Mode(out of control) 2021-02-25 13:12:36 +08:00
royluo 88a41d1376 [update] default chart for LSV & CA mode 2021-02-24 18:07:53 +08:00
royluo b851476ec1 [update] fix button of MilliVoltRange 2021-02-24 17:13:28 +08:00
royluo b11dff070f [update] fix button of MicroAmpereRange 2021-02-24 15:03:39 +08:00
royluo 0ae7dd57c9 [update] fix button of voltrange 2021-02-24 12:08:44 +08:00
royluo 1d78071615 [update] fix button of voltrange 2021-02-24 11:07:18 +08:00
peterlu14 5a1fd1d769 [update] channel 8 -> 16 && scale fixed 2021-02-23 18:00:34 +08:00
royluo 7d838b591a [update] fix button of cycle & resolution & scanrate 2021-02-23 17:22:13 +08:00
royluo 5fae7722d9 [update] fix button of cycle & resolution 2021-02-23 15:54:26 +08:00
royluo 392302e297 [update] fix button of cycle 2021-02-23 11:25:51 +08:00
peterlu14 77519a2898 [update] start button replace record button 2021-02-20 23:01:13 +08:00
peterlu14 c9278a96c6 [update] stimulate amplitude fixed 2021-02-20 22:59:20 +08:00
peterlu14 c5a02ab3de Merge branch 'release/merge_all_features' 2021-02-20 22:41:22 +08:00
peterlu14 9f41788605 [update] elite replay time * 1000 & filename repeat 2021-02-20 22:08:01 +08:00
peterlu14 3d69393be7 Merge remote-tracking branch 'origin/feature/practice_for_project_scheduler' into release/merge_all_features 2021-02-20 19:12:13 +08:00
peterlu14 ef3c656ded Merge branch 'feature/elite_display_ui' into release/merge_all_features 2021-02-20 19:10:32 +08:00
peterlu14 15f442207d Merge branch 'master-with-axis' into release/merge_all_features 2021-02-20 19:08:57 +08:00
peterlu14 49509301ab Merge branch 'feature/bash_script' into 'master'
[add] burn to raspberry script

See merge request bioproscientific/bioprovue!1
2021-02-20 09:21:25 +00:00
Jordan Hsu 870cc6117d Merge branch 'develop' into feature/elite_display_ui 2021-02-19 21:43:10 +08:00
Jordan Hsu d9ad286f02 Merge branch 'feature/file_system' into develop 2021-02-19 21:36:21 +08:00
Jordan Hsu b084ce762d [fix] start all time bug 2021-02-19 21:02:48 +08:00
Jordan Hsu ea534a230b [modify] filename check duplicate 2021-02-19 20:35:11 +08:00
Jordan Hsu 20df0040fc [add] burn to raspberry script 2021-02-19 19:12:24 +08:00
Jordan Hsu 818009ad78 [modify] burn target id 2021-02-19 19:11:00 +08:00
Jordan Hsu 2130d43a78 ready to test file delete, wait for api fix 2021-02-19 18:09:06 +08:00
Jordan Hsu 036d09fa90 backup 2021-02-19 17:25:33 +08:00
Jordan Hsu 5e24f2775a [modify] re-align x y button 2021-02-19 15:12:37 +08:00
peterlu14 189e9b4507 [update] scale in time splice data fixed 2021-02-19 14:31:18 +08:00
peterlu14 17317f90a0 [update] ms -> us & M-Axis & download fix & series data splice changed 2021-02-19 14:21:00 +08:00
Jordan Hsu 8efa76b789 [add] log scale setting 2021-02-18 19:50:23 +08:00
Jordan Hsu d4ff7e7d70 elite display ui bug fix 2021-02-18 14:43:17 +08:00
royluo 64a3c7a788 [update] recovery controller id 2021-02-17 15:07:49 +08:00
Jordan Hsu 78ba7af72c [Done] Elite UI single chart 2021-02-05 23:08:17 +08:00
Jordan Hsu b589ad8e18 [add] single chart with cycle selection and bug fix 2021-02-05 21:52:44 +08:00
Jordan Hsu b487ec2c32 [add] single chart with default I-V chart 2021-02-05 20:51:00 +08:00
Jordan Hsu 6215e6faea backup for single chart 2021-02-05 15:42:10 +08:00
royluo f4a1fcedb8 [update] update dev mode 2021-02-05 15:05:35 +08:00
peterlu14 9f20d040f7 [update] axis_data 2021-02-05 13:31:28 +08:00
Jordan Hsu b3ff304882 [modify] implement all [todo] 2021-02-04 18:28:48 +08:00
Jordan Hsu 09b6504b6a [init] elite replay UI 2021-02-04 18:04:22 +08:00
Jordan Hsu 45c8021203 [add] start time date and time picker 2021-02-04 12:32:55 +08:00
Jordan Hsu 2cf7a95ed9 [modify] decouple param panel 2021-02-03 17:58:18 +08:00
royluo 78f38d0e1a [update] new dev mode 2021-02-03 16:27:19 +08:00
Jordan Hsu f3d890fe69 [add] maxcycle, addtask, stimulate & record checkbox 2021-02-03 14:22:58 +08:00
Jordan Hsu 5ff367ba26 [fix] condition template update bug 2021-01-29 16:42:52 +08:00
Jordan Hsu 3a24f1c3d0 [add] condition setting to global and finish condition template
[TODO] condition template update bug
2021-01-29 16:10:57 +08:00
Jordan Hsu ae9f34bcc5 remove some redundant 2021-01-28 21:39:31 +08:00
Jordan Hsu 8d5ad18726 [add] device setting to global, [TODO] forceUpdate 2021-01-28 19:05:46 +08:00
Jordan Hsu 16b2ac54c7 tmp 2021-01-28 11:24:39 +08:00
Jordan Hsu 2fd311fac1 [fix] add param check if no any setting 2021-01-27 15:00:38 +08:00
Jordan Hsu 0872253ceb [add] can update device param mapping 2021-01-27 14:52:27 +08:00
Jordan Hsu 588b863c5e fix 2021-01-20 21:32:20 +08:00
Jordan Hsu 4a0f6e4c8f [fix] some ui error 2021-01-20 19:40:32 +08:00
Jordan Hsu 42a6cc7222 [Done] output json 2021-01-20 18:54:15 +08:00
Jordan Hsu 468208697f [TODO] ready to generate json 2021-01-20 17:22:07 +08:00
Jordan Hsu 046821b7d3 [modify] redundant code 2021-01-20 12:13:50 +08:00
Jordan Hsu af5a31289b [done] mapping panel 2021-01-19 18:45:53 +08:00
Jordan Hsu 3978815f9c [modify] device mapping panel to button with modal 2021-01-19 16:02:31 +08:00
Jordan Hsu d376a8399b [add] id generator 2021-01-19 00:37:56 +08:00
Jordan Hsu 9a5d1a9007 [TODO] map action with condition and instructions 2021-01-18 19:23:42 +08:00
Jordan Hsu 1a03ca4fee [modify] Param json add key recording and stimulation 2021-01-18 16:35:11 +08:00
peterlu14 c09d79a6f5 [update] export channel fixed 2021-01-18 15:05:04 +08:00
peterlu14 33b9ce8f01 [update] fileName and parent fixed 2021-01-18 15:04:03 +08:00
peterlu14 b004434bf9 [update] record button fix event 2021-01-18 14:06:16 +08:00
Jordan Hsu ecc977cb73 [TODO] device map param data store to state 2021-01-17 23:15:36 +08:00
Jordan Hsu 7c372c35f9 [done] param panel dataflow 2021-01-17 16:27:02 +08:00
Jordan Hsu d58941fa41 [done] param panel ui
[TODO] vuex dataflow
2021-01-17 13:17:49 +08:00
Jordan Hsu 56ac5630d0 [TODO] amp gain 2021-01-16 21:34:15 +08:00
Jordan Hsu 230cc98dab try to add param panel 2021-01-16 17:11:44 +08:00
peterlu14 eb734aa645 [update] recover recording channels 2021-01-15 16:56:26 +08:00
peterlu14 3173e349fb [update] add accelerometer & record button 2021-01-15 16:53:38 +08:00
peterlu14 7bb8378762 [update] download and export new format data & add meta info 2021-01-14 16:45:38 +08:00
TommyXin b4c9e04075 Merge remote-tracking branch 'origin/master' 2021-01-13 18:10:53 +08:00
TommyXin 4fab05da44 [update] change datastream buffer into format 2021-01-13 18:10:42 +08:00
peterlu14 ba11499d80 [update] Neulive record & connect update calibration 2021-01-12 15:38:00 +08:00
TommyXin 2a09132a16 [update] try to use new data real time format 2021-01-11 20:12:47 +08:00
peterlu14 08061eb23e [update] delete TaskInfoFormat and add parameter 2021-01-11 15:00:54 +08:00
peterlu14 4c3f36010c Merge branch 'develop/elite1.5' 2021-01-11 14:53:57 +08:00
royluo 700cb94dd5 [update] update button:E-init 2021-01-08 14:33:57 +08:00
TommyXin a91e4862c8 [vuex] [replay] add rec & meta to store 2021-01-06 22:41:53 +08:00
TommyXin 8efb8d4dc0 [update] [vuex] replay 2021-01-04 21:19:58 +08:00
TommyXin 96f8a9ad96 [update] [replay] [vuex] add type path 2020-12-30 22:14:28 +08:00
TommyXin 9cba5e2d0e [update] [replay] optimize replay vuex format 2020-12-30 22:10:40 +08:00
royluo b0a3f51cd0 [update] solve Rounding problem of Volt 2020-12-29 10:27:33 +08:00
TommyXin a5c7133b84 [update] [replay] delete chartmanament.js 2020-12-28 22:48:26 +08:00
TommyXin 97889af002 [update] [replay] import vuex & apply to replay/neulive 2020-12-28 22:40:32 +08:00
TommyXin 37159bad12 [update] delete taskInfoFormat 2020-12-28 19:03:58 +08:00
TommyXin 49859eae05 [update] add factories to manage data format 2020-12-28 19:02:42 +08:00
royluo 84557194e4 [update] fix stop button's instruction(auto stop) 2020-12-28 17:25:23 +08:00
royluo 1ad639e2a0 [update] new component ResolutionRange 2020-12-28 15:36:08 +08:00
royluo 952b04ffe2 [update] new component ResolutionRange 2020-12-28 14:38:32 +08:00
royluo 9705b2045c [update] new component ScanRateRange 2020-12-28 11:21:24 +08:00
royluo 419b3d323f [update] new component (not ready) 2020-12-28 09:27:36 +08:00
royluo becedd0fa7 [update] new component OppLevelButton 2020-12-24 18:26:12 +08:00
royluo 1578a72dee [update] new component LevelRange 2020-12-24 09:25:54 +08:00
TommyXin 504eee4d73 [update] optimize replay chart 2020-12-23 20:00:25 +08:00
royluo 02a811ecfb [update] new component LevelRange 2020-12-23 18:29:14 +08:00
royluo ab6d52e50b [update] new component MilliVoltRange 2020-12-23 14:43:24 +08:00
TommyXin 6c96b40e4b [update] [task] parameter item component sample 2020-12-22 18:07:53 +08:00
royluo e28271249c change project to task in 'ParameterWindow' 2020-12-22 16:19:19 +08:00
TommyXin 1751af9c31 Merge branch 'master' into develop/elite1.5 2020-12-22 16:12:04 +08:00
royluo 4b599e06ca [update] new elite1.5 UI 2020-12-22 16:01:06 +08:00
peterlu14 750a466707 [update] filename refresh & data last entry empty error & left grid space 2020-12-21 17:11:07 +08:00
royluo 06c2e70cb7 [update] new elite1.5 UI(I-V Curve) 2020-12-18 17:50:49 +08:00
royluo e1da25b549 [update] new elite1.5 UI(I-V Curve) 2020-12-18 17:40:50 +08:00
royluo b28dbc6e27 [update] new elite1.5 UI 2020-12-17 17:46:34 +08:00
peterlu14 e951426d7a [update] [fix] create collection error & not export last line data 2020-12-17 17:07:06 +08:00
peterlu14 cb86d14144 [update] fix search error & fix export file end_time != -1 2020-12-17 17:06:09 +08:00
peterlu14 f6df94228c Merge branch 'project-to-task' 2020-12-17 16:52:51 +08:00
TommyXin cb563b3510 [update] [replay] fix end_time <0 2020-12-16 19:36:34 +08:00
TommyXin a1ef860b8f [update] remove scan1 2020-12-16 18:39:03 +08:00
peterlu14 f68ea5c1a5 [update] rename project into task 2020-12-15 20:20:32 +08:00
peterlu14 29eb4f8736 [update] recover Vuemqtt setting & device filename fixed while running 2020-12-15 18:44:37 +08:00
TommyXin 93660d66ad [update] data replay default max scale 2020-12-15 16:14:24 +08:00
peterlu14 6ae3bbf066 [update] filename & mqtt connection 2020-12-14 14:52:11 +08:00
peterlu14 4cc29e7c93 [update] file name init & locale time 2020-12-11 11:45:39 +08:00
peterlu14 b639689a5b [update] replay chart style change & destroy fix 2020-12-10 23:20:38 +08:00
peterlu14 9d531d083f [update] file direct to replay & axios baseURL & replay destroy 2020-12-10 22:39:03 +08:00
peterlu14 942574f859 [update] filenameControl & export & download 2020-12-10 17:43:51 +08:00
TommyXin 551d49ceb1 [update] data replay TIME x-axis 2020-12-10 04:32:06 +08:00
TommyXin 316c3b0146 [update] replay data register 2020-12-09 15:03:29 +08:00
peterlu14 8d9f812a85 [update] optimize download rawData and miniData api 2020-12-04 03:19:55 +08:00
TommyXin 381891693b Merge remote-tracking branch 'origin/master' 2020-12-03 03:06:52 +08:00
TommyXin dacb9e9c13 [update] api & data replay 2020-12-03 03:06:41 +08:00
peterlu14 8c88df519b [update] update get raw api 2020-12-03 02:58:38 +08:00
TommyXin 6c08e07148 Auto stash before merge of "master" and "origin/master" 2020-12-03 02:56:14 +08:00
peterlu14 092709e54f [update] add get raw and mini api 2020-12-03 01:57:46 +08:00
TommyXin 37865c137e [update] chart management 2020-12-03 00:56:35 +08:00
TommyXin 695745433c Merge remote-tracking branch 'origin/master' 2020-12-01 21:31:09 +08:00
TommyXin a8c9d5d7fc [update] data replay param 2020-12-01 21:30:57 +08:00
peterlu14 cdb9966c99 [update] add download data api 2020-12-01 20:04:47 +08:00
peterlu14 08c4731f20 Merge commit 'adfab9f9fe5485527fa3baf45e9a1fe94eb72a9e' 2020-12-01 19:18:55 +08:00
459 changed files with 69220 additions and 17104 deletions
+260 -137
View File
@@ -1168,6 +1168,16 @@
"minimist": "^1.2.0"
}
},
"@fontsource/source-code-pro": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/@fontsource/source-code-pro/-/source-code-pro-4.5.0.tgz",
"integrity": "sha512-IKB+oQfwjj9DzEM2sc5rO70BZV7+ksmZbB+1KzyiZp2VroPw7Lm1ovXBU2JYWIWXmNY+gDudvyZXZHE+6cG47Q=="
},
"@fontsource/source-sans-pro": {
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/@fontsource/source-sans-pro/-/source-sans-pro-4.5.1.tgz",
"integrity": "sha512-JYEldSfnqxoDVUL6QgqT8Fiyjh0p7WlKcqKNevzDylpWabdejVRyFzPhTk2ZceKZd02KEOaL+K462U6u0/PQiA=="
},
"@hapi/address": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
@@ -3012,11 +3022,18 @@
"dev": true
},
"axios": {
"version": "0.19.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
"integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
"version": "0.21.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
"requires": {
"follow-redirects": "1.5.10"
"follow-redirects": "^1.10.0"
},
"dependencies": {
"follow-redirects": {
"version": "1.13.3",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz",
"integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA=="
}
}
},
"babel-code-frame": {
@@ -3465,9 +3482,9 @@
}
},
"bl": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
"integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
"integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
"requires": {
"readable-stream": "^2.3.5",
"safe-buffer": "^5.1.1"
@@ -5114,9 +5131,9 @@
"dev": true
},
"copy-webpack-plugin": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz",
"integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==",
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz",
"integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==",
"dev": true,
"requires": {
"cacache": "^12.0.3",
@@ -5129,7 +5146,7 @@
"normalize-path": "^3.0.0",
"p-limit": "^2.2.1",
"schema-utils": "^1.0.0",
"serialize-javascript": "^2.1.2",
"serialize-javascript": "^4.0.0",
"webpack-log": "^2.0.0"
},
"dependencies": {
@@ -5180,10 +5197,13 @@
}
},
"serialize-javascript": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
"integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
"dev": true
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
"integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
"dev": true,
"requires": {
"randombytes": "^2.1.0"
}
},
"slash": {
"version": "1.0.0",
@@ -5643,6 +5663,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -6178,11 +6199,11 @@
}
},
"echarts": {
"version": "4.8.0",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-4.8.0.tgz",
"integrity": "sha512-YwShpug8fWngj/RlgxDaYrLBoD+LsZUArrusjNPHpAF+is+gGe38xx4W848AwWMGoi745t3OXM52JedNrv+F6g==",
"version": "4.9.0",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-4.9.0.tgz",
"integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==",
"requires": {
"zrender": "4.3.1"
"zrender": "4.3.2"
}
},
"editorconfig": {
@@ -6248,24 +6269,24 @@
}
},
"elliptic": {
"version": "6.5.3",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
"integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
"integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
"dev": true,
"requires": {
"bn.js": "^4.4.0",
"brorand": "^1.0.1",
"bn.js": "^4.11.9",
"brorand": "^1.1.0",
"hash.js": "^1.0.0",
"hmac-drbg": "^1.0.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0",
"minimalistic-crypto-utils": "^1.0.0"
"hmac-drbg": "^1.0.1",
"inherits": "^2.0.4",
"minimalistic-assert": "^1.0.1",
"minimalistic-crypto-utils": "^1.0.1"
},
"dependencies": {
"bn.js": {
"version": "4.11.9",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
"integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
"integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
"dev": true
}
}
@@ -7482,15 +7503,6 @@
"reusify": "^1.0.4"
}
},
"faye-websocket": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
"integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
"dev": true,
"requires": {
"websocket-driver": ">=0.5.1"
}
},
"fb-watchman": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
@@ -7534,6 +7546,11 @@
"schema-utils": "^2.5.0"
}
},
"file-saver": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
},
"file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
@@ -7691,6 +7708,7 @@
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"dev": true,
"requires": {
"debug": "=3.1.0"
}
@@ -8478,6 +8496,12 @@
}
}
},
"http-parser-js": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz",
"integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==",
"dev": true
},
"http-proxy": {
"version": "1.18.1",
"resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
@@ -8571,6 +8595,11 @@
"integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
"dev": true
},
"immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
},
"import-cwd": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
@@ -8660,9 +8689,9 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"ini": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
"dev": true
},
"inquirer": {
@@ -10351,6 +10380,14 @@
"type-check": "~0.3.2"
}
},
"lie": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
"integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
"requires": {
"immediate": "~3.0.5"
}
},
"lines-and-columns": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
@@ -10915,6 +10952,14 @@
}
}
},
"localforage": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz",
"integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==",
"requires": {
"lie": "3.1.1"
}
},
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
@@ -10926,9 +10971,9 @@
}
},
"lodash": {
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"lodash._reinterpolate": {
"version": "3.0.0",
@@ -11635,6 +11680,14 @@
"resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz",
"integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ=="
},
"moment-range": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/moment-range/-/moment-range-4.0.2.tgz",
"integrity": "sha512-n8sceWwSTjmz++nFHzeNEUsYtDqjgXgcOBzsHi+BoXQU2FW+eU92LUaK8gqOiSu5PG57Q9sYj1Fz4LRDj4FtKA==",
"requires": {
"es6-symbol": "^3.1.0"
}
},
"move-concurrently": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
@@ -11806,12 +11859,6 @@
}
}
},
"node-forge": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz",
"integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==",
"dev": true
},
"node-gyp": {
"version": "3.8.0",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
@@ -12095,6 +12142,11 @@
"set-blocking": "~2.0.0"
}
},
"nprogress": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
"integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E="
},
"nth-check": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
@@ -14434,15 +14486,6 @@
"integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
"dev": true
},
"selfsigned": {
"version": "1.10.7",
"resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz",
"integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==",
"dev": true,
"requires": {
"node-forge": "0.9.0"
}
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -14846,57 +14889,6 @@
}
}
},
"sockjs": {
"version": "0.3.20",
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz",
"integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==",
"dev": true,
"requires": {
"faye-websocket": "^0.10.0",
"uuid": "^3.4.0",
"websocket-driver": "0.6.5"
}
},
"sockjs-client": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz",
"integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==",
"dev": true,
"requires": {
"debug": "^3.2.5",
"eventsource": "^1.0.7",
"faye-websocket": "~0.11.1",
"inherits": "^2.0.3",
"json3": "^3.3.2",
"url-parse": "^1.4.3"
},
"dependencies": {
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"faye-websocket": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
"integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
"dev": true,
"requires": {
"websocket-driver": ">=0.5.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
}
}
},
"sort-keys": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
@@ -14906,6 +14898,11 @@
"is-plain-obj": "^1.0.0"
}
},
"sortablejs": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz",
"integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A=="
},
"source-list-map": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
@@ -15218,6 +15215,11 @@
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
"integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
},
"streamsaver": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/streamsaver/-/streamsaver-2.0.5.tgz",
"integrity": "sha512-KIWtBvi8A6FiFZGNSyuIZRZM6C8AvnWTiCx/TYa7so420vC5sQwcBKkdqInuGWoWMfeWy/P+/cRqMtWVf4RW9w=="
},
"strict-uri-encode": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
@@ -16933,6 +16935,11 @@
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
"dev": true
},
"v-click-outside": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/v-click-outside/-/v-click-outside-2.1.5.tgz",
"integrity": "sha512-VPNCOTZK6WZy73lcWc+R7IW1uaBFEO3/Csrs5CzWVOdvE30V8Y1+BE/BtTlcEmeDGx0eqdE7bSCg55Jj37PMJg=="
},
"v-tooltip": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/v-tooltip/-/v-tooltip-2.0.3.tgz",
@@ -17049,6 +17056,11 @@
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz",
"integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ=="
},
"vue-axios": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/vue-axios/-/vue-axios-3.2.0.tgz",
"integrity": "sha512-nBS3uVLT50Qfv7Gmhu0VDkYzTJeDWVc8TOTd4UzG/XS865+As4Updyuo4zWVqQ5ygC7JUBRkgc5merS7PpHMlw=="
},
"vue-bulma-expanding": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/vue-bulma-expanding/-/vue-bulma-expanding-0.0.1.tgz",
@@ -17078,6 +17090,17 @@
"tinycolor2": "^1.1.2"
}
},
"vue-ctk-date-time-picker": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/vue-ctk-date-time-picker/-/vue-ctk-date-time-picker-2.5.0.tgz",
"integrity": "sha512-s4AO+5xnPlX+LD5UPQcjLBnv8MwcEJKlKUnkTLQeXRV0xqpH9pWRe6aJ8N2+506mEN6b7iwhlFox6uKKdtK+gw==",
"requires": {
"moment": "^2.24.0",
"moment-range": "^4.0.1",
"v-click-outside": "^2.0.2",
"vue": "^2.6.9"
}
},
"vue-echarts": {
"version": "5.0.0-beta.0",
"resolved": "https://registry.npmjs.org/vue-echarts/-/vue-echarts-5.0.0-beta.0.tgz",
@@ -17137,6 +17160,11 @@
}
}
},
"vue-final-modal": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/vue-final-modal/-/vue-final-modal-2.4.1.tgz",
"integrity": "sha512-tvkPaf94wzoANjNFNP8b40bXuCAk28jg0OkhRKL3oQ9VTTwhlX25gnWG5d2qyxLfnE2237E8ngwF3KNPf/bhrw=="
},
"vue-flatpickr-component": {
"version": "8.1.5",
"resolved": "https://registry.npmjs.org/vue-flatpickr-component/-/vue-flatpickr-component-8.1.5.tgz",
@@ -17224,6 +17252,11 @@
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.3.4.tgz",
"integrity": "sha512-SdKRBeoXUjaZ9R/8AyxsdTqkOfMcI5tWxPZOUX5Ie1BTL5rPSZ0O++pbiZCeYeythiZIdLEfkDiQPKIaWk5hDg=="
},
"vue-slicksort": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/vue-slicksort/-/vue-slicksort-1.2.0.tgz",
"integrity": "sha512-k1324l+AnYy6MrpySN7PYL165z2EkvZmMe+BS7H/EugzS8IrZYRtoqa3QxSSWB34C7cplV1hj3c+7peKpxpYxg=="
},
"vue-style-loader": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz",
@@ -17263,6 +17296,11 @@
"resolved": "https://registry.npmjs.org/vue-toasted/-/vue-toasted-1.1.28.tgz",
"integrity": "sha512-UUzr5LX51UbbiROSGZ49GOgSzFxaMHK6L00JV8fir/CYNJCpIIvNZ5YmS4Qc8Y2+Z/4VVYRpeQL2UO0G800Raw=="
},
"vue-toastification": {
"version": "1.7.14",
"resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-1.7.14.tgz",
"integrity": "sha512-khZR8t3NWZ/JJ2MZxXLbesHrRJ8AKa75PY5Zq8yMifF9x8lHq8ljYkC0d2PD9yahooygQB5tcFyRDkbbIPx8hw=="
},
"vue-worker": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/vue-worker/-/vue-worker-1.2.1.tgz",
@@ -17276,6 +17314,14 @@
"resolved": "https://registry.npmjs.org/vue-yandex-maps/-/vue-yandex-maps-0.9.0.tgz",
"integrity": "sha512-6gXec68eXNHvo5d6m43lGCDMShYRpciWWy55VA1RiFtMkLHIDeK4CJzYmkfAec32vpzYEqdcNBJh9b93wqtp8w=="
},
"vuedraggable": {
"version": "2.24.3",
"resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.3.tgz",
"integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==",
"requires": {
"sortablejs": "1.10.2"
}
},
"vuestic-ui": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/vuestic-ui/-/vuestic-ui-0.2.2.tgz",
@@ -17364,6 +17410,11 @@
"resolved": "https://registry.npmjs.org/vuex-i18n/-/vuex-i18n-1.13.1.tgz",
"integrity": "sha512-VTy5QAyMI6BJwpRfN5qncWQT0ohKiAYK+iTRW4JxgV9dkNoPMuKKDqExbOm1fzpitdrIoIipC3Zqr5fJ706VQg=="
},
"vuex-map-fields": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/vuex-map-fields/-/vuex-map-fields-1.4.1.tgz",
"integrity": "sha512-jvIcpvoIPqwvJCOfRkPU9Rj0EbjWuk7GlNC5LXU9mCXVGZph6bWGHZssnoUzpLMxJtXQEHoVyZkKf7YQV+/bnQ=="
},
"vuex-router-sync": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/vuex-router-sync/-/vuex-router-sync-5.0.0.tgz",
@@ -17660,9 +17711,9 @@
}
},
"webpack-dev-server": {
"version": "3.11.0",
"resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz",
"integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==",
"version": "3.11.2",
"resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz",
"integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==",
"dev": true,
"requires": {
"ansi-html": "0.0.7",
@@ -17685,11 +17736,11 @@
"p-retry": "^3.0.1",
"portfinder": "^1.0.26",
"schema-utils": "^1.0.0",
"selfsigned": "^1.10.7",
"selfsigned": "^1.10.8",
"semver": "^6.3.0",
"serve-index": "^1.9.1",
"sockjs": "0.3.20",
"sockjs-client": "1.4.0",
"sockjs": "^0.3.21",
"sockjs-client": "^1.5.0",
"spdy": "^4.0.2",
"strip-ansi": "^3.0.1",
"supports-color": "^6.1.0",
@@ -17754,12 +17805,21 @@
}
},
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"dev": true,
"requires": {
"ms": "^2.1.1"
"ms": "2.1.2"
}
},
"faye-websocket": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
"integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
"dev": true,
"requires": {
"websocket-driver": ">=0.5.1"
}
},
"fsevents": {
@@ -17803,6 +17863,12 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"node-forge": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
"integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
"dev": true
},
"readdirp": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
@@ -17825,12 +17891,57 @@
"ajv-keywords": "^3.1.0"
}
},
"selfsigned": {
"version": "1.10.8",
"resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz",
"integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==",
"dev": true,
"requires": {
"node-forge": "^0.10.0"
}
},
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
},
"sockjs": {
"version": "0.3.21",
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz",
"integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==",
"dev": true,
"requires": {
"faye-websocket": "^0.11.3",
"uuid": "^3.4.0",
"websocket-driver": "^0.7.4"
}
},
"sockjs-client": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz",
"integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==",
"dev": true,
"requires": {
"debug": "^3.2.6",
"eventsource": "^1.0.7",
"faye-websocket": "^0.11.3",
"inherits": "^2.0.4",
"json3": "^3.3.3",
"url-parse": "^1.5.1"
},
"dependencies": {
"debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
}
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
@@ -17849,6 +17960,27 @@
"has-flag": "^3.0.0"
}
},
"url-parse": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz",
"integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==",
"dev": true,
"requires": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
}
},
"websocket-driver": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
"integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
"dev": true,
"requires": {
"http-parser-js": ">=0.5.1",
"safe-buffer": ">=5.1.0",
"websocket-extensions": ">=0.1.1"
}
},
"ws": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
@@ -17897,15 +18029,6 @@
}
}
},
"websocket-driver": {
"version": "0.6.5",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
"integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=",
"dev": true,
"requires": {
"websocket-extensions": ">=0.1.1"
}
},
"websocket-extensions": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
@@ -18292,9 +18415,9 @@
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
"y18n": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true
},
"yallist": {
@@ -18440,9 +18563,9 @@
}
},
"zrender": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/zrender/-/zrender-4.3.1.tgz",
"integrity": "sha512-CeH2TpJeCdG0TAGYoPSAcFX2ogdug1K7LIn9UO/q9HWqQ54gWhrMAlDP9AwWYMUDhrPe4VeazQ4DW3msD96nUQ=="
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/zrender/-/zrender-4.3.2.tgz",
"integrity": "sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g=="
}
}
}
+17 -4
View File
@@ -5,7 +5,7 @@
"description": "Vue.js admin template",
"author": "smartapant <smartapant@gmail.com>",
"scripts": {
"serve": "vue-cli-service serve",
"serve": "vue-cli-service serve --mode development",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"lint:style": "stylelint --fix src/**/*.{vue,htm,html,css,sss,less,scss}",
@@ -13,49 +13,62 @@
"test:unit": "vue-cli-service test:unit"
},
"dependencies": {
"@fontsource/source-code-pro": "^4.5.0",
"@fontsource/source-sans-pro": "^4.5.1",
"@types/jest": "^24.0.11",
"amcharts3": "^3.21.14",
"ammap3": "^3.21.14",
"approximate-number": "^2.0.0",
"asva-executors": "^0.1.22",
"axios": "^0.19.0",
"axios": "^0.21.1",
"babel-polyfill": "^6.26.0",
"chart.js": "^2.9.3",
"core-js": "3",
"detect-browser": "^4.8.0",
"echarts": "^4.8.0",
"echarts": "^4.9.0",
"element-resize-detector": "^1.1.15",
"epic-spinners": "^1.1.0",
"extend": "3.0.2",
"file-saver": "^2.0.5",
"flag-icon-css": "^3.4.5",
"font-awesome": "^4.7.0",
"google-maps": "^3.3.0",
"ionicons": "^4.6.3",
"leaflet-map": "^0.2.1",
"lodash": "4.17.15",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"medium-editor": "^5.23.3",
"normalize.css": "^8.0.1",
"nprogress": "^0.2.0",
"popper.js": "^1.16.0",
"regenerator-runtime": "^0.13.3",
"register-service-worker": "^1.6.2",
"streamsaver": "^2.0.5",
"v-tooltip": "^2.0.2",
"vee-validate": "^2.2.13",
"vue": "^2.6.10",
"vue-axios": "^3.2.0",
"vue-bulma-expanding": "0.0.1",
"vue-chartjs": "^3.4.0",
"vue-clipboard2": "^0.3.1",
"vue-color": "^2.7.0",
"vue-ctk-date-time-picker": "^2.5.0",
"vue-echarts": "^5.0.0-beta.0",
"vue-epic-bus": "^0.1.2",
"vue-final-modal": "^2.4.1",
"vue-gtm": "^2.2.0",
"vue-mqtt": "^2.0.3",
"vue-router": "^3.1.3",
"vue-slicksort": "^1.2.0",
"vue-toastification": "^1.7.14",
"vue-worker": "^1.2.1",
"vue-yandex-maps": "^0.9.0",
"vuedraggable": "^2.24.3",
"vuestic-ui": "~0.2.2",
"vuetable-2": "^1.7.5",
"vuex": "^3.1.2",
"vuex-i18n": "^1.13.1",
"vuex-map-fields": "^1.4.1",
"vuex-router-sync": "^5.0.0"
},
"devDependencies": {
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 799 B

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

+1 -4
View File
@@ -3,12 +3,9 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:400" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>Vuestic Admin</title>
<title>BioPro Scientific</title>
</head>
<body>
<div id="app"></div>
+14
View File
@@ -0,0 +1,14 @@
* This is shell_script dir
# 檔案說明
burn_to_raspberry.sh : 用scp複製local npm build好的東西 & burn_to_raspberry_util.sh 去遠端(raspberry),然後在raspberry內execute 複製過去的burn_to_raspberry_util.sh
burn_to_raspberry_util.sh : 給burn_to_raspberry.sh用的,裡面的指令為在raspberry內所有要執行的指令
# Usage
burn_to_raspberry.sh
```shell
sh ./burn_to_raspberry.sh <HOST> <PASSWORD>
e.g. sh ./burn_to_raspberry.sh pi@192.168.2.1 raspberry
```
+15
View File
@@ -0,0 +1,15 @@
#!/bin/bash
# sshpass: https://shazi.info/ssh-%E7%94%A8-sshpass-%E5%8F%96%E4%BB%A3-expect-%E8%87%AA%E5%8B%95%E8%BC%B8%E5%85%A5%E5%AF%86%E7%A2%BC/
HOST=$1 # e.g. "pi@192.168.3.53"
PASSWORD=$2 # e.g. raspberry
SCP_HOST=$HOST":"
cd ..
npm run build
sshpass -p $PASSWORD ssh $HOST "rm -rf dist"
sshpass -p $PASSWORD scp -r dist $SCP_HOST
sshpass -p $PASSWORD scp shell_script/burn_to_raspberry_util.sh $SCP_HOST
sshpass -p $PASSWORD ssh $HOST "sh ./burn_to_raspberry_util.sh"
# sshpass -p raspberry scp -r dist pi@192.168.3.53:
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
#run in raspberry
cd
sudo rm -rf /var/www/bioprovuebuild/*
sudo cp -r dist/* /var/www/bioprovuebuild/
+4 -1
View File
@@ -1,6 +1,9 @@
<template>
<div id="app" class="app">
<router-view />
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
</template>
+29 -4
View File
@@ -18,8 +18,12 @@ import 'echarts/lib/chart/line'
import 'echarts/lib/component/dataZoom'
import 'echarts/lib/component/tooltip'
import 'echarts/lib/component/legend'
import 'echarts/lib/component/legend/ScrollableLegendModel.js'
import 'echarts/lib/component/legend/ScrollableLegendView.js'
import 'echarts/lib/component/legend/scrollableLegendAction.js'
import 'echarts/lib/component/axisPointer'
import 'echarts/lib/component/grid'
import 'echarts/lib/component/markArea'
import VueMqtt from 'vue-mqtt'
import global_ from '../data/global/global'
@@ -27,17 +31,35 @@ import VueWorker from 'vue-worker'
import axios from 'axios'
import VueAxios from 'vue-axios'
import 'nprogress/nprogress.css'
import Toast from 'vue-toastification'
import 'vue-toastification/dist/index.css'
import api from '@/data/api/index'
import localforage from 'localforage'
import '../metrics'
import '../registerServiceWorker'
localforage.config({ name: 'bioprovue' })
let MqttUrl
// for developer
if (process.env.NODE_ENV === 'development') {
MqttUrl = 'ws://192.168.5.240:8083'
} else {
// for user
MqttUrl = `ws://${location.href.split('/')[2]}:8083`
}
if (process.env.VUE_APP_BUILD_VERSION) {
// eslint-disable-next-line
const message = `%c${'Build_information:'}\n %c${'Version'}: %c${VERSION},\n %c${'Timestamp'}: %c${TIMESTAMP},\n %c${'Commit'}: %c${COMMIT}`
const message = `%c${'Build_information:'}\n %c${'Version'}: %c${VERSION},\n %c${'Timestamp'}: %c${TIMESTAMP},\n %c${'Commit'}: %c${COMMIT} %c${'Mqtt'}: %c${MqttUrl}`
// eslint-disable-next-line
console.info(
message,
'color: blue;', 'color: red;', 'color: blue;', 'color: red;', 'color: blue;', 'color: red;', 'color: blue;',
'color: blue;', 'color: red;', 'color: blue;', 'color: red;', 'color: blue;', 'color: red;', 'color: blue;', 'color: red;', 'color: blue;',
)
}
@@ -47,10 +69,13 @@ Vue.use(VueClipboard)
Vue.component('chart', ECharts)
Vue.use(VueWorker)
Vue.use(VueAxios, axios)
Vue.use(VueMqtt, 'ws://52.194.17.114:8083')
Vue.use(Toast)
// Vue.use(VueMqtt, 'ws://52.194.17.114:8083')
// Vue.use(VueMqtt, 'ws://' + location.href.split('/')[2] + ':8083')
// Vue.use(VueMqtt, 'ws://' + '192.168.151.125' + ':8083')
Vue.use(VueMqtt, MqttUrl)
Vue.prototype.API = api
Vue.prototype.GLOBAL = global_
Vue.use(ColorThemePlugin, {
+1
View File
@@ -0,0 +1 @@
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="sd-card" class="svg-inline--fa fa-sd-card fa-w-12" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="#6c7fee" d="M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z"></path></svg>

After

Width:  |  Height:  |  Size: 380 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

+530
View File
@@ -0,0 +1,530 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-family:'Arial-ItalicMT';}
.st17{font-size:23.5321px;}
.st18{fill:none;}
.st19{font-family:'ArialMT';}
.st20{font-size:48.0099px;}
.st21{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st22{font-size:57.6118px;}
.st23{font-size:28.8059px;}
.st24{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st25{fill:#CACACF;}
.st26{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st27{fill:url(#SVGID_1_);}
.st28{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st29{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st30{fill:#FF6B7A;stroke:#787879;stroke-width:1.5;stroke-miterlimit:10;}
.st31{fill:none;stroke:#787879;stroke-width:3;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="446.29" y="960.7" class="st0" width="100.36" height="144"/>
<rect x="148" y="960.45" class="st1" width="200.4" height="144.5"/>
<rect x="147" y="960.7" class="st2" width="610" height="144"/>
<line class="st3" x1="147" y1="1032.7" x2="757" y2="1032.7"/>
<line class="st3" x1="348.4" y1="960.45" x2="348.4" y2="1105.2"/>
<line class="st3" x1="446.29" y1="960.7" x2="446.29" y2="1104.7"/>
<line class="st3" x1="546.65" y1="960.7" x2="546.65" y2="1104.7"/>
<line class="st3" x1="651.01" y1="960.7" x2="651.01" y2="1104.7"/>
</g>
<text transform="matrix(1 0 0 1 482.9477 1084.599)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 378.1117 1016.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 397.1932 1022.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 572.3569 1017.1391)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 602.644 1022.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 671.5264 1017.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 697.4883 1024.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 458.211 1016.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 488.9029 1016.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 376.3327 1083.5667)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 682.6434 1084.389)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 575.7955 1083.6689)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 191.4691 1013.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 158.5342 1080.74)" class="st14 st8 st15 st13">Connect to</text>
<text transform="matrix(1 0 0 1 145.5029 1137.9326)" class="st4 st16 st17 st13">* CC-mode wire is recommended to use in constant current mode</text>
<rect x="803.03" y="1083.8" class="st18" width="0" height="0"/>
</g>
<g id="sample">
<path class="st1" d="M349.2,870.55V840.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H386.03C365.69,907.37,349.2,890.89,349.2,870.55z"/>
<circle class="st1" cx="561.4" cy="853.83" r="13.2"/>
<circle class="st1" cx="324.24" cy="853.83" r="13.92"/>
<rect x="329.04" y="849.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 365.9231 868.3369)" class="st14 st19 st20">sample</text>
<text transform="matrix(1 0 0 1 365.9231 868.3369)" class="st14 st19 st20">sample</text>
<text transform="matrix(1 0 0 1 304.9065 919.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 540.8065 919.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
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" transform="matrix(0.8003 0 0 0.8003 153.1039 24)">
</image>
<g>
<path class="st21" d="M453.5,450.27c0,169.35,34.9,224.71,112.11,265.48c38.91,20.54,120.57,24.66,83.6,85.15"/>
<text transform="matrix(1 0 0 1 540.35 773.4848)" class="st4 st19 st22">V</text>
<text transform="matrix(1 0 0 1 571.4843 779.3071)" class="st4 st8 st23">in</text>
</g>
<g>
<path class="st21" d="M470.3,450.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,37,125.56-21.61,150.53"/>
<g>
<path class="st24" d="M584.97,834.15c-8.45,7.26-14.88,13.14-23.57,20.6c1.09,2.26,1.68,3.89,1.68,3.89s11.69-3.61,29.64-7.53
c0.84,2.79,0.81,2.79,1.46,5.91c4.73-1.03,11.02-2.76,19.72-4.34c-1.82-4.99-2.59-6.89-4.38-12.39
c-12.68,3.62-25.23,5.93-37.73,10.79c11.45-8.36,20.5-15.57,31.95-23.93c-3.06-5.1-5.77-6.9-8.91-12.14
c-6.58,5.82-14.51,13.28-14.51,13.28S583.62,831.94,584.97,834.15z"/>
<path class="st25" d="M584.97,834.15c-8.45,7.26-14.88,13.14-23.57,20.6c1.09,2.26,1.68,3.89,1.68,3.89s11.69-3.61,29.64-7.53
c0.71,3.92,0.87,2.67,1.46,5.91c8.18-1.79,11.21-2.48,19.72-4.34c-1.77-4.32-2.5-7.77-4.38-12.39
c-12.68,3.62-25.23,5.93-37.73,10.79c11.45-8.36,20.5-15.57,31.95-23.93c-4.18-4.57-3.76-5.64-8.93-11.29
c-6.58,5.82-14.49,12.42-14.49,12.42S582.53,831.01,584.97,834.15z"/>
</g>
<text transform="matrix(1 0 0 1 631.1288 717.4971)" class="st4 st19 st22">V</text>
<text transform="matrix(1 0 0 1 661.7762 725.0928)" class="st4 st8 st23">out</text>
</g>
<g>
<path class="st21" d="M416.87,450.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-37.2,151.26-10.45,161.52"/>
<path class="st24" d="M291.38,846.45c11.94,4.37,20.4,6.96,32.67,11.45c1.45-2.56,2.61-4.2,2.61-4.2s-10.49-10.06-25.1-26.52
c3.23-3.2,3.04-2.93,5.71-5.58c-5.92-6.67-8.63-9.61-14.96-17.92c-4.41,4.6-7.52,7.12-11.94,11.72
c11.12,11.1,21.75,23.72,33.92,33.86c-14.79-6.84-27.05-11.86-41.83-18.71c-2.9,6.41-4.36,9.1-7.34,15.69
c9.44,3.29,22.68,8.29,22.68,8.29S290.14,849.25,291.38,846.45z"/>
<path class="st25" d="M291.38,846.45c11.94,4.37,20.4,6.96,32.67,11.45c1.45-2.56,2.61-4.2,2.61-4.2s-10.49-10.06-25.1-26.52
c3.23-3.2,3.04-2.93,5.71-5.58c-5.92-6.67-8.63-9.61-14.96-17.92c-4.41,4.6-7.52,7.12-11.94,11.72
c11.12,11.1,21.75,23.72,33.92,33.86c-14.79-6.84-27.05-11.86-41.83-18.71c-2.9,6.41-4.36,9.1-7.34,15.69
c9.44,3.29,22.68,8.29,22.68,8.29S290.14,849.25,291.38,846.45z"/>
<text transform="matrix(1 0 0 1 205.6116 750.498)" class="st4 st19 st22">l</text>
<text transform="matrix(1 0 0 1 221.4627 756.6533)" class="st4 st8 st23">in</text>
</g>
<path class="st26" d="M247.05,380.27V136.19c0-38.66,31.34-70,70-70h244.08c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H317.05C278.39,450.27,247.05,418.93,247.05,380.27z"/>
<radialGradient id="SVGID_1_" cx="510.0233" cy="311.428" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st27" d="M285.46,371.86V144.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H325.46C303.37,411.86,285.46,393.95,285.46,371.86z"/>
<path class="st28" d="M285.46,371.86V144.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H325.46C303.37,411.86,285.46,393.95,285.46,371.86z"/>
<path class="st26" d="M309.46,365.86V150.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H331.46C319.31,387.86,309.46,378.01,309.46,365.86z"/>
<circle class="st29" cx="439.09" cy="188.25" r="31.21"/>
<path class="st30" d="M612.44,834.46c16.27-9.39,23.67-16.44,29.29-21.6c3.8-3.5,11.73-10.33,14.57-14.34
c0.95-1.34-1.1-3.5-2.31-4.63l-0.52-0.48c-1.34-1.25-3.49-1.19-4.77,0.13c-4.11,4.28-13.47,13.93-18.85,18.26
c-4.64,3.73-12.81,10.16-22.88,16.46C605.48,829.18,608.7,836.62,612.44,834.46z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

+553
View File
@@ -0,0 +1,553 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{fill:#FAFAFA;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st17{fill:#43DABF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st18{fill:#FFFFFF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st19{fill:#A6A6A6;stroke:#A6A6A6;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st20{fill:#505050;stroke:#505050;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st21{fill:#FFFFFF;stroke:#525252;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st22{fill:#FF8EA1;stroke:#FF8FA2;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st23{fill:#FFFFFF;stroke:#FF8FA2;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st24{opacity:0.349;fill:#75F1FF;}
.st25{fill:#FFFFFF;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st26{font-size:40px;}
.st27{font-size:34.8402px;}
.st28{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st29{fill:none;stroke:#707070;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st30{fill:#5E5E5E;}
.st31{font-family:'ArialMT';}
.st32{font-size:49.9451px;}
.st33{font-size:24.9725px;}
.st34{fill:none;stroke:#515152;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st35{fill:#0054A8;}
.st36{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st37{fill:#F2F2F2;}
.st38{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st39{fill:url(#SVGID_1_);}
.st40{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st41{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="444.29" y="969.2" class="st0" width="100.36" height="145.5"/>
<rect x="146" y="970.45" class="st1" width="200.4" height="144.5"/>
<rect x="145" y="970.7" class="st2" width="610" height="144"/>
<line class="st3" x1="145" y1="1042.7" x2="755" y2="1042.7"/>
<line class="st3" x1="346.4" y1="970.45" x2="346.4" y2="1115.2"/>
<line class="st3" x1="444.29" y1="970.7" x2="444.29" y2="1114.7"/>
<line class="st3" x1="544.65" y1="970.7" x2="544.65" y2="1114.7"/>
<line class="st3" x1="649.01" y1="970.7" x2="649.01" y2="1114.7"/>
</g>
<text transform="matrix(1 0 0 1 481.042 1091.1556)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 376.1117 1026.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 395.1932 1032.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 570.3569 1027.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 600.644 1032.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 669.5264 1027.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 695.4883 1034.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 456.211 1026.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 486.9029 1026.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 366.7726 1092.7039)" class="st11 st8 st12 st13">CE</text>
<text transform="matrix(1 0 0 1 671.6493 1091.5194)" class="st11 st8 st12 st13">WE</text>
<text transform="matrix(1 0 0 1 570.608 1093.1669)" class="st11 st8 st12 st13">RE</text>
<text transform="matrix(1 0 0 1 189.4691 1023.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 156.5342 1090.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st16" d="M256.21,888.67V759.86h401.9v129.78c0,11.17-9.05,20.22-20.22,20.22H277.39
C265.69,909.86,256.21,900.37,256.21,888.67z"/>
<g>
<rect x="306.71" y="609.95" class="st17" width="11.22" height="263.29"/>
<circle class="st18" cx="312.32" cy="674.74" r="40"/>
</g>
<g>
<path class="st19" d="M437.97,868.95V670.02c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v198.93c0,3.31-2.69,6-6,6h-16
C440.66,874.95,437.97,872.26,437.97,868.95z"/>
<rect x="446.36" y="611.66" class="st20" width="11.22" height="263.29"/>
<circle class="st21" cx="453.16" cy="673.82" r="40"/>
</g>
<g>
<path class="st19" d="M573.78,867.24V690.08c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v177.16c0,3.31-2.69,6-6,6h-16
C576.47,873.24,573.78,870.55,573.78,867.24z"/>
<rect x="582.17" y="609.95" class="st22" width="11.22" height="263.29"/>
<circle class="st23" cx="590.29" cy="674.16" r="40"/>
</g>
<path class="st24" d="M257.36,888.67v-92.88h399.75v93.83c0,10.73-8.7,19.42-19.42,19.42H277.72
C266.48,909.04,257.36,899.92,257.36,888.67z"/>
<path class="st25" d="M249.16,761.86v-17c0-1.66,1.34-3,3-3h410c1.66,0,3,1.34,3,3v17c0,1.66-1.34,3-3,3h-410
C250.5,764.86,249.16,763.51,249.16,761.86z"/>
<text transform="matrix(1 0 0 1 286.5413 689.6758)" class="st11 st8 st26 st7">CE</text>
<text transform="matrix(1 0 0 1 563.9761 687.1454)" class="st11 st8 st27 st13">WE</text>
<text transform="matrix(1 0 0 1 427.375 688.757)" class="st11 st8 st26 st7">RE</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAF9B1XakK8C4I/AAAAEDDCPwAAABXZBiGUhVgEgI/AADABfigziU+uBYEfgAAgDfAzD3e
C4EfAADgiug7A7xDgEsh8AMAAMyUC+V2Rn/q7L4N/QR/nIvADwAAADSMwI+krusmz0gAANACnVUf
hmGcZR+GYfwX1dX6usy2cY7U+n7m3z+v2W5NHdw+Aj8AAEAFLq3BrSLwI4mzfgAAbhcnKFAEfgAA
AKBhBH4AAADnlt/lnjKzP6UubheBHwAAoHHRh42xHAR+ZNE5AACWjrEQt47ADwAAkKBh/5ZnyG91
v3E5BH686Aii+wz3fZ9dBwCAlth76A/DIOv1Onm9ezQm2nE0+rbc1DfoRvf4n3OdvV2ndL9+vw3d
9znbxXUi8OOFmgO8pg4AALeu73s5Ho9hqH+NsTD35VmX+iIvLA+BH2MHEnVcdC4AgCWxl/CIvAz8
uZBfMxtfUycnNx7bsnPG7XP2D9eJwI8TU96uBACgVf7a/a7rkmNhbUCuqZc7IchNzAE5BP6FyV3T
F6mpAwBAK/y41/e9rFarbAifMikWXT9fEl3WY9W0gWUj8KOqo/If4gUAoGUaoo/HY/bSVzVnjCwF
eU/faShdVgR4BP6FILADAFCv6zrp+172+/2r3LWm9CHgS25rivfaLl4XgR9ZeuBzsgAAWAr7gd3D
4SB930vf9682JvqQnWs/d2nRlHawLAT+hdDrD6O3A3NvD3ZdJ6vVSo7HY1gOAEBr7CU8h8NB1uu1
rFar8Ttp7Jhpx1X/bnrtpTelDwPbE43UZT3RHXpWq9WLsojdb1+XGf82EPhRrdRhAADQkuPxKIfD
YXxeE359SE+ZMqb6uqV1r+HSIFwXAj+StEN5rbcwAQC4ZofDQfb7fXWIj8pL60w1Zyy+9D7g9hD4
kaVvG3Zdx2U9AIBF2e/34116cpfdRDPqdnl0Cc455tyIY872S+uUynE9CPwQkfSMgb0rgV67CABA
64ZhkN1uN46DNmSXZvJrgrA/IYjMCfZR/Zr9QdsI/BjlPmzUdb9uTza14wEA4Bb1fS+73U5Wq9VJ
6FfvEaKnbNPXZfxeNgI/klJvRdJpAABadzwe5enp6STwi9SF7nPGyZr2RfLvCkSPa035PXE7CPxI
srMZ9u3MOR0IAAC35Hg8jh/YtYH/GlzTvuA2EPgb4Wfhp/Lr+g5O7z98PB7H2Q4AAFr1+Pj44r77
el/76HIZHRdrxkcds3PtaD39Hp3cjH50qZHfD9uGncxLtR39HjW/G64TgX/hppwk2KA/ZT0AAG6F
BujdbheW2Z+Rc8bHXAC3dfzz0joEdRD4G3Xpg3sYBlmtVnI4HC7eNgAA1+R4PMrDw0N4KU80BkYh
fCof2lMz9bYsFf4Bj8CPauv1mjv1AACa1nWd7Pd7eXp6OlnWdel78WudKctTcqF9aluAIvA37Nxg
nlrffs04AACt2e124xdu5WbavVRdXa6fAfB8yLfX5adm8yPRtfxTzFkHt4HAjyraGa1WKzkej1Ud
HwAAt+Z4PMrPnz9FJA7bNpynZuNrl0VK46v/kO5UXPazTAT+xtVca1hLr+Mn8AMAWrXf7+XHjx/h
bP2US21qx9raehr0fWCvXR/LRuBfiLkB3XcsentOAABadDweZbfbvQj80Qd4rWjW39ZPXeaTEm0/
NZZH2wMsAn9jcrMP0WyFlqWeawejs/sivz68q7crizqfuScXAAC8p77v5fv37yLy/K52zbX0NZfZ
dN3z99vovfWja/r9WK3PV6vVWD+1LbsffsLO1rF0vzy/bik74LoR+BfMzhpEy0XSMxZ930vf9+EB
TycAALhWuYmq4/EoP378EJE4aFs1Y10pmNtyP/amAnvJ1HVKJypoA4F/4UoHunY4trPTy3rs3XpS
Jw8AAFyTKGTrz4eHB/n58+cYmv3EVu0sd2oszM2a54J6bYhP7Wvt+mgXgR9FtkO04d8GfjoTAMAt
SL0zPQyDfPv2TYZhOLl0ZhiG8RadKX42PvXueGrbU8fQ3DsAutxe2mOllk9xzrp4HwT+hSkdpFGH
JXJ6XaC+vamX9UTrM9MPALhGqWCud+fZbDbjcr2GXye8UlKh3i73y6LyXPiP2prqnHVx2wj8GEUd
Qer6wvV6LSK/ZvkJ9wCAW+LHrWEY5Pv377Lb7U7uRqcTXLmwnZtlTy2bG7xrTgx83UvM6FuXagdv
i8CPsFNSOqthO0e9pnG1WoWBvzQTAgDANTkcDvLnn3+O452//j2aiZ8q124UynPbiK7PnxPwa7c3
pQ6uE4F/4UoHr4Z3P5uggd9+CRcz/QCAa+cnpYZhkP1+L9+/fx/fvdYxr+/7cWzTWf8o9EcTXzbg
R+OjDehR+ZwxtTSmY7kI/A26xAFvOzTfyYn86oj0Q037/T55i04AAK6JzuLb53/88YdsNpvk7LhO
ctnn/qedGLPPdV0/cWa3FW3Pt+VPDKKTidJJgj3ZsScc9rl/nFuG20HgX7jSrITnO6b1ei3H45Fv
3wUA3Jy+7+Xh4UEeHx9FJA76U/lAnSq3z6PQ7+v6x6XtTFVzsoDbReBfIN855A7iUoe12WxO7slP
hwAAuCX/+c9/xm+PFykH9hqldUshPxf0zzWnDcb220fgX4ApB2pphkH5t0OPx+N4n+I5nQkAAG9B
L2sZhmH8sG7q23RFygG5VF4STcL5cbt0AjD3pGBKPsBtI/AvmJ1hKHUgKrqGcL1eS9/3JzMkAABc
Ix3D+r6Xr1+/yuFwkPV6/WIiK/fTP9bnqWXRWDtF7gSgVvT7YTkI/BjN6QA08Hddd3ItP7MGAIBr
pDP5T09P8uXLF9lsNiJy+oFWKwrx/nHN+FlbN3XiENVLyZ2YRGrq4LYR+DGJn6XQjlNnR3a7HXfs
AQBcNZ3d1y/aiiapcjP4pdn6qCy3jegdgOh5jdw6NZNxtdvBbSHwo3hnHmU7JD9TsV6vZbVayX6/
L7YDAMB7GYZBnp6e5Nu3b7Ldbk++TPKc8SsaH1MnBrl6vn7p5OKS3mo7eHsE/oVIXf+Xm03w1/vZ
EwN/HX/f97LZbKTruvH2Zr4NAADego499np9W/avf/1LDofDOO7Z75vJhW+/zNbVbdUE92hs9GNr
tG29n7/W9+xY7ZenxvhcyK+ZDMRtIPA3quYsPXcQ16xv2Q5OL+0ZhufrIekwAABvxYbZvu/H2fu+
7+X79+/y8+fPMTz3fX/yDbuqdhyMwrQtsz/9cr+sdpsiL9uu2fcp7aMtBP6FOyeI27c/taPy376r
mCUAALyFYXj+JnjvcDjIf/7zH9nv928WlH2QtycI/mQhF+Kj9qITiWgdxl8Q+Bs2tYMqdQi5DsY+
Xq1W0vf9yfX8qU4IAIDXouFfx6Jv377Jjx8/ZLPZjMv01tI6MVUK/f6yGx/abd0pY18u5OvyS02e
XaIN3BYC/4JE1/TZn75OrpPSjsfSjlK/wGS/34/fwJvaBgAAl9R1v24TrXTMeXh4kC9fvownAXYc
SwX26HEp4EfrRc9zSvuSGkdTy3MnEaU6teW4bgT+xpVCe0mujgb8qFPT23QeDoeTS3sAAHhtekmP
jlHDMMi///1veXp6kvV6Lcfj8eQafn2cCumlcO+XlwJ2zdhcM0bn5Pa9BpNzbSHwL1hqNn9Kh2D5
NjabjRwOh/EDvCLPJwkAALwGHWf08pe+7+Wvv/6Sv/76a7yFtK2npoT0VNiPynSZbyd3guGf+/Vz
9YAIgX/hojP42g5DO53o0h6R5y/j0m/gZbYAAPDa/GTW09OT/POf/xSR5+v1N5vNOC7pjL9dx/6M
RKG7tsw/ztXPiU4ggBQC/wLYTiD6sJGvp29v+vp+nVQnY59vNhs5Ho/y9PR0MuvipU4aAADw7Bih
M/nKjk273U6+fPkiT09Pst1ux2Dvr+NP3dVHxzz7z79D4IO77otdR6Xe5Z465pXCfWrcj+rUbLu0
PVw/Aj9CtsOqEYV/7UTX6/XJpT1d1724rj930gAAgJUbI2yQ/fPPP+XLly9yf38/XrefM2XsiQK9
L/ePU2PdlDFwyj6KTK+PNhH4UVTqLHKdXtc9z4bsdjvZ7/cv6lg1Mw0AAKjU+PP9+3f5448/xkt2
uq5LzrD7NvzkVVQ/JTceRo/tstRJQurEwNctmfq7oB0EfpyoOfBLoVzb0LdZu+7XB3i7rhtDv31L
tNQeAABe7lLQx8dH+cc//iHDMMhmsxnLo0t/PB+ufeDOBXHfptax/7xonVql9kq/Y6ke2kHgXwh7
MPsOLzrQ/SxIrgPRTtR3vrbeer0ePyyl1/NHbdHpAABKcmH/cDjIP//5T3l4eJCu68ZLefQSUz/u
5YJ7qV5qndxYpuW+vVSb0TatS4+btSdGuC0EflTLHfSpsN91v95C7ft+7GiPx6M8PDxM/pwAAAAq
CuN938sff/wh379/l+12O5bpZ8r8+lEbPmznnkfrRvX9spRU+SXHSd9WaX/QBgL/gp1zKU2uk4yW
64yBhv79fi+73S75pVzn7BsAoF2p8eFwOMjXr1/ly5cv422hN5vNGPaPx2M4OZUK2H6ci0SBPiXV
XmoMBS6JwI/R3JDddd2LbynUtvTSoNVqNXa6ej3l09OTHA6HsZ252wcALIcNxvbyk58/f8o//vEP
EXm+vfThcJCue/423dzlpLlQXyMK8VGdmpMDX3eKmnVSdRiH20XgXyDtIKMOT3923fPdDHyI951V
dL1fqjPVevpW69PTk+x2u5P2lG3Td0J0SgDQLj+ueBridWz5/v27/OMf/zhZZscwHV/sZT2p4O1D
uW8jWubbjNqKpNrxdfzj1Lb19y6t78f3SK4Mt4fAv0BvdRCXtqMd79PTkzw9PY3Lo47Id2KltgEA
tykVRodhOPnWdh1Dvn//Ln/729/keDyOd4RTNiBPVdtOKvSfG6Zr2q3ZFiBC4F+UOR1CNHN/TvC2
9bWz1m/i1Xv059pkZh8A2ubf3bXvLuvloxr8Hx8f5e9///t4fb5+k67W9z/tP1tm1/GB2q9fu57/
GW271H5uPCzRdRk3IULgx3/lOpVzOotcBygi423SRH7dN9l+MVd0qZAuBwC0yV52E11+qtfjPz4+
yt/+9reT73bRn7ngHI13PrBH5b5uKqCnympF+5La55TSNkvlaA+Bf2HO6SC8qR2QZTtCe7tO/SBv
6i1dXUboB4C2DcPwIvzrMv1irR8/fshqtRqv3dd3AETi0G/HlFw498tT7eXaj8py7Xu+/dKyczGu
to3Av0DaOUQHd6oTyXVMpc6m1I521Ov1Wg6Hgzw8PJzcvSdS2iYA4LZF4bnrOvn586f8/e9/l7/+
+kvu7u7GL9bqum68pCcVym07uTpWNG7ZdfxjXz83fto6U+tOLc/9noT99m1KFdC26O3Srps+g65t
2PZybfg62snpNZi73U6G4dc9lHWGJ9pXAEB7/FjSdb+u2//58+f4LbofPnwYP6irQV/vuy+SD7i+
LPrpw3s0VkZlURu55VZpn6N9yD0vLU+ZWh/Xjxl+JM054KNOL0XLdWZG36pdr9ey2+3k8fExOdM/
9YQEAHA7oj7+58+f8q9//UseHx/HL9Jar9fjNf02+KekArgt8//8+q/l0m2nTiqwTN1Aclok/9/u
OwW9VlKX+8epPxu7XB9Hy/Sxbcu3qR/E2m63cn9//+Jr0VMz/n52BwBwO6Ivyfr69av88ccfJ3dz
8+OTD7ipsJ76aSeffHvR49o6flvRdwGkth/Vq3msz6Nx3NYrZQG0g0t6kJQ78LUjeU32q9DX67Xc
3d2JyMtAX/P2LQDg+viJm+G/7/Tq8r7v5cuXL2PY129qzwXdVLlfVgrOqXb9unZ5iQ3hpe1Harah
ojA/ZX20hcC/UHMCu+2k9HHUoeSW+XLtfKL27H36f/78KYfDQe7v78fbeNr17HPbLgDgenXdr1Av
8jzDrct3u518+fJFvnz5IiIi9/f3cjgcXtx6M8eH99xPG4hL5allqXXtz6mmrh+NudF+YlkI/AjZ
DsOqCf0qVTZlHQ33h8NBHh8fpe97+fDhw/jBLNuBTT2BAQC8D9t/2xszaD++3+/lX//6l3z9+lXW
67WsVqti2C8F7Oh5VDdqJ1U3t46va8fO1Hp+eS2/nTnj4dRt4rYQ+CEi6evhI6W6trPRx1rfd3RR
mV2u13Le3d3J4XCQ3W4nfd/L/f39eImPyPOtPW1btb8PAODt+X5b+/7v37/LP//5T3l8fJT7+3s5
Ho/jWBDJBXArNdOdCt3RMlvX/rPL/GPfTqqsdj9KYxthHxEC/4Jp51pTXqobqVlH62hnE21Py/W6
zsPhIMfjUY7Ho9zd3Z3cuhMAcP009Nox4vHxcbwTT9/3sl6v5Xg8jv2/jgF6CZC2Y3+mlulzH8hT
YbtUN7XMtqFy2/J1vVJ5jUu0gdtH4EdS9LZjNEM/RbSOLovK9JZr2sGv1+sx9D8+PsrxeJQPHz7I
drsVEa7hB4Bb4Cd3Hh4e5MuXL/LXX39J1z0HfO3/9cO6+q6Arpvq66NwbctSYb1UXgrpqVDv1ynt
d2pZTbkfB/Wnf+d76viN20bgXzjbOVzC3PZ0Pb++n93X59vtVg6Hgzw9PcnhcJCPHz/K3d0dM/0A
cAM0eB6PR/nzzz/ly5cv8vT0dHJTBj/R48N+1F60LBXco/V8OPfrRI9tXc/X86E7J9V+apzV8inb
wHJwH/6Fy3UaUb2aGf6obq5cg7wtL5Xpsr7vx7d87+7uxg/06r7ZDlCEDhEALs33rzXlw/A8q//t
2zcZhmGc1Y+UwnUqgPuQrn2/L7Nt5sr1uf3wsF3P/ow+YFxqN6rvH+vv4cs9vz+WH59z7aANzPAv
nO043lPUgfnA7h8PwzDeveF4PMrDw4Ps93v58OGDfPjw4eRdAT+I0LkBwDx+wsQ+jvpcLdcZ+v1+
L3/++ad8/fpVdrudrNfr8c5r+u25VmpbdlkqGEfLotBt60XluWX6uOanmjrp9Fp1sRzM8CMM/FHn
FD32UmXR+v6nr69v5/p1/T+R5xOGvu/HjvTTp08nl/lEd/Kx69NJAsB8vj+2fW3XdeN3qujlO3qb
TTs5o5fvqFRg9sE7VTcVylPr23+pMt92qW7Nvubq+Me5ZX55VMePual20BYCP0RkeujX57ZOLsBH
5dFJgH1uA3n0M9qO3r1nGH7NMG23W/nw4UPyW3pT/O8GAIj5/lJvoTn8dxJmtVrJ4+PjyeU7Ir+u
ze+6buzPu64bP6grUg77qWCbCuAqevfBhvTU+tFy335tvag8t9zXiepF45tfr2asR5sI/BjVnPX7
kG7r1Ab+XF0f6HPr2A9w6cy+ravX9+t9/PVuPnRuADCfvyd+NHbYy3f+/e9/y9evX8dbbWrw1T5+
tVqd9OWpL9eqDcipUF0K4raOXz61rdJ27HJVWp5apo994I/Wqxnn0SYCP07YP4dURxCF8Fyd3PJc
qI9OClLl9nKdYRjGD/LqYx1oPnz4IPf39yeDjt8GHSAApA1D/PkqdTwex+v0//zzz7E/7rpu/MyV
PtZ+2vbBqc9cTQnIqbCdqpMqz7VT06Zl25zyu3jRsmi5f07YXzYCP07UBN9U4Nf6vvP2/PqlkwC/
LPrpZ/i77tf1ovpY5Plyn81mI3d3d3J/f8+XdgHAhei3oX/79k3++usveXp6ks1mM36fisiv/tpe
px8FZt+X14TjKJinfk5ZFu1favtRe77Nmp9W7bJouX1O2AeBHy+UQr/tqKNvPPSB3KsJ/PrTtulD
v25fH0fB37evX+Kid4LQS33u7u5edNIAgDztUx8fH+XPP/+Ub9++jV+UZccIfwlQKiz7E4FU4M2F
7dT6pXr+cbRuaTu1P0vL/OPcslSZfU7gB4EfL9QGfv9c6/rArbru5Vu3tk5qvSjAp0K9LbfbS7Vx
OBxEROTu7k4+fvwo2+12vNWnH5RSSq8XAFxSqW8qlc/h2+z7Xna7nfz8+VO+ffsmDw8P4/X30bum
NeE1CsBRXVsvVdeXRcHb1rE/o0uK7D97Can/vIHfZs3vGO2HH1ft8trXWWj2FwAAF0NJREFUx/Lt
YXkI/HjB/0nkOo/SstRyv8wG9lS92rBv14vKouXDMIwf8L2/vx//+Q7bdrb+Np++bTpWANfI9oWp
/suXD8PzjRAeHh7k58+f8uPHD9ntdifhN9fv5YJqar1UeSlMlwJ1apnIy7v4pOppmd9Waj1fx9dP
1ckti8p8vdz/N5aDwI8Xoj+JqJPwH5T1nUoUsO3zVJ2orn1cE959fV9P5PTOPjqjfzweT2b9N5uN
3N/fy3a7Hd+i1jZKHWft6wgAr6Wmr0rR/vN4PMrj46P8+PFDHh4eZLfbnfSdubBZy7cRBeEocFtR
eWqdVJ1oP/x27Kx+6neP1k3td7TMrquvtS7zY0vqdVB+bMYyEfgRqgmrthPyQdt3Srk/s1Q9H9D1
cRTqS+W2Lbvfev2pb2sYni/36bpONpvN+GFfPRHQMrtuNDh4dvv2uSqtX0v35xy5/zf/u+fKAbwO
359EZaVyLdO+8HA4yOFwkKenJ/n586c8Pj7Kfr8f+5TSbTMjUfBNPfZ9l283uo9+9Fif6+Nof30d
X2bLVen3z63r60V8uX09uu7lh5qjx+q1xhfcHgI/kmo7Cl/PDiKpYB4tS7UThfdSXVun9NO2YT8E
bJdFH07++PGjbDabk9l/+xppO3SwAK5Barg/Ho+y2+3k6elJ9vu9/Pz5Uw6Hg+z3exGR8XNNIqf3
ybd9vfLhtIavl7qkxtePfuq4EwVuH46jOiL57afW8fuQew1y6+tjH+q13C+PHlup+lgeAj+Soj+N
qMPwnX4UyH3daFkpxEfLSmWpch0QbJi3A5qf9bf/fNvaGWv4v7u7GwfIrnu+rtV38npJlLKP7aAJ
AFaqf/B9sS7TfzqhoTP4j4+PstvtZLfbjd9Xov2SfleJbcPeN1+3Y/tYLbf9p98ffZ7r30pBVtf3
9fSfvj6+z7WPc+W57wGIthk9j9r2z3P758cX/b3s653ahorqYrkI/MiK/jyijsPXS/1ZlZbb8qiu
7/Ci574s2jcd/HznmmrPl+uAou2IPH8mQP9tt9vxjhXr9Xr8p523fWxfU93We3fQc7qG995nYAl8
H2H7nWH4FeiH4fkzSYfDYfweEp3NV9r/+IkJux3t70R+hXrt82zg7Lrn2ySnAnMkKqv54i2/zO/7
1Od2WWp7+k9fj9T+RMujeqll/v/X1o3GB7+NXF0sF4EfRdGfSNSB2LCsnaJ/rPVsGz5UKz9LpHzg
ttu1dWzdmnK/H9q+3w+/rl+mP3U9X08f+w9+2dfJ72+kpk5Oaf1SeYSBBXgbPgTaCQf/pYO2j7HP
dV1vGIYX64jISaDX5T78+8dWaXkUcG0dv9wv87+jXT6l3P7+fr3advyyaN1UHX2NbZn9f8q1r1L1
sVwEflTzfypRJxU99x2Wdqap+p4NybZetH4UrFPrREE+tU60fq48quefRyc0qfWidvXOQn55itaJ
BhAA7SgFPN8XREplUf9RE0RtWSr4DkN6Bj31WOv7slTdVB2R+Br+3D6nyuyy1LZTbH3/WqdeN6u0
DpZnU6oA1Io6JpH36XhsJ5wKxb5cl9nBUAee1Pq5gTMqs+3ZQSUK477N1AAb7WPNIFEytf5UNaED
wOXNOeZS60QBNjWZkAu7vsz24b5e1E6qflTPL8uV23anvm653zEl9TtHY0Kq/rl9P9pE4MdFacck
cnqtp5aJ5AeD3KxRTRCP2vCdXSmk23ZTHaVtI7ff/mTjEh1v6nXQZfZx6rUuueR+plxiG8AtOufY
FHn9Y6cULkv9Tu6x/91TdSy/3K+T2ldbltuObyO67efUfUrVS/Hr2LEj9zt6pfEPy0XgRzXfUecC
sYo6rqgst0yXi8Qz2PrY/rR17fp2PXvtaSnc537PVHluued/7+i1jqReL1uuUgNB6XUCcFnXfmyl
AqYtj5bZPiVqw/Yvflnqca48VWbL57SZ2m/7uLTfqbrR8xpdlz5RUtf+d4X3xTX8mKxmBiH6s5oT
aH35MOTvymOlPmxry6P1fT27zVT93Dp+vdw6qfq55an99q/xtYne/QFwncdDbp9SZdHymvBrQ3cp
TPv6qWXRc/vT1kntY64s9dj+1P649BrYujX1VTQGAIoZfrwK7bC0wykFT9/B5dg2o8fKfjmMltug
betH63u1dUTqOvAo9Kfq5+r419qXW6U235K/9R6AX0r9zFsr7U+qPFpeWhY99j+trkvP5NvyaLkV
tWPrpdrx9fw60c+cqN+uQdhHCYEfZ8vNRORmqms7tlT7pXWjuqlOUPclOkmJ1kmF/6gdz7abeg38
+n5fak4+RF6+BrnfX+tcWu6kBkCd9zxearZdCsGRUiCOlkePtS/17PJSW7a+7yt9O76/TNVVtf21
V/OaRv3rnG2hfQR+zFLTgWnHaZ+LvAzwttOcGzhT60Zt2/2IfofU/qT2NfU62Dq6LfvT18u9Fn4b
pdfem/q61vz/ltgBMrf9qfsGtKh0vNnytzpm7DZT24/qTDnJt/2EX55aluvDbX/q2/b7mnrN59SL
nk+Ven1KYw1Qg2v4cRb/5xN1SOeEPV9un9swHcl9YZZf7ttNbTfaflReU8925Lnf0z8vvWZapzT4
Wqk6rz3A1OwbsBTnHm96POXaqTnWbf/hy6JyryYIp0J4JBXco3WjbeeW5bbv101twy/L1fPsNlL/
f6l2/P9lzfawXAR+nCX684k6nahe7k8vVZZqJ9d+Lpj7x/q8tl7005aXtl3z3C6b85qV5F7rKYO6
N3d/gKUr9aG1ATBVpxRYp6oJqKk6c+pOKc8F8VQ9fZ5b19eNyub2n7Xt+P/vc/4P0T4CP85W2+mk
gq2tnwvYpWW54OrLfRjP1Y/qptr0y6bW9eXR89p1Skr1hyAY2P+z0volDE5AbMqxlToWzzm+pq5b
Cqi5kBwtS61fWp4K8Lkwnyuzy3zdub+jLdNy+/9X0+6l/7+xDAR+nC31J1TqqGx4jMqj5zX1atoY
hngW35b7uqV2o30obaPUZlRW+5qU5F4zlfu/OfcuO/6SKxUNgkBLfN/4FsdW6liuCZglpTZKwXfK
Y/s8F9rt49L6Neuk1ouep5ZHz/3/Rc3r7/9eatYBCPy4iOjPKNUJlQK2yMuOsGYd33HaQS+3fil4
5+ql6vr1Irnt5g7L0j5MKbNKg0htOwDy9Nh6y2OqNhT6vleX5ZSCrTc1gNfWi9r1IXoYhhcnVL5O
7bZLdVPL/Gtc06aa+n8DKO7Sg4uYM4BFA4sunyPqNLV93+GnyqPnWi9qI6obSf2eqdcgEv0uKhpA
attVvl37+0S/29z/JzV1/4DWpI6h1zq2atqduk9z2oye1/Q1/qd/HNWfsu2oH80ptZ1aFqnpswn7
OAcz/Li4mk4p92eXKpu73JfnnpfWmVI397zm94/qlNrOqa1rB15Ln2t56pKcWgxWQKz2WPWiQJyq
F20jOvZLbalUvVIILgX2aHlN2dy6UZ05dXPLS3Vqx8ya9gHFDD9e3TCU7+keDUCpQcnzg1TUjl1e
Guz0sQ20pf1PDZA1v3tqf2vUvEY+qNfKDZIi519nDCBWOlZT/eUUufpzAqyW1exbLuQOw8tLbnyd
1PLUT1+3pt9UflyoLUux2472pdROzZgCRJjhx6spdfpRnajMDgSlP9dSe1G5LrfbsT9zj1P1S+uk
ltnluXWi1yZanltXTR08cq8TgPcz9Vj2Uv3HnHZLoTv3PFoePa4N4L5e7QlFat9tHxhtxy73/aVd
lnquUn3rnP8PgMCPVxP9aU0J/bk/zTllNcE8WlYKtsMQn0hEl7yUtjVlmR1UpgR+/3iK1xxo5u4T
cOve67iy250TSHNyQT9VFvVfUx+nynL1c8tK4T5Ser1qX18CPy6JwI9XdU7o1wHADwJRALeDRe5P
2tbx69j2fblf18uF6dr1UnWi8lK9nKnb9GoHm9L/Q207wNKU+s3aY2fKsT2n/ZwoaPvnqX4gWse2
58eEmse1AV3bt9usWUdEwv1KrZNbpvz/3yX+X7BcBH68utLglaqnHW/UidaE1lLgTNXLPc+tVyov
hfXSfpTKzjmUp6zrB7dSvZTS+sBSnXvs1B6jVmmbKaVwW9NuFPCj57WBObrtZqR2u6nnqbLU6186
iVC1YyYwBYEfry71J5bqwGoCsZ4MRGVReareMJS/cdc/1udz1ptSRy8Jyp3oWNE+1gwS53YBNb+j
yLTBE0B6EqA2wE41Z/3aEJxb5peX1ptSXlrPl+nYURvOVbS+8v9vuXZL/SYwF3fpwatLhe8U7eD6
vh873Wj93PIUv46vm9rP0noiLzv1XOCO9j3X0ftBpDTwWzV1SqLfvbQP0eBmH0cnNABeHmP6uPZY
8WFzznoi+f4weqymBOaoXqlPiZaV2qhpM9WWFfXdpfVqXgeR8ydfgBxm+PGmpgT0qO6UP9dSXT+Y
TinP1c9tN9eOD9W5+9z7uqX99wFgjtQgl2pvStAAkJY69rzUMXnp47DUXikwR89Lv1NqWeqxVQr/
pW345TV9W+2+qCljIzAHgR9vbmrHpvW1jg/CUZjVDnlu+I6ep5b5smGYdvvQXGCuWebLS0Hc1hUp
DyqldlJ1Sv+nep1tTfsAnk093mrKRer7hFK5SgVp3zfXhuNcuK9twy+bsp4ut/1sNP5MbVPk5dhV
qg9MReDHu/F/eqXOrSYA24Ek6nxtfb1kyNaJwnrpecTvQ1SWeu6Xp/a/tF5qWel1juReZwDXb85x
L5IOsbn2SoHXhtqoPLWsVF67LNqPKa9PNG74stQ6VqoPnbIvQC0CP95N9KdXMwNSWhaZs24pXOfW
L4XxOeteqrxW6ff3auoAuLyagFgKzlbphL60vjUlAKfKa9qYcgJSOiGIlMpzdVLLCfx4SwR+vLto
9jjFh9Cue3572M+y5AKrLZ8SvqfUzS2v2XbErlcaRHJ15pqyv1PqApgnCrO+L8wp9RNRW1PaLNW1
UgF+SpjPlc8J+r6OfayvjR2HUutZBH28BwI/3l30J1g7AKWW6/pR6M+VqajzLj0vLYsGimidmkMy
NUin2o1+51rRfs9pB8Dr8H1BKnDXHrdR/+fLa0wN6n5ZaTu19acuT5WnXsup7U8d84BLIPDj3c2d
7bDhc+qglqtTs75IPrSXlufKa5flRCcZvrz0mtWcVAC4Xqnjd7VavTiOS/2tVRN2S+Vzl0f9kn2u
Jyu5E4pUG6l+05b55Sp1kmVd4iQKmIvAj6swtyMchiHsvKMByW8j6tx1mW0zt2+pNqN6Ne2lymuX
natmUAPwvmr7EpH4+L10uMy1V1OW26+a9Uv1zilPvdbRmNN1+e8eSP1/lfYNuAQCP67OnE7x3EBc
qlsqj+qUThRSs0ZR3Ussn+pS7QC4LucGzClB27LhuRSwc3yd0jqlcl+ndEI1dfulkwXgLfBNu7hZ
dtDQ8BzNsqQ6W11eKtdlpQBc04nXtFFTp4a/z73/ffwyL7UvtdsH8L7mBE097qdOsFi5/teW+3pT
TwJKy6M2S32fjh+p/bbrR+37ZaXXCngrzPDjatXOrlilP2dbrtexpoK/7bh9J59S2v6UOqWBydZV
UwaaqWG/JiwAuA5Tj29fXhL1NaUAXls3V2fqvuX60ehkoOtefsv5nP2o2R7wlgj8uGqXDv259mzZ
nMNi6nYvvQ1vSt2pSoEBwPsphdw5x64P7TXhtaaONzVcz9mGyPN6uUmSmhOYyJxxC3htBH7chDkd
6JQAnhsgh+F5Vl9ngFJ17fLaelPLfJ3cgHWOqP2oHMB1eY1gGfUzvo+r3W6pXqncsnX9/vj98u36
57W/x9Q+sdQe8BYI/LgZczvTqcE6Cur2cSnIp5Tq+/JS/ZTUiUBqcAPQrujYL6npK6a2afnbgpb6
Kl8vF8y7rnw5YqoPz/1Opd937vgEvBUCP25K7s+11LGm1k0NZlPq15i6Xql+qfw1vMc2AVxOqZ88
V037vn+dGvhrlMJ77UlMzTYJ+7gFBH7cnNKfbG0n2/f9pJksW1bah5S560XOPSGp+d0BtK+2L7B9
4SVCuW0nN8kypU2R0/ql3y0qz63vnTMJBbwlAj9u2jkDhJ9h0ue5AaF0uJTKU6Jtltoqlad+p5rX
RuS81xbA7Ur1gX7yI/V8qqnr2b6ttG5U7tf1/W2pTRH6R9weAj+uVm4WydZJKa2roja67vTWbLlB
o3a58oNkSqnciga/3EnMJdS+vgDe1rnHeykAR32zXZbr40r9xpQw70X7FJX738+Xp5Re19L6wHsi
8KMJczpvq+Yw8HVyX2wVPRcpD0i5Mr9uzb2iVc3vJzLtnYBSOYD3UXu8TzGlf9G+MVVe6jvsCYMP
/9G6pX41VZ5rM5J6XWvXB94TgR/NKP0plzrl0vqpQaS0Xsrc9UTqTiYiUaCfO4iV9r9UDmCe0rFZ
YtfPHae125nbH9Wa21bNejV1ROb3k8C1IPCjWecOQqVDo1ReCtS164uUf5dSW7n1S+vONeW1BvC2
zjnuS7Psc/sr3yfZdVL9SWlbkVK5Nad94BoR+NGs0p92qdMure+l3gGIympMGWjmtC+SX8+/Le/5
S4oAvI1S31VS6i98+7m+LbdM1ax/jlx7UT9c2teuy9804dL7D7wFAj8WoTSjVCt3uNQcSqWBxCoF
/lI7U383kdM2z22/VA5gntKxOcWc47R2+6kTh9I2/Ux/Tm1bJZfYFnDNCPxYjNKfem1nXmpHzZnV
KrVdKrdK25vS1hyv3T6wVKVje6qp7U05tmtn373ShEeN2vo1v09tW8C1IvBjsc59y7Z06KRms0on
AtF6pW1F5qwjUj8LV3Lu+gBic49tde4xXlpvGF7etjPqz0p9oyptL1Jap+Y1LLUB3BICPxar9Kc/
tbPX9uxg5t+arh3QogFTl6uuq7886D1c874Bt2xq3/SWbL+U2k/fj/lldnmqD7VtT3k9avql0jsP
U7YHXAsCPyDnDwKqpp0pcu2VBqXS9wQAQE7Ux9RMNJQmNkonBCVT1yvtr8j0NoFbQ+AH/qt0KMwd
EErt1g6OU/mB2e9/6fc5Ho/Z8pJS+wDmmdsnKJ0MSB2jU+/AZdupmaQo9XlTy1JqX6c5bQO3hsAP
JJQOjTmDRC6Ae7ZutF5p/7zS9ryp9b2poQFAndItc0tqv6V7ah+joncBplyCk1u3Rmm/p7YHtIDA
D1QoHSZzBpBUoFdz2pyi9DuVyktee/+BpXrtYzNXPgznX8NeCvRz2q95Tea0C7SCwA9Uqj1ULj2o
1G53qlK75/4epfYBzHPpY/Pc9qxodt+Xn2tq33KJbQK3jsAPTDD3cIkGnFJbpUGqtL6Wp2bPSusD
WKZU31GrtF6p75nTX1ql7QNLROAHzjDn8LnUYDR327peaf1L7SeA6/JalxBeoo1Iqa+yXmsfgFtH
4AcuZOqh9NYDkw/6b719ALfhvfuGKX3pe+8rcCsI/MArmXNoMXgBaB19I/D2CPzAG5hzmKWutWfg
A3DN5vR3dp1L3LUHwCkCP/DGLnXIvfYgeKn9BHBd3rvvKG2fyw6ByyPwA+/oNQ8/BksAl3Sp/qoU
6Om7gMsj8ANXLnVJz2sfuq/dPoD38d6B+r23DywRgR9o1LmHNoMy0Kb37htK2z+3fQAvEfgBhAMw
XQPQptVqVaoCoDGbUgUA7WNGDQCAdhH4AYQ4CQAAoA28rwcAAAA0jMAPAAAANIzADwAAADSMwA8A
AAA0jMAPAAAANIzADwAAADSMwA8AAAA0jMAPAAAANIzADwAAADSMwA8AAAA0jMAP/H+7dUwEAAgD
MLAD/j3hrBKYyf3PERAAgDDDDwAAYYYfAADCDD8AAIQZfgAACDP8AAAQZvgBACDM8AMAQJjhBwCA
MMMPAABhhh8AAMIMPwAAhBl+AAAIM/wAABBm+AEAIMzwAwBAmOEHAIAwww8AAGGGHwAAwgw/AACE
GX4AAAgz/AAAEHZm5r4iAADgTwvkM6JA4NC/WgAAAABJRU5ErkJggg==" transform="matrix(0.7031 0 0 0.7031 180.3587 43.3352)">
</image>
<g>
<path class="st28" d="M454.3,418.66c-3.19,48.39-1.61,60.37,5.29,75.02c10.92,23.19,18.1,54.57-3.55,107.73"/>
<path class="st29" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.97-5.57,7.76-11.17,12.86-17.2c-4.17-2.87-5.89-3.77-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-5.05-0.9-7.26-1.56-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<path class="st30" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.96-5.17,7.47-10.85,12.86-17.2c-5.29-3.38-5.69-3.47-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-6.33-1.54-6.45-1.51-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<text transform="matrix(1 0 0 1 413.4074 535.9145)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 440.4006 540.9643)" class="st4 st8 st33">in</text>
</g>
<g>
<path class="st28" d="M471.86,418.66c0,113.19,26.79,122.57,100.13,108.04c27.79-5.51,35.81,15.28,18.14,75.7"/>
<path class="st34" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c2.68,1.22,2.66,1.24,5.46,2.83c2.48-4.27,5.51-10.19,10.32-17.84c-5.02-1.94-6.98-2.63-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-5.95-1.08-9.18-0.22-15.3-1.34
c-0.15,8.86,0.02,19.85,0.02,19.85S582.27,584.53,584.86,584.98z"/>
<path class="st35" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c3.44,2.07,2.61,1.12,5.46,2.83c4.29-7.39,5.86-10.15,10.32-17.84c-4.48-1.54-7.58-3.29-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-6.33,0.12-6.85-0.9-14.67-0.75
c-0.15,8.86-0.61,19.26-0.61,19.26S580.82,584.74,584.86,584.98z"/>
<text transform="matrix(1 0 0 1 586.0758 527.6253)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 612.65 534.2132)" class="st4 st8 st33">out</text>
</g>
<g>
<path class="st28" d="M419.55,418.66c0,63.92-43.67,94.16-80.31,101.51c-49.68,9.97-36.38,42.94-26.47,83.34"/>
<path class="st36" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<path class="st37" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<text transform="matrix(1 0 0 1 262.1959 532.2694)" class="st4 st31 st32">l</text>
<text transform="matrix(1 0 0 1 275.94 537.6141)" class="st4 st8 st33">in</text>
</g>
<path class="st38" d="M272.32,348.66V155.69c0-38.66,31.34-70,70-70h192.97c38.66,0,70,31.34,70,70v192.97c0,38.66-31.34,70-70,70
H342.32C303.66,418.66,272.32,387.32,272.32,348.66z"/>
<radialGradient id="SVGID_1_" cx="523.9471" cy="314.7148" r="197.1902" gradientTransform="matrix(0.7797 0 0 0.7797 30.2671 6.7787)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st39" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st40" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st38" d="M326.43,342.55V161.8c0-12.15,9.85-22,22-22h180.75c12.15,0,22,9.85,22,22v180.75c0,12.15-9.85,22-22,22
H348.43C336.28,364.55,326.43,354.7,326.43,342.55z"/>
<circle class="st41" cx="438.81" cy="191.51" r="27.05"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB

+527
View File
@@ -0,0 +1,527 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-family:'ArialMT';}
.st17{font-size:48.0099px;}
.st18{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st19{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st20{fill:#CACACF;}
.st21{font-size:57.6118px;}
.st22{font-size:28.8059px;}
.st23{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st24{fill:url(#SVGID_1_);}
.st25{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st26{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="454.72" y="998.7" class="st0" width="101.93" height="144"/>
<rect x="158" y="998.45" class="st1" width="200.4" height="144.5"/>
<rect x="157" y="998.7" class="st2" width="610" height="144"/>
<line class="st3" x1="157" y1="1070.7" x2="767" y2="1070.7"/>
<line class="st3" x1="358.4" y1="998.45" x2="358.4" y2="1143.2"/>
<line class="st3" x1="456.29" y1="998.7" x2="456.29" y2="1142.7"/>
<line class="st3" x1="556.65" y1="998.7" x2="556.65" y2="1142.7"/>
<line class="st3" x1="661.01" y1="998.7" x2="661.01" y2="1142.7"/>
</g>
<text transform="matrix(1 0 0 1 492.9477 1122.599)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 388.1117 1054.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 407.1932 1060.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 582.3569 1055.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 612.644 1060.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 681.5264 1055.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 707.4883 1062.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 468.211 1054.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 498.9029 1054.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 386.3327 1121.5667)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 692.6434 1122.389)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 585.7955 1121.6689)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 201.4691 1051.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 168.5341 1118.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st1" d="M346.37,878.55V848.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H383.2C362.86,915.37,346.37,898.89,346.37,878.55z"/>
<circle class="st1" cx="558.57" cy="861.83" r="13.2"/>
<circle class="st1" cx="321.41" cy="861.83" r="13.92"/>
<rect x="326.21" y="857.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 363.092 876.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 363.092 876.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 302.0754 927.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 537.9753 927.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
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" transform="matrix(0.811 0 0 0.811 138.137 25.3352)">
</image>
<g>
<path class="st18" d="M450.67,458.27c0,169.35,36,238.46,70.7,266.48c40.91,33.05,121.58,51.36,46.08,122.02"/>
<path class="st19" d="M572.19,826.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S570.08,824.68,572.19,826.47z"/>
<path class="st20" d="M572.19,826.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S570.08,824.68,572.19,826.47z"/>
<text transform="matrix(1 0 0 1 481.6926 775.9326)" class="st4 st16 st21">V</text>
<text transform="matrix(1 0 0 1 512.8269 781.7549)" class="st4 st8 st22">in</text>
</g>
<g>
<path class="st18" d="M467.47,458.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,29.95,132.44-21.61,151.89"/>
<path class="st19" d="M579.29,844.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.7,2.83,0.67,2.82,1.16,5.97c4.78-0.8,11.14-2.21,19.91-3.35c-1.57-5.07-2.24-7.01-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-2.8-5.24-5.42-7.18-8.3-12.57
c-6.86,5.48-15.15,12.54-15.15,12.54S578.05,842.29,579.29,844.56z"/>
<path class="st20" d="M579.29,844.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.51,3.95,0.74,2.71,1.16,5.97c8.26-1.38,11.32-1.92,19.91-3.35c-1.55-4.41-2.11-7.89-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-3.95-4.77-3.48-5.82-8.36-11.72
c-6.86,5.48-15.09,11.69-15.09,11.69S577.01,841.31,579.29,844.56z"/>
<text transform="matrix(1 0 0 1 645.7878 741.4971)" class="st4 st16 st21">V</text>
<text transform="matrix(1 0 0 1 676.4353 749.0928)" class="st4 st8 st22">out</text>
</g>
<g>
<path class="st18" d="M414.04,458.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-38.2,155.09-11.45,165.35"/>
<path class="st19" d="M286.56,857.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S285.17,860.56,286.56,857.82z"/>
<path class="st20" d="M286.56,857.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S285.17,860.56,286.56,857.82z"/>
<text transform="matrix(1 0 0 1 202.7805 758.498)" class="st4 st16 st21">l</text>
<text transform="matrix(1 0 0 1 218.6316 764.6533)" class="st4 st8 st22">in</text>
</g>
<path class="st23" d="M244.22,388.27V144.19c0-38.66,31.34-70,70-70H558.3c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H314.22C275.56,458.27,244.22,426.93,244.22,388.27z"/>
<radialGradient id="SVGID_1_" cx="506.5269" cy="321.3081" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st24" d="M282.63,379.86V152.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H322.63C300.54,419.86,282.63,401.95,282.63,379.86z"/>
<path class="st25" d="M282.63,379.86V152.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H322.63C300.54,419.86,282.63,401.95,282.63,379.86z"/>
<path class="st23" d="M306.63,373.86V158.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H328.63C316.48,395.86,306.63,386.01,306.63,373.86z"/>
<circle class="st26" cx="436.26" cy="196.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

+553
View File
@@ -0,0 +1,553 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{fill:#FAFAFA;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st17{fill:#43DABF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st18{fill:#FFFFFF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st19{fill:#A6A6A6;stroke:#A6A6A6;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st20{fill:#505050;stroke:#505050;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st21{fill:#FFFFFF;stroke:#525252;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st22{fill:#FF8EA1;stroke:#FF8FA2;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st23{fill:#FFFFFF;stroke:#FF8FA2;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st24{opacity:0.349;fill:#75F1FF;}
.st25{fill:#FFFFFF;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st26{font-size:40px;}
.st27{font-size:34.8402px;}
.st28{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st29{fill:none;stroke:#707070;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st30{fill:#5E5E5E;}
.st31{font-family:'ArialMT';}
.st32{font-size:49.9451px;}
.st33{font-size:24.9725px;}
.st34{fill:none;stroke:#515152;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st35{fill:#0054A8;}
.st36{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st37{fill:#F2F2F2;}
.st38{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st39{fill:url(#SVGID_1_);}
.st40{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st41{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="444.29" y="969.2" class="st0" width="100.36" height="145.5"/>
<rect x="146" y="970.45" class="st1" width="200.4" height="144.5"/>
<rect x="145" y="970.7" class="st2" width="610" height="144"/>
<line class="st3" x1="145" y1="1042.7" x2="755" y2="1042.7"/>
<line class="st3" x1="346.4" y1="970.45" x2="346.4" y2="1115.2"/>
<line class="st3" x1="444.29" y1="970.7" x2="444.29" y2="1114.7"/>
<line class="st3" x1="544.65" y1="970.7" x2="544.65" y2="1114.7"/>
<line class="st3" x1="649.01" y1="970.7" x2="649.01" y2="1114.7"/>
</g>
<text transform="matrix(1 0 0 1 481.042 1091.1556)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 376.1117 1026.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 395.1932 1032.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 570.3569 1027.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 600.644 1032.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 669.5264 1027.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 695.4883 1034.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 456.211 1026.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 486.9029 1026.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 366.7726 1092.7039)" class="st11 st8 st12 st13">CE</text>
<text transform="matrix(1 0 0 1 671.6493 1091.5194)" class="st11 st8 st12 st13">WE</text>
<text transform="matrix(1 0 0 1 570.608 1093.1669)" class="st11 st8 st12 st13">RE</text>
<text transform="matrix(1 0 0 1 189.4691 1023.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 156.5342 1090.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st16" d="M256.21,888.67V759.86h401.9v129.78c0,11.17-9.05,20.22-20.22,20.22H277.39
C265.69,909.86,256.21,900.37,256.21,888.67z"/>
<g>
<rect x="306.71" y="609.95" class="st17" width="11.22" height="263.29"/>
<circle class="st18" cx="312.32" cy="674.74" r="40"/>
</g>
<g>
<path class="st19" d="M437.97,868.95V670.02c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v198.93c0,3.31-2.69,6-6,6h-16
C440.66,874.95,437.97,872.26,437.97,868.95z"/>
<rect x="446.36" y="611.66" class="st20" width="11.22" height="263.29"/>
<circle class="st21" cx="453.16" cy="673.82" r="40"/>
</g>
<g>
<path class="st19" d="M573.78,867.24V690.08c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v177.16c0,3.31-2.69,6-6,6h-16
C576.47,873.24,573.78,870.55,573.78,867.24z"/>
<rect x="582.17" y="609.95" class="st22" width="11.22" height="263.29"/>
<circle class="st23" cx="590.29" cy="674.16" r="40"/>
</g>
<path class="st24" d="M257.36,888.67v-92.88h399.75v93.83c0,10.73-8.7,19.42-19.42,19.42H277.72
C266.48,909.04,257.36,899.92,257.36,888.67z"/>
<path class="st25" d="M249.16,761.86v-17c0-1.66,1.34-3,3-3h410c1.66,0,3,1.34,3,3v17c0,1.66-1.34,3-3,3h-410
C250.5,764.86,249.16,763.51,249.16,761.86z"/>
<text transform="matrix(1 0 0 1 286.5413 689.6758)" class="st11 st8 st26 st7">CE</text>
<text transform="matrix(1 0 0 1 563.9761 687.1454)" class="st11 st8 st27 st13">WE</text>
<text transform="matrix(1 0 0 1 427.375 688.757)" class="st11 st8 st26 st7">RE</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvwAAAJoCAYAAAAarzXaAAAACXBIWXMAAA+vAAAPrwHWpCJtAAAg
AElEQVR4Xuzd6XLjOLKG4aQWu5buOHHO/V/fxCw9NdVdi20t5PlRk3QqnVhIybYEvk9EhSUCBGmV
CXyEKKobhmEQAAAAAE1alSoAAAAAuF0EfgAAAKBhBH4AAACgYQR+AAAAoGEEfgAAAKBhBH4AAACg
YQR+AAAAoGEEfgAAAKBhBH4AAACgYQR+AAAAoGEEfgAAAKBhBH4AAACgYQR+AAAAoGEEfgAAAKBh
BH4AAACgYQR+AAAAoGEEfgAAAKBhBH4AAACgYQR+AAAAoGEEfgAAAKBhBH4AAACgYQR+AAAAoGEE
fgAAAKBhBH4AAACgYQR+AAAAoGEEfgAAAKBhBH4AAACgYQR+AAAAoGEEfgAAAKBhBH4AAACgYQR+
AAAAoGEEfgAAAKBhBH4AAACgYQR+AAAAoGEEfgAAAKBhBH4AAACgYQR+AAAAoGGbUgUAt2kYhlIV
AJis67pSFQBXhsAP3CgCPYD3UOp7OCEArg+BH7ghpYEWAN6b76f8CcAwDJwUAG+MwA+8k9Sgp4Ol
lr1WyC8NuK+1XQDv662Pfd+npZYBeD3dcOkjG0CVcw89BkoA14i+Dbg+BH7gjcw51Bj4ALRmal9I
Pwicj8APvJIph9Y1DmhT9h/A7bj1/uYa9x+4dlzDD1zIlAFLhEELAFR0fX9K6UPBAF5ihh+YwX7g
tuYQeqsBqWZfAOA1vFY/V9uvvdb2gRYQ+IEJphwu5ww+/g4+0XannHAAwHs6pz/0Sn3eJbcFtILA
D1QoHSaXGGBK21Bab+42db2+70+e16jdRwDvp3RMd12XPZbPnUyY2kfV1ksp7ee57QMtIPADBTWH
yJwBJTWLbwO5LU9tw+5fzb6m1PwO57QP4G3UHMvW1OO61H7Nu5N2uT/BKLUfqfkd5rQLtILADxhT
Doe5g0c00NUur5mVU7W/y9zfA8B1Kh37pUBeEvUZqXaiSYvSNs/tk0rtq3O3A9wSAj/wXzWHwpwB
ohTSU4F+aoCfOrCeM5sG4DoNwyCr1apYJ/c81yf4PktkWt8kku/nUsvmKO2XutT2gGtG4MfilQ6B
OYNBqc3aOlZuP6a2BaBdpf5gTp9mlSYUzpmsqDG1vkh5H0TmtQvcCgI/Fqv0pz+l8y+1VVMnNUim
9qPUnndO/SmvBYD3VTpep/YFpfa80iU/tScENdutqeOVfv85bQLXjsCPxSn9yU/p7EttqZp6drvD
MBQHxXMDec0+Abg+504G1PQXNXWmOOcdypp9qanjXWK7wK0g8GNRSn/uNR18qQ0vVX+1WoVll2q/
pOZ3zZm7XQCXd+7xbM09tmv2wU5mdN3Lu/V0XTfeMtiqaduqqV/ze9a0A9wCAj+aV/oTr+nQbRv6
2Ab23DZSb2/7wS4qj5Z7pXcCpop+PwBt8oG7ZBjiDwVH7fj+o6Z9kenvXJTaLZVbc7cBXDsCP5pV
86d9ztvMXmlwy4X7lNo2ptA2bNuXaBdAG0rhNhXoI7X9TGqb0fql/SsprT9nP4FrtylVAG5NzSAk
cn7H7Qef3CBol00ZtGp/lznObfvc9QG8jpq+JafUR5WO/WH49Q7llP3QdaLHtUr7fQl234Bbwgw/
mlL6c67pqO2gEQV1r3YGa4o57fh15g7WtWpeSwBvT6+BP+cYLa0b9SNRYNfltn5t26V6vjy3T5FS
+7V9Zakd4BoQ+NGMqZ29VzoUSuWRXAi/RHtzpGbOoue51+8S+wLg8vy7jiqazIiO8Tmz6yL59ab0
xd5rrlsqt3Kvx5R2gPdA4MfNq5l5j+T+9M85LPxAmmqrVM/PipXU1C3N+udOULzS6wvgfdT0BZHo
mK5pqzQx4E9ASm3W9i2pejW/h69Tu02R+WMO8J4I/LhZ58y2zAn7ucGqdp3UzFfN8tSAde4hXNp3
/zj3uwC4Dr4PrDleS/2msiFeJN8X1bZpnbtOTeBP1aspE6nrN4FrQuDHzZrT4Zb+3G157YA5NYhf
Yhsi5e1YNXUAICU66e+6LlxuTwiiPi5VFtXxpp5clPrYUkCfM56U2gTeA4EfN2VuBxuF7NRMtQ5i
wzBkg3JqcIvWmXKY2cHUL0vVfQ/vuW0AsWGI75MfyQXrOVJ9VimI+34z1Y+W2imF+VKfavv+aJ2c
aDwQqV8feG0EftyU2kHAmxPC+74/GTjtCUBuQO37PjuQ5mao7LLS/lnRAFVqqxQKpmwfwNspHZu5
We1SGM21XdPXRqKgnWurtJ1SuTX1JMGX55ZZqdettB7wVgj8uAm1nbKV+tPOzQKVQrjIy0CdO4R8
mX3uTyb849J+lcxZB8BtifpBvS3nVNFkQXTykJs5r1FaP7f9nFLd3HZrt1naBsEf14rAj6s3J+yL
TA/8PnR3XfrWdTr7H4V+fayBPlUnNSjXnEhcwmu3D+D11c5GTwm7qX5P65b631K5yoVsfV7blsi8
urmJla57/oyC7ZdL745qPW/K/gGXRuDHVZvTaZaCfhTwo7o6sOkAqP9Wq5V0Xffiy21sHRGR4/E4
Lo/K7WASqT00U/VKr1NJ7fYBXAc/WWD7ANvfaGDVvswf6zqZEfVX2velTga0bkpNWWr/S0p1cu1H
5VEdHQNqzBm/gNdC4MdVmhtiU+tFHbhd5tfTQdCHeU+XH4/HF4OjbUsHVvvPKv1er6G0TboG4DbZ
sD4Mv95N1AkK7a+srutkvV6PfdXxeBz7B9tP1AR6KxWwS0E41z+Wtu37bl9mTQn+ulzbj+pH5o5l
wKUR+HF1SoNBJBXGa5ROEmxA7/tejsfjiwFT661Wq5N/utyaOmheq9rXF8BllfqOUp8mctqX+QkL
P0HhRQG8NgTnwnxJbZul8tI+R6HelkdK+zC1PeDSCPy4KlNmQ3J/uqmO3C4v/el3XTfOjB2Px5NL
eDTcd10nm80mOTACwC2w/dx+vx/vNibycjLDX85o6ex6LpzbvtfXK83Ol9ZPLcuV155IlCZrctud
MrYBr4HAj6swpTOsmb0SSc/SiJx+6NYPUBryD4fDyTqr1UrW67Ws1+vqazgB4BZpH3g4HE7eARiG
4cUkhw/g2qfaGxfYsFwTcnN1akL+1PVtWXTSYZ/PDf65uFXzmgDnIPDjKkR/hlM6zWiZDfRRnb7v
Zb1ej2XH43EM+TooacjX2XytOwz1H9wCgFuiH8q1kyB66U/f97Lb7cZy7Sdtf63vAug7Ab7cKgXd
OevZspqTg9pyOwZEy1PPFYEf74nAj3czZVZfZNrMfrTcG4bh5G1sndXZbDZj0Fd0xgCWTvtUnfXf
7/fj55nsdf/63K6n/euUAF4K7qUyXV7qv1OB3b9zoT9zE1S2vLTdqWMgcA4CP95NaZbESs3q+3Wi
ev7ae62j16lq2WazGWfzfdtT9hUAWpCbTNG+dL/fy9PT00nw1z5U17GX9vhvMK8J8qlAXlrmy2rq
6OM5ff7U/VJztgVMReDHu8jNkHilmf0omKfK7B0pRETW6/U4ox+dPOT2iU4ZwNLYsG/7Wb3UZ7/f
y+FwOLkUUuvp89yHfqPlPozn6uaW165ry6LxJdofO05N2Y4IgR9vg8CPNzcl7Iuc1rdBOxXqfcer
s0p66U7X/Zrpv7u7Gx+n2rPt0gkDWJqoX/Sz9L7f3e12cjgcZL/fi4ic3OhA+9JSf5oL8lMCdSn4
l9adE/h9nei5V1ofOBeBH29qSthP/WmW/mRtp6wfxNUZpc1mI9vtNvuBWx28dL84AQCwJHMnP+x6
OuOv4V9Exssm/Qx/qS8theeaAH+JdWrLrNK+W4R+vCYCP95M6k+tNHiklnfd81vFflZf5PQafXvp
jsjzXSj8OilR+wCwZFH41wkT29c+PT2Nl/qI/Ar+quvqZuxLobymP0/VKfXpvm5qPNDHpfFiyphX
2jegFoEfr25u0PeDhq6jHa5t1w48eu9okV8Diw36AIC3dzwe5enpSR4fH0Xk+cO9KhWM/QmBv5zI
1rU//fLSMrs8F7Jr2vO3hI7qpJaJEPzxOgj8eHVTOi/fQUadpn1ur8kfhmG8fKfrnm+vSdgHgPen
n6V6fHyUw+EgwzCMtz/Wfnu9Xp/08/6xvQOQLrPs89Tj6LldNjXw55bn6uTWmTJuAjUI/Hg1c2f2
bb3UzL7+0zDPrD4AXB8b1pVe5rPb7cbbedqgHwV17e994Pf1Usuix1PWyS1Lldl9L9WJ1P6eQA0C
P17NlM7K1s2t58v6vh+v1V+v13J3d5e8jz4dJQC8vVTg1dn+3W4XBnofzO04UBva9XkpaOeCfmrs
KIV/PwbZsuixN3XSDMgh8ONVXDLsR4bh9J762+1WttttWE/RSQLA+7OBfRgG2e1242U+Xfd8WY/I
8+e3UtftR8E/dxIwJejbZVNCf2obhH68JwI/Lu6SYT/qKDXo933/4vIdPzMEAHh7pb7Ylx8OB3l8
fJSnpycZhuHFvftt3ShQ2/Bvl3u5AB+1Yet23ctLjmy5fW73ORrHUuulTBlXgQiBHxdX6tSiOrV/
hvqh3GEYxns6R28BR50yAOBt2D7Zz2z7GX5dfjweZb/fy8PDw7jcf1uv7ddTwb+mXvRc1/f7W7u+
fZ464Yna91JjV83YCqQ83wwXeAU1YT9ltVqNb+fq3R2Ox6OsVivZbrcv7uWs9WynTYcIAG/PB27b
H9uwb+vpBM5qtZKHhwd5enqS9Xot6/X65ARAH0cnEv5xxI8L0QlIqryGr+9/d7uNKW2Xfi8ghxl+
XEzt7IPtrO39ijWoa2jXen3fjzP73IEHANrX9708PDzIw8ODiMh4+85hGE6+rVffAbD8yUbN49R4
5U9S/PJcPX8Soc8veZ/+2pMFgMCPi4j+jKKOKPXnZmdvRJ4/qKW32+y6bryEJ9UBAwDaoGPAfr+X
Hz9+yOFwGCd7dFLIBmd76U8UumuX1ZSn6kTPa8ui8prAn6sHWFzSg7PN7Xy67tc1m77jFpHxsb1H
82azeTFjAgBoj07+3N3dyTAM8vPnz3E80HHAjh8izycJSk8A7HOR58to7MlBbhyzj6N1LT+bH7Hv
aNt1Um2WzF0Py0Lgx1mmBG9b17+daTs8kV8d+eFwGIO+vp2r6NwAYBk+fPggq9VKfv78KbvdTlar
1cklPvpTv49FpQK9PxHQZZYN7lPGORWFcL/MBv8o9KeCfPQ7EfpRQuDHbFM6wSjc6zX5+lhFl/Ho
esPw/O26AID22LCtYfju7m4s3+12J2U6XtjbeEahOQr5Wh6tkztJyJ0I1ARvv91UewR5XArX8GOW
KR2dr2uf2zvxiDyH/Whmn44PAJZrGH7N4v/48WP8MO92ux3HFL2bjx0nSo9TP1P1aupGZXaZDfca
9kXiE5LosRWNxYyTiDDDj8lynVKunqdhXztoDft6202+TAsAlmsYXr6ru16v5bfffpPj8Si73U76
vh8/A6aTR6kZfpWaTbcz7srP6uuy1ORWqU4kNVbWtJf6XQCPayPwbrRz1rC/3+9ltVrJ3d3di7dm
badH5wYA7bKTPH5iSH/+z//8j3z8+HGcKBI5vTTUjhV+zEiV2WW5dXLLakTjmvKXrNa0X3tigWXj
kh5Mpp2c7bB8udIO2nbgto4P+/f399J13ThrAwBA5HA4yPfv3+Xp6Um6rhvvz5+6tMfP4PsxzC73
60X1c+uU6kRsPTtG2nG0ZtxVpe1hWUhUmMQH95Io6Ntl+/1e9vu9rNdr2W6343qEfQBAyjAMstls
5PPnz+OtO/W2nfqOQM2sfOqxpcuHYTh5FyEltY1of1LsmGnfDS/Vt2q3hWUgVaGa7zxKod/PStjl
Is+33hSRkw/o1nSoAIBlsmPKdruV3377TbbbrRwOh5NQbUO/Dc5+eWodfW5/2jolUbv6WOWCug39
0XOvNCZj2fjQLqqUOqiIDfu+s+z7fryfsr8bT237AIDl0nFFQ/8wDLLb7U6+kd2GbHs5jA3Rdpzy
45Udj3JBu3aMzG1Ll/nHvp4vt6K6gAgz/KgwpfPIdV6q73vZ7/ci8quj1nvxi8TXSAIAoLquO7nM
ZRh+3af/999/l81mI33fy/F4fDEGRe8e2xMC+1Mf6z+Vm5GvUQrk0Riamtmv2W5NHSwDgR8Xk5v9
0H/D8OtLUvq+l/v7+5Nr9emYAAA1osmh7XYrv//+u3RdJ8fjcbym39bT6/tF0mHfhnwf+nOPU6aO
bTUnGbau5+tP3T7aRODHJKmOx89K6HM7m2HD/na7Hd92tXUBAMjRme/o8YcPH+TTp0/jHXuGYXhx
W8++77PX89vtRHWislR9LxorU3VtHfs7+rrRuoyn8Aj8yLIdSU0HEtW3HZrOuNivST/3LVIAwHKk
LnHRd4x///132W63JwHfh2sfnKOwbuvUrGOX50J5bizVMj9++nc0po6RU+ujPdyHH0n+TyMVzG1n
ZDs6XabXU+73e+m6Tj58+FB18gAAwFQ6Dn39+lUeHh5efE5Mv5lXn/swrScOdpkv9+tonWiZXz+3
zD62+6g/o3HWr2/Vnmigfczw42J8JzQMzx+SOhwO0nWd3N/f55oAAOAsGmw/ffo03q5T6biUm4HX
scyOablyWyfV7pz2vdRyX2dOGdrHbTlRJTW7Hz32dfRuCdvt9mRmBQCA16DvJh8OB/nrr7/keDye
3CRCJ6VKUvWGYXjxBZG2rh0zh+H0Vpyp5dG6Xm6sBXKY4UdoSueR65z6vpfD4SCbzUa22630fc/b
igCAV2Vn+T9//hx+UNc+Ts26++fRT5VqM6qTY9crjZel9vz6pfpoF4EfL/gOodThRIZhGK/dF/l1
uzQAAN5K3/eyWq3k8+fPcnd39+JSHh/QRZ5n6Uvh3q8X/bxEuPb7m9qPKabWRxsI/DhRE/ZzHZn9
sNHxeJS+7+Xu7m7sRP1boAAAXJodbzabjfz222+yWq2Sd+zRdUqBumadqDw1ZtaE75qTh1z5nEk7
tIf0haTSdfu5ZTq7v16vT+6QAADAW9Hx6ePHj/L582cRkar78JeCfalupNRWTbCvcal20BYCP0ZT
Oohc52SXb7fb8XHth6QAADiH/zBs13Xy+fPnk0t2SuNXKchHbdSE/Vx5aRkwF4EfIvKyYynN7nfd
8/2G9W1T7fyOx6McDofxFpy2Ld5aBAC8BX9nnNVqJf/7v/87LtPPmOnYdjwex7vK2fEuOgnQ9u2y
3DpRveiEITcxpuNudFtRkfiERNkxW8s4oVgWAj9ms52WdiZ63X7qi0kAAHhNucC83W7l8+fPst/v
ZbVavQj9fgJL2bDu//nySC6M22Wpk4TUOl5NHWtqfdwuAj9m8R2hOhwOMgyDbDabMPDTuQAA3oqd
Me+67uQDvFGgF5Hwg72+TiqI+9CfemylTgaidYfh+R2L2vYAEQI/AqXLeexjW1c7yfV6Lev1mtl9
AMCbK41hm81Gfv/9d9nv9yIi4wd49XEU7GtCdHQykHpuf6aWeTX7oFJ1GZeXi8CPZICP5MK+vjWq
s/uRUvsAAFySnxHvuk5+++032W63Ly7pSQX1VDj3wbpUL/UzUhova05EonLeeV8mAv/C1YT9mpkC
vXZ/s9lwr30AwLvyYdheYqqX9vz+++8vLt+xJwf2X80yv+1ouf1Zuzyl5oQAUCQzZOU6DO3MdHZf
O1EAAN6LBvdSIP706ZPc39+f3JknFdZFXs7U504EfB3/LkPUvi+vZeuWLmfCchH4kVTbSWjHtVqt
XnwQKlcfAIBLq7lkZRh+3Vzi8+fPyZAe8eHer+sf1451qXq5bZROaKao3U/cLgL/gs3pOHTWpOu6
cVZ/v9+Ps/vD8PxFJ6U2AAB4bblZ748fP8rd3d3J59C0PBXu/fgWldvn+s2+fv1hGMJ76vt6dv+j
8O/LU2Nsacwn9LeNwI9JbEdm72G8Xq9Prt0n0AMArpWOV9vtVn777bfx+2N8ME+F/VxIrwnOUZ3U
eqWgHkntn1XbFtpA4EeSnzXwHYaf3ffrAABw7T5+/CibzebFB3hFyqG/JljbulNPCGrWqd2HCGP2
chD4UTzgU52Hvk3pZ/cBALhmeu99vbvcp0+fpO/75KUupeBvf/p1/DIvtzyqk2ujFP6nnAygLaS0
hSod9KUZBRF5cWeeUn0AAK6BBnu93l2/fTea5Y/Y8O3DeC7k2/q1yyPnjLd+3dRnBNAWAv/CTfng
ju8UDofDyew+HQUA4NoNw/PNJXRc22w28vHjx5MP7mpd/RkF+9Jz/7jWJUN/bT01tT5uA4EfWdGB
PwzD+Hboer0elxH8AQDXLjVGffr0aTwR8P90vdSYmFIK7r59X6/0WTqvdIkulovAv0C52YJU52Q7
QRGR/X4v2+12DPn2Vpx0OACAa+W/L0YnrD59+iT/93//N05o6Wx/13XjMp3wik4K9F+qXNe3dew+
iDx/tsDWtWpCv62j43HUjuXH7dI2cHsI/KhiD37tkFL3+vX1AQC4JtH41XXdOJGlt+nUcO75IK/L
pkqtU2rLn0C8htdqF++DwL8w9gCeOxOvH9ZdrVaz2wAA4Jp0XSd3d3fjF3H5d7ZF4nfC7bJcEI/q
2J++XmlZVD4Mz59LqGkXy0HgR8ifGNjOJLoVp+1kAAC4FXbs2mw28uHDh/G201Yq+EcnAX69VIgv
hfA54d+rHZtr6+E2EfghIi87shT/Yd0UOg4AwDVLzYB/+PBB1uv1yTX8OtlVE/R1eVS3tNy2ldq/
mnK/LDXrj+Ug8C+IPdD9J/8jeo3jMDzfwmwYhvBSHgI+AOBW5MLx3d2d3N/fvwj4Ud1UkE/Vtcty
dUvLckr1/b5bjOXtIvCjyHYO+kEmvlkXAHCrdCLL0udd18nHjx/Hsc/eUScV1L3UiUDtuqllpfVL
5ZE56+D2kNqQ5TsqP0MR1QcA4FbYO8+p+/v78bGOa5e6K52vP3X9ktduH7eJwL8Q0axELrzby3nW
6/XJ+pvNZqzj8XYgAODa2Xep/TvWq9VKNpuN3N/fy+FwOLmGX0UTYNFsfil863N/X34ti8ZmX16q
oz+jdzSikwEd/3U9ThjaQOBfEPt2ZQ3bUehPLuUBALRutVrJdrs9WVYTfFMhvEZ0ohCdWABzkN4g
InUnAcfjkXvvAwCat1qt5MOHDyISB3Af7FMhP6pry6L60TK/rVz9Wuesi9tD4F+wUnCPOrj1ep18
GxAAgBZ03a8v4RJ5vsY/Fdy92jr+8ZT1SvUi0TqlHIB2bEoV0BZ/cEedThToow81AQDQqu12K6vV
6sW1+xE7btrr33PXyds6tXIfHK4ps9u1z9E+ZvgXYM5MgKUdlv0gDwAALVutVuMsv4rGUzszP+dd
AP94Kr9uro1UWWn2f85+4boQ+BckCuu1B/HxeBwv5xFhVgAA0DYb+KPZ+5LUiUAU9KP1bFlNmK8p
x3IR+PFC1MmIEPIBAMvQdd14p55hGIqXtV46aOdCf6p+7nnJ1Pq4PQT+xpUOYr1cZxheXrIzDL9u
w3k8HmUYfn1g15YBANCqvu/HGX4dC0VOZ9v9jL1f7kN7jp9gS11Gm5rt15MUX8/zJxG6ndr9xG0i
8C/EubPz564PAMAtWa1Wsl6vxxBdc1lsKoz7OrkZ+egkosaUkwtrzjq4PQT+Bas9yLWe7ew4AQAA
tG69Xo/fNt91XfaOPaUxNRX0SzPxpZOHt/KW28LlEfgXrmZ2ou97Aj4AYDF0DNRZ/r7vw5l3XRaF
YVsWrefr5sp1Wc1JABAh8DdsaoeQm2XgG3YBAEuh42HXdWPg1+W1oTwlFe5TJxN2WU5u27n1c2WM
++0g8Deq1DlE5bm7D3DQAwCWwo55m81mHAen3pbTPq5ZJ1JqZ0q79kQmV472EPiR5Du2KR0dAAC3
Sse7rutku91m72JTmj3PrXfOeBqtW9qXCBN6y0DgX7iaA50ZfgDAkthwrLek9gF9TpCvWZ66G9A5
JweqtB1fJ1cPt4XAv3C5zmsYfn3ZiL9+n4MfANAye0ee1Wp18k53dFmMfqjXi4J6Krzrci2zj+3l
RMo+9/sXtRGV++cltfVwfQj8C1cK71HHBgBA6zRkR2Fb1QZgH6pL65XKa+sAisCPsCMj4AMAlsxe
x69fvpUL2bmZdVsnqq9yY699B+BSYd/P/qNdBP4FK3UYqbcuAQBYCp3h92NmaQxVpXqlk4ApcicR
fhwn7C8LgR8iUn+wn9MRAQBwa6LAHz3OhfWaIB/VsW1HatqtcYk2cN0I/AtQeouwtIyOAACwJH72
2364NRX8c8tqylKmbkPLSycLIvEHf0v1cJsI/AtU0xn5nxzsAIAlsh/a1Z/nzKzXrlcT2K1SvSnl
pbq4PQR+AAAAw09yvcak15RQXZp8m9KWeo3fCdeLwN+gqQd+9DalLhfhw7sAgOUahkGOx+P4OCqv
HXftpUEi5fE3tZ6vY9950Oe6TjRup7abwuz/7duUKgAAAOBUKkiX6kydOEvdZafGnHXQJmb4AQAA
JvKz3n7W3tYpzaj7+r4s9S7AW822c+Jw+wj8C/NWnQMAAEs0NxznQn9Ub2qdmvVqXbItvA0u6Vk4
f29hAAAQs9fI28f2Tj66LFXfG4aX19nbun7d2hOKYRhktVqd7AOWixn+BePgBwDgbdlLdGpm4s+Z
lKtd15+wiJTXLZXjuhD4G+MPQHsAc3ACAJB3ibEyd319qf3oHYM5/CVC57Z37vp4XwT+BUqdFJQ6
IQAAlqo0RuZm7UVOZ9FLbVnRpULAVAT+hqU6htTbdlH9qW/xAQBwy/y4p9fQr1bpyOTH0dSlOvrP
h//XGlt1W/pYJP58gT5/rf3A+yPwAwAABGwArrlEJxf0VWmW/rWD92u2jetF4F84DnwAAOr4MXPq
GJo7OSg9T9V57RMEtIHAjxCdBwBgqUpjYCp4p+qV2lO19VPlpXcPIqVtoQ0E/oZMecvQq5lJAABg
CXQMnTqWXsK5Y28uC2jZe/xeeF8EfowucRswAABaVnPpjRcF79pZej/rn3sXoK/53loAACAASURB
VGZfrNp3FBQZ4XYR+AEAAM4UTZqVAnIuaOdOCmoDuirtB9pH4IeI0BkAADDHa787ngv+vh6QQuBv
xJQDfUrH1Pf9yfMp6wIAcGtSl7n0fS+r1Wq8L78fH98imNttROPxMAwvlue+GyBi65XWKZXjehD4
AQAALqz2BEAkDs6pDw6/9jsKqc8Q4LYR+Bdiyhk7AABLVRumbb0pY2xqPV8WPY9m8K3UrD9A4F8o
OgAAAKaZM2uv66TWq2mv9iTES12ehOUh8AMAAFzIlNn+S3iLbeD2EfgXiM4BAIDL8LPoc2fjRcrj
c9T2OduLlPYBt4nAvwAcvAAATDMlSM8dZ3MfwE1dBjR3W1g2Aj8AAMCFpcJ87lr+Upgv3WKztD6W
i8C/ADWzFHQSAAC8pHfG6bruxb33RdJ3xokCfOkDvFpH5DTcT5npj7ZppS4Liu4QRDZoB4F/wfx1
hwAAYJrXGkOntDulLpaJwI8TdBoAAMSu8R3zqdubWh9tIPBjRCcAAEBezeU4NWovyZmi5oQEy0Tg
BwAASLjGEJ27u88c55xk4DYQ+HHRTgMAgKVIBWUdV+34mvrg7ZSwPaXuVK/ZNt4fgR8hTgIAAKij
M+42NJfCfq2a8fic9rEMBH6ISF2HAgAA2sLJwjIQ+CEi8QF/6WsEAQC4NdcWiEuXAdlx2z+OvriL
cX4ZCPwAAAA3JBfS7QnBtZ2s4P0Q+AEAAC7stcJ26ptygRwCPwAAwAX44H3p0E+wx1wEfgAAgErX
8vm2S59MoG0EfgAAgAuJ7sF/Dhvsh2G4WLtYFgI/AABAxtzZ9NRdci7F71ft3XuwPAR+AACACpcI
/pcwdz+wXAR+ZF26kwIA4BZoqLb3ro/GxNR98Uv3yy/JtTtnbD5nX3D7CPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
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" transform="matrix(0.7031 0 0 0.7031 180.3587 43.3352)">
</image>
<g>
<path class="st28" d="M454.3,418.66c-3.19,48.39-1.61,60.37,5.29,75.02c10.92,23.19,18.1,54.57-3.55,107.73"/>
<path class="st29" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.97-5.57,7.76-11.17,12.86-17.2c-4.17-2.87-5.89-3.77-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-5.05-0.9-7.26-1.56-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<path class="st30" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.96-5.17,7.47-10.85,12.86-17.2c-5.29-3.38-5.69-3.47-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-6.33-1.54-6.45-1.51-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<text transform="matrix(1 0 0 1 413.4074 535.9145)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 440.4006 540.9643)" class="st4 st8 st33">in</text>
</g>
<g>
<path class="st28" d="M471.86,418.66c0,113.19,26.79,122.57,100.13,108.04c27.79-5.51,35.81,15.28,18.14,75.7"/>
<path class="st34" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c2.68,1.22,2.66,1.24,5.46,2.83c2.48-4.27,5.51-10.19,10.32-17.84c-5.02-1.94-6.98-2.63-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-5.95-1.08-9.18-0.22-15.3-1.34
c-0.15,8.86,0.02,19.85,0.02,19.85S582.27,584.53,584.86,584.98z"/>
<path class="st35" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c3.44,2.07,2.61,1.12,5.46,2.83c4.29-7.39,5.86-10.15,10.32-17.84c-4.48-1.54-7.58-3.29-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-6.33,0.12-6.85-0.9-14.67-0.75
c-0.15,8.86-0.61,19.26-0.61,19.26S580.82,584.74,584.86,584.98z"/>
<text transform="matrix(1 0 0 1 586.0758 527.6253)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 612.65 534.2132)" class="st4 st8 st33">out</text>
</g>
<g>
<path class="st28" d="M419.55,418.66c0,63.92-43.67,94.16-80.31,101.51c-49.68,9.97-36.38,42.94-26.47,83.34"/>
<path class="st36" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<path class="st37" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<text transform="matrix(1 0 0 1 262.1959 532.2694)" class="st4 st31 st32">l</text>
<text transform="matrix(1 0 0 1 275.94 537.6141)" class="st4 st8 st33">in</text>
</g>
<path class="st38" d="M272.32,348.66V155.69c0-38.66,31.34-70,70-70h192.97c38.66,0,70,31.34,70,70v192.97c0,38.66-31.34,70-70,70
H342.32C303.66,418.66,272.32,387.32,272.32,348.66z"/>
<radialGradient id="SVGID_1_" cx="523.9471" cy="314.7148" r="197.1902" gradientTransform="matrix(0.7797 0 0 0.7797 30.2671 6.7787)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st39" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st40" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st38" d="M326.43,342.55V161.8c0-12.15,9.85-22,22-22h180.75c12.15,0,22,9.85,22,22v180.75c0,12.15-9.85,22-22,22
H348.43C336.28,364.55,326.43,354.7,326.43,342.55z"/>
<circle class="st41" cx="438.81" cy="191.51" r="27.05"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB

+553
View File
@@ -0,0 +1,553 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{fill:#FAFAFA;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st17{fill:#43DABF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st18{fill:#FFFFFF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st19{fill:#A6A6A6;stroke:#A6A6A6;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st20{fill:#505050;stroke:#505050;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st21{fill:#FFFFFF;stroke:#525252;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st22{fill:#FF8EA1;stroke:#FF8FA2;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st23{fill:#FFFFFF;stroke:#FF8FA2;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st24{opacity:0.349;fill:#75F1FF;}
.st25{fill:#FFFFFF;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st26{font-size:40px;}
.st27{font-size:34.8402px;}
.st28{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st29{fill:none;stroke:#707070;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st30{fill:#5E5E5E;}
.st31{font-family:'ArialMT';}
.st32{font-size:49.9451px;}
.st33{font-size:24.9725px;}
.st34{fill:none;stroke:#515152;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st35{fill:#0054A8;}
.st36{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st37{fill:#F2F2F2;}
.st38{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st39{fill:url(#SVGID_1_);}
.st40{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st41{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="444.29" y="969.2" class="st0" width="100.36" height="145.5"/>
<rect x="146" y="970.45" class="st1" width="200.4" height="144.5"/>
<rect x="145" y="970.7" class="st2" width="610" height="144"/>
<line class="st3" x1="145" y1="1042.7" x2="755" y2="1042.7"/>
<line class="st3" x1="346.4" y1="970.45" x2="346.4" y2="1115.2"/>
<line class="st3" x1="444.29" y1="970.7" x2="444.29" y2="1114.7"/>
<line class="st3" x1="544.65" y1="970.7" x2="544.65" y2="1114.7"/>
<line class="st3" x1="649.01" y1="970.7" x2="649.01" y2="1114.7"/>
</g>
<text transform="matrix(1 0 0 1 481.042 1091.1556)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 376.1117 1026.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 395.1932 1032.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 570.3569 1027.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 600.644 1032.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 669.5264 1027.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 695.4883 1034.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 456.211 1026.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 486.9029 1026.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 366.7726 1092.7039)" class="st11 st8 st12 st13">CE</text>
<text transform="matrix(1 0 0 1 671.6493 1091.5194)" class="st11 st8 st12 st13">WE</text>
<text transform="matrix(1 0 0 1 570.608 1093.1669)" class="st11 st8 st12 st13">RE</text>
<text transform="matrix(1 0 0 1 189.4691 1023.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 156.5342 1090.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st16" d="M256.21,888.67V759.86h401.9v129.78c0,11.17-9.05,20.22-20.22,20.22H277.39
C265.69,909.86,256.21,900.37,256.21,888.67z"/>
<g>
<rect x="306.71" y="609.95" class="st17" width="11.22" height="263.29"/>
<circle class="st18" cx="312.32" cy="674.74" r="40"/>
</g>
<g>
<path class="st19" d="M437.97,868.95V670.02c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v198.93c0,3.31-2.69,6-6,6h-16
C440.66,874.95,437.97,872.26,437.97,868.95z"/>
<rect x="446.36" y="611.66" class="st20" width="11.22" height="263.29"/>
<circle class="st21" cx="453.16" cy="673.82" r="40"/>
</g>
<g>
<path class="st19" d="M573.78,867.24V690.08c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v177.16c0,3.31-2.69,6-6,6h-16
C576.47,873.24,573.78,870.55,573.78,867.24z"/>
<rect x="582.17" y="609.95" class="st22" width="11.22" height="263.29"/>
<circle class="st23" cx="590.29" cy="674.16" r="40"/>
</g>
<path class="st24" d="M257.36,888.67v-92.88h399.75v93.83c0,10.73-8.7,19.42-19.42,19.42H277.72
C266.48,909.04,257.36,899.92,257.36,888.67z"/>
<path class="st25" d="M249.16,761.86v-17c0-1.66,1.34-3,3-3h410c1.66,0,3,1.34,3,3v17c0,1.66-1.34,3-3,3h-410
C250.5,764.86,249.16,763.51,249.16,761.86z"/>
<text transform="matrix(1 0 0 1 286.5413 689.6758)" class="st11 st8 st26 st7">CE</text>
<text transform="matrix(1 0 0 1 563.9761 687.1454)" class="st11 st8 st27 st13">WE</text>
<text transform="matrix(1 0 0 1 427.375 688.757)" class="st11 st8 st26 st7">RE</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
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" transform="matrix(0.7031 0 0 0.7031 180.3587 43.3352)">
</image>
<g>
<path class="st28" d="M454.3,418.66c-3.19,48.39-1.61,60.37,5.29,75.02c10.92,23.19,18.1,54.57-3.55,107.73"/>
<path class="st29" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.97-5.57,7.76-11.17,12.86-17.2c-4.17-2.87-5.89-3.77-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-5.05-0.9-7.26-1.56-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<path class="st30" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.96-5.17,7.47-10.85,12.86-17.2c-5.29-3.38-5.69-3.47-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-6.33-1.54-6.45-1.51-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<text transform="matrix(1 0 0 1 413.4074 535.9145)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 440.4006 540.9643)" class="st4 st8 st33">in</text>
</g>
<g>
<path class="st28" d="M471.86,418.66c0,113.19,26.79,122.57,100.13,108.04c27.79-5.51,35.81,15.28,18.14,75.7"/>
<path class="st34" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c2.68,1.22,2.66,1.24,5.46,2.83c2.48-4.27,5.51-10.19,10.32-17.84c-5.02-1.94-6.98-2.63-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-5.95-1.08-9.18-0.22-15.3-1.34
c-0.15,8.86,0.02,19.85,0.02,19.85S582.27,584.53,584.86,584.98z"/>
<path class="st35" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c3.44,2.07,2.61,1.12,5.46,2.83c4.29-7.39,5.86-10.15,10.32-17.84c-4.48-1.54-7.58-3.29-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-6.33,0.12-6.85-0.9-14.67-0.75
c-0.15,8.86-0.61,19.26-0.61,19.26S580.82,584.74,584.86,584.98z"/>
<text transform="matrix(1 0 0 1 586.0758 527.6253)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 612.65 534.2132)" class="st4 st8 st33">out</text>
</g>
<g>
<path class="st28" d="M419.55,418.66c0,63.92-43.67,94.16-80.31,101.51c-49.68,9.97-36.38,42.94-26.47,83.34"/>
<path class="st36" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<path class="st37" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<text transform="matrix(1 0 0 1 262.1959 532.2694)" class="st4 st31 st32">l</text>
<text transform="matrix(1 0 0 1 275.94 537.6141)" class="st4 st8 st33">in</text>
</g>
<path class="st38" d="M272.32,348.66V155.69c0-38.66,31.34-70,70-70h192.97c38.66,0,70,31.34,70,70v192.97c0,38.66-31.34,70-70,70
H342.32C303.66,418.66,272.32,387.32,272.32,348.66z"/>
<radialGradient id="SVGID_1_" cx="523.9471" cy="314.7148" r="197.1902" gradientTransform="matrix(0.7797 0 0 0.7797 30.2671 6.7787)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st39" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st40" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st38" d="M326.43,342.55V161.8c0-12.15,9.85-22,22-22h180.75c12.15,0,22,9.85,22,22v180.75c0,12.15-9.85,22-22,22
H348.43C336.28,364.55,326.43,354.7,326.43,342.55z"/>
<circle class="st41" cx="438.81" cy="191.51" r="27.05"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB

+533
View File
@@ -0,0 +1,533 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-size:57.9653px;}
.st17{font-size:34.8429px;}
.st18{font-size:26.1322px;}
.st19{font-family:'Arial-ItalicMT';}
.st20{font-family:'ArialMT';}
.st21{font-size:48.0099px;}
.st22{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st23{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st24{fill:#CACACF;}
.st25{font-size:57.6118px;}
.st26{font-size:28.8059px;}
.st27{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st28{fill:url(#SVGID_1_);}
.st29{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st30{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="461.57" y="956.12" class="st0" width="100.36" height="144"/>
<rect x="163.29" y="955.87" class="st1" width="200.4" height="144.5"/>
<rect x="162.29" y="956.12" class="st2" width="610" height="144"/>
<line class="st3" x1="162.29" y1="1028.12" x2="772.29" y2="1028.12"/>
<line class="st3" x1="363.68" y1="955.87" x2="363.68" y2="1100.62"/>
<line class="st3" x1="461.57" y1="956.12" x2="461.57" y2="1100.12"/>
<line class="st3" x1="561.94" y1="956.12" x2="561.94" y2="1100.12"/>
<line class="st3" x1="666.3" y1="956.12" x2="666.3" y2="1100.12"/>
</g>
<text transform="matrix(1 0 0 1 498.2354 1080.0178)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 393.3994 1011.6323)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 412.4809 1018.218)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 587.6445 1012.5579)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 617.9316 1018.3801)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 686.814 1013.0443)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 712.7759 1019.5347)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 473.4987 1012.1605)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 504.1906 1012.1605)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 391.6204 1078.9855)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 697.931 1079.8079)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 591.0832 1079.0878)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 206.7568 1009.2936)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 173.8218 1076.1588)" class="st14 st8 st15 st13">Connect to</text>
<text transform="matrix(1 0 0 1 635.3448 1005.8459)" class="st4 st8 st16">*</text>
<text transform="matrix(1 0 0 1 178.0569 1134.9473)"><tspan x="0" y="0" class="st4 st8 st17">*</tspan><tspan x="13.56" y="0" class="st4 st8 st18">: </tspan><tspan x="29.52" y="0" class="st4 st19 st18">Optional connection</tspan></text>
</g>
<g id="sample">
<path class="st1" d="M347.2,864.55V834.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H384.03C363.69,901.37,347.2,884.89,347.2,864.55z"/>
<circle class="st1" cx="559.4" cy="847.83" r="13.2"/>
<circle class="st1" cx="322.24" cy="847.83" r="13.92"/>
<rect x="327.04" y="843.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 363.9231 862.3369)" class="st14 st20 st21">sample</text>
<text transform="matrix(1 0 0 1 363.9231 862.3369)" class="st14 st20 st21">sample</text>
<text transform="matrix(1 0 0 1 302.9065 913.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 538.8065 913.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
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" transform="matrix(0.811 0 0 0.811 138.9681 11.3352)">
</image>
<g>
<path class="st22" d="M451.5,444.27c0,169.35,36,238.46,70.7,266.48c40.91,33.05,121.58,51.36,46.08,122.02"/>
<path class="st23" d="M573.03,812.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S570.91,810.68,573.03,812.47z"/>
<path class="st24" d="M573.03,812.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S570.91,810.68,573.03,812.47z"/>
<text transform="matrix(1 0 0 1 482.5237 761.9326)" class="st4 st20 st25">V</text>
<text transform="matrix(1 0 0 1 513.658 767.7549)" class="st4 st8 st26">in</text>
</g>
<g>
<path class="st22" d="M468.3,444.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,29.95,132.44-21.61,151.89"/>
<path class="st23" d="M580.13,830.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.7,2.83,0.67,2.82,1.16,5.97c4.78-0.8,11.14-2.21,19.91-3.35c-1.57-5.07-2.24-7.01-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-2.8-5.24-5.42-7.18-8.3-12.57
c-6.86,5.48-15.15,12.54-15.15,12.54S578.89,828.29,580.13,830.56z"/>
<path class="st24" d="M580.13,830.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.51,3.95,0.74,2.71,1.16,5.97c8.26-1.38,11.32-1.92,19.91-3.35c-1.55-4.41-2.11-7.89-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-3.95-4.77-3.48-5.82-8.36-11.72
c-6.86,5.48-15.09,11.69-15.09,11.69S577.84,827.31,580.13,830.56z"/>
<text transform="matrix(1 0 0 1 646.619 727.4971)" class="st4 st20 st25">V</text>
<text transform="matrix(1 0 0 1 677.2664 735.0928)" class="st4 st8 st26">out</text>
</g>
<g>
<path class="st22" d="M414.87,444.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-38.2,155.09-11.45,165.35"/>
<path class="st23" d="M287.39,843.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S286,846.56,287.39,843.82z"/>
<path class="st24" d="M287.39,843.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S286,846.56,287.39,843.82z"/>
<text transform="matrix(1 0 0 1 203.6116 744.498)" class="st4 st20 st25">l</text>
<text transform="matrix(1 0 0 1 219.4627 750.6533)" class="st4 st8 st26">in</text>
</g>
<path class="st27" d="M245.05,374.27V130.19c0-38.66,31.34-70,70-70h244.08c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H315.05C276.39,444.27,245.05,412.93,245.05,374.27z"/>
<radialGradient id="SVGID_1_" cx="507.5533" cy="304.0179" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st28" d="M283.46,365.86V138.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H323.46C301.37,405.86,283.46,387.95,283.46,365.86z"/>
<path class="st29" d="M283.46,365.86V138.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H323.46C301.37,405.86,283.46,387.95,283.46,365.86z"/>
<path class="st27" d="M307.46,359.86V144.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H329.46C317.31,381.86,307.46,372.01,307.46,359.86z"/>
<circle class="st30" cx="437.09" cy="182.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

+533
View File
@@ -0,0 +1,533 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-size:57.9653px;}
.st17{font-size:34.8429px;}
.st18{font-size:26.1322px;}
.st19{font-family:'Arial-ItalicMT';}
.st20{font-family:'ArialMT';}
.st21{font-size:48.0099px;}
.st22{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st23{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st24{fill:#CACACF;}
.st25{font-size:57.6118px;}
.st26{font-size:28.8059px;}
.st27{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st28{fill:url(#SVGID_1_);}
.st29{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st30{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="461.57" y="956.12" class="st0" width="100.36" height="144"/>
<rect x="163.29" y="955.87" class="st1" width="200.4" height="144.5"/>
<rect x="162.29" y="956.12" class="st2" width="610" height="144"/>
<line class="st3" x1="162.29" y1="1028.12" x2="772.29" y2="1028.12"/>
<line class="st3" x1="363.68" y1="955.87" x2="363.68" y2="1100.62"/>
<line class="st3" x1="461.57" y1="956.12" x2="461.57" y2="1100.12"/>
<line class="st3" x1="561.94" y1="956.12" x2="561.94" y2="1100.12"/>
<line class="st3" x1="666.3" y1="956.12" x2="666.3" y2="1100.12"/>
</g>
<text transform="matrix(1 0 0 1 498.2354 1080.0178)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 393.3994 1011.6323)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 412.4809 1018.218)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 587.6445 1012.5579)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 617.9316 1018.3801)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 686.814 1013.0443)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 712.7759 1019.5347)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 473.4987 1012.1605)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 504.1906 1012.1605)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 391.6204 1078.9855)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 697.931 1079.8079)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 591.0832 1079.0878)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 206.7568 1009.2936)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 173.8218 1076.1588)" class="st14 st8 st15 st13">Connect to</text>
<text transform="matrix(1 0 0 1 635.3448 1005.8459)" class="st4 st8 st16">*</text>
<text transform="matrix(1 0 0 1 178.0569 1134.9473)"><tspan x="0" y="0" class="st4 st8 st17">*</tspan><tspan x="13.56" y="0" class="st4 st8 st18">: </tspan><tspan x="29.52" y="0" class="st4 st19 st18">Optional connection</tspan></text>
</g>
<g id="sample">
<path class="st1" d="M347.2,864.55V834.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H384.03C363.69,901.37,347.2,884.89,347.2,864.55z"/>
<circle class="st1" cx="559.4" cy="847.83" r="13.2"/>
<circle class="st1" cx="322.24" cy="847.83" r="13.92"/>
<rect x="327.04" y="843.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 363.9231 862.3369)" class="st14 st20 st21">sample</text>
<text transform="matrix(1 0 0 1 363.9231 862.3369)" class="st14 st20 st21">sample</text>
<text transform="matrix(1 0 0 1 302.9065 913.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 538.8065 913.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
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" transform="matrix(0.811 0 0 0.811 138.9681 11.3352)">
</image>
<g>
<path class="st22" d="M451.5,444.27c0,169.35,36,238.46,70.7,266.48c40.91,33.05,121.58,51.36,46.08,122.02"/>
<path class="st23" d="M573.03,812.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S570.91,810.68,573.03,812.47z"/>
<path class="st24" d="M573.03,812.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S570.91,810.68,573.03,812.47z"/>
<text transform="matrix(1 0 0 1 482.5237 761.9326)" class="st4 st20 st25">V</text>
<text transform="matrix(1 0 0 1 513.658 767.7549)" class="st4 st8 st26">in</text>
</g>
<g>
<path class="st22" d="M468.3,444.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,29.95,132.44-21.61,151.89"/>
<path class="st23" d="M580.13,830.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.7,2.83,0.67,2.82,1.16,5.97c4.78-0.8,11.14-2.21,19.91-3.35c-1.57-5.07-2.24-7.01-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-2.8-5.24-5.42-7.18-8.3-12.57
c-6.86,5.48-15.15,12.54-15.15,12.54S578.89,828.29,580.13,830.56z"/>
<path class="st24" d="M580.13,830.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.51,3.95,0.74,2.71,1.16,5.97c8.26-1.38,11.32-1.92,19.91-3.35c-1.55-4.41-2.11-7.89-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-3.95-4.77-3.48-5.82-8.36-11.72
c-6.86,5.48-15.09,11.69-15.09,11.69S577.84,827.31,580.13,830.56z"/>
<text transform="matrix(1 0 0 1 646.619 727.4971)" class="st4 st20 st25">V</text>
<text transform="matrix(1 0 0 1 677.2664 735.0928)" class="st4 st8 st26">out</text>
</g>
<g>
<path class="st22" d="M414.87,444.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-38.2,155.09-11.45,165.35"/>
<path class="st23" d="M287.39,843.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S286,846.56,287.39,843.82z"/>
<path class="st24" d="M287.39,843.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S286,846.56,287.39,843.82z"/>
<text transform="matrix(1 0 0 1 203.6116 744.498)" class="st4 st20 st25">l</text>
<text transform="matrix(1 0 0 1 219.4627 750.6533)" class="st4 st8 st26">in</text>
</g>
<path class="st27" d="M245.05,374.27V130.19c0-38.66,31.34-70,70-70h244.08c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H315.05C276.39,444.27,245.05,412.93,245.05,374.27z"/>
<radialGradient id="SVGID_1_" cx="507.5533" cy="304.0179" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st28" d="M283.46,365.86V138.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H323.46C301.37,405.86,283.46,387.95,283.46,365.86z"/>
<path class="st29" d="M283.46,365.86V138.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H323.46C301.37,405.86,283.46,387.95,283.46,365.86z"/>
<path class="st27" d="M307.46,359.86V144.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H329.46C317.31,381.86,307.46,372.01,307.46,359.86z"/>
<circle class="st30" cx="437.09" cy="182.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

+527
View File
@@ -0,0 +1,527 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-family:'ArialMT';}
.st17{font-size:48.0099px;}
.st18{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st19{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st20{fill:#CACACF;}
.st21{font-size:57.6118px;}
.st22{font-size:28.8059px;}
.st23{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st24{fill:url(#SVGID_1_);}
.st25{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st26{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="454.72" y="998.7" class="st0" width="101.93" height="144"/>
<rect x="158" y="998.45" class="st1" width="200.4" height="144.5"/>
<rect x="157" y="998.7" class="st2" width="610" height="144"/>
<line class="st3" x1="157" y1="1070.7" x2="767" y2="1070.7"/>
<line class="st3" x1="358.4" y1="998.45" x2="358.4" y2="1143.2"/>
<line class="st3" x1="456.29" y1="998.7" x2="456.29" y2="1142.7"/>
<line class="st3" x1="556.65" y1="998.7" x2="556.65" y2="1142.7"/>
<line class="st3" x1="661.01" y1="998.7" x2="661.01" y2="1142.7"/>
</g>
<text transform="matrix(1 0 0 1 492.9477 1122.599)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 388.1117 1054.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 407.1932 1060.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 582.3569 1055.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 612.644 1060.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 681.5264 1055.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 707.4883 1062.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 468.211 1054.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 498.9029 1054.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 386.3327 1121.5667)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 692.6434 1122.389)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 585.7955 1121.6689)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 201.4691 1051.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 168.5341 1118.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st1" d="M346.37,878.55V848.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H383.2C362.86,915.37,346.37,898.89,346.37,878.55z"/>
<circle class="st1" cx="558.57" cy="861.83" r="13.2"/>
<circle class="st1" cx="321.41" cy="861.83" r="13.92"/>
<rect x="326.21" y="857.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 363.092 876.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 363.092 876.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 302.0754 927.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 537.9753 927.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
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" transform="matrix(0.811 0 0 0.811 138.137 25.3352)">
</image>
<g>
<path class="st18" d="M450.67,458.27c0,169.35,36,238.46,70.7,266.48c40.91,33.05,121.58,51.36,46.08,122.02"/>
<path class="st19" d="M572.19,826.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S570.08,824.68,572.19,826.47z"/>
<path class="st20" d="M572.19,826.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S570.08,824.68,572.19,826.47z"/>
<text transform="matrix(1 0 0 1 481.6926 775.9326)" class="st4 st16 st21">V</text>
<text transform="matrix(1 0 0 1 512.8269 781.7549)" class="st4 st8 st22">in</text>
</g>
<g>
<path class="st18" d="M467.47,458.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,29.95,132.44-21.61,151.89"/>
<path class="st19" d="M579.29,844.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.7,2.83,0.67,2.82,1.16,5.97c4.78-0.8,11.14-2.21,19.91-3.35c-1.57-5.07-2.24-7.01-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-2.8-5.24-5.42-7.18-8.3-12.57
c-6.86,5.48-15.15,12.54-15.15,12.54S578.05,842.29,579.29,844.56z"/>
<path class="st20" d="M579.29,844.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.51,3.95,0.74,2.71,1.16,5.97c8.26-1.38,11.32-1.92,19.91-3.35c-1.55-4.41-2.11-7.89-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-3.95-4.77-3.48-5.82-8.36-11.72
c-6.86,5.48-15.09,11.69-15.09,11.69S577.01,841.31,579.29,844.56z"/>
<text transform="matrix(1 0 0 1 645.7878 741.4971)" class="st4 st16 st21">V</text>
<text transform="matrix(1 0 0 1 676.4353 749.0928)" class="st4 st8 st22">out</text>
</g>
<g>
<path class="st18" d="M414.04,458.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-38.2,155.09-11.45,165.35"/>
<path class="st19" d="M286.56,857.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S285.17,860.56,286.56,857.82z"/>
<path class="st20" d="M286.56,857.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S285.17,860.56,286.56,857.82z"/>
<text transform="matrix(1 0 0 1 202.7805 758.498)" class="st4 st16 st21">l</text>
<text transform="matrix(1 0 0 1 218.6316 764.6533)" class="st4 st8 st22">in</text>
</g>
<path class="st23" d="M244.22,388.27V144.19c0-38.66,31.34-70,70-70H558.3c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H314.22C275.56,458.27,244.22,426.93,244.22,388.27z"/>
<radialGradient id="SVGID_1_" cx="506.5269" cy="321.3081" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st24" d="M282.63,379.86V152.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H322.63C300.54,419.86,282.63,401.95,282.63,379.86z"/>
<path class="st25" d="M282.63,379.86V152.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H322.63C300.54,419.86,282.63,401.95,282.63,379.86z"/>
<path class="st23" d="M306.63,373.86V158.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H328.63C316.48,395.86,306.63,386.01,306.63,373.86z"/>
<circle class="st26" cx="436.26" cy="196.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

+553
View File
@@ -0,0 +1,553 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{fill:#FAFAFA;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st17{fill:#43DABF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st18{fill:#FFFFFF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st19{fill:#A6A6A6;stroke:#A6A6A6;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st20{fill:#505050;stroke:#505050;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st21{fill:#FFFFFF;stroke:#525252;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st22{fill:#FF8EA1;stroke:#FF8FA2;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st23{fill:#FFFFFF;stroke:#FF8FA2;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st24{opacity:0.349;fill:#75F1FF;}
.st25{fill:#FFFFFF;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st26{font-size:40px;}
.st27{font-size:34.8402px;}
.st28{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st29{fill:none;stroke:#707070;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st30{fill:#5E5E5E;}
.st31{font-family:'ArialMT';}
.st32{font-size:49.9451px;}
.st33{font-size:24.9725px;}
.st34{fill:none;stroke:#515152;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st35{fill:#0054A8;}
.st36{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st37{fill:#F2F2F2;}
.st38{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st39{fill:url(#SVGID_1_);}
.st40{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st41{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="444.29" y="969.2" class="st0" width="100.36" height="145.5"/>
<rect x="146" y="970.45" class="st1" width="200.4" height="144.5"/>
<rect x="145" y="970.7" class="st2" width="610" height="144"/>
<line class="st3" x1="145" y1="1042.7" x2="755" y2="1042.7"/>
<line class="st3" x1="346.4" y1="970.45" x2="346.4" y2="1115.2"/>
<line class="st3" x1="444.29" y1="970.7" x2="444.29" y2="1114.7"/>
<line class="st3" x1="544.65" y1="970.7" x2="544.65" y2="1114.7"/>
<line class="st3" x1="649.01" y1="970.7" x2="649.01" y2="1114.7"/>
</g>
<text transform="matrix(1 0 0 1 481.042 1091.1556)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 376.1117 1026.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 395.1932 1032.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 570.3569 1027.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 600.644 1032.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 669.5264 1027.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 695.4883 1034.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 456.211 1026.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 486.9029 1026.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 366.7726 1092.7039)" class="st11 st8 st12 st13">CE</text>
<text transform="matrix(1 0 0 1 671.6493 1091.5194)" class="st11 st8 st12 st13">WE</text>
<text transform="matrix(1 0 0 1 570.608 1093.1669)" class="st11 st8 st12 st13">RE</text>
<text transform="matrix(1 0 0 1 189.4691 1023.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 156.5342 1090.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st16" d="M256.21,888.67V759.86h401.9v129.78c0,11.17-9.05,20.22-20.22,20.22H277.39
C265.69,909.86,256.21,900.37,256.21,888.67z"/>
<g>
<rect x="306.71" y="609.95" class="st17" width="11.22" height="263.29"/>
<circle class="st18" cx="312.32" cy="674.74" r="40"/>
</g>
<g>
<path class="st19" d="M437.97,868.95V670.02c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v198.93c0,3.31-2.69,6-6,6h-16
C440.66,874.95,437.97,872.26,437.97,868.95z"/>
<rect x="446.36" y="611.66" class="st20" width="11.22" height="263.29"/>
<circle class="st21" cx="453.16" cy="673.82" r="40"/>
</g>
<g>
<path class="st19" d="M573.78,867.24V690.08c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v177.16c0,3.31-2.69,6-6,6h-16
C576.47,873.24,573.78,870.55,573.78,867.24z"/>
<rect x="582.17" y="609.95" class="st22" width="11.22" height="263.29"/>
<circle class="st23" cx="590.29" cy="674.16" r="40"/>
</g>
<path class="st24" d="M257.36,888.67v-92.88h399.75v93.83c0,10.73-8.7,19.42-19.42,19.42H277.72
C266.48,909.04,257.36,899.92,257.36,888.67z"/>
<path class="st25" d="M249.16,761.86v-17c0-1.66,1.34-3,3-3h410c1.66,0,3,1.34,3,3v17c0,1.66-1.34,3-3,3h-410
C250.5,764.86,249.16,763.51,249.16,761.86z"/>
<text transform="matrix(1 0 0 1 286.5413 689.6758)" class="st11 st8 st26 st7">CE</text>
<text transform="matrix(1 0 0 1 563.9761 687.1454)" class="st11 st8 st27 st13">WE</text>
<text transform="matrix(1 0 0 1 427.375 688.757)" class="st11 st8 st26 st7">RE</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
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" transform="matrix(0.7031 0 0 0.7031 180.3587 43.3352)">
</image>
<g>
<path class="st28" d="M454.3,418.66c-3.19,48.39-1.61,60.37,5.29,75.02c10.92,23.19,18.1,54.57-3.55,107.73"/>
<path class="st29" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.97-5.57,7.76-11.17,12.86-17.2c-4.17-2.87-5.89-3.77-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-5.05-0.9-7.26-1.56-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<path class="st30" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.96-5.17,7.47-10.85,12.86-17.2c-5.29-3.38-5.69-3.47-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-6.33-1.54-6.45-1.51-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<text transform="matrix(1 0 0 1 413.4074 535.9145)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 440.4006 540.9643)" class="st4 st8 st33">in</text>
</g>
<g>
<path class="st28" d="M471.86,418.66c0,113.19,26.79,122.57,100.13,108.04c27.79-5.51,35.81,15.28,18.14,75.7"/>
<path class="st34" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c2.68,1.22,2.66,1.24,5.46,2.83c2.48-4.27,5.51-10.19,10.32-17.84c-5.02-1.94-6.98-2.63-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-5.95-1.08-9.18-0.22-15.3-1.34
c-0.15,8.86,0.02,19.85,0.02,19.85S582.27,584.53,584.86,584.98z"/>
<path class="st35" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c3.44,2.07,2.61,1.12,5.46,2.83c4.29-7.39,5.86-10.15,10.32-17.84c-4.48-1.54-7.58-3.29-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-6.33,0.12-6.85-0.9-14.67-0.75
c-0.15,8.86-0.61,19.26-0.61,19.26S580.82,584.74,584.86,584.98z"/>
<text transform="matrix(1 0 0 1 586.0758 527.6253)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 612.65 534.2132)" class="st4 st8 st33">out</text>
</g>
<g>
<path class="st28" d="M419.55,418.66c0,63.92-43.67,94.16-80.31,101.51c-49.68,9.97-36.38,42.94-26.47,83.34"/>
<path class="st36" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<path class="st37" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<text transform="matrix(1 0 0 1 262.1959 532.2694)" class="st4 st31 st32">l</text>
<text transform="matrix(1 0 0 1 275.94 537.6141)" class="st4 st8 st33">in</text>
</g>
<path class="st38" d="M272.32,348.66V155.69c0-38.66,31.34-70,70-70h192.97c38.66,0,70,31.34,70,70v192.97c0,38.66-31.34,70-70,70
H342.32C303.66,418.66,272.32,387.32,272.32,348.66z"/>
<radialGradient id="SVGID_1_" cx="523.9471" cy="314.7148" r="197.1902" gradientTransform="matrix(0.7797 0 0 0.7797 30.2671 6.7787)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st39" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st40" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st38" d="M326.43,342.55V161.8c0-12.15,9.85-22,22-22h180.75c12.15,0,22,9.85,22,22v180.75c0,12.15-9.85,22-22,22
H348.43C336.28,364.55,326.43,354.7,326.43,342.55z"/>
<circle class="st41" cx="438.81" cy="191.51" r="27.05"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB

+553
View File
@@ -0,0 +1,553 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{fill:#FAFAFA;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st17{fill:#43DABF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st18{fill:#FFFFFF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st19{fill:#A6A6A6;stroke:#A6A6A6;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st20{fill:#505050;stroke:#505050;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st21{fill:#FFFFFF;stroke:#525252;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st22{fill:#FF8EA1;stroke:#FF8FA2;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st23{fill:#FFFFFF;stroke:#FF8FA2;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st24{opacity:0.349;fill:#75F1FF;}
.st25{fill:#FFFFFF;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st26{font-size:40px;}
.st27{font-size:34.8402px;}
.st28{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st29{fill:none;stroke:#707070;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st30{fill:#5E5E5E;}
.st31{font-family:'ArialMT';}
.st32{font-size:49.9451px;}
.st33{font-size:24.9725px;}
.st34{fill:none;stroke:#515152;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st35{fill:#0054A8;}
.st36{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st37{fill:#F2F2F2;}
.st38{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st39{fill:url(#SVGID_1_);}
.st40{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st41{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="444.29" y="969.2" class="st0" width="100.36" height="145.5"/>
<rect x="146" y="970.45" class="st1" width="200.4" height="144.5"/>
<rect x="145" y="970.7" class="st2" width="610" height="144"/>
<line class="st3" x1="145" y1="1042.7" x2="755" y2="1042.7"/>
<line class="st3" x1="346.4" y1="970.45" x2="346.4" y2="1115.2"/>
<line class="st3" x1="444.29" y1="970.7" x2="444.29" y2="1114.7"/>
<line class="st3" x1="544.65" y1="970.7" x2="544.65" y2="1114.7"/>
<line class="st3" x1="649.01" y1="970.7" x2="649.01" y2="1114.7"/>
</g>
<text transform="matrix(1 0 0 1 481.042 1091.1556)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 376.1117 1026.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 395.1932 1032.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 570.3569 1027.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 600.644 1032.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 669.5264 1027.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 695.4883 1034.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 456.211 1026.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 486.9029 1026.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 366.7726 1092.7039)" class="st11 st8 st12 st13">CE</text>
<text transform="matrix(1 0 0 1 671.6493 1091.5194)" class="st11 st8 st12 st13">WE</text>
<text transform="matrix(1 0 0 1 570.608 1093.1669)" class="st11 st8 st12 st13">RE</text>
<text transform="matrix(1 0 0 1 189.4691 1023.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 156.5342 1090.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st16" d="M256.21,888.67V759.86h401.9v129.78c0,11.17-9.05,20.22-20.22,20.22H277.39
C265.69,909.86,256.21,900.37,256.21,888.67z"/>
<g>
<rect x="306.71" y="609.95" class="st17" width="11.22" height="263.29"/>
<circle class="st18" cx="312.32" cy="674.74" r="40"/>
</g>
<g>
<path class="st19" d="M437.97,868.95V670.02c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v198.93c0,3.31-2.69,6-6,6h-16
C440.66,874.95,437.97,872.26,437.97,868.95z"/>
<rect x="446.36" y="611.66" class="st20" width="11.22" height="263.29"/>
<circle class="st21" cx="453.16" cy="673.82" r="40"/>
</g>
<g>
<path class="st19" d="M573.78,867.24V690.08c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v177.16c0,3.31-2.69,6-6,6h-16
C576.47,873.24,573.78,870.55,573.78,867.24z"/>
<rect x="582.17" y="609.95" class="st22" width="11.22" height="263.29"/>
<circle class="st23" cx="590.29" cy="674.16" r="40"/>
</g>
<path class="st24" d="M257.36,888.67v-92.88h399.75v93.83c0,10.73-8.7,19.42-19.42,19.42H277.72
C266.48,909.04,257.36,899.92,257.36,888.67z"/>
<path class="st25" d="M249.16,761.86v-17c0-1.66,1.34-3,3-3h410c1.66,0,3,1.34,3,3v17c0,1.66-1.34,3-3,3h-410
C250.5,764.86,249.16,763.51,249.16,761.86z"/>
<text transform="matrix(1 0 0 1 286.5413 689.6758)" class="st11 st8 st26 st7">CE</text>
<text transform="matrix(1 0 0 1 563.9761 687.1454)" class="st11 st8 st27 st13">WE</text>
<text transform="matrix(1 0 0 1 427.375 688.757)" class="st11 st8 st26 st7">RE</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
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" transform="matrix(0.7031 0 0 0.7031 180.3587 43.3352)">
</image>
<g>
<path class="st28" d="M454.3,418.66c-3.19,48.39-1.61,60.37,5.29,75.02c10.92,23.19,18.1,54.57-3.55,107.73"/>
<path class="st29" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.97-5.57,7.76-11.17,12.86-17.2c-4.17-2.87-5.89-3.77-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-5.05-0.9-7.26-1.56-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<path class="st30" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.96-5.17,7.47-10.85,12.86-17.2c-5.29-3.38-5.69-3.47-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-6.33-1.54-6.45-1.51-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<text transform="matrix(1 0 0 1 413.4074 535.9145)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 440.4006 540.9643)" class="st4 st8 st33">in</text>
</g>
<g>
<path class="st28" d="M471.86,418.66c0,113.19,26.79,122.57,100.13,108.04c27.79-5.51,35.81,15.28,18.14,75.7"/>
<path class="st34" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c2.68,1.22,2.66,1.24,5.46,2.83c2.48-4.27,5.51-10.19,10.32-17.84c-5.02-1.94-6.98-2.63-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-5.95-1.08-9.18-0.22-15.3-1.34
c-0.15,8.86,0.02,19.85,0.02,19.85S582.27,584.53,584.86,584.98z"/>
<path class="st35" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c3.44,2.07,2.61,1.12,5.46,2.83c4.29-7.39,5.86-10.15,10.32-17.84c-4.48-1.54-7.58-3.29-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-6.33,0.12-6.85-0.9-14.67-0.75
c-0.15,8.86-0.61,19.26-0.61,19.26S580.82,584.74,584.86,584.98z"/>
<text transform="matrix(1 0 0 1 586.0758 527.6253)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 612.65 534.2132)" class="st4 st8 st33">out</text>
</g>
<g>
<path class="st28" d="M419.55,418.66c0,63.92-43.67,94.16-80.31,101.51c-49.68,9.97-36.38,42.94-26.47,83.34"/>
<path class="st36" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<path class="st37" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<text transform="matrix(1 0 0 1 262.1959 532.2694)" class="st4 st31 st32">l</text>
<text transform="matrix(1 0 0 1 275.94 537.6141)" class="st4 st8 st33">in</text>
</g>
<path class="st38" d="M272.32,348.66V155.69c0-38.66,31.34-70,70-70h192.97c38.66,0,70,31.34,70,70v192.97c0,38.66-31.34,70-70,70
H342.32C303.66,418.66,272.32,387.32,272.32,348.66z"/>
<radialGradient id="SVGID_1_" cx="523.9471" cy="314.7148" r="197.1902" gradientTransform="matrix(0.7797 0 0 0.7797 30.2671 6.7787)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st39" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st40" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st38" d="M326.43,342.55V161.8c0-12.15,9.85-22,22-22h180.75c12.15,0,22,9.85,22,22v180.75c0,12.15-9.85,22-22,22
H348.43C336.28,364.55,326.43,354.7,326.43,342.55z"/>
<circle class="st41" cx="438.81" cy="191.51" r="27.05"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB

+527
View File
@@ -0,0 +1,527 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-family:'ArialMT';}
.st17{font-size:48.0099px;}
.st18{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st19{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st20{fill:#CACACF;}
.st21{font-size:57.6118px;}
.st22{font-size:28.8059px;}
.st23{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st24{fill:url(#SVGID_1_);}
.st25{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st26{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="456.29" y="998.7" class="st0" width="100.36" height="144"/>
<rect x="158" y="998.45" class="st1" width="200.4" height="144.5"/>
<rect x="157" y="998.7" class="st2" width="610" height="144"/>
<line class="st3" x1="157" y1="1070.7" x2="767" y2="1070.7"/>
<line class="st3" x1="358.4" y1="998.45" x2="358.4" y2="1143.2"/>
<line class="st3" x1="456.29" y1="998.7" x2="456.29" y2="1142.7"/>
<line class="st3" x1="556.65" y1="998.7" x2="556.65" y2="1142.7"/>
<line class="st3" x1="661.01" y1="998.7" x2="661.01" y2="1142.7"/>
</g>
<text transform="matrix(1 0 0 1 492.9477 1122.599)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 388.1117 1054.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 407.1932 1060.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 582.3569 1055.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 612.644 1060.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 681.5264 1055.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 707.4883 1062.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 468.211 1054.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 498.9029 1054.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 386.3327 1121.5667)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 692.6434 1122.389)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 585.7955 1121.6689)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 201.4691 1051.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 168.5341 1118.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st1" d="M346.37,878.55V848.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H383.2C362.86,915.37,346.37,898.89,346.37,878.55z"/>
<circle class="st1" cx="558.57" cy="861.83" r="13.2"/>
<circle class="st1" cx="321.41" cy="861.83" r="13.92"/>
<rect x="326.21" y="857.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 363.092 876.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 363.092 876.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 302.0754 927.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 537.9753 927.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwEAAAJsCAYAAAClAq8lAAAACXBIWXMAAA2vAAANrwFCv+cqAAAg
AElEQVR4XuzdeXPbuLLw4aYWO5nM1Fv3+3+/U2eZkztLEtva+P6R23Sr3dgoyZaE31OVskSAIOWY
QDe4aBjHcRQAAAAA3ViUKgAAAAC4LyQBAAAAQGdIAgAAAIDOkAQAAAAAnSEJAAAAADpDEgAAAAB0
hiQAAAAA6AxJAAAAANAZkgAAAACgMyQBAAAAQGdIAgAAAIDOkAQAAAAAnSEJAAAAADpDEgAAAAB0
hiQAAAAA6AxJAAAAANAZkgAAAACgMyQBAAAAQGdIAgAAAIDOkAQAAAAAnSEJAAAAADpDEgAAAAB0
hiQAAAAA6AxJAAAAANAZkgAAAACgMyQBAAAAQGdIAgAAAIDOkAQAAAAAnSEJAAAAADpDEgAAAAB0
hiQAAAAA6AxJAAAAANAZkgAAAACgMyQBAAAAQGdIAgAAAIDOkAQAAAAAnSEJAAAAADqzKlUAcNvG
cSxVAYBZhmEoVQFwpUgCgBtHkA/go5T6H5IE4HqRBAA3qDTwAsA18H2VTwrGcSRRAD4ISQDwwVKD
oA6eWnapwL80AF9quwA+3nsf/75fSy0DcHnDeO4jHECTUw9BBk4A14r+DbheJAHAO5tzyDEQArhH
rf0hfSFwPiQBwIW1HGLXOMC17D+A23Lrfc417j9wK7gnADizlgFMhEEMAKzofoGU0o3HANI4EwCc
wN7UW3MovdcAVbMvAHApl+rravu2S20fuCckAcAMLYfNKYORf3JQtN2WJAQAPtopfaJX6vfOuS3g
3pAEAA1Kh8s5BpzSNpTWm7tNXe9wOBy9r1G7jwA+Vum4HoYhezyfOsnQ2k/V1ksp7eep7QP3hCQA
qFRzqMwZYFKz/TZIt+Wpbdj9q9nXlJrPcEr7AN5PzfFstR7bpfZrzmTa5T7pKLUfqfkMc9oF7g1J
AOC0HhJzB5No4KtdXjNzp2o/z9zPAeB6lY7/UpBeEvUbqXaiyYzSNk/tl0rtq1O3A9wikgDAqD0c
5gwYpcA9FeS3BvWtA+0pM24Artc4jrJYLIp1cu9z/YLvt0Ta+ieRfF+XWjZHab/UubYH3AKSAEDq
Bog5g0NNuzV1rNx+tLYF4L6V+oQ5/ZpVmmg4ZRKjRmt9kfI+iMxrF7g1JAHoWs2ff8tgUNNeqU5q
0EztR6k975T6Lb8LAB+vdMy29gel9rzS5UK1SULNdmvqeKXPP6dN4FaQBKBLNX/2LZ1/TXsidfXs
dsdxLA6SpwbpNfsE4DqdOklQ02fU1GlxytnMmn2pqeOdY7vArSEJQHdKf/K1nX2pHS9Vf7FYhGXn
ar+k9vOmzN0ugMs49Zi25h7fNftgJzmG4e1TgoZhmB5hbNW0bdXUr/mcNe0At4QkAF0o/ZnXdu62
HX1tg/jcdlKnxf3gF5VHy73SGYNW0ecDcL98EF4yjvGNx1E7vg+paV+k/QxHqd1SuTV3G8CtIAnA
Xav58y516DVtWKXBLhfwp9S20ULbsG2fo10A96PUP6aC/EhtX5PaZrR+af9KSuvP2U/gVqxKFYBb
VDMgiZynE/eDUW5QtMtaBrHazzPHqW2fuj6Ay6npX3JK/VTp+B/Hn2czW/ZD14le1yrt9znYfQNu
EWcCcHdKf9K1nbYdRKLg3aud5Woxpx2/ztzBu1bt7xPA+9Nr6k85TkvrRn1JFMTrclu/tu1SPV+e
26dIqf2W/rLUFnAtSAJwV1o7fq/mcKip4+UC83O0N0dqdi16n/sdnmNfAFyGP0OpokmO6DifMwsv
kl+vpU/2Lrluqdwq/T5a2gI+CkkA7kLN7Hyk9OdfKs/xA2uqrVI9P3NWUlO3dHYgl7R4pd8xgI9T
0x9EouO6pq3ShIFPSkpt1vYvqXo1n8PXqd2mSH7/W9oBPgJJAG7aKR1w6U+/lFhE5bXrpGbHapan
BrDS5ykp7bt/nfssAK6H7wtrjtlS/6lsYC+S749q27ROXacmCUjVqykTOW0cAj4SSQBuWk3g6pX+
5EuzRKn1W4Nzu3zuNkTK27Fq6gBATjQZMAxDuNwmCVE/lyqL6nitCUepny0F7KXyOeMR8JFIAnBz
5na0UdCdm83WQW0cx2zwnBrsonVaDjc7uPplqbof4SO3DSBtHOPn+EdywfYcqX6rFJz7vjPVl5ba
KQX4pX7V9v/ROiXRuCDS1gZwaSQBuDm1A4I3Nyg/HA5HA6lNCnID7OFwyA6suVksu6xmH1U0YJXa
KgUJLdsH8L5Kx2du9rsUnObarulzI1HwnWurtJ1SudWaOPjy3DIv9burWRd4LyQBuBm1HbSV+vPO
zRK1rmNnfFJ8mX3vEwz/umbfcuasA+D2RP2hPiK0VTSJECUUuRn2GqX1c9vPKdXNbbd2m6VtiJAM
4LqRBOAmzEkAROYH9LbeMKQfoadnCaJEQF9rkJ+qkxqka5KLc7h0+wDeR+2sdUsAnOr7tG6pHy6V
q1zgre9r2xKZVzc34TIMr/c82L65dCZVzR3DgEsiCcDVm9N5loL/VNDvjeM4DXQ6IOq/xWIhwzC8
+TIeW0dEZL/fT8ujcju4REr7qFL1Sr+rktrtA7gefhLB9gO2z9EgVvszf7zrJEfUZ2n/l0oQtG5K
TVlq/0tKdXLtR+VRHR0Has0Zy4BLIgnA1Zob1KbWizpzuyzVQY/j8dfWR/V0+X6/fzNY2rZ0oLX/
rNJnu4TSNukigNtlA/hx/HnmUScutM+yhmGQ5XI59Vf7/X7qI2xfURPkW6mguxQY5/rI0rZ9/+3L
rJZkQJdr+15uv+aOa8AlkATgKrV2rCLxOrV/3rl6dnDQfTgcDrLf798MoFpvsVgc/dPlVusgeq1q
f8cAzq/Uf6SOT7vc9md+IsNPXHhRUB4FzJFcgF9S22apvLTPcwL9mvI5bQLnRhKAq9MyU1ITvKuo
s6/58x+GYZo92+/3R5f/aMA/DIOsVqvkQAkAt8L2ddvtdnrSmcjbSQ5/OaSls/C5gN32wb5eaRa/
tH5qWa68NrmomcTJlbWMc8ClkATgarR0ijWzWyLpWRyR45t6o8FKA//dbne03mKxkOVyKcvlsul6
UAC4RdoP7na7ozMF4zi+mfzwQbn2rfYBCTaArgl6WwPt2sC+pixKROz7UhKSW54Lv2p+L8CpSAJw
NaI/xZbOM1pmg/yozuFwkOVyOZXt9/ujoF8HKQ38ddZf649j241hAHBL9MZf7ffspUOHw0E2m81U
rn2l7bf1bIGeMfDlVinwnbOeLatJGGrL7TiQKku9VyQB+GgkAfhQLbP/Im1nAKLl3jiOR6e+7azP
arWagn9FxwwAr32rnh3YbrfTPVL2PgJ9b9fTfrYlKC8F86UyXV7qw1MBfDTjPwzpM81RndK2S20B
50YSgA+VCt4jqdl/v05Uz1/Hr3X0elctW61WU9CvZxFs+y37CwD3IjfRon3qdruVl5eXo2RA+1Fd
x14W5L+NvSa4TwXppWW+rKaOvp7b77fum5q7PaAVSQA+TPSnl+rsSmcAokA9VWafgCEislwup1n/
aPtRolFTBgD3zCYAtr/Vy4S2263sdrujSym1nr7P3VgcLfcBeq5ubnnturYsGmdS7dgxq2VbIiQB
eD8kAfgQLQmAyHF9G3inAn3fAeusk172Mww/zwg8PDxMr/12WhMCALhnUX/rZ/N9/7vZbGS328l2
uxUROXqggvanpT41F9y3BNilZKC07twkIFcvpbQ+cA4kAXh3LQlA6s+z9GdrO2i92VdnnFarlazX
6+INvTqY6b6RFADoTSrY1bJS3z0Mr2cGNCEQkenSS38moNSfloLpmqD+HOvUlnml/bdIBHBpJAF4
V6k/t9JAklo+DK+nl6NZfHvNv73sR+T1qRd+nZzSmQIA6FGUEOhEiu1zX15epsuERH4mA2oY6mb2
S4F6Tb+eqlPq133dXKCur0vjRsv4V9o/oAVJAN7F3ODfDyC6jna+tl07COkzrUV+DjI2+AcAfJz9
fi8vLy/y/PwsIq83EKtUoOyTBH8pkq1rf/rlpWV2eS7oLq2r/KOqozqpZSIkA7gckgC8i5ZOzHeU
Uedp39tr/MdxnC79GYZhCv5JAADgeug9Ws/Pz7Lb7WQcx+nJbNp/L5fLo/7ev7ZPHtJlln2feh29
t8vmJAGlslSd3DotYyhQiyQAFzX3DICtlzoDoP80wGf2HwCulw3glV4itNlspkeL2uA/Ct613/dJ
gK+XWha9blkntyxXbve/VCdS+1mBWiQBuKiWTsvWza3nyw6Hw3Tt/3K5lIeHh+Qz/ukwAeDjpAJg
PSuw2WzCIN8H63Y8qA3k9X0p8M4F/7kxpFTmxyNbFr32WifVgBKSAFzMOROAyDgeP/N/vV7Ler0O
6yk6SwC4HjaIH8dRNpvNdInQMLxeEiTyel9Y6j6AKBnIJQYtwb9dVgr2S8vs543qkAjgvZAE4CLO
mQBEHaYG/4fD4c2lP37mCADwcUp9si/f7Xby/PwsLy8vMo7jm+8WsHWjANsmBHa5lwvqozZs3WF4
e7mSr2Pf2/2OxrTUeiktYyyQQhKAiyh1blGd2j9FvfF3HMfpWdPRaeNUBw0AeD+2b/az3/5MgC7f
7/ey3W7l6elpWu6/ddj276lkoKZe9F7X9/tbWj9altpnXxaVp5aJ1I2zQM7rA3qBC6lJAFIWi8V0
ClifJrHf72WxWMh6vX7zjGmtZztwOkYA+Dg+CLf9sk0AbD2d3FksFvL09CQvLy+yXC5luVweJQX6
Okou/OuIHx+ipCRVXsuv4z+/3U5L+6XPBpRwJgBnVTszYTtu+wxlDd41kNd6h8NhOgPAk38AoB+H
w0Genp7k6elJRGR6lOg4jkffOqxnCiyfgNS8To1bPnHxy0t1fXKh78/5PQK1CQQgQhKAM4r+lKIO
KfUnZ2d3RF5vAtNHfw7DMF3+k+qMAQD3RceC7XYr379/l91uN00E6YSRDaTtZUNREF67rKa8pcwr
jV+1bdVOvgEelwPhLOZ2QsPw89pP34mLyPTaPjt6tVq9mU0BANwvnRh6eHiQcRzlx48f07ig44Ed
R0ReEwelSYF9L/J6+Y1NGHLjmX1t1/Vltk6qzNYZhrc3DPskptbc9dAfkgCcrCUYt3X96U/b8Yn8
7NR3u90U/OspYEUnBwB9+fTpkywWC/nx44dsNhtZLBZHlwfpT/3eGJUK8n1yoMssG8i3jHdWFJj7
ZTYZiBKBVHAffS4SAdQgCcBJWjrEKODXa/z1tYouAdL1xvH1W4IBAPfLBuAaHD88PEzlm83mqEzH
DftI0SiIjgJ/LY/WySUOqTZ9eY7fdirhILjHOXFPAGZr6fB8XfvePgFI5DUBiM4A0AECAMbx52z/
9+/fpxuG1+v1NLboU4TseFF6nfqZqpd7XSqzy2zArwmASJyoRK+taFxmzEQKZwIwS65zytXzNAHQ
zloTAH0EKF8ABgAYx7dngZfLpfz666+y3+9ls9nI4XCY7i3TiaXUmQCVmnG3s/IqNfufG/9q6nmp
cbOmvdTnASJcU4EPpR21JgDb7VYWi4U8PDy8OZ1rOz86OQC4f3YCyE8a6c//9//+n3z+/HmaRBI5
vrzUjhl+7EiV2WW5dWqWl0RjnPKXvta0X5tsAFwOhFm0s7Mdly9X2lnbztzW8QnA4+OjDMMwzeoA
AJCz2+3k27dv8vLyIsMwTN8fkLosyM/0+7HMLvfrRfVL65XqRGw9O17aMbVmDFal7aE/RFho5oP5
kij4t8u2261st1tZLpeyXq+n9UgAAAAl4zjKarWSL1++TI8R1UeI6pmDmhn91GtLl4/jeHS2ISe1
nWifUuz4ac+gl+pbtdtCP4iy0MR3IqVEwM9Y2OUir48BFZGjm4BrO1cAQL/s2LJer+XXX3+V9Xot
u93uKMi2iYANpP3y1Dr63v6M6uREbetrlQvebSIQvfdK4zPAjcGoVuqoIjYB8B3n4XCYnvPsnwJU
2z4AADq+aCIwjqNsNpujb5i3Qbe9jMYG1Xa88uOWHZdyQX9uPS+3PV3mX/t6vtzKtQlwJgBVch2e
l+vE1OFwkO12KyI/O239rgCR9LWWAABYwzAcXR4zjj+/R+C3336T1Wolh8NB9vv9m7EoOttskwT7
U1/rP5Uap1rGyyigt6LxNHUGoHa7tfVw/0gCcFapzkU7Lu3wdrudHA4HeXx8PLr2n84JANAimjha
r9fy22+/yTAMst/vp3sEbD29X0AknQDYwN8nAj4p8GUpreNcbfKhdb2ofus+4D5xORCa1cx++A5L
ZzBsArBer4++CZgzAACAFjp2RK8/ffok2+1Wfvz4MZ0N0H/6fQK6jr73fNu+jl0Wvfbr+DEuNW5G
dW0dbde+t3X8uqUzDugTZwJQVDsDoaL6tvPVGRn71e/MVAAAWtkxxtIzzL/99pus1+spCPZPC7L/
lL5O1YnWidazy1N1RfLjqpb5sdRPms0ZL+esg/vC9wQgy/95pIJ12ynZDk+X6XWZ2+1WhmGQT58+
VSUUAADMpePRH3/8IU9PT2/uP7NnAHS8smOTJhN2mS/3gbqtFy3zdXPL7Gu7n/ozGnP9+lbNmI5+
cCYAZ+U7o3F8vQFrt9vJMAzy+PiYawIAgLPQIPeXX36ZHh2qdHzKzdLrmGbHtly5r5dqe842vNRy
X+eUctw37glAtdRZgOi1r6PXY67X6+S1lwAAnJuefd7tdvLXX3/Jfr8/eiCFTliVpOrpMv8Fl7a+
HT/H8fixoKnl0bpebtyN1H5W9IEzAUhq6ShyndThcJDdbier1UrW67UcDgdOQQIA3oU9G/Dlyxc5
HA5vvizMvvb/fJm+tz/9a1/Hr59aJ2LXK42dNe35NmrWwX0iCUDIdwqljicyjuN0L4DIz0e2AQDw
3g6HgywWC/ny5Ys8PDy8uQzIB+wir7PmucDfytWNEoA5/D5Hbc7Zzpx1cPtIAvBGTQKQ69DsTUz7
/V4Oh4M8PDxMHao/ZQoAwKXYcWe1Wsmvv/4qi8Ui+aQgXacUYNeuF5Wnxs+aYDy3vq2TM2diD/eH
aAxZpfsAcsv0LMByuTx6IgMAAO9Nx6nPnz/Lly9fRETCS4NSgX0q0K+pH6lprxTM1zhXO7g/JAE4
0tJR5Dopu3y9Xk+vuSkJAPCe/M22wzDIly9fji73KY1jNYF91E5NApArLy0DTkESgInvYEpnAYbh
9RnIeqpVO8H9fi+73W56HKhti9OQAID35J/Gs1gs5H/+53+mZXrvmo5x+/3+6FuGVZQY2G3Y5bn1
onpREpGbONMxOHrMqcjbMT1q247H0fZx30gCcBLbeWmHovcB6JeoEPQDAD5CLoBer9fy5csX2W63
slgs3iQCfnJL2eA9+ufrREoBui6z7aWW5dTU8easg9tEEoDZfKeodrudjOMoq9UqTALoYAAA783O
qg/DcHSTcBTki0h487CvE5VFbUVlkVSCEK07jq9nN2raY/yFRRKAUOlSIPva1tUOc7lcynK55CwA
AODDlMay1Wolv/32m2y3WxGR6SZhfZ0L9kuihCH13v5MLfNq90MkX5dxul8kARCRdFAfySUAejpV
zwJESu0DAHAJftZ8GAb59ddfZb1ev7kcKBW4pybEogQhFdj7tmqC/tLYWZugRHU4Y98nkgBUJQCp
DsHW13sBVqsV3wUAALgKPji2l6nqZUG//fbbm0t/bMJg/0XLouV++9Fy+7N2eUpNkgBYRGooynUc
2qnpWQDtUAEA+GgazJcC5F9++UUeHx+PngiUCt5F3s7mp95HyYDI2zMS0TZ8eS1bt3ViD30hCUBW
bUehHdhisXhzk1WuPgAAl1Jzmcs4/nyQxZcvX5JBe8QH+1HQ71/XjnuperltlBIdkfrti7TVxW0i
Cehcawci8noqdRiGafZ/u91OZwHG8fVLWUptAADwXqJxR8eqz58/y8PDw9H9bVqeCvZTSYWvY9/r
txT7NsZxDJ/57+vZzxAlBL48N96WYgASgftGEoBmtkOzz1ZeLpdH9wIQ5AMArp2OW+v1Wn799dfp
e258oJ5KAOwylSuLpJKJSClwj9S2X9se7gNJALL8jILvNPxZAL8OAAC34vPnz7Jard7cJCySTwRs
uZUL5H1bOdE+lOqm3pcwhveDJKBjLbMJqU5ET2v6swAAANwC/W4AfbrdL7/8IofDIXl5TCqA94lB
lCCUkobS8qhOro1SO9F79IOorVM1B31ptkFE3jwRqFQfAIBrosG+Xjuv3yIcnQ2I+IA8eh/V9fVr
l0dOHXv9+qn7DnBfSALQdDOQ7xh2u93RWQA6CwDArRjH1wdZ6Pi2Wq3k8+fPRzcHa139mQr8S3X8
61rnTgRa6oq018dtIAlAUXTwj+M4nUJdLpfTMpIBAMCtSI1Vv/zyy5Qc5IL8SG78KwXzfhu+Xuk+
Pc9P8pUu/UVfSALQRDsc+9QE7gUAANwiHb/sY60Xi4V8+vRJHh4emoP/VGBvf/rXOTX1UnU04Pfl
JAJQRG8dKs1SpDoq26EsFgvZ7XayXq+PyrU+nQwA4BbouOcTgV9//XVarme+7ZdhjuN4dN+Ab8//
s2W+rv9+gFTi4Mfv0nieq1dqy4/juW3hNpEEoJrtALRD1BupSvUBALhG0Tg2DIOs1+vpBmEN/nXs
s6JgX5e3Sq1TaiuVZJzbJdvG+yMJ6Ewp06+lTwVaLBaz2wAA4BoNwyAPDw/TNwjb+wNUambeLs8F
51Ed+9PXKy2Lysfx9Ybn3D6gTyQBHSsF77ZzsKdJx3EMvxvAdjYAANwaO4atViv59OnT9H04VpQM
pAL+VKLgpZb7OjXLSmrH6tp6uE0kAZjkOi3LPxUohc4DAHALUjPknz59kuVyOT0uVCfEcvcC+DZs
kpBalqsbtW3brymP6qVuHEY/SAI6Yg/02ht+9FrJcXy9aWocx/AyIIJ+AMCtSQXLIiIPDw/y+PgY
Bv22bim49/XtT99GVLe0LKemvt9/i7H9fpEEoIrtIPQmKR4NCgC4dTrJZen7YRjk8+fP0xhon+KT
CtwjqeSgZv3aRCJSKk+Zux5uC1EcinyH5WcvovoAANwa++Q79fj4OL3W8S03O946Bvr6reuXME4j
hSSgE6kZi1xAby8FWi6XR22sVqupjsepQwDArbBntf0Z7sViIavVSh4fH2W32x3dE6D87L5flppE
02XRe/+9AVoWjdO+PFdH6+nP6AxIFCtoPKDrkUTcB5KAjtjTm7VsZ6E/uQwIANCLxWJx9MWYIvUz
6anAvEaUPETJBjAX0RwmNcnBfr/nuwEAAN1YLBby6dMnEYkDcv/P17OiurYsqh8t89vK1W9x6vq4
LSQBnSsF81Fnt1wuk6cMAQC4J8Pw84vDRF7vGUgF8pGaelEg37JeqV5KtF4pLsD9WJUq4L5EB3fU
+URBfnTDFAAA9269XstisXhzL0CKHUPttfS5a+5tnVqpuqV2bLndtn2P+8eZgA7MnSGwtOOyNwcB
ANCDxWIxnQ1QqbHVzuDXnjGI1tHXrfy6pTZyn8PzNyLjtpEEdCQ3Y1Bjv99PlwKJMFsAAOiDTQKi
Gf6acTSVHETBf7SeLTs1wAdESAKQEHU2IgT+AIC+DMMwPSFoHMeqS2PPHXznEoFU/dz7GnPWwW0h
CbhzNQexXuozjm8v9xnHn48E3e/3Mo4/bwq2ZQAA3LvD4TCdCdAxUeTthJmf2ffLfSCf4yfgUpfj
ps4KaPLi60X859Bt1e4rbhNJQCfOMYN/jjYAALg1i8VClsvlFFTXXl6bCtB9ndzMfZRY1GhJOLy5
6+G2kAR0rvZA13q24yMpAAD0YrlcynK5nGbK7ZOCRNovwUkF/6n1ahKB0jbP7b23h/MiCehYqkOJ
lh8OB4J+AEB3dCzUswGHw+HN7Lx/HQXHtsyPs6VxONdeqhwoIQm4Y3M6hdwMBN8UDADojY6LwzBM
SYAut2NmKVBPSQX80c+WoL+07bllxAH3gyTgTpU6iFR57jpHDnwAQG/s2LdarabxcM4jQu3rmnUi
pXZag3ub5ETm7ieuH0kAsmwnF70HAOCe6bg3DIOs1+viU3NKZanyUxIDkXyAn9I6IYj7QhKAqoOd
MwEAgB7ZQFkfk90yA18K/EvLU48FLQX4tUrb8nVy9XBbSALw5tSiLzscDm/uB6ADAAD0wD4JaLFY
HJ0ZTwXQevOwl0oecnW1zL62lyMp+97vox/n/X77tluSjNp6uD4kASgG9LZjAACgNxp0R8G3VRsQ
R4F5Tqm8tg5gkQRAROIAn6AfAIDj+wL0C8NKQXdqFt/XieqrUsLhzxacgz9LgPtFEtC5UsdhT3fS
GQAAeqZnAkoBfU6pXikxaJFa3yY1vr6vg/tFEoBJ7QF/SocEAMCtipKA1KU9uQC+JriP6ti2IzXt
1jpXO7heJAEdKAX3NTMadAYAgB752XF742zNWJkbP+eMra3b0PIoUYlENxiX6uE2kQR0qKaziH5y
wAMAemZvDNafqYSgVu16pbMAXk29Up3axAG3iSQAAAAgwU+AXWpCrCXILk3OpdoqbeNSnw3XiSTg
DpUO8kjp1CY3CAMAejeOo+z3++l1qk7tOGwvLRIpj8Wp9Xwde5ZC39tl0Tie2nYKZwlu36pUAQAA
AHmpwLpUp3ViLfVkn1pz18P94UwAAADAifzMuJ/dt3VKs+6+vi9LnS0ozcifMwE4Z1v4GCQBnSl1
EAAA4HzmBsu5RCCqN6dOzbq1ztkW3geXA+HNM48BAECevd7ev7fX4Kfq5AJznzjYun7d2iRD2+Ue
PyjOBHSODgAAgI9jL+9JXf6Te9+qdn2fyIiU1y2V47qQBNwZfwDaA5iDEwCAeucaN3PX65e2EZ1Z
mMNu51xnAk5dHx+LJKBDUYfjT1UCAIBYzViZm90XefvYzlrRZUa1WraD+0cScMdSnUPU6eRmBVpP
BwIAcA/8+KfX0y8W+fDJj6mpy3z0n08ILjnO6vb0tUh8z4K+v+S+4GORBAAAANoS6gEAACAASURB
VBREE2dz6vnAujSb/x6B+KXbx3UiCQAHPwAAjVIBfotcwlB6n6rzHkkD7gNJAJLoRAAAvSuNhVHQ
nQrEdVmpTVVbP1VeOsuQUtoe7gNJwB1pOb0YqZllAACgJzqezhlXz+HUcdivn7rP76M+Hz4OSQCO
nOMxZAAA9GDu5FkUiNfO5vuzA7mzBTX74tWefVDEDLeLJAAAAODMokm1UsCcC7xziUJtwG6V9gX3
jyQAEzoEAABOc+kz6rlkwNcDckgC7kTLwd7aOR0Oh6P3resDAHCLUpfGHA4HWSwW0/cGjOP4Zqx8
j2DdbiMam8dxDJfnvr8gYuuV1imV43qQBAAAAFxYbVIgEgfSqRuUL33mQYQvDb1XJAGdaMniAQBA
25lvW7dlzE2t58ui96mZfpUqK+0T+kAS0Ck6AAAA5muZ2Rc5vrQot25Nmy3JiWW3W7Md3DeSAAAA
gAtpOStwDu+xDdwHkoAO0UEAAHAZfqZ97qy9SHm8zt30e06l/cBtIgnoQOrgvURHAQDAvWkdL+cG
zbmbfFOXEM3dFkASAAAAcGGpAD93b0ApwC896rO0PvpGEtCB2hkMOgsAANL0aTzDMLz5XgCVCvSj
oL50k7DWETkO+FvOCNjlqaQhdVlR9HQiYoX7QRLQOX/tIgAAmO9S42lLuy110S+SALxB5wEAQN61
nmWfs7056+D2kQTgCB0BAAB1SmNmqdyquZynVW2igj6RBAAAAFS41qA691ShuU5JPnAbSAIgItfb
sQEAcCtSgbOOsXasTd3c2xJ8t9Sd49Lt42ORBCCJxAAAgHY6Mx89mUfktOC6Zmw+pX30gyQAk5qO
BQAA3DeSiD6QBGASHfSXuM4QAIBbdI3BcekSouhZ//Z19N0BjPt9IAkAAAC4Ybmg3ScJ15jI4GOQ
BAAAAFzYpYLv1Lf9AiUkAQAAABfgg/FzJwKtwf65t4/bRhIAAAAwg15T3xqMXwIBPlqRBAAAAFxI
9B0Bp/DX95+rXfSHJAAAAADoDEkAAABApVMuu0k9nvNc/L6V9vXc28dtIQkAAABoVAqwc84dfJ+y
L+gXSQCKzt1ZAQBwSzTItl+slRobU1/eVfpSr5Jcu3PH6VP2B7ePJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
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" transform="matrix(0.811 0 0 0.811 138.137 25.3352)">
</image>
<g>
<path class="st18" d="M450.67,458.27c0,169.35,36,238.46,70.7,266.48c40.91,33.05,121.58,51.36,46.08,122.02"/>
<path class="st19" d="M572.19,826.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S570.08,824.68,572.19,826.47z"/>
<path class="st20" d="M572.19,826.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S570.08,824.68,572.19,826.47z"/>
<text transform="matrix(1 0 0 1 481.6926 775.9326)" class="st4 st16 st21">V</text>
<text transform="matrix(1 0 0 1 512.8269 781.7549)" class="st4 st8 st22">in</text>
</g>
<g>
<path class="st18" d="M467.47,458.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,29.95,132.44-21.61,151.89"/>
<path class="st19" d="M579.29,844.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.7,2.83,0.67,2.82,1.16,5.97c4.78-0.8,11.14-2.21,19.91-3.35c-1.57-5.07-2.24-7.01-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-2.8-5.24-5.42-7.18-8.3-12.57
c-6.86,5.48-15.15,12.54-15.15,12.54S578.05,842.29,579.29,844.56z"/>
<path class="st20" d="M579.29,844.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.51,3.95,0.74,2.71,1.16,5.97c8.26-1.38,11.32-1.92,19.91-3.35c-1.55-4.41-2.11-7.89-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-3.95-4.77-3.48-5.82-8.36-11.72
c-6.86,5.48-15.09,11.69-15.09,11.69S577.01,841.31,579.29,844.56z"/>
<text transform="matrix(1 0 0 1 645.7878 741.4971)" class="st4 st16 st21">V</text>
<text transform="matrix(1 0 0 1 676.4353 749.0928)" class="st4 st8 st22">out</text>
</g>
<g>
<path class="st18" d="M414.04,458.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-38.2,155.09-11.45,165.35"/>
<path class="st19" d="M286.56,857.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S285.17,860.56,286.56,857.82z"/>
<path class="st20" d="M286.56,857.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S285.17,860.56,286.56,857.82z"/>
<text transform="matrix(1 0 0 1 202.7805 758.498)" class="st4 st16 st21">l</text>
<text transform="matrix(1 0 0 1 218.6316 764.6533)" class="st4 st8 st22">in</text>
</g>
<path class="st23" d="M244.22,388.27V144.19c0-38.66,31.34-70,70-70H558.3c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H314.22C275.56,458.27,244.22,426.93,244.22,388.27z"/>
<radialGradient id="SVGID_1_" cx="506.5269" cy="321.3081" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st24" d="M282.63,379.86V152.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H322.63C300.54,419.86,282.63,401.95,282.63,379.86z"/>
<path class="st25" d="M282.63,379.86V152.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H322.63C300.54,419.86,282.63,401.95,282.63,379.86z"/>
<path class="st23" d="M306.63,373.86V158.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H328.63C316.48,395.86,306.63,386.01,306.63,373.86z"/>
<circle class="st26" cx="436.26" cy="196.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

+529
View File
@@ -0,0 +1,529 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-size:57.9653px;}
.st17{font-family:'ArialMT';}
.st18{font-size:48.0099px;}
.st19{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st20{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st21{fill:#CACACF;}
.st22{font-size:57.6118px;}
.st23{font-size:28.8059px;}
.st24{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st25{fill:url(#SVGID_1_);}
.st26{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st27{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="447.59" y="980.12" class="st0" width="100.36" height="144"/>
<rect x="149.3" y="979.87" class="st1" width="200.4" height="144.5"/>
<rect x="148.3" y="980.12" class="st2" width="610" height="144"/>
<line class="st3" x1="148.3" y1="1052.12" x2="758.3" y2="1052.12"/>
<line class="st3" x1="349.7" y1="979.87" x2="349.7" y2="1124.62"/>
<line class="st3" x1="447.59" y1="980.12" x2="447.59" y2="1124.12"/>
<line class="st3" x1="547.95" y1="980.12" x2="547.95" y2="1124.12"/>
<line class="st3" x1="652.31" y1="980.12" x2="652.31" y2="1124.12"/>
</g>
<text transform="matrix(1 0 0 1 484.2485 1104.0178)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 379.4125 1035.6323)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 398.494 1042.218)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 573.6577 1036.5579)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 603.9448 1042.3801)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 672.8272 1037.0443)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 698.7891 1043.5347)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 459.5118 1036.1605)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 490.2037 1036.1605)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 377.6335 1102.9855)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 683.9442 1103.8079)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 577.0964 1103.0878)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 192.77 1033.2937)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 159.835 1100.1588)" class="st14 st8 st15 st13">Connect to</text>
<text transform="matrix(1 0 0 1 621.358 1029.8459)" class="st4 st8 st16">*</text>
</g>
<g id="sample">
<path class="st1" d="M359.2,884.55V854.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H396.03C375.69,921.37,359.2,904.89,359.2,884.55z"/>
<circle class="st1" cx="571.4" cy="867.83" r="13.2"/>
<circle class="st1" cx="334.24" cy="867.83" r="13.92"/>
<rect x="339.04" y="863.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 375.9231 882.3369)" class="st14 st17 st18">sample</text>
<text transform="matrix(1 0 0 1 375.9231 882.3369)" class="st14 st17 st18">sample</text>
<text transform="matrix(1 0 0 1 314.9065 933.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 550.8065 933.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
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" transform="matrix(0.811 0 0 0.811 150.9681 31.3352)">
</image>
<g>
<path class="st19" d="M463.5,464.27c0,169.35,36,238.46,70.7,266.48c40.91,33.05,121.58,51.36,46.08,122.02"/>
<path class="st20" d="M585.03,832.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S582.91,830.68,585.03,832.47z"/>
<path class="st21" d="M585.03,832.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S582.91,830.68,585.03,832.47z"/>
<text transform="matrix(1 0 0 1 494.5237 781.9326)" class="st4 st17 st22">V</text>
<text transform="matrix(1 0 0 1 525.658 787.7549)" class="st4 st8 st23">in</text>
</g>
<g>
<path class="st19" d="M480.3,464.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,29.95,132.44-21.61,151.89"/>
<path class="st20" d="M592.13,850.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.7,2.83,0.67,2.82,1.16,5.97c4.78-0.8,11.14-2.21,19.91-3.35c-1.57-5.07-2.24-7.01-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-2.8-5.24-5.42-7.18-8.3-12.57
c-6.86,5.48-15.15,12.54-15.15,12.54S590.89,848.29,592.13,850.56z"/>
<path class="st21" d="M592.13,850.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.51,3.95,0.74,2.71,1.16,5.97c8.26-1.38,11.32-1.92,19.91-3.35c-1.55-4.41-2.11-7.89-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-3.95-4.77-3.48-5.82-8.36-11.72
c-6.86,5.48-15.09,11.69-15.09,11.69S589.84,847.31,592.13,850.56z"/>
<text transform="matrix(1 0 0 1 658.619 747.4971)" class="st4 st17 st22">V</text>
<text transform="matrix(1 0 0 1 689.2664 755.0928)" class="st4 st8 st23">out</text>
</g>
<g>
<path class="st19" d="M426.87,464.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-38.2,155.09-11.45,165.35"/>
<path class="st20" d="M299.39,863.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S298,866.56,299.39,863.82z"/>
<path class="st21" d="M299.39,863.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S298,866.56,299.39,863.82z"/>
<text transform="matrix(1 0 0 1 215.6116 764.498)" class="st4 st17 st22">l</text>
<text transform="matrix(1 0 0 1 231.4627 770.6533)" class="st4 st8 st23">in</text>
</g>
<path class="st24" d="M257.05,394.27V150.19c0-38.66,31.34-70,70-70h244.08c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H327.05C288.39,464.27,257.05,432.93,257.05,394.27z"/>
<radialGradient id="SVGID_1_" cx="522.3735" cy="328.7182" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st25" d="M295.46,385.86V158.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H335.46C313.37,425.86,295.46,407.95,295.46,385.86z"/>
<path class="st26" d="M295.46,385.86V158.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H335.46C313.37,425.86,295.46,407.95,295.46,385.86z"/>
<path class="st24" d="M319.46,379.86V164.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H341.46C329.31,401.86,319.46,392.01,319.46,379.86z"/>
<circle class="st27" cx="449.09" cy="202.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

+515
View File
@@ -0,0 +1,515 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-family:'ArialMT';}
.st17{font-size:48.0099px;}
.st18{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st19{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st20{fill:#CACACF;}
.st21{font-size:57.4879px;}
.st22{font-size:28.744px;}
.st23{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st24{fill:url(#SVGID_1_);}
.st25{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st26{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="343.56" y="994.12" class="st0" width="97.89" height="144"/>
<rect x="646.18" y="994.12" class="st0" width="105.99" height="144"/>
<rect x="143.17" y="993.87" class="st1" width="200.4" height="144.5"/>
<rect x="142.17" y="994.12" class="st2" width="610" height="144"/>
<line class="st3" x1="142.17" y1="1066.12" x2="752.17" y2="1066.12"/>
<line class="st3" x1="343.56" y1="993.87" x2="343.56" y2="1138.62"/>
<line class="st3" x1="441.45" y1="994.12" x2="441.45" y2="1138.12"/>
<line class="st3" x1="541.82" y1="994.12" x2="541.82" y2="1138.12"/>
<line class="st3" x1="646.18" y1="994.12" x2="646.18" y2="1138.12"/>
</g>
<text transform="matrix(1 0 0 1 376.6109 1113.074)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 686.1163 1112.8851)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 373.2803 1049.6323)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 392.3619 1056.218)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 567.5255 1050.5579)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 597.8126 1056.3801)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 666.695 1051.0443)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 692.6569 1057.5347)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 453.3796 1050.1605)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 484.0715 1050.1605)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 471.1342 1117.0778)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 570.9642 1117.0878)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 186.6378 1047.2937)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 153.7028 1114.1588)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st1" d="M353.07,880.55V850.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H389.9C369.56,917.37,353.07,900.89,353.07,880.55z"/>
<circle class="st1" cx="565.27" cy="863.83" r="13.2"/>
<circle class="st1" cx="328.1" cy="863.83" r="13.92"/>
<rect x="332.91" y="859.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 369.791 878.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 369.791 878.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 308.7744 929.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 544.6743 929.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
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" transform="matrix(0.811 0 0 0.811 144.8359 27.3352)">
</image>
<g>
<path class="st18" d="M467.37,460.27c0,169.35,35.98,207.01,73.9,230.48c69.48,43,103.68,87.22,32.88,158.02"/>
<path class="st19" d="M578.89,828.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S576.78,826.68,578.89,828.47z"/>
<path class="st20" d="M578.89,828.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S576.78,826.68,578.89,828.47z"/>
<text transform="matrix(1.0022 0 0 1 618.0433 766.2085)" class="st4 st16 st21">V</text>
<text transform="matrix(1.0022 0 0 1 649.1771 772.0132)" class="st4 st8 st22">in</text>
</g>
<g>
<path class="st18" d="M434.96,460.27c4.2,94.6-58.48,192.95-120.78,241.22c-76.31,59.13-63.1,127.1,0,162.35"/>
<path class="st19" d="M293.26,859.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S291.87,862.56,293.26,859.82z"/>
<path class="st20" d="M293.26,859.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.45,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S291.87,862.56,293.26,859.82z"/>
<text transform="matrix(0.85 0 0 1 165.8872 762.1967)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 196.5791 762.1967)" class="st4 st8 st9">ef</text>
</g>
<path class="st23" d="M250.92,390.27V146.19c0-38.66,31.34-70,70-70H565c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H320.92C282.26,460.27,250.92,428.93,250.92,390.27z"/>
<radialGradient id="SVGID_1_" cx="514.8001" cy="323.7782" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st24" d="M289.33,381.86V154.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H329.33C307.24,421.86,289.33,403.95,289.33,381.86z"/>
<path class="st25" d="M289.33,381.86V154.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H329.33C307.24,421.86,289.33,403.95,289.33,381.86z"/>
<path class="st23" d="M313.33,375.86V160.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H335.33C323.18,397.86,313.33,388.01,313.33,375.86z"/>
<circle class="st26" cx="442.96" cy="198.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

+8 -2
View File
@@ -60,7 +60,7 @@ export default {
data () {
return {
isTopBar: false,
minimized: false,
minimized: true,
mobileWidth: 767,
}
},
@@ -87,7 +87,7 @@ export default {
},
},
mounted () {
this.minimized = true
},
}
</script>
@@ -134,3 +134,9 @@ export default {
}
}
</style>
<style lang='scss'>
// .layout.gutter--xl {
// padding: 0.5rem;
// }
</style>
+1 -1
View File
@@ -29,7 +29,7 @@ export default {
},
updateSidebarState () {
if (this.checkIsDesktop()) {
this.$emit('update:minimized', false)
this.$emit('update:minimized', true)
} else {
this.$emit('update:minimized', true)
}
+1 -10
View File
@@ -25,7 +25,7 @@
>
<!-- *** icon -->
<!-- <va-icon-vuestic /> -->
<img v-bind:src="'https://www.bioproweb.com/wp-content/uploads/2020/01/BPS-LOGO_60.png'">
<img src='@/assets/img/bps_logo.png'>
</router-link>
</div>
<!-- <img style="height: 40px;" v-bind:src="'https://www.bioproweb.com/wp-content/uploads/2020/01/BPS-LOGO_60.png'"> -->
@@ -44,15 +44,6 @@
contact@bioproweb.com
</a>
</span>
<!-- <va-button
href="https://github.com/epicmaxco/vuestic-admin"
color="#000000"
class="app-navbar__button"
icon="fa fa-github"
target="_blank"
>
{{$t('navbar.repository')}}
</va-button> -->
</div>
<app-navbar-actions
class="app-navbar__actions md5 lg4"
@@ -1,13 +1,15 @@
<template>
<div class="app-navbar-actions">
<!-- <color-dropdown class="app-navbar-actions__item"/> -->
<!-- <message-dropdown class="app-navbar-actions__item"/>
<notification-dropdown class="app-navbar-actions__item"/> -->
<!-- <settings-dropdown
<!-- <color-dropdown class="app-navbar-actions__item"/>
<message-dropdown class="app-navbar-actions__item"/>
<notification-dropdown class="app-navbar-actions__item"/>
<settings-dropdown
:is-top-bar.sync="isTopBarProxy"
class="app-navbar-actions__item"
/> -->
<!-- <language-dropdown class="app-navbar-actions__item"/> -->
/>
<language-dropdown class="app-navbar-actions__item"/> -->
<license-check-button :ref="'license_check_button_ref'" @updateLicense="updateLicense"/>
<license-update-modal :title="'Update'" :ref="'license_update_modal_ref'" @refresh="refresh"/>
<profile-dropdown class="app-navbar-actions__item app-navbar-actions__item--profile">
<span>{{userName}}</span>
</profile-dropdown>
@@ -16,11 +18,13 @@
<script>
// import LanguageDropdown from './dropdowns/LanguageDropdown'
import ProfileDropdown from './dropdowns/ProfileDropdown'
// import NotificationDropdown from './dropdowns/NotificationDropdown'
// import MessageDropdown from './dropdowns/MessageDropdown'
// import ColorDropdown from './dropdowns/ColorDropdown'
// import SettingsDropdown from './dropdowns/SettingsDropdown'
import ProfileDropdown from './dropdowns/ProfileDropdown'
import LicenseUpdateModal from './modals/LicenseUpdateModal'
import LicenseCheckButton from './buttons/LicenseCheckButton'
import { ColorThemeMixin } from '../../../../services/vuestic-ui'
export default {
@@ -33,6 +37,8 @@ export default {
// MessageDropdown,
// NotificationDropdown,
// LanguageDropdown,
LicenseCheckButton,
LicenseUpdateModal,
ProfileDropdown,
},
props: {
@@ -55,6 +61,16 @@ export default {
},
},
},
methods: {
updateLicense () {
this.$refs.license_update_modal_ref.show()
this.$refs.license_update_modal_ref.licenseUpdate()
},
refresh () {
this.$refs.license_check_button_ref.refresh()
this.$refs.license_update_modal_ref.hide()
},
},
}
</script>
@@ -0,0 +1,96 @@
<template>
<div v-if="!licenseCheck">
<va-button color="warning" class="mb-2" @click="licenseUpdateModalShow" small>
Update
</va-button>
</div>
</template>
<script>
import api from '@/data/api/index'
import { mapFields } from 'vuex-map-fields'
export default {
name: 'license-check-button',
components: {
},
computed: {
...mapFields('', [
'licenseCheck',
]),
},
data () {
return {
popoverShow: true,
licenseCheckObj: {
pass: true,
outdated: false,
fail: false,
},
authText: {
outdated: 'New version released. Update by pressing the button above.',
fail: 'System file is missing, contact us by following as: contact@bioproweb.com.',
},
toastOptions: {
theme: 'none',
position: 'bottom-center',
className: 'vuestic-toast',
iconPack: 'fontawesome',
duration: 2500,
},
}
},
methods: {
licenseUpdateModalShow () {
this.$emit('updateLicense')
},
showNotify (licenseCheckResponse) {
this.$toast(this.authText[licenseCheckResponse], {
closeButtonClassName: 'my-button-class',
containerClassName: 'my-container-class',
toastClassName: 'my-custom-toast-class',
timeout: false,
icon: 'fa fa-exclamation',
})
},
closeNotify () {
this.$toast.clear()
},
async refresh () {
this.closeNotify()
const licenseCheckResponse = await api.auth.licenseCheck()
this.licenseCheck = this.licenseCheckObj[licenseCheckResponse.data]
if (this.licenseCheck === false) {
this.showNotify(licenseCheckResponse.data)
}
},
},
async mounted () {
// await this.refresh()
},
destroyed () {
},
}
</script>
<style>
.Vue-Toastification__toast--default.my-custom-toast-class {
background-color: rgba(255, 214, 82, 1);
color: black;
}
.Vue-Toastification__container.top-right {
top: 3rem !important;
}
.my-button-class {
opacity: 1 !important;
color: black !important;
}
.custom-toast {
background-color: rgba(255, 214, 82, 1) !important;
transform: translateX(50px) translateY(-75px) !important;
color: black !important;
}
</style>
@@ -0,0 +1,74 @@
<template>
<va-modal
class="flex sm12 xl12 md12 xs12"
v-model="showModal"
:title="title"
noOutsideDismiss
hideDefaultActions
>
<div v-if="loading" class="row flex sm12 xl12 md12 xs12">
<div class="flex-center spinner-box mt-4 mb-5">
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
:color="'#6c7fee'"
:size="60"
>
</fulfilling-bouncing-circle-spinner>
</div>
</div>
<div v-else class="row flex sm12 xl12 md12 xs12">
{{ modalMessage }}
<div class="row flex-center sm12 xl12 md12 xs12 mt-2">
<va-button small @click="hide">close</va-button>
</div>
</div>
</va-modal>
</template>
<script>
import api from '@/data/api/index'
import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
export default {
name: 'license-check-modal',
components: {
FulfillingBouncingCircleSpinner,
},
props: {
title: {
type: String,
default: '',
},
},
data () {
return {
showModal: false,
hideDefaultActions: false,
loading: true,
modalMessage: '',
}
},
methods: {
show () {
this.showModal = true
},
hide () {
this.showModal = false
},
async licenseUpdate () {
this.hideDefaultActions = true
this.loading = true
const updateResponse = await api.auth.licenseUpdate()
console.log('updateResponse', updateResponse)
setTimeout(() => {
if (updateResponse.status === 200) {
this.loading = false
this.$emit('refresh')
} else if (updateResponse.status === 202 || updateResponse.status === 203) {
this.loading = false
this.modalMessage = 'An unknown error occurred while updating, please contact us by following as: contact@bioproweb.com'
}
}, 5000)
},
},
}
</script>
@@ -96,7 +96,7 @@ export default {
theme: 'info',
items: navigationRoutes.routes,
hoverState: false,
minimized: false,
minimized: true,
}
},
}
@@ -19,8 +19,8 @@ export const navigationRoutes = {
},
},
{
name: 'project-content',
displayName: 'Project',
name: 'task-content',
displayName: 'Task',
meta: {
iconClass: 'vuestic-iconset vuestic-iconset-statistics',
},
@@ -40,6 +40,13 @@ export const navigationRoutes = {
// },
// ],
},
// {
// name: 'task-content-g-m',
// displayName: 'Gimer',
// meta: {
// iconClass: 'vuestic-iconset vuestic-iconset-statistics',
// },
// },
{
name: 'file',
displayName: 'File',
@@ -47,6 +54,13 @@ export const navigationRoutes = {
iconClass: 'vuestic-iconset vuestic-iconset-files',
},
},
{
name: 'settings',
displayName: 'Settings',
meta: {
iconClass: 'vuestic-iconset vuestic-iconset-settings',
},
},
// {
// name: 'forms',
// displayName: 'menu.forms',
@@ -11,12 +11,26 @@
:to="to"
:target="target"
>
<va-icon
v-if="icon"
class="app-sidebar-link__item-icon"
:style="computedIconStyles"
:name="icon"
/>
<template v-if="title == 'Gimer'">
<img
v-if="this.isHovered || this.isActive"
class="app-sidebar-link__item-icon"
src="@/assets/img/gimer_white.png"
>
<img
v-else
class="app-sidebar-link__item-icon"
src="@/assets/img/gimer_gray.png"
>
</template>
<template v-else>
<va-icon
v-if="icon"
class="app-sidebar-link__item-icon"
:style="computedIconStyles"
:name="icon"
/>
</template>
<div class="app-sidebar-link__item-title" v-if="title">
<slot>
{{title}}
@@ -140,6 +154,21 @@ export default {
color: 'white',
}
},
computedGimerIcon () {
if (this.contextConfig.invertedColor) {
if (this.isHovered || this.isActive) {
return 'gimer_white.png'
}
return 'gimer_gray.png'
}
if (this.isHovered || this.isActive) {
return 'gimer_white.png'
}
return 'gimer_white.png'
},
},
methods: {
updateHoverState (isHovered) {
@@ -1,57 +0,0 @@
<template>
<div class="devices-overview">
<div >
<replay-chart-detail :cardheight="'82vh'"/>
<!-- <va-card class="area-style">
<template slot="header">
<va-icon name="fa fa-hdd-o mr-3" color="primary"/>
</template>
<replay-chart-detail />
</va-card> -->
</div>
</div>
</template>
<script>
import ReplayChartDetail from './ReplayChartDetail.vue'
export default {
name: 'data-replay',
components: {
ReplayChartDetail,
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
},
watch: {
},
async mounted () {
},
destroyed () {
},
}
</script>
<style lang="scss">
.area-style {
height: auto;
overflow-y: hidden;
overflow-x: hidden;
@include media-breakpoint-only(xl) {
height: 88vh;
overflow-y: scroll;
overflow-x: hidden;
}
}
</style>
@@ -1,60 +0,0 @@
<template>
<div class="flex" :class="cardclass">
<va-card>
<template slot="header">
<!-- <va-icon name="fa fa-area-chart mr-3" color="primary"/> -->
</template>
<chart :ref="'chart_ref'" :style="'width: '+ cardwidth + '; height: ' + cardheight + ';'" :options="data" :auto-resize="true"></chart>
</va-card>
</div>
</template>
<script>
// import { chartData } from '../../../../data/project/ChartsManagement'
export default {
name: 'replay-chart-detail',
components: {
},
props: {
data: {
type: Object,
default: function () {
return {}
},
},
cardclass: {
type: Array,
default: function () {
return ['xs12', 'md12', 'xl12', 'sm12']
},
},
cardheight: {
type: String,
default: '88vh',
},
cardwidth: {
type: String,
default: 'auto',
},
},
created () {
},
data () {
return {
}
},
computed: {
},
watch: {
},
methods: {
},
async mounted () {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,562 @@
<template>
<div>
<div class="row row-equal">
<div class="flex md12 xl3 xs12 sm12">
<div class="row">
<div class="flex sm12 xl12 md12 xs12">
<va-accordion>
<va-collapse class="mb-2" :isOpenDefault="true">
<span slot="header">Control Panel</span>
<div slot="body">
<div>
<top-control-panel :ref="'top_control_panel'" @refreshChart="setOption" @changeAxis="changeAxis" @changeOverviewDataZoom="changeOverviewDataZoom"/>
</div>
</div>
</va-collapse>
</va-accordion>
</div>
</div>
</div>
<div :class="chartAreaClass">
<div class="row" >
<div class="flex sm12 xl12 md12 xs12">
<elite-replay-overview-chart v-show="showOverviewChart" :ref="'chart_overview'" class="mb-1" :cardheight="'7vh'" :data="chartOverviewData" @dataZoomEvent="dataZoomEvent($event)"/>
<elite-replay-chart :ref="'chart_detail'" :cardheight="'88vh'" :chartheight="detailchartheight" :data="chartDetailData" />
<change-channel-value-min-max :ref="'set_min_max'"/>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { mapActions, mapGetters, mapMutations } from 'vuex'
import EliteReplayChart from './EliteReplayChart.vue'
import TopControlPanel from './TopControlPanel.vue'
import EliteReplayOverviewChart from './EliteReplayOverviewChart.vue'
import ChangeChannelValueMinMax from '@/components/analysis/replay/toolbox/ChangeChannelValueMinMax.vue'
import api from '@/data/api/index'
import { download } from '@/data/download/Download'
import types from '@/store/modules/analysis/replay/types'
import { mapFields } from 'vuex-map-fields'
export default {
name: 'elite-data-replay',
components: {
TopControlPanel,
EliteReplayChart,
EliteReplayOverviewChart,
ChangeChannelValueMinMax,
},
computed: {
displayType () {
return {
x: this.axisXLabelScale.description === 'Log' ? 'log' : 'value',
y: this.axisYLabelScale.description === 'Log' ? 'log' : 'value',
}
},
...mapFields('replay', [
'metaList',
'chartData',
'chartOverviewData',
'chartDetailData',
'currentScale',
'startTime',
'endTime',
'windowLength',
'axisXDataType',
'axisYDataType',
'axisXLabelScale',
'axisYLabelScale',
'absToggleStatus',
'startTimeCurrent',
'endTimeCurrent',
'sampleMethod',
]),
},
props: {
},
async created () {
this.chartOverviewData = await this.initChart({
chartAllData: this.chartData,
chartID: 0,
gridLength: 1,
type: 'overview',
device: 'elite',
mode: 0,
})
this.chartDetailData = await this.initChart({
chartAllData: this.chartData,
chartID: 1,
gridLength: 1,
type: 'detail',
device: 'elite',
mode: 0,
})
},
data () {
return {
showOverviewChart: false,
detailchartheight: '88vh',
dataInfo: {},
maxTime: 0,
zoomTime: 0,
initDone: false,
chartAreaClass: ['flex', 'xs12', 'sm12', 'md12', 'xl9', 'pa-0'],
}
},
mqtt: {
},
methods: {
turnOnAxisEventHandler (eventName, query, handler, attr) {
this.$refs.chart_detail.turnOnAxisEventHandler(eventName, query, handler, attr)
},
turnOffAxisEventHandler (eventName, handler, attr) {
this.$refs.chart_detail.turnOffAxisEventHandler(eventName, handler, attr)
},
showMinMaxPanel (params) {
this.$refs.set_min_max.showPanel(params)
},
setOption (options) {
this.$refs.chart_detail.mergeOptions(options)
},
showChartLoading: function (chart) {
const loadStyle = {
text: '',
color: '#cccccc',
maskColor: 'rgba(255, 255, 255, 0.8)',
zlevel: 0,
}
switch (chart) {
case 'overview':
this.$refs.chart_overview.showLoading(loadStyle)
break
case 'detail':
this.$refs.chart_detail.showLoading(loadStyle)
break
default:
this.$refs.chart_overview.showLoading(loadStyle)
this.$refs.chart_detail.showLoading(loadStyle)
break
}
},
hideChartLoading: function () {
this.$refs.chart_overview.hideLoading()
this.$refs.chart_detail.hideLoading()
},
getData: async function (scale, sampleMethod, id, channel, meta) {
if (scale === 1) {
return await download.rawByIDChannels(id, channel, meta)
} else {
if (sampleMethod === 'mean') {
return await download.miniMeanByIDChannel(id, channel, meta)
} else if (sampleMethod === 'random') {
return await download.miniRandomByIDChannel(id, channel, meta)
}
}
},
register: async function () {
// [TODO] support data source from different file
this.updateGridListChart({
chartAllData: this.chartData,
chartID: this.chartDetailData.chartID,
gridLength: this.metaList.length,
})
let _gridNumber = 0
const register = this.metaList.map(meta => {
const setting = this.GLOBAL.getDefaultChartTypeByMode(meta.parameter_set.MODE, meta.device.library_name)
const xType = setting[0] // Elite or Time
const yType = setting[2] // Elite or Time
const xValue = setting[1] // 1: I, 2: V, 3: R
const yValue = setting[3] // 1: I, 2: V, 3: R
console.log(setting)
this.registerChart({
chartAllData: this.chartData,
chartID: this.chartDetailData.chartID,
gridIndex: _gridNumber,
deviceNameX: xType,
deviceIDX: meta.name,
channelX: xValue,
deviceNameY: yType,
deviceIDY: '',
channelY: yValue,
})
JSON.parse(meta.channels).map(ch => {
this.registerChart({
chartAllData: this.chartData,
chartID: this.chartOverviewData.chartID,
gridIndex: 0,
deviceNameX: 'Time',
deviceNameY: 'Elite',
deviceIDY: meta.name,
channelY: ch,
})
})
this.chartDetailData.xAxis[_gridNumber].axisLabel.show = true
if (this.maxTime < parseInt(meta.time_duration)) {
this.maxTime = parseInt(meta.time_duration)
this.endTime = this.endTimeCurrent = this.maxTime
}
if (xType === 'Time') {
this.chartDetailData.xAxis[_gridNumber].min = 0
this.chartDetailData.xAxis[_gridNumber].max = this.maxTime
} else {
this.chartDetailData.xAxis[_gridNumber].min = 'dataMin'
this.chartDetailData.xAxis[_gridNumber].max = 'dataMax'
}
this.chartDetailData.yAxis[_gridNumber].min = 'dataMin'
this.chartDetailData.yAxis[_gridNumber].max = 'dataMax'
_gridNumber++
})
await Promise.all(register)
this.chartOverviewData.series.forEach((series, index) => { // [TODO]
this.chartOverviewData.xAxis[series.xAxisIndex].min = 0
this.chartOverviewData.xAxis[series.xAxisIndex].max = this.maxTime
})
this.updateDataZoomChart({
chartAllData: this.chartData,
chartID: 0,
})
this.updateDataZoomChart({
chartAllData: this.chartData,
chartID: 1,
})
},
dataZoomEvent: function (e) {
if (e.batch != null) {
// console.log(e.batch)
e.batch.forEach(dataZoom => {
const id = parseInt(dataZoom.dataZoomId.substr(dataZoom.dataZoomId.length - 3, dataZoom.dataZoomId.length - 1))
if (id === 1) {
this.startTime = parseInt(this.maxTime * dataZoom.start / 100)
this.endTime = parseInt(this.maxTime * dataZoom.end / 100)
this.windowLength = this.endTime - this.startTime
this.chartOverviewData.dataZoom[0].start = dataZoom.start
this.chartOverviewData.dataZoom[0].end = dataZoom.end
// console.log(this.startTime, this.endTime)
}
})
} else {
const id = parseInt(e.dataZoomId.substr(e.dataZoomId.length - 3, e.dataZoomId.length - 1))
if (id === 0) {
this.startTime = parseInt(this.maxTime * e.start / 100)
this.endTime = parseInt(this.maxTime * e.end / 100)
this.windowLength = this.endTime - this.startTime
this.chartOverviewData.dataZoom[0].start = e.start
this.chartOverviewData.dataZoom[0].end = e.end
// console.log(this.startTime, this.endTime)
}
}
this.zoomTime = 0
},
changeOverviewDataZoom () {
this.chartOverviewData.dataZoom[0].start = this.startTime * 100 / this.maxTime
this.chartOverviewData.dataZoom[0].end = this.endTime * 100 / this.maxTime
this.$refs.chart_overview.mergeOptions(this.chartOverviewData)
},
async computeResampleScale (meta, duration) {
const sampleRate = meta.parameter_set.SAMPLE_RATE / 10
const dataPointNum = (parseInt(duration) / 1e6) * sampleRate // us -> s: /1e6
let scale
if (dataPointNum > 2e6) { // 2000 (points) * 1000 (resample) = 2e6
scale = '1000'
} else if (dataPointNum > 2e5) { // 2000 (points) * 100 (resample) = 2e5
scale = '100'
} else if (dataPointNum > 2e4) { // 2000 (points) * 10 (resample) = 2e4
scale = '10'
} else {
scale = '1'
}
let dataExist = false
while (dataExist === false) {
if (scale === '1') {
break
} else {
let status
for (const ch in Object.keys(meta.mini_data)) {
let earlyStopFlag = false
const dataIDArray = meta.mini_data[ch][scale]
for (let i = 0; i < dataIDArray.length; i++) {
const dataID = dataIDArray[i]
const result = await download.getMiniExistOrNotByID(dataID, ch)
status = result.data
if (status === false) {
earlyStopFlag = true
scale = String(parseInt(scale) / 10)
break
}
}
if (earlyStopFlag === true) {
break
}
}
if (status === true) {
dataExist = true // break
}
}
}
return scale
},
drawOverviewData: async function () {
this.showChartLoading('overview')
for (const meta in this.dataInfo) {
let metaInfo
this.metaList.forEach(_meta => {
if (parseInt(_meta.id) === parseInt(meta)) {
metaInfo = _meta
}
})
let scale = '1'
if (this.axisXDataType.description === 'Time') {
scale = await this.computeResampleScale(metaInfo, metaInfo.time_duration)
}
console.log('overview scale:', scale)
// download data
const getAllData = async function (_this) {
for (const ch in _this.dataInfo[meta]) {
const dataList = _this.dataInfo[meta][ch][scale]
for (let i = 0; i < dataList.length; i++) {
if (dataList[i].data.length === 0) {
_this.intoDataRec({
index: i,
metaID: meta,
channel: ch,
scale: scale,
data: await _this.getData(parseInt(scale), _this.sampleMethod, dataList[i].id, ch, metaInfo),
})
}
}
}
}
await getAllData(this)
// push downloaded data to chart series
let seriesIndex = 0
for (const ch in this.dataInfo[meta]) {
this.chartOverviewData.series[seriesIndex].data.length = 0
const dataList = this.dataInfo[meta][ch][scale]
for (let i = 0; i < dataList.length; i++) {
this.chartOverviewData.series[seriesIndex].data.push(...dataList[i].data)
}
seriesIndex++
}
}
this.hideChartLoading()
},
drawDetailData: async function () {
this.showChartLoading('detail')
const timeDur = this.endTimeCurrent - this.startTimeCurrent
let _gridNumber = 0
for (const meta in this.dataInfo) {
let metaInfo
this.metaList.forEach(_meta => {
if (parseInt(_meta.id) === parseInt(meta)) {
metaInfo = _meta
}
})
let scale = '1'
if (this.axisXDataType.description === 'Time') {
scale = await this.computeResampleScale(metaInfo, timeDur)
}
// elitesample rateneulivescale = 100 or 1000samplinge.g. peak
if (scale === '100' || scale === '1000') {
this.updateChartSamplingChart({ chartID: this.chartDetailData.chartID, seriesIndex: _gridNumber, method: null })
} else {
this.updateChartSamplingChart({ chartID: this.chartDetailData.chartID, seriesIndex: _gridNumber, method: 'lttb' })
}
if (metaInfo.device.library_name === 'EliteEIS' && metaInfo.parameter_set.MODE === 0) {
this.chartDetailData.series[this.chartDetailData.series.length - 1].showSymbol = true
this.chartDetailData.series[this.chartDetailData.series.length - 1].showAllSymbol = true
this.chartDetailData.series[this.chartDetailData.series.length - 1].symbolSize = 6
}
this.currentScale = scale
this.chartDetailData.series[_gridNumber].data.length = 0
let dataListX
const channelX = parseInt(this.axisXDataType.id)
if (this.axisXDataType.description !== 'Time') {
dataListX = this.dataInfo[meta][channelX][scale]
}
const channelY = parseInt(this.axisYDataType.id)
const dataListY = this.dataInfo[meta][channelY][scale]
const isThisModeHasCycle = this.GLOBAL.hasCycleMode(metaInfo.parameter_set.MODE, metaInfo.device.library_name)
let _startTime
let _endTime
if (isThisModeHasCycle === true) {
const cycleDataID = 3 // recorded cycle channel index
const dataCycleList = this.dataInfo[meta][cycleDataID][this.currentScale]
const cycleDataList = []
for (let i = 0; i < dataCycleList.length; i++) {
if (dataCycleList[i].data.length === 0) {
const data = await this.getData(parseInt(this.currentScale), this.sampleMethod, dataCycleList[i].id, cycleDataID, metaInfo)
cycleDataList.push({ data: data })
} else {
cycleDataList.push({ data: dataCycleList[i].data })
}
}
const cycleDict = this.getCycleDictRec()(cycleDataList)
_startTime = cycleDict[1][0] // [1]:
_endTime = cycleDict[1][1] // [1]:
} else {
_startTime = this.startTimeCurrent
_endTime = this.endTimeCurrent
}
let startIndex = 0
let endIndex = 0
// get the subfile index
for (let i = 0; i < dataListY.length; i++) {
if (_startTime >= parseInt(dataListY[i].start_time) && _startTime <= parseInt(dataListY[i].end_time)) {
startIndex = i
}
if (_endTime >= parseInt(dataListY[i].start_time) && _endTime <= parseInt(dataListY[i].end_time)) {
endIndex = i
}
}
// download and push into chart
for (let i = startIndex; i <= endIndex; i++) {
const data = await this.getData(parseInt(scale), this.sampleMethod, dataListY[i].id, channelY, metaInfo)
let dataX
if (this.axisXDataType.description !== 'Time') {
dataX = await this.getData(parseInt(scale), this.sampleMethod, dataListX[i].id, channelX, metaInfo)
}
for (let j = 0, len = data.length; j < len; j++) {
// check which channel and push processed data (i.e. merge two channel data, now data is (time, value) format)
if (parseInt(data[j][0]) >= _startTime && parseInt(data[j][0]) <= _endTime) {
const processedData = data[j]
if (dataX !== undefined) {
processedData[0] = dataX[j][1]
}
if (this.displayType.x === 'log' || this.absToggleStatus.x === true) {
processedData[0] = Math.abs(processedData[0])
}
if (this.displayType.y === 'log' || this.absToggleStatus.y === true) {
processedData[1] = Math.abs(processedData[1])
}
this.chartDetailData.series[_gridNumber].data.push(processedData)
}
}
}
if (this.axisXDataType.description === 'Time') {
this.chartDetailData.xAxis[_gridNumber].min = _startTime
this.chartDetailData.xAxis[_gridNumber].max = _endTime
} else {
this.chartDetailData.xAxis[_gridNumber].min = 'dataMin'
this.chartDetailData.xAxis[_gridNumber].max = 'dataMax'
}
_gridNumber += 1
}
if (this.axisXDataType.description !== 'Time') {
this.showOverviewChart = false
this.detailchartheight = '88vh'
// this.$refs.chart_detail.updateChartHeight()
this.turnOnAxisEventHandler('click', 'xAxis.axisLabel', this.showMinMaxPanel, { axis: 'x' })
} else {
this.showOverviewChart = true
this.detailchartheight = '80vh'
this.turnOffAxisEventHandler('click', this.showMinMaxPanel, { axis: 'x' })
this.turnOnAxisEventHandler('click', 'yAxis.axisLabel', this.showMinMaxPanel, { axis: 'y' })
}
this.hideChartLoading()
},
checkDataZoom: function () {
this.zoomTime++
if (this.zoomTime >= 2) {
if (this.startTimeCurrent !== this.startTime || this.endTimeCurrent !== this.endTime) {
this.startTimeCurrent = this.startTime
this.endTimeCurrent = this.endTime
this.drawDetailData()
}
}
},
changeAxis (gridIndex) {
if (this.initDone) {
const libName = this.metaList[gridIndex].device.library_name
let xType
let xValue
if (this.axisXDataType.description === 'Time') {
xType = 'Time'
} else {
if (libName === 'EliteZM15') {
xType = 'Elite'
} else if (libName === 'EliteEIS') {
xType = 'EliteEIS'
}
xValue = this.axisXDataType.id + 1
}
this.updateRegisteredChart({
chartAllData: this.chartData,
chartID: this.chartDetailData.chartID,
gridIndex: gridIndex,
deviceNameX: xType,
deviceIDX: this.metaList[gridIndex].name,
channelX: xValue,
deviceNameY: libName === 'EliteEIS' ? 'EliteEIS' : 'Elite',
deviceIDY: '',
channelY: this.axisYDataType.id + 1,
})
}
if (this.axisXDataType.description === 'Time') {
this.drawOverviewData()
}
this.drawDetailData() // reDraw
},
...mapActions('replay', [types.chart.init, types.chart.register, types.chart.clear, types.chart.updateGridList, types.chart.updateDataZoom, types.chart.setAxisDisplay]),
...mapActions('replay', [types.meta.init]),
...mapActions('replay', [types.rec.init, types.rec.intoData, types.rec.initDisplaySetting, types.rec.updateDisplaySetting]),
...mapMutations('replay', [types.chart.updateRegistered, types.chart.updateAxisSplitNumber, types.chart.updateChartSampling, types.chart.setOverviewDataZoomStartAndEnd]),
...mapMutations('replay', [types.meta.updateByIndex]),
...mapGetters('replay', [types.meta.getAll]),
...mapGetters('replay', [types.rec.getAll, types.rec.getCycleDict]),
},
async mounted () {
this.showChartLoading()
const metaIDList = this.$route.params.metaList.split('-')
await this.initMeta({ metaIDList: metaIDList, api: api })
this.metaList = this.getAllMeta()
await this.initRec({ api: api })
this.dataInfo = this.getAllRec()
console.log(this.metaList)
console.log(this.dataInfo)
await this.register()
this.setOverviewDataZoomStartAndEndChart()
this.$refs.top_control_panel.init() // will call changeAxis() here
this.$refs.set_min_max.init()
this.turnOnAxisEventHandler('click', 'yAxis.axisLabel', this.showMinMaxPanel, { axis: 'y' })
this.updateAxisSplitNumberChart({ chartID: this.chartDetailData.chartID, axis: 'x' })
this.updateAxisSplitNumberChart({ chartID: this.chartDetailData.chartID, axis: 'y' })
this.dataZoomTimer = setInterval(this.checkDataZoom, 1000)
this.initDone = true
console.log(this.chartOverviewData)
console.log(this.chartDetailData)
},
beforeDestroy () {
this.$refs.chart_overview.clear()
this.$refs.chart_detail.clear()
for (const id in this.chartData) {
for (const _series of this.chartData[id].series) {
_series.length = 0
}
delete this.chartData[id]
}
this.clearChart({ chartAllData: this.chartData })
this.startTime = 0
this.endTime = 0
this.windowLength = 0
},
destroyed () {
clearInterval(this.dataZoomTimer)
},
}
</script>
@@ -0,0 +1,113 @@
<template>
<div class="flex" :class="cardclass">
<va-card :style="'height: ' + cardheight + ';'">
<chart :ref="'chart_ref'" :style="'width: '+ cardwidth + '; height: ' + chartheight + ';'" :options="data" @dataZoom="updateZoom" :auto-resize="true"></chart>
</va-card>
</div>
</template>
<script>
import { mapMutations } from 'vuex'
import types from '@/store/modules/analysis/replay/types'
export default {
name: 'elite-replay-chart',
components: {
},
props: {
data: {
type: Object,
default: function () {
return {}
},
},
cardclass: {
type: Array,
default: function () {
return ['xs12', 'md12', 'xl12', 'sm12']
},
},
cardheight: {
type: String,
default: '88vh',
},
cardwidth: {
type: String,
default: 'auto',
},
chartheight: {
type: String,
default: '88vh',
},
},
created () {
},
data () {
return {
}
},
computed: {
},
watch: {
},
methods: {
resize: function () {
if (this.$refs.chart_ref != null) {
this.$refs.chart_ref.resize()
}
},
updateZoom: function (e) {
this.$emit('dataZoomEvent', e)
},
mergeOptions (options) {
this.$refs.chart_ref.mergeOptions(options)
},
turnOnAxisEventHandler (eventName, query, handler, attr) {
const chartID = 1
this.updateAxisEventHandlerChart({
chartID: chartID,
axis: attr.axis,
status: 'on',
})
// doc: https://echarts.apache.org/zh/api.html#echartsInstance.on
this.$refs.chart_ref.chart._zr.on(eventName, query, handler)
},
turnOffAxisEventHandler (eventName, handler, attr) {
const chartID = 1
this.updateAxisEventHandlerChart({
chartID: chartID,
axis: attr.axis,
status: 'off',
})
// doc: https://echarts.apache.org/zh/api.html#echartsInstance.off
this.$refs.chart_ref.chart._zr.off(eventName, handler)
},
showLoading (options) {
this.$refs.chart_ref.showLoading(options)
},
hideLoading () {
this.$refs.chart_ref.hideLoading()
},
clear () {
this.$refs.chart_ref.clear()
},
...mapMutations('replay', [types.chart.updateAxisEventHandler]),
},
async mounted () {
this.resizeTimer = setInterval(this.resize, 1000)
},
destroyed () {
clearInterval(this.resizeTimer)
},
}
</script>
<style lang='scss'>
.va-card {
&__body {
padding-top: 0.25rem;
}
}
</style>
@@ -0,0 +1,85 @@
<template>
<div class="flex" :class="cardclass">
<va-card :style="'height: 8vh;'">
<chart :ref="'chart_ref'" :style="'width: '+ cardwidth + '; height: ' + cardheight + ';'" :options="data" @dataZoom="updateZoom" :auto-resize="true"></chart>
</va-card>
</div>
</template>
<script>
export default {
name: 'elite-replay-overview-chart',
components: {
},
props: {
data: {
type: Object,
default: function () {
return {}
},
},
cardclass: {
type: Array,
default: function () {
return ['xs12', 'md12', 'xl12', 'sm12']
},
},
cardheight: {
type: String,
default: '82vh',
},
cardwidth: {
type: String,
default: 'auto',
},
},
created () {
},
data () {
return {
}
},
computed: {
},
watch: {
},
methods: {
resize: function () {
if (this.$refs.chart_ref != null) {
this.$refs.chart_ref.resize()
}
},
updateZoom: function (e) {
this.$emit('dataZoomEvent', e)
},
mergeOptions (options) {
this.$refs.chart_ref.mergeOptions(options)
},
showLoading (options) {
this.$refs.chart_ref.showLoading(options)
},
hideLoading () {
this.$refs.chart_ref.hideLoading()
},
clear () {
this.$refs.chart_ref.clear()
},
},
async mounted () {
this.resizeTimer = setInterval(this.resize, 1000)
},
destroyed () {
clearInterval(this.resizeTimer)
},
}
</script>
<style lang='scss'>
.va-card {
&__body {
padding: 0.75rem;
}
}
</style>
@@ -0,0 +1,168 @@
<template>
<div>
<va-card>
<div class="flex-container mb-1">
<div class="flex sm8 xl8 md8 xs8 px-0 py-0">
<edit-file-name :ref="'edit_file_name'"/>
</div>
<div class="flex sm2 xl2 md2 xs2 px-0 py-0">
<download-file style="float: right;" />
</div>
<div class="flex sm2 xl2 md2 xs2 px-0 py-0">
<delete-file />
</div>
</div>
<div class="flex-container mb-2">
<div class="flex sm2 xl2 md2 xs2 px-0 py-0">
<p class="display-6"> X-axis <p/>
</div>
<div class="flex sm5 xl5 md5 xs5 pl-1 pr-0 py-0">
<change-axis :ref="'change_axis_x'" axis="x" @changeAxis="changeAxis" @changeUnit="changeUnit" @clearCycle="clearCycle"/>
</div>
<div class="flex sm5 xl5 md5 xs5 pl-1 pr-0 py-0">
<change-unit :ref="'change_unit_x'" axis="x" @refreshChart="refreshChart"/>
</div>
</div>
<div class="flex-container mb-2">
<div class="flex sm2 xl2 md2 xs2 px-0 py-0" />
<div class="flex sm5 xl5 md5 xs5 pl-1 pr-0 py-0">
<change-scale :ref="'change_scale_x'" axis="x" @refreshChart="refreshChart" @clearCycle="clearCycle" @changeAxis="changeAxis"/>
</div>
<div class="flex sm5 xl5 md5 xs5 px-0 py-0">
<abs-toggle :ref="'abs_x'" axis="x" @changeAxis="changeAxis"/>
</div>
</div>
<div class="flex-container mb-2">
<div class="flex sm2 xl2 md2 xs2 px-0 py-0">
<p class="display-6"> Y-axis <p/>
</div>
<div class="flex sm5 xl5 md5 xs5 pl-1 pr-0 py-0">
<change-axis :ref="'change_axis_y'" axis="y" @changeAxis="changeAxis" @changeUnit="changeUnit" @clearCycle="clearCycle"/>
</div>
<div class="flex sm5 xl5 md5 xs5 pl-1 pr-0 py-0">
<change-unit :ref="'change_unit_y'" axis="y" @refreshChart="refreshChart"/>
</div>
</div>
<div class="flex-container mb-2">
<div class="flex sm2 xl2 md2 xs2 px-0 py-0" />
<div class="flex sm5 xl5 md5 xs5 pl-1 pr-0 py-0">
<change-scale :ref="'change_scale_y'" axis="y" @refreshChart="refreshChart" @clearCycle="clearCycle" @changeAxis="changeAxis"/>
</div>
<div class="flex sm5 xl5 md5 xs5 px-0 py-0">
<abs-toggle :ref="'abs_y'" axis="y" @changeAxis="changeAxis"/>
</div>
</div>
<div class="flex-container mb-2">
<div class="flex sm10 xl10 md10 xs10 px-0 py-0">
<change-window-start-and-size :ref="'change_window_start_and_size'" @changeOverviewDataZoom="changeOverviewDataZoom"/>
</div>
<div class="flex sm1 xl1 md1 xs1 px-0 py-0">
<lock-data-zoom :chartID="0"/>
</div>
</div>
<change-cycle v-show="showCyclePanel" :ref="'change_cycle'" @refreshChart="refreshChart"/>
<show-resample-rate/>
<show-parameter :ref="'show_param'"/>
</va-card>
</div>
</template>
<script>
import ShowResampleRate from '@/components/analysis/replay/toolbox/ShowResampleRate.vue'
import ChangeAxis from '@/components/analysis/replay/toolbox/ChangeAxis.vue'
import ChangeUnit from '@/components/analysis/replay/toolbox/ChangeUnit.vue'
import ChangeScale from '@/components/analysis/replay/toolbox/ChangeScale.vue'
import ChangeCycle from '@/components/analysis/replay/toolbox/ChangeCycle.vue'
import AbsToggle from '@/components/analysis/replay/toolbox/AbsToggle.vue'
import DownloadFile from '@/components/analysis/replay/toolbox/DownloadFile.vue'
import DeleteFile from '@/components/analysis/replay/toolbox/DeleteFile.vue'
import EditFileName from '@/components/analysis/replay/toolbox/EditFileName.vue'
import ShowParameter from '@/components/analysis/replay/toolbox/ShowParameter.vue'
import LockDataZoom from '@/components/analysis/replay/toolbox/LockDataZoom.vue'
import ChangeWindowStartAndSize from '@/components/analysis/replay/toolbox/ChangeWindowStartAndSize.vue'
import { mapFields } from 'vuex-map-fields'
export default {
name: 'top-control-panel',
components: {
ShowResampleRate,
ChangeAxis,
ChangeUnit,
ChangeScale,
ChangeCycle,
AbsToggle,
DownloadFile,
DeleteFile,
EditFileName,
ShowParameter,
LockDataZoom,
ChangeWindowStartAndSize,
},
computed: {
...mapFields('replay', [
'metaList',
'showCyclePanel',
]),
},
props: {
},
async created () {
},
data () {
return {
deviceName: '',
showCycle: false,
}
},
mqtt: {
},
methods: {
init () {
this.deviceName = this.metaList[0].device.library_name
this.$refs.change_axis_x.init(this.deviceName)
this.$refs.change_axis_y.init(this.deviceName)
this.$refs.change_unit_x.init(this.deviceName)
this.$refs.change_unit_y.init(this.deviceName)
this.$refs.change_scale_x.init(this.deviceName)
this.$refs.change_scale_y.init(this.deviceName)
this.$refs.abs_x.init(this.deviceName)
this.$refs.abs_y.init(this.deviceName)
this.$refs.change_cycle.init()
this.$refs.edit_file_name.init()
this.$refs.show_param.init(this.deviceName)
this.$refs.change_window_start_and_size.init()
},
changeOverviewDataZoom () {
this.$emit('changeOverviewDataZoom')
},
refreshChart (options) {
this.$emit('refreshChart', options)
},
changeAxis (gridIndex) {
this.$emit('changeAxis', gridIndex)
},
changeUnit (axis) {
if (axis === 'x') {
this.$refs.change_unit_x.changeUnitByAxis()
} else if (axis === 'y') {
this.$refs.change_unit_y.changeUnitByAxis()
}
},
clearCycle () {
this.$refs.change_cycle.clear()
},
},
mounted () {
},
}
</script>
<style lang="scss">
.flex-container {
display: flex;
align-items: center;
}
</style>
@@ -0,0 +1,530 @@
<template>
<div>
<div class="row row-equal">
<div class="flex md12 xl3 xs12 sm12">
<div class="row">
<div class="flex sm12 xl12 md12 xs12">
<va-accordion>
<va-collapse class="mb-2" :isOpenDefault="true">
<span slot="header">Control Panel</span>
<div slot="body">
<div>
<top-control-panel :ref="'top_control_panel'" @refreshChart="setOption" @changeOverviewDataZoom="changeOverviewDataZoom"/>
</div>
</div>
</va-collapse>
</va-accordion>
</div>
</div>
</div>
<div :class="chartAreaClass">
<div class="row" >
<div class="flex sm12 xl12 md12 xs12">
<neulive-replay-overview-chart :ref="'chart_overview'" class="mb-1" :cardheight="'7vh'" :data="chartOverviewData" @dataZoomEvent="dataZoomEvent($event)"/>
<neulive-replay-chart :ref="'chart_detail'" @dblclick.native="distribute()" :cardheight="'80vh'" :data="chartDetailData" @dataZoomEvent="updateMarkArea($event)" />
<change-channel-value-min-max :ref="'set_min_max'"/>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { mapActions, mapGetters, mapMutations } from 'vuex'
import NeuliveReplayChart from './NeuliveReplayChart.vue'
import NeuliveReplayOverviewChart from './NeuliveReplayOverviewChart.vue'
import TopControlPanel from './TopControlPanel.vue'
import ChangeChannelValueMinMax from '@/components/analysis/replay/toolbox/ChangeChannelValueMinMax.vue'
import api from '@/data/api/index'
import { download } from '@/data/download/Download'
import types from '@/store/modules/analysis/replay/types'
import { mapFields } from 'vuex-map-fields'
export default {
name: 'neulive-data-replay',
components: {
NeuliveReplayChart,
NeuliveReplayOverviewChart,
TopControlPanel,
ChangeChannelValueMinMax,
},
computed: {
displayType () {
return {
x: this.axisXLabelScale.description === 'Log' ? 'log' : 'value',
y: this.axisYLabelScale.description === 'Log' ? 'log' : 'value',
}
},
...mapFields('replay', [
'chartData',
'chartOverviewData',
'chartDetailData',
'currentScale',
'startTime',
'endTime',
'windowLength',
'axisXLabelScale',
'axisYLabelScale',
'startTimeCurrent',
'endTimeCurrent',
'sampleMethod',
'useSdCardData',
]),
},
props: {
},
async created () {
this.chartOverviewData = await this.initChart({
chartAllData: this.chartData,
chartID: 0,
gridLength: 1,
type: 'overview',
device: 'neulive',
mode: 0,
})
this.chartDetailData = await this.initChart({
chartAllData: this.chartData,
chartID: 1,
gridLength: 1,
type: 'detail',
device: 'neulive',
mode: 0,
})
},
data () {
return {
metaList: null,
dataInfo: {},
maxTime: 0,
zoomTime: 0,
chartAreaClass: ['flex', 'xs12', 'sm12', 'md12', 'xl9', 'pa-0'],
dataZoomStart: 0,
dataZoomEnd: 100,
inDistributeMode: false,
}
},
mqtt: {
},
methods: {
turnOnAxisEventHandler (eventName, query, handler, attr) {
this.$refs.chart_detail.turnOnAxisEventHandler(eventName, query, handler, attr)
},
showMinMaxPanel (params) {
this.$refs.set_min_max.showPanel(params)
},
setOption (options) {
this.$refs.chart_detail.mergeOptions(options)
},
showChartLoading: function (chart) {
const loadStyle = {
text: '',
color: '#cccccc',
maskColor: 'rgba(255, 255, 255, 0.8)',
zlevel: 0,
}
switch (chart) {
case 'overview':
this.$refs.chart_overview.showLoading(loadStyle)
break
case 'detail':
this.$refs.chart_detail.showLoading(loadStyle)
break
default:
this.$refs.chart_overview.showLoading(loadStyle)
this.$refs.chart_detail.showLoading(loadStyle)
break
}
},
hideChartLoading: function () {
this.$refs.chart_overview.hideLoading()
this.$refs.chart_detail.hideLoading()
},
getData: async function (scale, sampleMethod, id, channel, meta) {
if (scale === 1) {
// [TODO] 0: assume first meta temporarily
if (this.useSdCardData && (this.metaList[0].sd_data_uploaded === true)) {
return await download.rawSdDataByIDChannels(id, channel, meta)
} else {
return await download.rawByIDChannels(id, channel, meta)
}
} else {
if (sampleMethod === 'mean') {
return await download.miniMeanByIDChannel(id, channel, meta)
} else if (sampleMethod === 'random') {
return await download.miniRandomByIDChannel(id, channel, meta)
}
}
},
register: async function () {
let chNumber = 0
this.metaList.forEach(meta => {
chNumber += JSON.parse(meta.channels).length
})
this.updateGridListChart({
chartAllData: this.chartData,
chartID: this.chartDetailData.chartID,
gridLength: chNumber,
})
let _chNumber = 0
// console.log(this.chartDetailData)
const register = this.metaList.map(meta => {
this.metaList.map(meta => {
JSON.parse(meta.channels).map(ch => {
this.registerChart({
chartAllData: this.chartData,
chartID: this.chartDetailData.chartID,
gridIndex: _chNumber,
deviceNameX: 'Time',
deviceNameY: 'Neulive',
deviceIDY: meta.name,
channelY: ch,
})
this.registerChart({
chartAllData: this.chartData,
chartID: this.chartOverviewData.chartID,
gridIndex: 0,
deviceNameX: 'Time',
deviceNameY: 'Neulive',
deviceIDY: meta.name,
channelY: ch,
})
_chNumber++
})
})
if (this.maxTime < parseInt(meta.time_duration)) {
this.maxTime = parseInt(meta.time_duration)
this.endTime = this.endTimeCurrent = this.maxTime
}
})
await Promise.all(register)
this.chartDetailData.series.forEach((series, index) => {
this.chartDetailData.xAxis[series.xAxisIndex].min = 0
this.chartDetailData.xAxis[series.xAxisIndex].max = this.maxTime
})
this.chartOverviewData.series.forEach((series, index) => {
this.chartOverviewData.xAxis[series.xAxisIndex].min = 0
this.chartOverviewData.xAxis[series.xAxisIndex].max = this.maxTime
})
this.chartDetailData.xAxis[this.chartDetailData.xAxis.length - 1].axisLabel.show = true
this.updateDataZoomChart({
chartAllData: this.chartData,
chartID: 0,
})
this.updateDataZoomChart({
chartAllData: this.chartData,
chartID: 1,
})
},
updateMarkArea: function (e) {
// console.log(e)
if (e.batch != null) {
// console.log(e.batch)
e.batch.forEach(dataZoom => {
const id = parseInt(dataZoom.dataZoomId.substr(dataZoom.dataZoomId.length - 3, dataZoom.dataZoomId.length - 1))
if (id === 1) {
this.dataZoomStart = dataZoom.start
this.dataZoomEnd = dataZoom.end
const startTime = (this.endTime - this.startTime) * dataZoom.start / 100
const endTime = (this.endTime - this.startTime) * dataZoom.end / 100
this.chartOverviewData.series[0].markArea.data[0][0].xAxis = this.startTime + startTime
this.chartOverviewData.series[0].markArea.data[0][1].xAxis = this.startTime + endTime
// console.log(this.startTime, this.endTime)
}
})
} else {
const id = parseInt(e.dataZoomId.substr(e.dataZoomId.length - 3, e.dataZoomId.length - 1))
if (id === 0) {
this.dataZoomStart = e.start
this.dataZoomEnd = e.end
const startTime = (this.endTime - this.startTime) * e.start / 100
const endTime = (this.endTime - this.startTime) * e.end / 100
this.chartOverviewData.series[0].markArea.data[0][0].xAxis = this.startTime + startTime
this.chartOverviewData.series[0].markArea.data[0][1].xAxis = this.startTime + endTime
// console.log(this.startTime, this.endTime)
}
}
},
dataZoomEvent: function (e) {
// console.log(e)
if (e.batch != null) {
// console.log(e.batch)
e.batch.forEach(dataZoom => {
const id = parseInt(dataZoom.dataZoomId.substr(dataZoom.dataZoomId.length - 3, dataZoom.dataZoomId.length - 1))
if (id === 1) {
this.startTime = parseInt(this.maxTime * dataZoom.start / 100)
this.endTime = parseInt(this.maxTime * dataZoom.end / 100)
this.windowLength = this.endTime - this.startTime
this.chartOverviewData.dataZoom[0].start = dataZoom.start
this.chartOverviewData.dataZoom[0].end = dataZoom.end
// console.log(this.startTime, this.endTime)
}
})
} else {
const id = parseInt(e.dataZoomId.substr(e.dataZoomId.length - 3, e.dataZoomId.length - 1))
if (id === 0) {
this.startTime = parseInt(this.maxTime * e.start / 100)
this.endTime = parseInt(this.maxTime * e.end / 100)
this.windowLength = this.endTime - this.startTime
this.chartOverviewData.dataZoom[0].start = e.start
this.chartOverviewData.dataZoom[0].end = e.end
// console.log(this.startTime, this.endTime)
}
}
this.chartOverviewData.series[0].markArea.data[0][0].xAxis = this.startTime + ((this.endTime - this.startTime) * (this.dataZoomStart / 100))
this.chartOverviewData.series[0].markArea.data[0][1].xAxis = this.startTime + ((this.endTime - this.startTime) * (this.dataZoomEnd / 100))
this.zoomTime = 0
},
changeOverviewDataZoom () {
this.chartOverviewData.dataZoom[0].start = this.startTime * 100 / this.maxTime
this.chartOverviewData.dataZoom[0].end = this.endTime * 100 / this.maxTime
this.chartOverviewData.series[0].markArea.data[0][0].xAxis = this.startTime + ((this.endTime - this.startTime) * (this.dataZoomStart / 100))
this.chartOverviewData.series[0].markArea.data[0][1].xAxis = this.startTime + ((this.endTime - this.startTime) * (this.dataZoomEnd / 100))
this.$refs.chart_overview.mergeOptions(this.chartOverviewData)
},
drawInitData: async function () {
this.showChartLoading('overview')
for (const meta in this.dataInfo) {
let metaInfo
this.metaList.forEach(_meta => {
if (parseInt(_meta.id) === parseInt(meta)) {
metaInfo = _meta
}
})
let scale = '1000'
const sampleRate = (metaInfo.parameter_set.SAMPLE_RATE === 0) ? parseInt(8e5 / metaInfo.parameter_set.ADC_CLOCK) : metaInfo.parameter_set.SAMPLE_RATE // Hz
const dataPointNum = (parseInt(metaInfo.time_duration) / 1e6) * sampleRate // us -> s: /1e6
if (dataPointNum > 2e6) { // 2000 (points) * 1000 (resample) = 2e6
scale = '1000'
} else if (dataPointNum > 2e5) { // 2000 (points) * 100 (resample) = 2e5
scale = '100'
} else if (dataPointNum > 2e4) { // 2000 (points) * 10 (resample) = 2e4
scale = '10'
} else {
scale = '1'
}
this.currentScale = scale
console.log('overview scale:', scale)
const getAllData = async function (_this) {
let seriesIndex = 0
for (const ch in _this.dataInfo[meta]) {
const dataList = _this.dataInfo[meta][ch][scale]
for (let i = 0; i < dataList.length; i++) {
_this.intoDataRec({
index: i,
metaID: meta,
channel: ch,
scale: scale,
data: await _this.getData(parseInt(scale), _this.sampleMethod, dataList[i].id, ch, metaInfo),
})
_this.chartOverviewData.series[seriesIndex].data.push(...dataList[i].data)
_this.chartDetailData.series[seriesIndex].data.push(...dataList[i].data)
}
seriesIndex++
}
}
await getAllData(this)
}
this.hideChartLoading()
},
drawDetailData: async function () {
this.showChartLoading('detail')
const timeDur = this.endTimeCurrent - this.startTimeCurrent
for (const meta in this.dataInfo) {
let metaInfo
this.metaList.forEach(_meta => {
if (parseInt(_meta.id) === parseInt(meta)) {
metaInfo = _meta
}
})
let scale = '1000'
const sampleRate = (metaInfo.parameter_set.SAMPLE_RATE === 0) ? parseInt(8e5 / metaInfo.parameter_set.ADC_CLOCK) : metaInfo.parameter_set.SAMPLE_RATE // Hz
const dataPointNum = (timeDur / 1e6) * sampleRate // us -> s: /1e6
if (dataPointNum > 2e6) { // 2000 (points) * 1000 (resample) = 2e6
scale = '1000'
} else if (dataPointNum > 2e5) { // 2000 (points) * 100 (resample) = 2e5
scale = '100'
} else if (dataPointNum > 2e4) { // 2000 (points) * 10 (resample) = 2e4
scale = '10'
} else {
scale = '1'
}
this.currentScale = scale
let seriesIndex = 0
this.updateChartSamplingChart({ chartID: this.chartDetailData.chartID, seriesIndex: seriesIndex, method: function (frame) { return frame[0] } })
for (const ch in this.dataInfo[meta]) {
this.chartDetailData.series[seriesIndex].data.length = 0
const dataList = this.dataInfo[meta][ch][scale]
let startIndex = 0
let endIndex = 0
// get the subfile index
for (let i = 0; i < dataList.length; i++) {
if (this.startTimeCurrent >= parseInt(dataList[i].start_time) && this.startTimeCurrent <= parseInt(dataList[i].end_time)) {
startIndex = i
}
if (this.endTimeCurrent >= parseInt(dataList[i].start_time) && this.endTimeCurrent <= parseInt(dataList[i].end_time)) {
endIndex = i
}
}
// download and push into chart
let endFlag = false // because data is sorted by time, so if current processed data piece exceeds endTimeCurrent, can early stop
for (let i = startIndex; i <= endIndex; i++) {
const data = await this.getData(parseInt(scale), this.sampleMethod, dataList[i].id, ch, metaInfo)
for (let j = 0, len = data.length; j < len; j++) {
if (parseInt(data[j][0]) >= this.startTimeCurrent && parseInt(data[j][0]) <= this.endTimeCurrent) {
const processedData = data[j]
if (this.displayType.x === 'log') {
processedData[0] = Math.abs(processedData[0])
}
if (this.displayType.y === 'log') {
processedData[1] = Math.abs(processedData[1])
}
this.chartDetailData.series[seriesIndex].data.push(processedData)
}
// early stop
if (parseInt(data[j][0]) > this.endTimeCurrent) {
endFlag = true
break
}
}
// early stop
if (endFlag === true) {
break
}
}
for (let i = 0, len = this.chartDetailData.xAxis.length; i < len; i++) {
this.chartDetailData.xAxis[i].min = this.startTimeCurrent
this.chartDetailData.xAxis[i].max = this.endTimeCurrent
}
seriesIndex++
}
}
this.hideChartLoading()
},
checkDataZoom: function () {
this.zoomTime++
if (this.zoomTime >= 2) {
if (this.startTimeCurrent !== this.startTime || this.endTimeCurrent !== this.endTime) {
this.startTimeCurrent = this.startTime
this.endTimeCurrent = this.endTime
this.drawDetailData()
}
}
},
distribute: function () {
if (this.inDistributeMode) {
let seriesIndex = 0
for (const meta in this.dataInfo) {
for (const ch in this.dataInfo[meta]) {
this.chartDetailData.series[seriesIndex].xAxisIndex = seriesIndex
this.chartDetailData.series[seriesIndex].yAxisIndex = seriesIndex
this.updateAxisLabelChart({
chartID: this.chartDetailData.chartID,
axis: 'y',
axisIndex: seriesIndex,
channel: ch,
})
seriesIndex++
}
}
this.updateGridListChart({
chartAllData: this.chartData,
chartID: this.chartDetailData.chartID,
gridLength: seriesIndex,
})
for (let i = 0; i < this.chartDetailData.xAxis.length; i++) {
this.chartDetailData.xAxis[i].axisLabel.show = false
}
this.chartDetailData.xAxis[this.chartDetailData.xAxis.length - 1].axisLabel.show = true
this.inDistributeMode = false
} else {
let gridLength = 1
this.chartDetailData.xAxis[0].axisLabel.show = true
for (const meta in this.dataInfo) {
for (const ch in this.dataInfo[meta]) {
if (parseInt(ch) >= 256) { // x, y, z, mag
gridLength = 2
this.chartDetailData.xAxis[0].axisLabel.show = false
this.chartDetailData.xAxis[1].axisLabel.show = true
break
}
}
this.updateGridListChart({
chartAllData: this.chartData,
chartID: this.chartDetailData.chartID,
gridLength: gridLength,
})
let seriesIndex = 0
for (const ch in this.dataInfo[meta]) {
if (parseInt(ch) < 256) {
this.chartDetailData.series[seriesIndex].xAxisIndex = 0
this.chartDetailData.series[seriesIndex].yAxisIndex = 0
} else { // x, y, z, mag
this.chartDetailData.series[seriesIndex].xAxisIndex = 1
this.chartDetailData.series[seriesIndex].yAxisIndex = 1
this.updateAxisLabelChart({
chartID: this.chartDetailData.chartID,
axis: 'y',
axisIndex: 1,
channel: ch,
})
}
seriesIndex++
}
}
this.inDistributeMode = true
}
},
...mapActions('replay', [types.chart.init, types.chart.register, types.chart.clear, types.chart.updateGridList, types.chart.updateDataZoom]),
...mapActions('replay', [types.meta.init]),
...mapActions('replay', [types.rec.init, types.rec.intoData, types.rec.initDisplaySetting, types.rec.updateDisplaySetting]),
...mapMutations('replay', [types.chart.updateAxisLabel, types.chart.updateChartSampling, types.chart.setOverviewDataZoomStartAndEnd]),
...mapMutations('replay', [types.meta.updateByIndex]),
...mapGetters('replay', [types.meta.getAll]),
...mapGetters('replay', [types.rec.getAll]),
},
// use watch because va-select with @change will have bug
watch: {
},
async mounted () {
this.showChartLoading()
const metaIDList = this.$route.params.metaList.split('-')
await this.initMeta({ metaIDList: metaIDList, api: api })
this.metaList = this.getAllMeta()
await this.initRec({ api: api })
this.dataInfo = this.getAllRec()
console.log(this.metaList)
console.log(this.dataInfo)
await this.register()
this.setOverviewDataZoomStartAndEndChart()
await this.drawInitData()
this.dataZoomTimer = setInterval(this.checkDataZoom, 1000)
this.$refs.top_control_panel.init()
this.$refs.set_min_max.init()
this.turnOnAxisEventHandler('click', 'yAxis.axisLabel', this.showMinMaxPanel, { axis: 'y' })
console.log(this.chartOverviewData)
console.log(this.chartDetailData)
},
beforeDestroy () {
this.$refs.chart_overview.clear()
this.$refs.chart_detail.clear()
for (const id in this.chartData) {
for (const _series of this.chartData[id].series) {
_series.length = 0
}
delete this.chartData[id]
}
this.clearChart({ chartAllData: this.chartData })
},
destroyed () {
clearInterval(this.dataZoomTimer)
},
}
</script>
@@ -0,0 +1,109 @@
<template>
<div class="flex" :class="cardclass">
<va-card :style="'height: ' + cardheight + ';'">
<chart :ref="'chart_ref'" :style="'width: '+ cardwidth + '; height: ' + cardheight + ';'" :options="data" @dataZoom="updateZoom" :auto-resize="true"></chart>
</va-card>
</div>
</template>
<script>
import { mapMutations } from 'vuex'
import types from '@/store/modules/analysis/replay/types'
export default {
name: 'neulive-replay-chart',
components: {
},
props: {
data: {
type: Object,
default: function () {
return {}
},
},
cardclass: {
type: Array,
default: function () {
return ['xs12', 'md12', 'xl12', 'sm12']
},
},
cardheight: {
type: String,
default: '82vh',
},
cardwidth: {
type: String,
default: 'auto',
},
},
created () {
},
data () {
return {
}
},
computed: {
},
watch: {
},
methods: {
resize: function () {
if (this.$refs.chart_ref != null) {
this.$refs.chart_ref.resize()
}
},
updateZoom: function (e) {
this.$emit('dataZoomEvent', e)
},
mergeOptions (options) {
this.$refs.chart_ref.mergeOptions(options)
},
turnOnAxisEventHandler (eventName, query, handler, attr) {
const chartID = 1
this.updateAxisEventHandlerChart({
chartID: chartID,
axis: attr.axis,
status: 'on',
})
// doc: https://echarts.apache.org/zh/api.html#echartsInstance.on
this.$refs.chart_ref.chart._zr.on(eventName, query, handler)
},
turnOffAxisEventHandler (eventName, handler, attr) {
const chartID = 1
this.updateAxisEventHandlerChart({
chartID: chartID,
axis: attr.axis,
status: 'off',
})
// doc: https://echarts.apache.org/zh/api.html#echartsInstance.off
this.$refs.chart_ref.chart._zr.off(eventName, handler)
},
showLoading (options) {
this.$refs.chart_ref.showLoading(options)
},
hideLoading () {
this.$refs.chart_ref.hideLoading()
},
clear () {
this.$refs.chart_ref.clear()
},
...mapMutations('replay', [types.chart.updateAxisEventHandler]),
},
async mounted () {
this.resizeTimer = setInterval(this.resize, 1000)
},
destroyed () {
clearInterval(this.resizeTimer)
},
}
</script>
<style lang='scss'>
.va-card {
&__body {
padding-top: 0.25rem;
}
}
</style>
@@ -0,0 +1,85 @@
<template>
<div class="flex" :class="cardclass">
<va-card :style="'height: 8vh;'">
<chart :ref="'chart_ref'" :style="'width: '+ cardwidth + '; height: ' + cardheight + ';'" :options="data" @dataZoom="updateZoom" :auto-resize="true"></chart>
</va-card>
</div>
</template>
<script>
export default {
name: 'neulive-replay-overview-chart',
components: {
},
props: {
data: {
type: Object,
default: function () {
return {}
},
},
cardclass: {
type: Array,
default: function () {
return ['xs12', 'md12', 'xl12', 'sm12']
},
},
cardheight: {
type: String,
default: '82vh',
},
cardwidth: {
type: String,
default: 'auto',
},
},
created () {
},
data () {
return {
}
},
computed: {
},
watch: {
},
methods: {
resize: function () {
if (this.$refs.chart_ref != null) {
this.$refs.chart_ref.resize()
}
},
updateZoom: function (e) {
this.$emit('dataZoomEvent', e)
},
mergeOptions (options) {
this.$refs.chart_ref.mergeOptions(options)
},
showLoading (options) {
this.$refs.chart_ref.showLoading(options)
},
hideLoading () {
this.$refs.chart_ref.hideLoading()
},
clear () {
this.$refs.chart_ref.clear()
},
},
async mounted () {
this.resizeTimer = setInterval(this.resize, 1000)
},
destroyed () {
clearInterval(this.resizeTimer)
},
}
</script>
<style lang='scss'>
.va-card {
&__body {
padding: 0.75rem;
}
}
</style>
@@ -0,0 +1,126 @@
<template>
<div>
<va-card>
<div class="flex-container">
<edit-file-name class="flex-child" :ref="'edit_file_name'"/>
<download-file class="flex-child2"/>
<delete-file class="flex-child2"/>
</div>
<show-resample-rate/>
<div class="flex-container">
<change-window-start-and-size class="flex-child" :ref="'change_window_start_and_size'" @changeOverviewDataZoom="changeOverviewDataZoom"/>
<lock-data-zoom class="flex-child2" :chartID="0"/>
</div>
<change-axis v-show="showXAxis" :ref="'change_axis_x'" axis="x"/>
<change-axis v-show="showYAxis" :ref="'change_axis_y'" axis="y"/>
<change-unit v-show="showXUnit" :ref="'change_unit_x'" axis="x" @refreshChart="refreshChart"/>
<change-unit :ref="'change_unit_y'" class="box_inline-block" axis="y" @refreshChart="refreshChart"/>
<change-scale :ref="'change_scale_y'" class="box_inline-block" axis="y"/>
<sd-card-toggle :ref="'sd_card_toggle'" :metaIndex="0"/>
<show-parameter :ref="'show_param'"/>
</va-card>
</div>
</template>
<script>
import ShowResampleRate from '@/components/analysis/replay/toolbox/ShowResampleRate.vue'
import ChangeAxis from '@/components/analysis/replay/toolbox/ChangeAxis.vue'
import ChangeUnit from '@/components/analysis/replay/toolbox/ChangeUnit.vue'
import ChangeScale from '@/components/analysis/replay/toolbox/ChangeScale.vue'
import DownloadFile from '@/components/analysis/replay/toolbox/DownloadFile.vue'
import DeleteFile from '@/components/analysis/replay/toolbox/DeleteFile.vue'
import EditFileName from '@/components/analysis/replay/toolbox/EditFileName.vue'
import ShowParameter from '@/components/analysis/replay/toolbox/ShowParameter.vue'
import SdCardToggle from '@/components/analysis/replay/toolbox/SdCardToggle.vue'
import LockDataZoom from '@/components/analysis/replay/toolbox/LockDataZoom.vue'
import ChangeWindowStartAndSize from '@/components/analysis/replay/toolbox/ChangeWindowStartAndSize.vue'
import { mapFields } from 'vuex-map-fields'
export default {
name: 'top-control-panel',
components: {
ShowResampleRate,
ChangeAxis,
ChangeUnit,
ChangeScale,
DownloadFile,
DeleteFile,
EditFileName,
ShowParameter,
SdCardToggle,
LockDataZoom,
ChangeWindowStartAndSize,
},
computed: {
...mapFields('replay', [
'metaList',
'showCyclePanel',
]),
},
async created () {
},
data () {
return {
deviceName: '',
showXAxis: false,
showYAxis: false,
showXUnit: false,
}
},
mqtt: {
},
methods: {
init () {
this.deviceName = this.metaList[0].device.library_name
this.$refs.change_axis_x.init(this.deviceName)
this.$refs.change_axis_y.init(this.deviceName)
this.$refs.change_unit_x.init(this.deviceName)
this.$refs.change_unit_y.init(this.deviceName)
this.$refs.change_scale_y.init(this.deviceName)
this.$refs.edit_file_name.init()
this.$refs.show_param.init(this.deviceName)
this.$refs.change_window_start_and_size.init()
this.$refs.sd_card_toggle.init()
},
changeOverviewDataZoom () {
this.$emit('changeOverviewDataZoom')
},
refreshChart (options) {
this.$emit('refreshChart', options)
},
},
// use watch because va-select with @change will have bug
watch: {
},
mounted () {
},
}
</script>
<style lang="scss">
.box_inline-block {
padding: 2px;
margin: 2px;
display: inline-block;
}
.flex-container {
display: flex;
}
.flex-child {
flex: 2;
}
.flex-child1 {
flex: 1;
}
.flex-child2 {
flex: 0;
}
.flex-child:first-child {
margin-right: 1px;
}
</style>
@@ -0,0 +1,118 @@
<template>
<div>
<va-button
:color="buttonColor"
:key="clickTime"
v-model="absToggleStatus[axis]"
@click="performABS()"
class="round-button px-1 py-1"
>
ABS
</va-button>
</div>
</template>
<script>
import { mapActions, mapMutations } from 'vuex'
import { mapFields } from 'vuex-map-fields'
import types from '@/store/modules/analysis/replay/types'
export default {
name: 'AbsToggle',
components: {
},
computed: {
displayType () {
return {
x: this.axisXLabelScale.description === 'Log' ? 'log' : 'value',
y: this.axisYLabelScale.description === 'Log' ? 'log' : 'value',
}
},
...mapFields('replay', [
'chartData',
'metaList',
'absToggleStatus',
]),
},
props: {
chartID: {
type: Number, // detail data
default: 1,
},
axis: {
type: String, // x or y
},
metaIndex: {
type: Number, // which meta file
default: 0,
},
},
created () {
},
data () {
return {
metaID: 0,
metaInfo: null,
buttonColor: 'gray',
clickTime: 0,
}
},
mqtt: {
},
methods: {
init (deviceName) {
this.deviceName = deviceName
this.metaInfo = this.metaList[this.metaIndex]
this.metaID = this.metaInfo.id
this.absToggleStatus[this.axis] = false
},
performABS () {
this.absToggleStatus[this.axis] = !this.absToggleStatus[this.axis]
if (this.deviceName === 'EliteZM15' || this.deviceName === 'EliteEIS') {
this.calculateHelper(this.metaIndex) // [TODO] elite tmp use metaIndex for grid index
}
this.clickTime++
this.buttonColor = this.clickTime % 2 === 1 ? 'success' : 'gray'
},
async calculateHelper (gridIndex) {
let seriesData
if (this.absToggleStatus[this.axis]) {
seriesData = JSON.parse(JSON.stringify(this.chartData[this.chartID].series[gridIndex].data))
for (let i = 0; i < seriesData.length; i++) {
if (this.axis === 'x') {
seriesData[i][0] = Math.abs(seriesData[i][0])
} else if (this.axis === 'y') {
seriesData[i][1] = Math.abs(seriesData[i][1])
}
}
this.updateSeriesChart({
chartID: this.chartID,
seriesIndex: gridIndex,
data: seriesData,
})
} else {
if (this.deviceName === 'EliteZM15' || this.deviceName === 'EliteEIS') {
this.$emit('changeAxis', this.metaIndex) // [TODO] elite tmp use metaIndex for grid index
}
}
},
...mapActions('replay', [types.chart.setAxisDisplay]),
...mapMutations('replay', [types.chart.updateSeries]),
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
<style lang="scss">
.round-button {
border-radius: 12px;
}
</style>
@@ -0,0 +1,328 @@
<template>
<div>
<div v-if="axis === 'x'">
<va-select
@input="changeAxis()"
:label="''"
v-if="deviceName!=='EliteEIS' || (deviceName==='EliteEIS' && metaList[metaIndex].parameter_set.MODE === 1)"
v-model="channelFormat"
textBy="description"
class="va-select-without-margin"
:options="channelOptions"
:noClear='true'
/>
<va-select
@input="changeAxis()"
:label="''"
v-if="deviceName==='EliteEIS' && metaList[metaIndex].parameter_set.MODE !== 1"
v-model="channelFormat"
textBy="description"
class="va-select-without-margin"
:options="eisChannelOptions"
:noClear='true'
/>
</div>
<div v-if="axis === 'y'">
<va-select
@input="changeAxis()"
:label="''"
v-if="deviceName!=='EliteEIS'"
v-model="channelFormat"
textBy="description"
class="va-select-without-margin"
:options="channelYOptions"
:noClear='true'
/>
<va-select
@input="changeAxis()"
:label="''"
v-if="deviceName==='EliteEIS'"
v-model="channelFormat"
textBy="description"
class="va-select-without-margin"
:options="eisChannelYOptions"
:noClear='true'
/>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'change-axis',
components: {
},
props: {
axis: {
type: String, // x or y
},
metaIndex: {
type: Number, // which meta file
default: 0,
},
},
created () {
},
computed: {
...mapFields('replay', [
'chartData',
'metaList',
'axisXDataType',
'axisYDataType',
'showCyclePanel',
]),
},
methods: {
init (deviceName) {
this.deviceName = deviceName
if (this.deviceName.startsWith('Neulive')) {
// now neulive only v-t
if (this.axis === 'x') {
this.axisXDataType = this.channelOptions[3]
} else if (this.axis === 'y') {
this.axisYDataType = this.channelOptions[1]
}
} else if (this.deviceName === 'EliteZM15') {
// use state meta to decide which default unit need to be used (like check I-V mode...)
const setting = this.GLOBAL.getDefaultChartTypeByMode(this.metaList[this.metaIndex].parameter_set.MODE, this.deviceName)
const xType = setting[0]
const xValue = setting[1]
const yType = setting[2]
const yValue = setting[3]
let settingType
let settingValue
if (this.axis === 'x') {
settingType = xType
settingValue = xValue
if (settingType === 'Elite') {
// 1: I, 2: V, 3: R
if (settingValue === 1) {
this.axisXDataType = this.channelOptions[0]
} else if (settingValue === 2) {
this.axisXDataType = this.channelOptions[1]
} else if (settingValue === 3) {
this.axisXDataType = this.channelOptions[2]
} else if (settingValue === 4) {
this.axisXDataType = this.channelOptions[3]
}
} else if (settingType === 'Time') {
this.axisXDataType = this.channelOptions[4]
}
this.channelFormat = this.axisXDataType
} else if (this.axis === 'y') {
settingType = yType
settingValue = yValue
if (settingType === 'Elite') {
// 1: I, 2: V, 3: R
if (settingValue === 1) {
this.axisYDataType = this.channelOptions[0]
} else if (settingValue === 2) {
this.axisYDataType = this.channelOptions[1]
} else if (settingValue === 3) {
this.axisYDataType = this.channelOptions[2]
} else if (settingValue === 4) {
this.axisXDataType = this.channelOptions[3]
}
} else if (settingType === 'Time') {
this.axisYDataType = this.channelOptions[4]
}
this.channelFormat = this.axisYDataType
}
} else if (this.deviceName === 'EliteEIS') {
const setting = this.GLOBAL.getDefaultChartTypeByMode(this.metaList[this.metaIndex].parameter_set.MODE, this.deviceName)
const xType = setting[0]
const xValue = setting[1]
const yType = setting[2]
const yValue = setting[3]
let settingType
let settingValue
if (this.axis === 'x') {
settingType = xType
settingValue = xValue
if (settingType === 'EliteEIS') {
this.axisXDataType = this.eisChannelOptions.find(element => element.id === parseInt(settingValue) - 1)
} else if (settingType === 'Elite') {
// 1: I, 2: V, 3: R
if (settingValue === 1) {
this.axisXDataType = this.channelOptions[0]
} else if (settingValue === 2) {
this.axisXDataType = this.channelOptions[1]
} else if (settingValue === 3) {
this.axisXDataType = this.channelOptions[2]
}
} else if (settingType === 'Time') {
this.axisXDataType = this.channelOptions[3]
}
this.channelFormat = this.axisXDataType
} else if (this.axis === 'y') {
settingType = yType
settingValue = yValue
if (settingType === 'EliteEIS') {
this.axisYDataType = this.eisChannelOptions.find(element => element.id === parseInt(settingValue) - 1)
} else if (settingType === 'Elite') {
// 1: I, 2: V, 3: R
if (settingValue === 1) {
this.axisYDataType = this.channelOptions[0]
} else if (settingValue === 2) {
this.axisYDataType = this.channelOptions[1]
} else if (settingValue === 3) {
this.axisYDataType = this.channelOptions[2]
}
} else if (settingType === 'Time') {
this.axisYDataType = this.channelOptions[3]
}
this.channelFormat = this.axisYDataType
}
}
if (this.axis === 'y') { // only need to draw once time when init
this.changeAxis()
}
},
changeAxis () {
if (this.deviceName.startsWith('Neulive')) {
// for elite now, cuz neulive now only have v-t graph, for future neulive replay need to adjust'
// console.log('(Last updated: 2021/06/19)')
} else if (this.deviceName === 'EliteZM15' || this.deviceName === 'EliteEIS') {
if (this.axis === 'x') {
this.axisXDataType = this.channelFormat
} else if (this.axis === 'y') {
this.axisYDataType = this.channelFormat
}
if (this.metaList[this.metaIndex].parameter_set.CYCLE_NUMBER > 0) {
this.showCyclePanel = true
} else {
this.showCyclePanel = false
}
this.$emit('changeAxis', this.metaIndex) // temporarily use metaIndex for gridIndex
this.$emit('changeUnit', this.axis)
this.$emit('clearCycle')
}
},
},
mounted () {
},
data () {
return {
deviceName: '',
channelFormat: {},
channelOptions: [
{
id: 0,
description: 'Current',
},
{
id: 1,
description: 'Voltage',
},
{
id: 2,
description: 'Resistance',
},
{
id: 3,
description: 'Cycle',
},
{
id: 100, // no usage, so assign a large number to avoid conflicting with existing channel data
description: 'Time',
},
],
channelYOptions: [
{
id: 0,
description: 'Current',
},
{
id: 1,
description: 'Voltage',
},
{
id: 2,
description: 'Resistance',
},
{
id: 3,
description: 'Cycle',
},
],
eisChannelOptions: [ // id 0 (Raw Imag), 1 (Raw Real), 3 (Cycle) user
{
id: 2,
description: 'Frequency',
},
{
id: 4,
description: 'Z_imag',
},
{
id: 5,
description: 'Z_real',
},
{
id: 6,
description: 'Impedance',
},
{
id: 7,
description: 'Phase',
},
{
id: 8,
description: 'Current',
},
{
id: 9,
description: 'Gain Level',
},
{
id: 100, // no usage, so assign a large number to avoid conflicting with existing channel data
description: 'Time',
},
],
eisChannelYOptions: [ // id 0 (Raw Imag), 1 (Raw Real), 3 (Cycle) user
{
id: 2,
description: 'Frequency',
},
{
id: 4,
description: 'Z_imag',
},
{
id: 5,
description: 'Z_real',
},
{
id: 6,
description: 'Impedance',
},
{
id: 7,
description: 'Phase',
},
{
id: 8,
description: 'Current',
},
{
id: 9,
description: 'Gain Level',
},
],
}
},
destroyed () {
},
}
</script>
<style lang="scss">
.va-select-without-margin {
.va-select {
margin-bottom: 0;
}
}
</style>
@@ -0,0 +1,99 @@
<template>
<div>
<va-modal
class="flex sm12 xl12 md12 xs12"
v-model="showModal.minMaxPanel"
size="small"
:position="position"
:title="'Set min max (if blank, will be auto-set)'"
:okText=" $t('modal.confirm') "
@ok="setMinMax()"
>
<va-input
v-model="minMaxInfo[gridIndex].max"
:label="'Max'"
/>
<va-input
v-model="minMaxInfo[gridIndex].min"
:label="'Min'"
/>
</va-modal>
</div>
</template>
<script>
import { mapMutations } from 'vuex'
import { mapFields } from 'vuex-map-fields'
import types from '@/store/modules/analysis/replay/types'
export default {
name: 'change-channel-value-min-max',
components: {
},
props: {
chartID: {
type: Number,
default: 1, // detail data
},
},
created () {
},
data () {
return {
gridIndex: 0,
axis: 'y',
showModal: {
minMaxPanel: false,
},
minMaxInfo: { 0: { min: '', max: '' } }, // will be set by init()
position: 'center',
}
},
computed: {
...mapFields('replay', [
'chartData',
]),
},
watch: {
},
methods: {
init () {
const len = this.chartData[this.chartID].series.length
for (let i = 0; i < len; i++) {
this.minMaxInfo[i] = { min: '', max: '' }
}
},
showPanel (params) {
if (params.target !== undefined) {
if (params.target.eventData.componentType === 'xAxis' && params.target.eventData.targetType === 'axisLabel') {
this.gridIndex = params.target.eventData.xAxisIndex
this.axis = 'x'
this.position = 'bottom'
} else if (params.target.eventData.componentType === 'yAxis' && params.target.eventData.targetType === 'axisLabel') {
this.gridIndex = params.target.eventData.yAxisIndex
this.axis = 'y'
this.position = 'left'
}
this.showModal.minMaxPanel = true
}
},
setMinMax () {
this.updateAxisValMinMaxChart({
chartID: this.chartID,
axis: this.axis,
axisIndex: this.gridIndex,
minVal: this.minMaxInfo[this.gridIndex].min,
maxVal: this.minMaxInfo[this.gridIndex].max,
})
this.$emit('refreshChart', this.chartData[this.chartID])
},
...mapMutations('replay', [types.chart.updateAxisValMinMax]),
},
mounted () {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,206 @@
<template>
<div v-if="showPanel">
<va-input
v-model="showWhichCycles"
@change="setCycle"
:label="$t('See which cycles')"
/>
</div>
</template>
<script>
import { mapMutations, mapGetters } from 'vuex'
import { mapFields } from 'vuex-map-fields'
import types from '@/store/modules/analysis/replay/types'
import { download } from '@/data/download/Download'
export default {
name: 'change-cycle',
components: {
},
props: {
chartID: {
type: Number,
default: 1, // detail data
},
metaIndex: {
type: Number, // which meta file
default: 0,
},
},
created () {
},
data () {
return {
showPanel: false,
metaID: 0,
cycleNum: 0,
cycleDataID: 3, // [TODO] manage by data type factory
}
},
computed: {
...mapFields('replay', [
'chartData',
'recInfo',
'metaList',
'currentScale',
'sampleMethod',
'axisXDataType',
'axisYDataType',
'axisXLabelScale',
'axisYLabelScale',
'showWhichCycles',
]),
},
watch: {
},
methods: {
slices () {
const cycleList = this.showWhichCycles.split(',')
if (cycleList.length === 1 && cycleList[0] === '') {
return ''
}
for (let i = 0; i < cycleList.length; i++) {
const element = cycleList[i]
if (element.includes('-')) {
const startIndex = element.split('-')[0]
const endIndex = element.split('-')[1]
cycleList[i] = startIndex
for (let j = endIndex; j >= parseInt(startIndex) + 1; j--) {
cycleList.splice(i + 1, 0, j.toString()) // arr.splice(index, 0, item); will insert item into arr at the specified index (deleting 0 items first, that is, it's just an insert).
}
}
}
const cycleSet = new Set(cycleList)
const sortedCycleList = [...cycleSet].sort() // ref: https://stackoverflow.com/questions/33089695/how-can-i-sort-an-es6-set
return sortedCycleList
},
init () {
this.cycleNum = this.metaList[this.metaIndex].parameter_set.CYCLE_NUMBER
const meta = this.metaList[this.metaIndex]
this.metaID = meta.id
this.isThisModeHasCycle = this.GLOBAL.hasCycleMode(this.metaList[this.metaIndex].parameter_set.MODE, meta.device.library_name)
if (this.isThisModeHasCycle === true) {
this.showPanel = true
} else {
this.showPanel = false
}
},
clear () {
this.showWhichCycles = '1'
},
async setCycle () {
console.log('setCycle')
if (this.isThisModeHasCycle === true) {
const dataCycleList = this.recInfo[this.metaID][this.cycleDataID][this.currentScale]
const cycleDataList = []
for (let i = 0; i < dataCycleList.length; i++) {
if (dataCycleList[i].data.length === 0) {
const data = await this.getData(parseInt(this.currentScale), this.sampleMethod, dataCycleList[i].id, this.cycleDataID, this.metaList[this.metaIndex])
cycleDataList.push({ data: data })
} else {
cycleDataList.push({ data: dataCycleList[i].data })
}
}
const cycleDict = this.getCycleDictRec()(cycleDataList)
this.cycleNum = Object.keys(cycleDict).length
let dataXList
if (this.axisXDataType.description !== 'Time') {
dataXList = this.recInfo[this.metaID][this.axisXDataType.id][this.currentScale]
}
const dataYList = this.recInfo[this.metaID][this.axisYDataType.id][this.currentScale]
const filteredData = []
let counter = 0
for (let sliceIndex = 0; sliceIndex < this.cycleNum; sliceIndex++) {
// console.log(this.slices)
if (this.slices() === '' || this.slices().includes((sliceIndex + 1).toString())) {
// slice data
const value = cycleDict[sliceIndex + 1]
const startTime = value[0]
const endTime = value[1]
let startIndex = 0
let endIndex = 0
for (let i = 0; i < dataYList.length; i++) {
if (startTime >= parseInt(dataYList[i].start_time) && startTime <= parseInt(dataYList[i].end_time)) {
startIndex = i
}
if (endTime >= parseInt(dataYList[i].start_time) && endTime <= parseInt(dataYList[i].end_time)) {
endIndex = i
}
}
for (let i = startIndex; i <= endIndex; i++) {
const dataY = await this.getData(parseInt(this.currentScale), this.sampleMethod, dataYList[i].id, this.axisYDataType.id, this.metaList[this.metaIndex])
if (this.axisXDataType.description !== 'Time') {
const dataX = await this.getData(parseInt(this.currentScale), this.sampleMethod, dataXList[i].id, this.axisXDataType.id, this.metaList[this.metaIndex])
for (let j = 0, len = dataY.length; j < len; j++) {
if (parseInt(dataY[j][0]) >= startTime && parseInt(dataY[j][0]) <= endTime) {
let x
let y
if (this.axisXLabelScale.description === 'Log') {
x = Math.abs(dataX[j][1])
} else if (this.axisXLabelScale.description === 'Linear') {
x = dataX[j][1]
}
if (this.axisYLabelScale.description === 'Log') {
y = Math.abs(dataY[j][1])
} else if (this.axisYLabelScale.description === 'Linear') {
y = dataY[j][1]
}
filteredData.push([x, y])
}
}
} else {
for (let j = 0, len = dataY.length; j < len; j++) {
if (parseInt(dataY[j][0]) >= startTime && parseInt(dataY[j][0]) <= endTime) {
if (this.axisYLabelScale.description === 'Log') {
dataY[j][1] = Math.abs(dataY[j][1])
} else if (this.axisYLabelScale.description === 'Linear') {
// do nothing
}
filteredData.push(dataY[j])
}
}
}
}
this.updateSeriesChart({
chartID: this.chartID,
seriesIndex: this.metaIndex,
data: filteredData,
})
if (this.axisXDataType.description === 'Time') {
if (counter === 0) {
this.chartData[this.chartID].xAxis[this.metaIndex].min = startTime
}
this.chartData[this.chartID].xAxis[this.metaIndex].max = endTime
counter++
}
// this.$emit('refreshChart', this.chartData[this.chartID])
}
}
}
},
getData: async function (scale, sampleMethod, id, channel, meta) {
if (scale === 1) {
return await download.rawByIDChannels(id, channel, meta)
} else {
if (sampleMethod === 'mean') {
return await download.miniMeanByIDChannel(id, channel, meta)
} else if (sampleMethod === 'random') {
return await download.miniRandomByIDChannel(id, channel, meta)
}
}
},
...mapMutations('replay', [types.chart.updateSeries]),
...mapGetters('replay', [types.rec.getCycleDict]),
},
mounted () {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,196 @@
<template>
<div>
<va-select
@input="changeScale()"
:label="''"
v-model="scaleFormat"
textBy="description"
class="va-select-without-margin"
:options="scaleOptions"
:noClear='true'
/>
</div>
</template>
<script>
import { mapActions, mapMutations, mapGetters } from 'vuex'
import { mapFields } from 'vuex-map-fields'
import types from '@/store/modules/analysis/replay/types'
import { download } from '@/data/download/Download'
export default {
name: 'change-scale',
components: {
},
props: {
chartID: {
type: Number, // detail data
default: 1,
},
axis: {
type: String, // x or y
},
metaIndex: {
type: Number, // which meta file
default: 0,
},
},
created () {
},
computed: {
displayType () {
return {
x: this.axisXLabelScale.description === 'Log' ? 'log' : 'value',
y: this.axisYLabelScale.description === 'Log' ? 'log' : 'value',
}
},
...mapFields('replay', [
'chartData',
'recInfo',
'metaList',
'axisXLabelScale',
'axisYLabelScale',
'axisXDataType',
'axisYDataType',
'absToggleStatus',
'startTimeCurrent',
'endTimeCurrent',
'currentScale',
'sampleMethod',
]),
},
methods: {
init (deviceName) {
this.deviceName = deviceName
this.metaInfo = this.metaList[this.metaIndex]
this.metaID = this.metaInfo.id
if (this.axis === 'x') {
this.axisXLabelScale = this.scaleOptions[0] // 0 mean use default unit
this.scaleFormat = this.axisXLabelScale
} else if (this.axis === 'y') {
this.axisYLabelScale = this.scaleOptions[0] // 0 mean use default unit
this.scaleFormat = this.axisYLabelScale
}
},
changeScale () {
if (this.axis === 'x') {
this.axisXLabelScale = this.scaleFormat
} else if (this.axis === 'y') {
this.axisYLabelScale = this.scaleFormat
}
if (this.deviceName.startsWith('Neulive')) {
const keys = Object.keys(this.metaInfo.mini_data)
for (let gridIndex = 0; gridIndex < keys.length; gridIndex++) {
const ch = keys[gridIndex]
if (parseInt(ch) < 256) { // 256: x, 257: y, 258: z, 259: mag
this.calculateScaleHelper(gridIndex, ch)
}
}
} else if (this.deviceName === 'EliteZM15' || this.deviceName === 'EliteEIS') {
this.calculateScaleHelper(this.metaIndex, -1) // [TODO] elite tmp use metaIndex for grid index
}
},
async calculateScaleHelper (gridIndex, ch) {
let seriesData
if (this.scaleFormat.description === 'Log') {
seriesData = JSON.parse(JSON.stringify(this.chartData[this.chartID].series[gridIndex].data))
for (let i = 0; i < seriesData.length; i++) {
if (this.axis === 'x') {
seriesData[i][0] = Math.abs(seriesData[i][0])
} else if (this.axis === 'y') {
seriesData[i][1] = Math.abs(seriesData[i][1])
}
}
this.updateSeriesChart({
chartID: this.chartID,
seriesIndex: gridIndex,
data: seriesData,
})
} else if (this.scaleFormat.description === 'Linear') {
// console.log(this.recInfo)
if (this.deviceName.startsWith('Neulive')) {
// [Region] get the subfile index
seriesData = []
const dataYList = this.recInfo[this.metaID][ch][this.currentScale]
let startIndex = 0
let endIndex = 0
for (let i = 0; i < dataYList.length; i++) {
if (this.startTimeCurrent >= parseInt(dataYList[i].start_time) && this.startTimeCurrent <= parseInt(dataYList[i].end_time)) {
startIndex = i
}
if (this.endTimeCurrent >= parseInt(dataYList[i].start_time) && this.endTimeCurrent <= parseInt(dataYList[i].end_time)) {
endIndex = i
}
}
// [EndRegion]
for (let i = startIndex; i <= endIndex; i++) {
const data = await this.getData(parseInt(this.currentScale), this.sampleMethod, dataYList[i].id, ch, this.metaInfo)
for (let j = 0, len = data.length; j < len; j++) {
if (parseInt(data[j][0]) >= this.startTimeCurrent && parseInt(data[j][0]) <= this.endTimeCurrent) {
const processedData = data[j]
if (this.displayType.x === 'log' || this.absToggleStatus.x === true) {
processedData[0] = Math.abs(processedData[0])
}
if (this.displayType.y === 'log' || this.absToggleStatus.y === true) {
processedData[1] = Math.abs(processedData[1])
}
seriesData.push(processedData)
}
}
}
} else if (this.deviceName === 'EliteZM15' || this.deviceName === 'EliteEIS') {
this.$emit('changeAxis', this.metaIndex)
this.$emit('clearCycle')
}
}
this.setAxisDisplayChart({ type: this.displayType[this.axis], axis: this.axis, chartID: this.chartID, gridIndex: gridIndex })
},
getData: async function (scale, sampleMethod, id, channel, meta) {
if (scale === 1) {
return await download.rawByIDChannels(id, channel, meta)
} else {
if (sampleMethod === 'mean') {
return await download.miniMeanByIDChannel(id, channel, meta)
} else if (sampleMethod === 'random') {
return await download.miniRandomByIDChannel(id, channel, meta)
}
}
},
...mapActions('replay', [types.chart.setAxisDisplay]),
...mapMutations('replay', [types.chart.updateSeries]),
...mapGetters('replay', [types.rec.getCycleDict]),
},
mounted () {
},
data () {
return {
deviceName: '',
metaID: 0,
metaInfo: null,
scaleFormat: { id: 0, description: 'Linear' },
scaleOptions: [
{
id: 0,
description: 'Linear',
},
{
id: 1,
description: 'Log',
},
],
}
},
destroyed () {
},
}
</script>
<style lang="scss">
.va-select-without-margin {
.va-select {
margin-bottom: 0;
}
}
</style>
@@ -0,0 +1,431 @@
<template>
<div>
<va-select
@input="changeUnit()"
:label="''"
v-if="deviceName!=='EliteEIS'"
v-model="valueFormat"
textBy="unit"
class="va-select-without-margin"
:options="valueFormatOptions[dataType]"
:noClear='true'
/>
<va-select
@input="changeUnit()"
:label="''"
v-if="deviceName==='EliteEIS'"
v-model="valueFormat"
textBy="unit"
class="va-select-without-margin"
:options="eisValueFormatOptions[dataType]"
:noClear='true'
/>
</div>
</template>
<script>
import { mapMutations } from 'vuex'
import { mapFields } from 'vuex-map-fields'
import types from '@/store/modules/analysis/replay/types'
export default {
name: 'change-unit',
components: {
},
props: {
axis: {
type: String, // x or y
},
metaIndex: {
type: Number, // which meta file
default: 0,
},
},
created () {
},
computed: {
...mapFields('replay', [
'chartData',
'metaList',
'valueFormatX',
'valueFormatY',
'axisXDataType',
'axisYDataType',
]),
},
methods: {
initDefaultUnit (axis) {
if (this.deviceName.startsWith('Neulive')) {
if (axis === 'x') {
return this.valueFormatOptions[this.dataType].find(function (item, index, array) {
return item.unit === 'auto'
})
} else if (axis === 'y') {
return this.valueFormatOptions[this.dataType].find(function (item, index, array) {
return item.unit === 'uV'
})
}
} else if (this.deviceName === 'EliteZM15') {
return this.valueFormatOptions[this.dataType][0]
} else if (this.deviceName === 'EliteEIS') {
return this.eisValueFormatOptions[this.dataType][0]
}
},
init (deviceName) {
this.deviceName = deviceName
if (this.deviceName.startsWith('Neulive')) {
// now neulive only v-t
if (this.axis === 'x') {
this.dataType = 'time'
} else if (this.axis === 'y') {
this.dataType = 'voltage'
}
} else if (this.deviceName === 'EliteZM15') {
// use state meta to decide which default unit need to be used (like check I-V mode...)
const setting = this.GLOBAL.getDefaultChartTypeByMode(this.metaList[this.metaIndex].parameter_set.MODE, this.deviceName)
const xType = setting[0]
const xValue = setting[1]
const yType = setting[2]
const yValue = setting[3]
let settingType
let settingValue
if (this.axis === 'x') {
settingType = xType
settingValue = xValue
} else if (this.axis === 'y') {
settingType = yType
settingValue = yValue
}
if (settingType === 'Elite') {
// 1: I, 2: V, 3: R
if (settingValue === 1) {
this.dataType = 'current'
} else if (settingValue === 2) {
this.dataType = 'voltage'
} else if (settingValue === 3) {
this.dataType = 'resistance'
} else if (settingValue === 4) {
this.dataType = 'cycle'
}
} else if (settingType === 'Time') {
this.dataType = 'time'
}
} else if (this.deviceName === 'EliteEIS') {
const setting = this.GLOBAL.getDefaultChartTypeByMode(this.metaList[this.metaIndex].parameter_set.MODE, this.deviceName)
const xType = setting[0]
const xValue = setting[1]
const yType = setting[2]
const yValue = setting[3]
let settingType
let settingValue
if (this.axis === 'x') {
settingType = xType
settingValue = xValue
} else if (this.axis === 'y') {
settingType = yType
settingValue = yValue
}
if (settingType === 'EliteEIS') {
if (settingValue === 3) {
this.dataType = 'frequency'
} else if (settingValue === 5 || settingValue === 6 || settingValue === 7) {
this.dataType = 'impedance'
} else if (settingValue === 8) {
this.dataType = 'phase'
} else if (settingValue === 9) {
this.dataType = 'current'
} else if (settingValue === 10) {
this.dataType = 'default'
}
} else if (settingType === 'Elite') {
// 1: I, 2: V, 3: R
if (settingValue === 1) {
this.dataType = 'current'
} else if (settingValue === 2) {
this.dataType = 'voltage'
} else if (settingValue === 3) {
this.dataType = 'resistance'
}
} else if (settingType === 'Time') {
this.dataType = 'time'
}
}
if (this.axis === 'x') {
this.valueFormatX = this.initDefaultUnit(this.axis)
this.valueFormat = this.valueFormatX
} else if (this.axis === 'y') {
this.valueFormatY = this.initDefaultUnit(this.axis)
this.valueFormat = this.valueFormatY
}
this.changeUnit()
},
changeUnit () {
if (this.axis === 'x') {
this.valueFormatX = this.valueFormat
} else if (this.axis === 'y') {
this.valueFormatY = this.valueFormat
}
const chartID = 1 // detail data
if (this.deviceName.startsWith('Neulive')) {
const keys = Object.keys(this.metaList[this.metaIndex].mini_data)
for (let axisIndex = 0; axisIndex < keys.length; axisIndex++) {
const key = keys[axisIndex]
this.updateAxisLabelChart({
chartID: chartID,
axis: this.axis,
axisIndex: axisIndex,
channel: parseInt(key),
})
}
} else if (this.deviceName === 'EliteZM15' || this.deviceName === 'EliteEIS') {
this.updateAxisLabelChart({
chartID: chartID,
axis: this.axis,
axisIndex: this.metaIndex,
channel: -1, // any num < 256, cuz channel only use for determining whether add unit text
})
}
this.$emit('refreshChart', this.chartData[chartID])
},
changeUnitByAxis () {
if (this.axis === 'x') {
if (this.axisXDataType.description === 'Current') {
this.dataType = 'current'
} else if (this.axisXDataType.description === 'Voltage') {
this.dataType = 'voltage'
} else if (this.axisXDataType.description === 'Resistance') {
this.dataType = 'resistance'
} else if (this.axisXDataType.description === 'Time') {
this.dataType = 'time'
} else if (this.axisXDataType.description === 'Cycle') {
this.dataType = 'cycle'
} else if (this.axisXDataType.description === 'Frequency') {
this.dataType = 'frequency'
} else if (this.axisXDataType.description === 'Z_imag' || this.axisXDataType.description === 'Z_real' || this.axisXDataType.description === 'Impedance') {
this.dataType = 'impedance'
} else if (this.axisXDataType.description === 'Phase') {
this.dataType = 'phase'
} else if (this.axisXDataType.description === 'Gain Level') {
this.dataType = 'default'
}
} else if (this.axis === 'y') {
if (this.axisYDataType.description === 'Current') {
this.dataType = 'current'
} else if (this.axisYDataType.description === 'Voltage') {
this.dataType = 'voltage'
} else if (this.axisYDataType.description === 'Resistance') {
this.dataType = 'resistance'
} else if (this.axisYDataType.description === 'Cycle') {
this.dataType = 'cycle'
} else if (this.axisYDataType.description === 'Frequency') {
this.dataType = 'frequency'
} else if (this.axisYDataType.description === 'Z_imag' || this.axisYDataType.description === 'Z_real' || this.axisYDataType.description === 'Impedance') {
this.dataType = 'impedance'
} else if (this.axisYDataType.description === 'Phase') {
this.dataType = 'phase'
} else if (this.axisYDataType.description === 'Gain Level') {
this.dataType = 'default'
}
}
if (this.deviceName === 'EliteZM15') {
this.valueFormat = this.valueFormatOptions[this.dataType][0]
} else if (this.deviceName === 'EliteEIS') {
this.valueFormat = this.eisValueFormatOptions[this.dataType][0]
}
this.changeUnit()
},
// call vuex to mutate chart label formatter by unit and axis
...mapMutations('replay', [types.chart.updateAxisLabel]),
},
mounted () {
},
data () {
return {
deviceName: '',
dataType: '',
valueFormat: {},
valueFormatOptions: { // below id: 0 mean default
current: [
{
id: 1,
unit: 'uA',
unitScale: 1000,
},
{
id: 0,
unit: 'nA',
unitScale: 1,
},
{
id: 2,
unit: 'mA',
unitScale: 1000000,
},
],
voltage: [ // Voltage
{
id: 1,
unit: 'mV',
unitScale: 1000,
},
{
id: 0,
unit: 'uV',
unitScale: 1,
},
{
id: 2,
unit: 'V',
unitScale: 1000000,
},
],
resistance: [ // Resistance
{
id: 1,
unit: 'Ω',
unitScale: 1000,
},
{
id: 0,
unit: 'mΩ',
unitScale: 1,
},
{
id: 2,
unit: 'kΩ',
unitScale: 1000000,
},
{
id: 3,
unit: 'MΩ',
unitScale: 1000000000,
},
],
cycle: [ // Time
{
id: 0,
unit: 'cycle',
unitScale: 1,
},
],
time: [ // Time
{
id: 0,
unit: 'auto',
unitScale: 1,
},
],
},
eisValueFormatOptions: { // below id: 0 mean default
default: [
{
id: 0,
unit: 'default',
unitScale: 1,
},
],
current: [
{
id: 0,
unit: 'nA',
unitScale: 1,
},
{
id: 1,
unit: 'uA',
unitScale: 1e3,
},
{
id: 2,
unit: 'mA',
unitScale: 1e6,
},
],
voltage: [ // Voltage
{
id: 1,
unit: 'mV',
unitScale: 1000,
},
{
id: 0,
unit: 'uV',
unitScale: 1,
},
{
id: 2,
unit: 'V',
unitScale: 1000000,
},
],
frequency: [ // Frequency
{
id: 0,
unit: 'mHz',
unitScale: 1,
},
{
id: 1,
unit: 'Hz',
unitScale: 1e3,
},
{
id: 2,
unit: 'kHz',
unitScale: 1e6,
},
],
impedance: [ // Impedance
{
id: 1,
unit: 'Ω',
unitScale: 1,
},
{
id: 0,
unit: 'mΩ',
unitScale: 1e-3,
},
{
id: 2,
unit: 'kΩ',
unitScale: 1e3,
},
{
id: 3,
unit: 'MΩ',
unitScale: 1e6,
},
],
time: [ // Time
{
id: 0,
unit: 'auto',
unitScale: 1,
},
],
phase: [ // Phase
{
id: 0,
unit: '°',
unitScale: 1,
},
],
},
}
},
destroyed () {
},
}
</script>
<style lang="scss">
.va-select-without-margin {
.va-select {
margin-bottom: 0;
}
}
</style>
@@ -0,0 +1,60 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<div class="flex sm4 xl4 md4 xs4 px-0 mx-0">
<p class="display-6">Window size<p/>
</div>
<div class="flex sm8 xl8 md8 xs8 px-0 mx-0">
<va-input
@keyup.enter="itemChange(windowSize)"
@blur="itemChange(windowSize)"
v-model="windowSize"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
µs
</p>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'ChangeWindowSize',
components: {
},
computed: {
...mapFields('replay', [
'startTimeCurrent',
'endTimeCurrent',
'windowSize',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
itemChange (val) {
this.windowSize = parseInt(val)
// this.endTimeCurrent = this.startTimeCurrent + parseInt(val)
// this.$emit('reDraw')
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,118 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 px-0 py-0 mx-0 my-0">
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<p class="display-6"> Window Start <p/>
<va-input
@keyup.enter="startItemChange(startTimeInput)"
@blur="startItemChange(startTimeInput)"
v-model="startTimeInput"
class="mb-0 flex-child"
>
<p slot="append" style="margin-right: 0;" small>
ms
</p>
</va-input>
</div>
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<p class="display-6"> Window Size <p/>
<va-input
@keyup.enter="lenItemChange(windowLengthInput)"
@blur="lenItemChange(windowLengthInput)"
v-model="windowLengthInput"
class="mb-0 flex-child"
>
<p slot="append" style="margin-right: 0;" small>
ms
</p>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'change-window-start-and-size',
components: {
},
props: {
},
computed: {
startTimeInput: {
get () {
return this.startTime / 1e3
},
set (val) {
this.startTime = val * 1e3
this.endTime = this.startTime + this.windowLength
},
},
windowLengthInput: {
get () {
return this.windowLength / 1e3
},
set (val) {
this.windowLength = val * 1e3
this.endTime = this.startTime + this.windowLength
},
},
...mapFields('replay', [
'startTime',
'endTime',
'windowLength',
]),
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
init () {
this.windowLength = parseInt(this.endTime) - parseInt(this.startTime)
},
startItemChange (val) {
this.startTime = parseInt(val * 1e3) // us
this.windowLength = parseInt(this.windowLength)
this.endTime = this.startTime + this.windowLength
this.$emit('changeOverviewDataZoom')
},
lenItemChange (val) {
this.startTime = parseInt(this.startTime)
this.windowLength = parseInt(val * 1e3) // us
this.endTime = this.startTime + this.windowLength
this.$emit('changeOverviewDataZoom')
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
<style lang="scss">
.flex-container {
display: flex;
}
.flex-child {
flex: 2;
}
.flex-child2 {
flex: 0;
}
.flex-child:first-child {
margin-right: 1px;
}
</style>
@@ -0,0 +1,92 @@
<template>
<div>
<va-button flat small color="gray" icon="fa fa-trash" @click.stop="deleteFileConfirm()"/>
<va-modal
v-model="showModal.deleteFile"
size="small"
:title="'DELETE'"
:message="`Delete File?`"
:okText=" $t('modal.confirm') "
@ok="deleteFile()"
>
</va-modal>
</div>
</template>
<script>
import api from '@/data/api/index'
import { mapFields } from 'vuex-map-fields'
export default {
name: 'delete-file',
components: {
},
props: {
},
created () {
},
data () {
return {
showModal: {
deleteFile: false,
},
deleteInfoList: [],
deleteInfoTemplate: {
path: '',
name: '',
metaID: 0, // id will be set later
rawChannelAndIDArrays: [], // list of lists
miniChannelAndIDArrays: [], // list of lists
},
}
},
computed: {
...mapFields('replay', [
'metaList',
]),
},
watch: {
},
methods: {
deleteFileConfirm: function () {
for (let i = 0; i < this.metaList.length; i++) {
const info = this.metaList[i]
this.deleteInfoTemplate.path = info.path
this.deleteInfoTemplate.name = info.name
this.deleteInfoTemplate.metaID = info.id
this.deleteInfoTemplate.rawChannelAndIDArrays = [] // list of lists
this.deleteInfoTemplate.miniChannelAndIDArrays = [] // list of lists
for (const [channel, idArray] of Object.entries(info.raw_data)) {
this.deleteInfoTemplate.rawChannelAndIDArrays.push([channel, idArray[0]])
}
for (const [channel, scaleObject] of Object.entries(info.mini_data)) {
for (const idArray of Object.values(scaleObject)) {
this.deleteInfoTemplate.miniChannelAndIDArrays.push([channel, idArray[0]])
}
}
this.deleteInfoList.push(JSON.parse(JSON.stringify(this.deleteInfoTemplate))) // deep copy data
}
this.showModal.deleteFile = true
},
deleteFile: async function () {
for (let i = 0; i < this.deleteInfoList.length; i++) {
const deleteInfo = this.deleteInfoList[i]
await api.meta.update(deleteInfo.metaID, { deleted: true })
await api.meta.clearDel()
}
await this.deleteFileDone()
},
deleteFileDone: async function () {
this.showToast('Deleted success', {
position: 'bottom-right',
})
this.$router.go(-1)
},
},
mounted () {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,60 @@
<template>
<div>
<va-button flat small color="gray" icon="fa fa-download" @click.stop="downloadFile()"/>
</div>
</template>
<script>
// import { download } from '@/data/download/Download'
// import { exportData } from '@/data/export/export'
import api from '@/data/api/index'
import { mapFields } from 'vuex-map-fields'
export default {
name: 'download-file',
components: {
},
props: {
},
created () {
},
data () {
return {
}
},
computed: {
...mapFields('replay', [
'metaList',
]),
},
watch: {
},
methods: {
downloadFile: async function () {
const href = location.href.split('/')[2]
const connectCheck = await api.connection.check()
for (let i = 0; i < this.metaList.length; i++) {
const meta = this.metaList[i]
if (meta.device.library_name.indexOf('Elite') >= 0) {
if (connectCheck.status === 200) {
window.open('http://' + href + '/#/download/online/excel/' + meta.id)
} else {
window.open('http://' + href + '/#/download/offline/excel/' + meta.id)
}
} else if (meta.device.library_name.indexOf('Neulive') >= 0) {
if (connectCheck.status === 200) {
window.open('http://' + href + '/#/download/online/csv-edf/' + meta.id)
} else {
window.open('http://' + href + '/#/download/offline/csv-edf/' + meta.id)
}
}
}
},
},
mounted () {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,141 @@
<template>
<div>
<va-button flat small color="gray" icon="fa fa-file-text-o" @click.stop="editFileConfirm()"> {{ filename }} </va-button>
<va-modal
class="flex sm12 xl12 md12 xs12"
v-model="showModal.editFile"
size="small"
:title="'CHANGE FILE NAME'"
:okText=" $t('modal.confirm') "
@ok="editFile()"
@cancel="undoEdit()"
>
<va-input
:value="editInfo.changedName"
:label="'Name'"
:placeholder="editInfo.name"
:success="editInfo.success"
:error="editInfo.error"
:error-messages="editInfo.errorMessages"
@input="checkFileNameValidate"
removable
/>
</va-modal>
</div>
</template>
<script>
import api from '@/data/api/index'
import { debounce } from 'lodash'
import { file } from '@/data/file/File'
import { mapFields } from 'vuex-map-fields'
export default {
name: 'edit-file-name',
components: {
},
props: {
},
created () {
},
data () {
return {
fileLists: [],
showModal: {
editFile: false,
},
editInfo: {
info: { id: 0 }, // id will be set in init()
changedName: '',
success: false,
error: false,
errorMessagesAll: ['File name contains illegal character', 'File name empty', 'File name exist'],
errorMessages: [],
},
filename: '',
}
},
computed: {
...mapFields('replay', [
'metaList',
]),
},
watch: {
},
methods: {
init () {
// [TODO] 0: not sure future UX design
const meta = this.metaList[0]
this.updateFileLists()
this.filename = meta.name
this.editInfo.changedName = meta.name
this.editInfo.info.id = meta.id
},
editFileConfirm () {
this.updateFileLists()
this.showModal.editFile = true
},
async updateFileLists () {
this.fileLists = []
// [TODO] 0: not sure future UX design
const meta = this.metaList[0]
file.clearFileList()
const files = await api.meta.getAttrByParent('folder', meta.parent.folder[0], 'id-path-name-parent-description-size-time_duration-uuid-device-channels-created_at')
file.updateFileList(files)
const tmpFiles = file.getFileList()
for (let i = 0; i < tmpFiles.length; i++) {
const tmp = tmpFiles[i]
this.fileLists.push(tmp)
}
},
editFile: async function () {
if (this.editInfo.success === true) {
await api.meta.update(this.editInfo.info.id, { name: this.editInfo.changedName })
this.editInfo.name = this.editInfo.changedName
this.filename = this.editInfo.changedName
}
},
undoEdit: function () {
this.editInfo.success = false
this.editInfo.error = false
this.editInfo.changedName = this.filename
this.editInfo.name = ''
this.editInfo.path = ''
},
checkFileNameValidate: debounce(function (term) {
const illegalChar = term.match(/[^(\w\-)]+/gm)
if (term.length === 0) {
// input text empty
this.editInfo.error = true
this.editInfo.success = false
this.editInfo.errorMessages.pop()
this.editInfo.errorMessages.push(this.editInfo.errorMessagesAll[1])
} else if (illegalChar !== null) {
// input text illegal
this.editInfo.error = true
this.editInfo.success = false
this.editInfo.errorMessages.pop()
this.editInfo.errorMessages.push(this.editInfo.errorMessagesAll[0] + ' ' + illegalChar[0])
} else {
const existedFile = this.fileLists.filter(file => file.name.replace('/', '') === term)
if (existedFile.length === 0) {
this.editInfo.error = false
this.editInfo.success = true
} else {
// file name exist
this.editInfo.error = true
this.editInfo.success = false
this.editInfo.errorMessages.pop()
this.editInfo.errorMessages.push(this.editInfo.errorMessagesAll[2])
}
}
this.editInfo.changedName = term
}, 200),
},
mounted () {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,60 @@
<template>
<div>
<va-button :icon="icon" @click="lockDataZoom"/>
</div>
</template>
<script>
import { mapMutations } from 'vuex'
import types from '@/store/modules/analysis/replay/types'
import { mapFields } from 'vuex-map-fields'
export default {
name: 'lock-data-zoom',
components: {
},
props: {
chartID: {
type: Number, // detail data
default: 0,
},
},
created () {
},
data () {
return {
icon: 'fa fa-unlock',
}
},
computed: {
...mapFields('replay', [
'chartData',
'isLockDataZoom',
]),
},
watch: {
},
methods: {
lockDataZoom () {
this.isLockDataZoom = !this.isLockDataZoom
this.lockDataZoomChart({
chartAllData: this.chartData,
chartID: 0,
zoomLock: this.isLockDataZoom,
})
if (this.isLockDataZoom === true) {
this.icon = 'fa fa-lock'
} else if (this.isLockDataZoom === false) {
this.icon = 'fa fa-unlock'
}
},
...mapMutations('replay', [types.chart.lockDataZoom]),
},
mounted () {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,62 @@
<template>
<div>
<span class="box_inline-block"> use SD card data </span>
<va-toggle :disable="disableToggle" flat small class="box_inline-block" v-model="useSdCardData"/>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'SdCardToggle',
components: {
},
computed: {
...mapFields('replay', [
'metaList',
'useSdCardData',
]),
},
props: {
metaIndex: {
type: Number,
default: 0,
},
},
created () {
},
data () {
return {
disableToggle: true,
}
},
mqtt: {
},
methods: {
init () {
if (this.metaList[this.metaIndex].sd_data_uploaded === true) {
this.disableToggle = false
} else {
this.disableToggle = true
this.useSdCardData = false
}
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
<style lang="scss">
.box_inline-block {
padding: 1px;
margin: 1px;
display: inline-block;
}
</style>
@@ -0,0 +1,432 @@
<template>
<va-tree-root>
<va-tree-category label="Experiment Setting" :isOpen="false">
<pre><div style="text-transform: none;" class="title mb-3" :style="{color: this.$themes.primary}" v-html="content"></div></pre>
</va-tree-category>
</va-tree-root>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
import paramTable from '@/data/config-table/index.js'
export default {
name: 'show-parameter',
components: {
},
props: {
metaIndex: {
type: Number, // which meta file
default: 0,
},
},
created () {
},
data () {
return {
deviceName: '',
mode: -1,
content: '',
showDict: {},
// [region] for neulive
ampGainOptions: [
{
id: 0,
description: '25',
},
{
id: 1,
description: '100',
},
{
id: 2,
description: '400',
},
{
id: 3,
description: '800',
},
],
stimulateElectrodeOptions: [
{
label: 'Monopolar',
value: 0,
},
{
label: 'Bipolar',
value: 1,
},
],
cycleNumberOptions: [
{
label: 'limite',
value: 0,
},
{
label: 'Unlimite',
value: 1,
},
],
patternModeOptions: [
{
label: 'Monophasic',
value: 0,
},
{
label: 'Biphasic',
value: 1,
},
],
unitOptions: [
{
label: 's',
value: 0,
},
{
label: 'ms',
value: 1,
},
{
label: 'us',
value: 2,
},
],
// [Endregion]
// [region] for elite
workingModeOptions: [
{
id: 0,
description: 'I-V Curve',
},
{
id: 1,
description: 'Cycle I-V',
},
{
id: 2,
description: 'Function Generator',
},
{
id: 3,
description: 'R-T Graph',
},
{
id: 4,
description: 'V-T Graph',
},
{
id: 5,
description: 'I-T Graph',
},
{
id: 6,
description: 'ADC_Test',
},
{
id: 7,
description: 'Constant Current',
},
{
id: 8,
description: 'Cyclic Voltammetry',
},
{
id: 9,
description: 'Cyclic Voltammetry-hi-cycles',
},
{
id: 10,
description: 'Linear Sweep Voltammetry',
},
{
id: 11,
description: 'Chronoamperometric Graph',
},
],
currentRangeOptions: [
{
value: 0,
label: '<40 μA',
},
{
value: 1,
label: '30-1350 μA',
},
{
value: 2,
label: '>1000 μA',
},
{
value: 3,
label: 'Auto',
},
],
stepTimeOptions: [
{
value: 0,
label: '0.5s',
},
{
value: 1,
label: '1.0s',
},
{
value: 2,
label: '2.0s',
},
],
resisterRangeOptions: [
{
value: 0,
label: '>50 kΩ',
},
{
value: 1,
label: '2-100 kΩ',
},
{
value: 2,
label: '<10 kΩ',
},
{
value: 3,
label: 'Auto',
},
],
eliteSampleRateOptions: [
{
value: 0,
label: '100',
},
{
value: 1,
label: '10',
},
{
value: 2,
label: '5',
},
{
value: 3,
label: '1',
},
{
value: 4,
label: '0.1',
},
{
value: 5,
label: '0.01',
},
],
chargeOptions: [
{
value: 0,
label: 'Charge',
},
{
value: 1,
label: 'Discharge',
},
],
// [Endregion]
}
},
computed: {
...mapFields('replay', [
'metaList',
]),
},
watch: {
},
methods: {
init (deviceName) {
this.deviceName = deviceName
const meta = this.metaList[this.metaIndex]
const params = meta.parameter_set
this.content += 'Duration: ' + parseInt(parseInt(meta.time_duration / 1e6) / 60) + ' m ' + parseInt((meta.time_duration % 6e7) / 1e6) + ' s<br/>'
this.content += '<br/>Parameter: <br/>'
if (this.deviceName.startsWith('Neulive')) {
// recording param
this.content += '<br/> Recording: <br/>'
for (const [key, value] of Object.entries(params)) {
if (!(key.includes('sti') || key.includes('STI'))) {
let showKey = ''
let showValue = value
if (key === 'RECORDING_CH' || key === 'AXIS_CH' || key === 'AMP_GAIN' || key === 'SAMPLE_RATE') {
if (key === 'RECORDING_CH') {
showKey = 'Channels'
// convert decimal to binary
const binaryChannelValue = showValue.toString(2)
const channelValue = binaryChannelValue.split('')
showValue = ''
channelValue.forEach(function (value, i) {
if (value === '1') {
showValue += `${i + 1} `
}
})
if (showValue === '') {
showValue = 'None'
}
} else if (key === 'AXIS_CH') {
showKey = '3-AXIS'
// convert decimal to binary
const binaryChannelValue = showValue.toString(2)
const channelValue = binaryChannelValue.split('').reverse()
showValue = ''
channelValue.forEach(function (value, i) {
if (value === '1') {
if (i === 0) {
showValue += 'x '
} else if (i === 1) {
showValue += 'y '
} else if (i === 2) {
showValue += 'z '
} else if (i === 3) {
showValue += 'mag '
}
}
})
if (showValue === '') {
showValue = 'None'
}
} else if (key === 'AMP_GAIN') {
showKey = 'Amp gain'
const targetID = (value + 1) % 4
for (let i = 0; i < this.ampGainOptions.length; i++) {
if (this.ampGainOptions[i].id === targetID) {
showValue = this.ampGainOptions[i].description
}
}
} else if (key === 'SAMPLE_RATE') {
showKey = 'Sample Rate'
showValue = value
}
this.content += ' ' + showKey + ': ' + showValue + '<br/>'
}
}
}
// stimulation param
this.content += '<br/> Stimulation: <br/>'
for (const [key, value] of Object.entries(params)) {
if (key.includes('sti') || key.includes('STI')) {
let showKey = ''
let showValue = value
if (key === 'STI_H_BRIDGE' || key === 'STI_CHANNEL' || key === 'STI_POLARITY' || key === 'CONTINUOUS_STI' ||
key === 'STI_AMPLITUDE' || key === 'STI_PATTERN' || key === 'STI_T1' || key === 'STI_T2' || key === 'STI_T3' || key === 'STI_T4') {
if (key === 'STI_H_BRIDGE') {
showKey = 'ELECTRODE'
if (value === true) {
showValue = this.stimulateElectrodeOptions[1].label
} else {
showValue = this.stimulateElectrodeOptions[0].label
}
} else if (key === 'STI_CHANNEL' || key === 'STI_POLARITY') {
if (key === 'STI_CHANNEL') {
showKey = 'Channels'
} else {
showKey = 'Polarity'
}
// convert decimal to binary
const binaryChannelValue = showValue.toString(2)
const channelValue = binaryChannelValue.split('')
showValue = ''
channelValue.forEach(function (value, i) {
if (value === '1') {
showValue += `${i + 1} `
}
})
if (showValue === '') {
showValue = 'None'
}
} else if (key === 'CONTINUOUS_STI') {
showKey = 'CYCLE NUMBER'
if (value === true) {
showValue = this.cycleNumberOptions[1].label
} else {
showValue = this.cycleNumberOptions[0].label
}
} else if (key === 'STI_AMPLITUDE') {
showKey = 'AMPLITUDE (uA)'
showValue = value * 5
} else if (key === 'STI_PATTERN') {
showKey = 'PATTERN'
if (value === true) {
showValue = this.patternModeOptions[1].label
} else {
showValue = this.patternModeOptions[0].label
}
} else if (key === 'STI_T1') {
showKey = 'T1 Range'
showValue = `${value[0] * 10 / 1000} ms` // 10 is cuz 1 value = 10us, [0] is cuz now all values in array are same
} else if (key === 'STI_T2') {
showKey = 'T2 Range'
showValue = `${value[0] * 10 / 1000} ms` // 10 is cuz 1 value = 10us
} else if (key === 'STI_T3') {
showKey = 'T3 Range'
showValue = `${value[0] * 10 / 1000} ms` // 10 is cuz 1 value = 10us
} else if (key === 'STI_T4') {
showKey = 'T4 Range'
showValue = `${value[0] * 10 / 1000} ms` // 10 is cuz 1 value = 10us
}
this.content += ' ' + showKey + ': ' + showValue + '<br/>'
}
}
}
if ('STI_T1' in params && 'STI_T2' in params && 'STI_T3' in params && 'STI_T4' in params) {
const period = (params.STI_T1[0] + params.STI_T2[0] + params.STI_T3[0] + params.STI_T4[0]) * 10 / 1000 // 10 is cuz 1 value = 10us
this.content += ' Frequency: ' + String(1000 / period) + ' Hz' + '<br/>' // 1000 is cuz 1s = 1000ms
this.content += ' Period: ' + String(period) + ' ms' + '<br/>'
}
} else if (this.deviceName === 'EliteZM15' || this.deviceName === 'EliteEIS') {
const mode = this.mode = params.MODE
const modeName = paramTable[this.deviceName].MODE[mode].name
const showParams = paramTable[this.deviceName].MODE[mode].showParameter
this.showDict.MODE = modeName
if (modeName === 'Pulse Sensing') {
const duplicateParam = ['V_initial', 't_pulse', 'CURR_REC']
for (let i = 0; i < 4; i++) {
const key = 'segment_order'
const order = paramTable[this.deviceName][key].outputReadabilityData(params[key], 1, i)
if (parseInt(order) >= 0) { // if === -1, 使block
for (const key of duplicateParam) {
this.fillShowDict(key, paramTable[this.deviceName][key].outputReadabilityData(params[key], 1, i), i)
}
}
}
const remainParams = showParams.filter((e) => { //
return duplicateParam.indexOf(e) === -1
})
for (const key of remainParams) {
this.fillShowDict(key, params[key])
}
} else {
for (const key of showParams) {
this.fillShowDict(key, params[key])
}
}
}
this.dump()
},
fillShowDict (key, value, index = -1) {
const expVal = paramTable[this.deviceName][key].defaultUnit
? paramTable[this.deviceName][key].outputReadabilityData(value, paramTable[this.deviceName][key].unit[paramTable[this.deviceName][key].defaultUnit])
: paramTable[this.deviceName][key].outputReadabilityData(value)
let name = typeof (paramTable[this.deviceName][key].showName) === 'function'
? paramTable[this.deviceName][key].showName(this.mode)
: paramTable[this.deviceName][key].showName
if (index >= 0) {
name += ` ${index + 1}`
}
const unit = paramTable[this.deviceName][key].defaultUnit
this.showDict[name] = unit !== undefined ? expVal.toString() + unit : expVal.toString()
},
dump () {
for (const [showKey, showValue] of Object.entries(this.showDict)) {
this.content += ' ' + showKey + ': ' + showValue + '<br/>'
}
},
},
}
</script>
@@ -0,0 +1,37 @@
<template>
<div>
<p class="display-6"> Resample: {{ currentScale }} to 1 <p/>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'show-resample-rate',
components: {
},
props: {
},
created () {
},
data () {
return {
}
},
computed: {
...mapFields('replay', [
'currentScale',
]),
},
watch: {
},
methods: {
},
mounted () {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,115 @@
<template>
<div>
<va-card>
<p style="font-size: 125%; text-decoration: underline;"> Channel </p>
<channels/>
<p style="font-size: 125%; text-decoration: underline;"> Detect </p>
<p :style="{color: this.$themes.primary}" class="display-6"> High pass filter </p>
<cutoff-freq/>
<filter-order/>
<filter-button ref="filterButtonRef" @loadFilterData="loadFilterData"/>
<p :style="{color: this.$themes.danger}" class="display-6"> Threshold </p>
<threshold/>
<br/>
<p class="display-6"> Waveform </p>
<wave-length/>
<prethreshold/>
<refractory-period/>
<detect-button ref="detectButtonRef" @loadThresholdData="loadThresholdData"/>
</va-card>
</div>
</template>
<script>
import Channels from '@/components/analysis/spike/item/Channels.vue'
import CutoffFreq from '@/components/analysis/spike/item/CutoffFreq.vue'
import FilterOrder from '@/components/analysis/spike/item/FilterOrder.vue'
import Prethreshold from '@/components/analysis/spike/item/Prethreshold.vue'
import RefractoryPeriod from '@/components/analysis/spike/item/RefractoryPeriod.vue'
import Threshold from '@/components/analysis/spike/item/Threshold.vue'
import WaveLength from '@/components/analysis/spike/item/WaveLength.vue'
import DetectButton from '@/components/analysis/spike/item/DetectButton.vue'
import FilterButton from '@/components/analysis/spike/item/FilterButton.vue'
export default {
name: 'control-panel',
components: {
Channels,
CutoffFreq,
FilterOrder,
FilterButton,
Prethreshold,
RefractoryPeriod,
Threshold,
WaveLength,
DetectButton,
},
props: {
},
async created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
init () {
this.enableFilterButton()
},
refreshChart (options) {
this.$emit('refreshChart', options)
},
loadThresholdData () {
this.$emit('loadThresholdData')
},
loadFilterData () {
this.$emit('loadFilterData')
},
enableFilterButton () {
this.$refs.filterButtonRef.enableButton()
},
disableFilterButton () {
this.$refs.filterButtonRef.disableButton()
},
enableDetectButton () {
this.$refs.detectButtonRef.enableButton()
},
disableDetectButton () {
this.$refs.detectButtonRef.disableButton()
},
},
// use watch because va-select with @change will have bug
watch: {
},
mounted () {
},
}
</script>
<style lang="scss">
.flex-container {
display: flex;
}
.flex-child {
flex: 2;
}
.flex-child1 {
flex: 1;
}
.flex-child2 {
flex: 0;
}
.flex-child:first-child {
margin-right: 1px;
}
.right {
float: right;
}
</style>
+436
View File
@@ -0,0 +1,436 @@
<template>
<div>
<div class="row row-equal">
<div class="flex md12 xl3 xs12 sm12">
<div class="row">
<div class="flex sm12 xl12 md12 xs12">
<va-accordion>
<va-collapse class="mb-2" :isOpenDefault="true">
<span slot="header">Control Panel</span>
<div slot="body">
<div>
<control-panel
:ref="'control_panel'"
@loadFilterData="loadFilterData"
@loadThresholdData="loadThresholdData"
/>
</div>
</div>
</va-collapse>
</va-accordion>
</div>
</div>
</div>
<div :class="chartAreaClass">
<div class="row" >
<div class="flex sm12 xl12 md12 xs12">
<spike-overview-chart :ref="'chart_overview'" :cardheight="'30vh'" :data="chartOverviewData"/>
<spike-chart :ref="'chart_detail'" :cardheight="'60vh'" :data="chartDetailData"/>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { mapActions, mapGetters, mapMutations } from 'vuex'
import SpikeOverviewChart from './SpikeOverviewChart.vue'
import SpikeChart from './SpikeChart.vue'
import ControlPanel from './ControlPanel.vue'
import api from '@/data/api/index'
import { taskInfo } from '@/data/task/TaskInfo'
import types from '@/store/modules/analysis/spike/types'
import { mapFields } from 'vuex-map-fields'
import newSeries from '@/factories/chart/seriesFactory'
export default {
name: 'spike-data-replay',
components: {
SpikeOverviewChart,
SpikeChart,
ControlPanel,
},
computed: {
...mapFields('spike', [
'chartData',
'chartOverviewData',
'chartDetailData',
'metaList',
'selectedChannel',
'cutoffFreq',
'filterOrder',
'selectedThreshold',
'upperThreshold',
'lowerThreshold',
'waveLength',
'preThreshold',
'refractoryPeriod',
]),
},
props: {
},
async created () {
this.chartOverviewData = await this.initChart({
chartAllData: this.chartData,
chartID: 0,
gridLength: 1,
type: 'overview',
device: 'neulive',
mode: 0,
})
this.chartDetailData = await this.initChart({
chartAllData: this.chartData,
chartID: 1,
gridLength: 1,
type: 'detail',
device: 'neulive',
mode: 0,
})
},
data () {
return {
dataInfo: {},
maxTime: 0,
chartAreaClass: ['flex', 'xs12', 'sm12', 'md12', 'xl9', 'pa-0'],
randomColorArray: [],
controllerList: [],
}
},
mqtt: {
async '+/analysis/spike_detect/+/+/+' (data, topic) {
const topicSplitArray = topic.split('/')
if (this.metaList.some(e => e.id === parseInt(topicSplitArray[4]))) {
if (topicSplitArray[3] === 'data') {
const utf8decoder = new TextDecoder()
const dataStr = utf8decoder.decode(data)
const dataArray = JSON.parse(dataStr)
this.chartOverviewData.series[0].data.push(...dataArray)
} else if (topicSplitArray[3] === 'time_mark') {
const utf8decoder = new TextDecoder()
const timeMarkStr = JSON.parse(utf8decoder.decode(data))
const timeMarkObj = timeMarkStr.split(' ')
this.drawTimeMark(timeMarkObj)
} else if (topicSplitArray[3] === 'detect_signal') {
const utf8decoder = new TextDecoder()
const detectSignalStr = utf8decoder.decode(data)
const detectSignalObj = Object.values(JSON.parse(detectSignalStr))
this.drawThresholdData(detectSignalObj)
}
}
},
},
methods: {
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: taskInfo.getTaskInfo().controllerID,
mac: '',
status: 'loading',
isScan: true,
})
}
await update()
},
mqttSub: function (val) {
this.$mqtt.subscribe(val)
},
mqttUnSub: function (val) {
this.$mqtt.unsubscribe(val)
},
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
pageMqttSub: function (id) {
this.mqttSub(id + '/analysis/spike_detect/+/+/+')
},
pageMqttUnSub: function (id) {
this.mqttUnSub(id + '/analysis/spike_detect/+/+')
},
showChartLoading: function (chart) {
const loadStyle = {
text: '',
color: '#cccccc',
maskColor: 'rgba(255, 255, 255, 0.8)',
zlevel: 0,
}
switch (chart) {
case 'overview':
this.$refs.chart_overview.showLoading(loadStyle)
break
case 'detail':
this.$refs.chart_detail.showLoading(loadStyle)
break
default:
this.$refs.chart_overview.showLoading(loadStyle)
this.$refs.chart_detail.showLoading(loadStyle)
break
}
},
hideChartLoading: function (chart) {
switch (chart) {
case 'overview':
this.$refs.chart_overview.hideLoading()
break
case 'detail':
this.$refs.chart_detail.hideLoading()
break
default:
this.$refs.chart_overview.hideLoading()
this.$refs.chart_detail.hideLoading()
break
}
},
register: async function () {
const gridLength = 1
this.updateGridListChart({
chartAllData: this.chartData,
chartID: this.chartDetailData.chartID,
gridLength: gridLength,
})
const register = this.metaList.map(meta => {
this.registerChart({
chartAllData: this.chartData,
chartID: this.chartOverviewData.chartID,
gridIndex: 0,
deviceNameX: 'Time',
deviceNameY: 'Neulive',
deviceIDY: meta.name,
channelY: this.selectedChannel,
})
this.registerChart({
chartAllData: this.chartData,
chartID: this.chartDetailData.chartID,
gridIndex: 0,
deviceNameX: 'Time',
deviceNameY: 'Neulive',
deviceIDY: meta.name,
channelY: this.selectedChannel,
})
if (this.maxTime < parseInt(meta.time_duration)) {
this.maxTime = parseInt(meta.time_duration)
}
})
await Promise.all(register)
for (let i = 0; i < 2; i++) {
// ID 0 = overview, ID 1 = detail
this.updateAxisLabelChart({
chartID: i,
axis: 'x',
axisIndex: 0,
channel: this.selectedChannel,
})
this.updateAxisLabelChart({
chartID: i,
axis: 'y',
axisIndex: 0,
channel: this.selectedChannel,
})
this.updateDataZoomChart({
chartAllData: this.chartData,
chartID: i,
})
}
// this.updateChartSamplingChart({ chartID: this.chartOverviewData.chartID, seriesIndex: 0, method: function (frame) { return frame[0] } })
this.chartOverviewData.xAxis[0].min = 0
this.chartOverviewData.xAxis[0].max = this.maxTime
},
loadFilterData: async function () {
this.showChartLoading('overview')
this.$refs.chart_detail.clear()
this.$refs.control_panel.disableDetectButton()
for (const meta in this.dataInfo) {
// reset overview chart
this.chartOverviewData.series[0].data.length = 0
this.chartOverviewData.series[0].markArea.data.length = 0
this.chartOverviewData.color = ['#000000'] // black
await api.analysis.spikeDetect({
controller_id: this.controllerList[0].id,
meta_id: meta,
channel: this.selectedChannel,
filter_order: this.filterOrder,
cut_off_freq: this.cutoffFreq,
data_type: 'filter_data',
})
this.hideChartLoading('overview')
this.$refs.control_panel.enableDetectButton()
console.log(this.chartOverviewData)
}
},
loadThresholdData: async function () {
this.showChartLoading('detail')
for (const meta in this.dataInfo) {
let thresholdValue
if (this.selectedThreshold === 'over') {
thresholdValue = this.upperThreshold
} else if (this.selectedThreshold === 'bellow') {
thresholdValue = this.lowerThreshold
}
for (let i = 0; i < this.chartDetailData.series.length; i++) {
this.chartDetailData.series[i].name = ''
this.chartDetailData.series[i].data.length = 0
}
await api.analysis.spikeDetect({
controller_id: this.controllerList[0].id,
meta_id: meta,
channel: this.selectedChannel,
cut_off_freq: this.cutoffFreq,
filter_order: this.filterOrder,
threshold: [
`'${this.selectedThreshold}'`,
thresholdValue,
],
waveForm: [this.waveLength, this.preThreshold, this.refractoryPeriod],
ret_data_type: 'threshold_data',
})
}
this.hideChartLoading('detail')
},
drawThresholdData (detailSignalArray) {
if (detailSignalArray.length <= 8) {
this.chartDetailData.tooltip.show = true
} else {
this.chartDetailData.tooltip.show = false
}
this.chartDetailData.legend.data.length = 0
this.chartDetailData.legend.type = 'scroll'
this.chartDetailData.legend.top = '0.25%'
// this.chartDetailData.legendpageButtonPosition = 'start'
this.chartDetailData.animation = false
this.chartDetailData.color = []
for (let i = 0; i < detailSignalArray.length; i++) {
const detailSignal = detailSignalArray[i].split(' ')
const arrayLength = detailSignal.length
const step = parseInt(this.waveLength) / (arrayLength - 1)
const xAxisIndex = 0
const yAxisIndex = 0
const legendName = 'T_' + String(i + 1)
if (this.chartDetailData.series.length <= i) {
const _series = newSeries('line', legendName, xAxisIndex, yAxisIndex, [-1, -1], ['metaInfo.name', this.selectedChannel], null, null)
this.chartDetailData.series.push(_series)
}
for (let j = 0; j < arrayLength; j++) {
this.chartDetailData.series[i].data.push([j * step, detailSignal[j]])
}
// push legendName
this.chartDetailData.legend.data.push(legendName)
this.chartDetailData.series[i].name = legendName
// set legend and series color
this.chartDetailData.color.push(this.randomColorArray[i])
}
this.chartDetailData.xAxis[0].min = 0
this.chartDetailData.xAxis[0].max = parseInt(this.waveLength)
this.chartDetailData.xAxis[0].axisLabel.show = true
},
drawTimeMark (timeMarkArray, period) {
// reset overview
this.chartOverviewData.series[0].markArea.data.length = 0
const timeMarkLength = timeMarkArray.length
for (let i = 0; i < timeMarkLength; i++) {
// generate color array for overview markArea and detail chart series
const randomColor = '#' + Math.floor(Math.random() * 16777215).toString(16) // ref: https://css-tricks.com/snippets/javascript/random-hex-color/
this.randomColorArray.push(randomColor)
if (Number.isInteger(parseInt(timeMarkArray[i]))) { // cuz maybe is '' if no any match after filtering
const timeMark = parseInt(timeMarkArray[i])
let startTime = timeMark - parseInt(this.preThreshold)
let endTime = timeMark + parseInt(this.refractoryPeriod)
if (startTime < 0) {
startTime = 0
}
if (endTime > timeMark) {
endTime = timeMark
}
const overviewSignal = this.chartOverviewData.series[0].data
let startIndex = 0
let endIndex = 0
for (let i = 0; i < overviewSignal.length; i++) {
if (startTime <= overviewSignal[i][0]) {
startIndex = i
break
}
}
for (let i = 0; i < overviewSignal.length; i++) {
if (endTime <= overviewSignal[i][0]) {
endIndex = i
break
}
}
this.chartOverviewData.series[0].markArea.data.push([
{
itemStyle: {
color: randomColor,
borderColor: randomColor,
borderWidth: 1,
},
name: String(i + 1),
xAxis: overviewSignal[startIndex][0],
},
{
xAxis: overviewSignal[endIndex][0],
},
])
}
}
},
...mapActions('spike', [types.chart.init, types.chart.initSelectedChannel, types.chart.register, types.chart.clear, types.chart.updateGridList, types.chart.updateDataZoom]),
...mapActions('spike', [types.meta.init]),
...mapActions('spike', [types.rec.init, types.rec.intoData, types.rec.initDisplaySetting, types.rec.updateDisplaySetting]),
...mapMutations('spike', [types.chart.updateAxisLabel, types.chart.updateChartSampling]),
...mapMutations('spike', [types.meta.updateByIndex]),
...mapGetters('spike', [types.meta.getAll]),
...mapGetters('spike', [types.rec.getAll]),
},
// use watch because va-select with @change will have bug
watch: {
},
async mounted () {
this.getControllerList()
this.pageMqttSub(this.controllerList[0].id)
const metaIDList = this.$route.params.metaList.split('-')
await this.initMeta({ metaIDList: metaIDList, api: api })
this.metaList = this.getAllMeta()
this.initSelectedChannelChart({ metaIndex: 0 })
await this.initRec({ api: api })
this.dataInfo = this.getAllRec()
console.log(this.metaList)
console.log(this.dataInfo)
await this.register()
this.$refs.control_panel.init()
},
beforeDestroy () {
this.pageMqttUnSub(this.controllerList[0].id)
this.$refs.chart_detail.clear()
for (const id in this.chartData) {
for (const _series of this.chartData[id].series) {
_series.length = 0
}
delete this.chartData[id]
}
this.clearChart({ chartAllData: this.chartData })
},
}
</script>
@@ -0,0 +1,109 @@
<template>
<div class="flex" :class="cardclass">
<va-card :style="'height: ' + cardheight + ';'">
<chart :ref="'chart_ref'" :style="'width: '+ cardwidth + '; height: ' + cardheight + ';'" :options="data" @dataZoom="updateZoom" :auto-resize="true"></chart>
</va-card>
</div>
</template>
<script>
import { mapMutations } from 'vuex'
import types from '@/store/modules/analysis/spike/types'
export default {
name: 'spike-replay-chart',
components: {
},
props: {
data: {
type: Object,
default: function () {
return {}
},
},
cardclass: {
type: Array,
default: function () {
return ['xs12', 'md12', 'xl12', 'sm12']
},
},
cardheight: {
type: String,
default: '82vh',
},
cardwidth: {
type: String,
default: 'auto',
},
},
created () {
},
data () {
return {
}
},
computed: {
},
watch: {
},
methods: {
resize: function () {
if (this.$refs.chart_ref != null) {
this.$refs.chart_ref.resize()
}
},
updateZoom: function (e) {
this.$emit('dataZoomEvent', e)
},
mergeOptions (options) {
this.$refs.chart_ref.mergeOptions(options)
},
turnOnAxisEventHandler (eventName, query, handler, attr) {
const chartID = 1
this.updateAxisEventHandlerChart({
chartID: chartID,
axis: attr.axis,
status: 'on',
})
// doc: https://echarts.apache.org/zh/api.html#echartsInstance.on
this.$refs.chart_ref.chart._zr.on(eventName, query, handler)
},
turnOffAxisEventHandler (eventName, handler, attr) {
const chartID = 1
this.updateAxisEventHandlerChart({
chartID: chartID,
axis: attr.axis,
status: 'off',
})
// doc: https://echarts.apache.org/zh/api.html#echartsInstance.off
this.$refs.chart_ref.chart._zr.off(eventName, handler)
},
showLoading (options) {
this.$refs.chart_ref.showLoading(options)
},
hideLoading () {
this.$refs.chart_ref.hideLoading()
},
clear () {
this.$refs.chart_ref.clear()
},
...mapMutations('spike', [types.chart.updateAxisEventHandler]),
},
async mounted () {
this.resizeTimer = setInterval(this.resize, 1000)
},
destroyed () {
clearInterval(this.resizeTimer)
},
}
</script>
<style lang='scss'>
.va-card {
&__body {
padding-top: 0.25rem;
}
}
</style>
@@ -0,0 +1,85 @@
<template>
<div class="flex" :class="cardclass">
<va-card :style="'height: ' + cardheight + ';'">
<chart :ref="'chart_ref'" :style="'width: '+ cardwidth + '; height: ' + cardheight + ';'" :options="data" @dataZoom="updateZoom" :auto-resize="true"></chart>
</va-card>
</div>
</template>
<script>
export default {
name: 'spike-overview-chart',
components: {
},
props: {
data: {
type: Object,
default: function () {
return {}
},
},
cardclass: {
type: Array,
default: function () {
return ['xs12', 'md12', 'xl12', 'sm12']
},
},
cardheight: {
type: String,
default: '82vh',
},
cardwidth: {
type: String,
default: 'auto',
},
},
created () {
},
data () {
return {
}
},
computed: {
},
watch: {
},
methods: {
resize: function () {
if (this.$refs.chart_ref != null) {
this.$refs.chart_ref.resize()
}
},
mergeOptions (options) {
this.$refs.chart_ref.mergeOptions(options)
},
updateZoom: function (e) {
this.$emit('dataZoomEvent', e)
},
showLoading (options) {
this.$refs.chart_ref.showLoading(options)
},
hideLoading () {
this.$refs.chart_ref.hideLoading()
},
clear () {
this.$refs.chart_ref.clear()
},
},
async mounted () {
this.resizeTimer = setInterval(this.resize, 1000)
},
destroyed () {
clearInterval(this.resizeTimer)
},
}
</script>
<style lang='scss'>
.va-card {
&__body {
padding-top: 0.25rem;
}
}
</style>
@@ -0,0 +1,43 @@
<template>
<div>
<va-button-toggle small flat v-model="selectedChannel" :options="selectedChannelOptions" @click.native="reloadData(selectedChannel)"/>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'Channels',
components: {
},
computed: {
...mapFields('spike', [
'selectedChannel',
'selectedChannelOptions',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
reloadData (val) {
this.selectedChannel = val
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,57 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<p>Cut-off Freq<p/>
</div>
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<va-input
@mouseleave.native="itemChange(cutoffFreq)"
@keyup.enter="itemChange(cutoffFreq)"
@blur="itemChange(cutoffFreq)"
v-model="cutoffFreq"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
Hz
</p>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'CutoffFreq',
components: {
},
computed: {
...mapFields('spike', [
'cutoffFreq',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
itemChange (val) {
this.cutoffFreq = val
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,56 @@
<template>
<div>
<va-button class="right" small @click="startDetect" :disabled="isDisable">
Start Detect
</va-button>
</div>
</template>
<script>
import types from '@/store/modules/analysis/spike/types'
import { mapFields } from 'vuex-map-fields'
import { mapMutations } from 'vuex'
export default {
name: 'Channels',
components: {
},
computed: {
...mapFields('spike', [
'chartDetailData',
'selectedChannel',
'waveLength',
]),
},
props: {
},
created () {
},
data () {
return {
isDisable: true,
}
},
mqtt: {
},
methods: {
startDetect () {
this.$emit('loadThresholdData')
},
enableButton () {
this.isDisable = false
},
disableButton () {
this.isDisable = true
},
...mapMutations('spike', [types.chart.updateAxisLabel]),
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,56 @@
<template>
<div class="flex xl12 md12 sm12 xs12 mb-4">
<va-button class="right" small @click="startFilter" :disabled="isDisable">
Start Filter
</va-button>
</div>
</template>
<script>
import types from '@/store/modules/analysis/spike/types'
import { mapFields } from 'vuex-map-fields'
import { mapMutations } from 'vuex'
export default {
name: 'FilterButton',
components: {
},
computed: {
...mapFields('spike', [
'chartDetailData',
'selectedChannel',
'waveLength',
]),
},
props: {
},
created () {
},
data () {
return {
isDisable: true,
}
},
mqtt: {
},
methods: {
startFilter () {
this.$emit('loadFilterData')
},
enableButton () {
this.isDisable = false
},
disableButton () {
this.isDisable = true
},
...mapMutations('spike', [types.chart.updateAxisLabel]),
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,54 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<p>Filter order<p/>
</div>
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<va-input
@mouseleave.native="itemChange(filterOrder)"
@keyup.enter="itemChange(filterOrder)"
@blur="itemChange(filterOrder)"
v-model="filterOrder"
class="mb-0"
>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'FilterOrder',
components: {
},
computed: {
...mapFields('spike', [
'filterOrder',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
itemChange (val) {
this.filterOrder = val
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,57 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<p>Prethreshold<p/>
</div>
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<va-input
@mouseleave.native="itemChange(preThreshold)"
@keyup.enter="itemChange(preThreshold)"
@blur="itemChange(preThreshold)"
v-model="preThreshold"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
µs
</p>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'Prethreshold',
components: {
},
computed: {
...mapFields('spike', [
'preThreshold',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
itemChange (val) {
this.preThreshold = val
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,57 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<div class="flex sm7 xl7 md7 xs7 px-0 mx-0">
<p>Refractory period<p/>
</div>
<div class="flex sm5 xl5 md5 xs5 px-0 mx-0">
<va-input
@mouseleave.native="itemChange(refractoryPeriod)"
@keyup.enter="itemChange(refractoryPeriod)"
@blur="itemChange(refractoryPeriod)"
v-model="refractoryPeriod"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
µs
</p>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'RefractoryPeriod',
components: {
},
computed: {
...mapFields('spike', [
'refractoryPeriod',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
itemChange (val) {
this.refractoryPeriod = val
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,83 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<va-radio-button
v-for="(option, index) in options"
:key="index"
v-model="selectedThreshold"
:option="option"
:label="`${option}`"
/>
<va-input
v-if="selectedThreshold === 'over'"
@mouseleave.native="itemChange(upperThreshold, 'upper')"
@keyup.enter="itemChange(upperThreshold, 'upper')"
@blur="itemChange(upperThreshold, 'upper')"
v-model="upperThreshold"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
µV
</p>
</va-input>
<va-input
v-if="selectedThreshold === 'bellow'"
@mouseleave.native="itemChange(lowerThreshold, 'lower')"
@keyup.enter="itemChange(lowerThreshold, 'lower')"
@blur="itemChange(lowerThreshold, 'lower')"
v-model="lowerThreshold"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
µV
</p>
</va-input>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'Threshold',
components: {
},
computed: {
...mapFields('spike', [
'selectedThreshold',
'upperThreshold',
'lowerThreshold',
]),
},
props: {
},
created () {
},
data () {
return {
options: [
// 'Auto',
'over',
'bellow',
],
}
},
mqtt: {
},
methods: {
itemChange (val, type) {
if (type === 'upper') {
this.upperThreshold = val
} else if (type === 'lower') {
this.lowerThreshold = val
}
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,57 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<div class="flex sm7 xl7 md7 xs7 px-0 mx-0">
<p>Waveform length<p/>
</div>
<div class="flex sm5 xl5 md5 xs5 px-0 mx-0">
<va-input
@mouseleave.native="itemChange(waveLength)"
@keyup.enter="itemChange(waveLength)"
@blur="itemChange(waveLength)"
v-model="waveLength"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
µs
</p>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'WaveLength',
components: {
},
computed: {
...mapFields('spike', [
'waveLength',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
itemChange (val) {
this.waveLength = val
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,37 @@
<template>
<div>
<span> Resample: {{ currentScale }} to 1 </span>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'show-resample-rate',
components: {
},
props: {
},
created () {
},
data () {
return {
}
},
computed: {
...mapFields('spike', [
'currentScale',
]),
},
watch: {
},
methods: {
},
mounted () {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,37 @@
<template>
<!-- <va-card
class="horizontal-bars"
> -->
<div class="row">
<div class="flex md12 xs12">
<va-progress-bar
:value="value"
>
{{ value }} %
</va-progress-bar>
</div>
</div>
<!-- </va-card> -->
</template>
<script>
export default {
name: 'progress-bar',
data () {
return {
}
},
props: {
value: {
type: Number,
required: true,
},
},
methods: {
},
mounted () {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,56 @@
<template>
<va-modal
class="flex sm12 xl12 md12 xs12"
v-model="showProgressModal"
size="small"
:title="title"
hide-default-actions
>
<progressBar
:value="value"
:ref="'progressBarRef'"
/>
</va-modal>
</template>
<script>
import progressBar from '@/components/common/progressBarByValueModal/progressBar.vue'
export default {
name: 'progress-bar-modal',
components: {
progressBar,
},
data () {
return {
showProgressModal: false,
value: 0,
title: '',
}
},
methods: {
show () {
this.showProgressModal = true
},
hide () {
this.showProgressModal = false
},
setTitle (title) {
this.title = title
},
setValue (value) {
this.value = value
},
addValue () {
this.value += 1
},
reset () {
this.value = 0
},
progressDone () {
this.$refs.progressBarRef.progressDone()
this.hide()
},
},
}
</script>
@@ -0,0 +1,54 @@
<template>
<!-- <va-card
class="horizontal-bars"
> -->
<div class="row">
<div class="flex md12 xs12 mb-2 mt-2">
<va-progress-bar
:value="progressValue"
>
{{ progressValue }} %
</va-progress-bar>
</div>
</div>
<!-- </va-card> -->
</template>
<script>
export default {
name: 'progress-bar',
data () {
return {
progressValue: 0,
timeInterval: null,
}
},
props: {
// unit: sec
time: {
type: String,
required: true,
},
},
methods: {
animateValues () {
this.timeInterval = setInterval(() => {
this.progressValue += 1
if (this.progressValue === 99) {
clearInterval(this.timeInterval)
}
}, parseInt(this.time * 10))
},
progressDone () {
this.progressValue = 100
},
},
mounted () {
this.animateValues()
},
destroyed () {
clearInterval(this.timeInterval)
},
}
</script>
@@ -0,0 +1,56 @@
<template>
<va-modal
class="flex sm12 xl12 md12 xs12"
v-model="showProgressModal"
size="small"
:title="title"
:noOutsideDismiss="true"
hide-default-actions
>
<progressBar
:time="time"
:ref="'progressBarRef'"
/>
<div class="flex-center sm12 xl12 md12 xs12">
<va-button @click="hide">Cancel</va-button>
</div>
</va-modal>
</template>
<script>
import progressBar from '@/components/common/progressBarModal/progressBar.vue'
export default {
name: 'progress-bar-modal',
components: {
progressBar,
},
props: {
title: {
type: String,
default: '',
},
// unit: sec
time: {
type: String,
required: true,
},
},
data () {
return {
showProgressModal: false,
}
},
methods: {
show () {
this.showProgressModal = true
},
hide () {
this.showProgressModal = false
},
progressDone () {
this.$refs.progressBarRef.progressDone()
this.hide()
},
},
}
</script>
+115
View File
@@ -0,0 +1,115 @@
<template>
<va-card class="flex xl3 md3 sm12 xs12" title="MQTT">
<div class="row ma-1 text-center">
<va-button @click="getControllerID">Controller-ID</va-button>
<div class="flex-center">
{{ controllerID }}
</div>
</div>
<div class="row ma-1 text-start" v-if="controllerID !== ''">
<va-button @click="getHardwareInfo">HardwareInfo</va-button>
<div class="">
{{ responseMessage }}
</div>
</div>
</va-card>
</template>
<script>
import api from '@/data/api'
export default {
name: 'Developer',
components: {
},
data () {
return {
controllerID: '',
responseMessage: '',
}
},
mqtt: {
async '+/get_device_info_all/+' (data, topic) {
console.log('get_device_info_all', String.fromCharCode.apply(null, data))
},
async '+/hardware_device/+' (data, topic) {
console.log('hardware_device', String.fromCharCode.apply(null, data))
},
async '+/hardware_datetime/+' (data, topic) {
console.log('hardware_datetime', String.fromCharCode.apply(null, data))
},
async '+/hardware_info/+' (data, topic) {
console.log('hardware_info', String.fromCharCode.apply(null, data))
this.responseMessage = String.fromCharCode.apply(null, data)
},
async '+/broadcast/+' (data, topic) {
console.log('broadcast', String.fromCharCode.apply(null, data))
},
},
methods: {
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
mqttSub: function (val) {
this.$mqtt.subscribe(val)
},
mqttUnSub: function (val) {
this.$mqtt.unsubscribe(val)
},
pageMqttSub: function (id) {
this.mqttSub(id + '/hardware_datetime/+')
this.mqttSub(id + '/hardware_device/+')
this.mqttSub(id + '/hardware_info/+')
this.mqttSub(id + '/broadcast')
this.mqttSub(id + '/get_device_info_all/+')
},
pageMqttUnSub: function (id) {
this.mqttUnSub(id + '/hardware_datetime/+')
this.mqttUnSub(id + '/hardware_device/+')
this.mqttUnSub(id + '/hardware_info/+')
this.mqttUnSub(id + '/broadcast')
this.mqttUnSub(id + '/get_device_info_all/+')
},
getControllerID: async function () {
try {
const response = await api.controller.getAll()
if (response.status === 200) {
if (response.data.length > 0) {
this.controllerID = response.data[0].mqtt_id
this.pageMqttSub(this.controllerID)
return true
}
this.controllerID = 'No Controller Info'
return false
}
this.controllerID = 'Wrong status ' + response.status
} catch (e) {
console.log(e)
this.controllerID = e
}
},
getHardwareDatetime: function () {
this.mqttPub(this.controllerID + '_user', JSON.stringify({
header: 'hardware_datetime/0',
content: String(Date.now()),
}))
},
getHardwareInfo: function () {
this.mqttPub(this.controllerID + '_user', JSON.stringify({
header: 'hardware_info/0',
}))
},
},
async mounted () {
},
destroyed () {
if (this.controllerID !== '') {
this.pageMqttUnSub(this.controllerID)
}
},
}
</script>
<style>
</style>
+58
View File
@@ -0,0 +1,58 @@
<template>
<va-card class="" title="LED">
<div class="row ma-1">
<va-button v-for="color in colors" :key="color" :color="colorMapping[color]" @click="changeLedColor(color)">
{{color}}
</va-button>
<va-button :color="'gray'" @click="testLed()">test</va-button>
</div>
</va-card>
</template>
<script>
import { taskInfo } from '@/data/task/TaskInfo'
export default {
name: 'Developer',
components: {
},
data () {
return {
colors: ['red', 'orange', 'yellow', 'green', 'blue', 'cyan', 'magenta'],
colorMapping: {
red: 'danger',
orange: 'Orange',
blue: 'primary',
yellow: 'warning',
green: 'success',
cyan: 'info',
magenta: 'violet',
},
}
},
methods: {
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
testLed: function () {
this.changeLedColor('red')
setTimeout(() => { this.changeLedColor('blue') }, 2000)
setTimeout(() => { this.changeLedColor('green') }, 4000)
},
changeLedColor: function (color) {
this.mqttPub(taskInfo.getTaskInfo().controllerID + '_user', JSON.stringify({
header: 'hardware_send/0',
command: 'led',
state: color,
}))
},
},
async mounted () {
await taskInfo.updateTaskInfo(this.$route.params.taskID)
},
}
</script>
<style>
</style>
+111 -23
View File
@@ -12,7 +12,7 @@
<div v-if="controller.status === 'running'">
<div class="flex xs12 md12 xl12 sm12 mb-3" style="text-align: center;" >
<va-button color="primary" target="_blank" @click="scan(controller.id)" small :disabled="controller.isScan">
<va-button class="no-dark-style-va-button" color="primary" target="_blank" @click="scan(controller.id)" small :disabled="controller.isScan">
SCAN
</va-button>
<va-button color="dark" target="_blank" @click="restartCheck(controller.id, controller.mac)" small>
@@ -53,27 +53,28 @@
<va-badge v-if="device.status == 'scanned'" class="px-1 py-0" color="primary">scanned</va-badge>
<va-badge v-if="device.status == 'connected'" class="px-1 py-0" color="success">connected</va-badge>
</div> -->
<va-item-section avatar class="ml-1">
<va-avatar style="border-radius: 0;">
<img :src="device.pic" :alt="device.name">
</va-avatar>
</va-item-section>
<va-item-section class="ml-3">
<va-item-label>
{{ device.name }}
<va-badge v-if="device.status == 'scanned'" class="px-1 py-0 ml-2 mt-0" color="primary">scanned</va-badge>
<va-badge v-if="device.status == 'connected'" class="px-1 py-0 ml-2 mt-0" color="success">connected</va-badge>
</va-item-label>
<va-item-label caption>
{{ device.addr }}
</va-item-label>
</va-item-section>
<!--<div>
<va-icon name="fa fa-battery-1" style="font-size: 1.5rem;" color="primary"/>
</div>-->
</va-item>
<va-item-section side >
<va-item class="pa-0 ma-0 mt-2">
<va-item-section>
<div v-if="device.loading" class="mr-3">
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
@@ -82,11 +83,14 @@
>
</fulfilling-bouncing-circle-spinner>
</div>
<va-button @click.stop="connect(controller.id, device)" v-if="device.status == 'scanned' && !device.loading" class="pl-2 pr-2" color="success" small>CONNECT</va-button>
<va-button @click.stop="disconnectCheck(controller.id, device)" :disabled="controller.isScan" v-if="device.status == 'connected' && !device.loading" class="pl-2 pr-2" color="danger" small>DISCONNECT</va-button>
<div>
<va-button style="width: 100px;" @click.stop="connect(controller.id, device)" v-if="device.status == 'scanned' && !device.loading" class="pl-2 pr-2 mt-2" color="success" small>CONNECT</va-button>
<va-button style="width: 100px;" @click.stop="disconnectCheck(controller.id, device)" :disabled="controller.isScan" v-if="device.status == 'connected' && !device.loading" class="pl-2 pr-2 mt-2" color="danger" small>DISCONNECT</va-button>
<va-button id="detectButton" @click.stop="detect(controller.id, device)" :disabled="controller.isScan" v-if="device.status == 'connected' && !device.loading && device.library_name.indexOf('Elite') !== -1" class="pl-2 pr-2 mt-2" color="primary" small>DETECT</va-button>
</div>
</va-item-section>
</va-item>
</va-card>
</div>
</div>
@@ -133,7 +137,8 @@
</template>
<script>
import { projectInfo } from '../../data/project/ProjectInfo'
import api from '@/data/api/index'
import { taskInfo } from '@/data/task/TaskInfo'
import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
export default {
@@ -184,8 +189,9 @@ export default {
battery: device.battery,
library_name: device.library_name,
library_version: device.library_version,
record_in_sd: device.record_in_sd,
status: device.status,
pic: projectInfo.getDevicePic(device.device_name),
pic: taskInfo.getDevicePic(device.device_name),
loading: false,
}
this.controllerList.forEach(controller => {
@@ -203,14 +209,27 @@ export default {
})
// console.log(this.controllerList)
},
'+/hardware_info/+' (data, topic) {
async '+/hardware_info/+' (data, topic) {
const topicSplit = topic.split('/')
const rawDevices = JSON.parse(String.fromCharCode.apply(null, data)).data
this.controllerList.forEach(controller => {
for (let i = 0; i < this.controllerList.length; i++) {
const controller = this.controllerList[i]
if (controller.id === topicSplit[0]) {
controller.mac = rawDevices.device_mac.toUpperCase()
if (rawDevices.device_mac !== null) {
controller.mac = rawDevices.device_mac.toUpperCase()
// const info = await api.controller.getByMac(controller.mac)
// if (info.data.length === 0) {
// const req = {
// mac_address: controller.mac,
// mqtt_id: controller.id,
// status: controller.status,
// }
// api.controller.create(req)
// }
// console.log(info)
}
}
})
}
// console.log(this.controllerList)
},
'+/hardware_device_connect/+' (data, topic) {
@@ -243,6 +262,10 @@ export default {
controller.status = 'running'
}
})
this.mqttPub(topicSplit[0] + '_user', JSON.stringify({
header: 'hardware_datetime/0',
content: String(Date.now()),
}))
this.mqttPub(topicSplit[0] + '_user', JSON.stringify({
header: 'hardware_device/0',
}))
@@ -262,17 +285,25 @@ export default {
header: 'hardware_device/0',
}))
this.mqttPub(topicSplit[0] + '_user', JSON.stringify({
header: 'device_parent/0',
header: 'device_update_calibration/0',
device: parseInt(mes[1]),
content: {
folder: [0, 1, 3],
},
}))
this.mqttPub(topicSplit[0] + '_user', JSON.stringify({
header: 'device_recording_file_name/0',
header: 'device_sd_card_status/0',
device: parseInt(mes[1]),
content: 'qwertyuio',
}))
// this.mqttPub(topicSplit[0] + '_user', JSON.stringify({
// header: 'device_parent/0',
// device: parseInt(mes[1]),
// content: {
// folder: [0, 1, 3],
// },
// }))
// this.mqttPub(topicSplit[0] + '_user', JSON.stringify({
// header: 'device_recording_file_name/0',
// device: parseInt(mes[1]),
// content: 'qwertyuio',
// }))
break
case 'shutdown':
this.controllerList.forEach(controller => {
@@ -315,14 +346,14 @@ export default {
default:
break
}
console.log(String.fromCharCode.apply(null, data), topic)
// console.log(String.fromCharCode.apply(null, data), topic)
},
},
methods: {
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: 'tommy_test',
id: taskInfo.getTaskInfo().controllerID,
mac: '',
status: 'loading',
isScan: true,
@@ -342,6 +373,7 @@ export default {
},
pageMqttSub: function () {
this.controllerList.forEach(controller => {
this.mqttSub(controller.id + '/hardware_datetime/+')
this.mqttSub(controller.id + '/hardware_device/+')
this.mqttSub(controller.id + '/hardware_info/+')
this.mqttSub(controller.id + '/hardware_device_connect/+')
@@ -351,6 +383,7 @@ export default {
},
pageMqttUnSub: function () {
this.controllerList.forEach(controller => {
this.mqttUnSub(controller.id + '/hardware_datetime/+')
this.mqttUnSub(controller.id + '/hardware_device/+')
this.mqttUnSub(controller.id + '/hardware_info/+')
this.mqttUnSub(controller.id + '/hardware_device_connect/+')
@@ -360,12 +393,20 @@ export default {
},
pageInitPub: function () {
this.controllerList.forEach(controller => {
this.mqttPub(controller.id + '_user', JSON.stringify({
header: 'hardware_datetime/0',
content: String(Date.now()),
}))
this.mqttPub(controller.id + '_user', JSON.stringify({
header: 'hardware_device/0',
}))
this.mqttPub(controller.id + '_user', JSON.stringify({
header: 'hardware_info/0',
}))
// this.mqttPub(controller.id + '_user', JSON.stringify({
// header: 'device_update_usb/0',
// }))
this.createInitialCollection('admin')
})
},
pageToast: function (mes) {
@@ -425,6 +466,21 @@ export default {
device: this.selectDevice.id,
}))
},
detect (controllerID, device) {
this.mqttPub(controllerID + '_user', JSON.stringify({
header: 'device_instruction/0',
device: device.id,
instruction: 'VIS_DEVICE_DETECT',
}))
setTimeout(() => {
this.mqttPub(controllerID + '_user', JSON.stringify({
header: 'device_instruction/0',
device: device.id,
instruction: 'VIS_DEVICE_DONE',
}))
document.getElementById('detectButton').className += ' no-dark-style-va-button'
}, 5000)
},
sleep: function (milliseconds) {
var start = new Date().getTime()
while (1) {
@@ -433,10 +489,34 @@ export default {
}
}
},
createInitialCollection: async function (user) {
const root = await api.collection.getByParentName('folder', 0, 'root')
if (root.data.length === 0) {
await api.collection.create({
name: 'root',
type: 'folder',
parent: { folder: [0] },
size: 0,
})
}
// init check and create collection
const _root = await api.collection.getByName('root')
const USER = await api.collection.getByName(user)
if (USER.data.length === 0) {
api.collection.create({
name: user,
parent: { folder: [_root.data[0].id] },
type: 'folder',
size: 0,
})
}
},
},
watch: {
},
async mounted () {
await taskInfo.updateTaskInfo()
await this.getControllerList()
this.pageMqttSub()
@@ -452,3 +532,11 @@ export default {
}
</script>
<style lang="scss">
.no-dark-style-va-button {
&:focus {
filter: brightness(100%);
}
}
</style>
+216 -540
View File
@@ -1,144 +1,28 @@
<template>
<div>
<va-modal
class="flex sm12 xl12 md12 xs12 pa-0 ma-0"
v-model="showDownload"
size="small"
:hideDefaultActions="true"
:mobileFullscreen="false"
>
<template slot="header">
<div class="row mb-2">
<va-icon name="fa fa-download mr-3 " color="primary"/>
<h5 class="mt-0 mb-0">{{'Download'}}</h5>
</div>
</template>
<div class="downloadOptionsList">
<template v-for="(downloadOptions, i) in downloadOptionsList">
<va-accordion :key="downloadOptions.filename">
<va-collapse>
<va-item :key="downloadOptions.filename" slot="header" clickable>
<va-item-section avatar>
<va-item-label>
{{ downloadOptions.filename }}
</va-item-label>
</va-item-section>
<va-item-section>
<!-- <va-item-label>
{{ downloadInfo.minTime }}
</va-item-label>
<va-item-label caption>
{{ downloadInfo.maxTime }}
</va-item-label> -->
</va-item-section>
<va-item-section v-if="downloadOptions.download.status == 'idle'" side>
<va-icon name="fa fa-play" color="gray" @click.native.stop="confirmDownload(downloadOptions.metaPath)"/>
</va-item-section>
<va-item-section v-else side class="md4 offset--md8">
<div class="row flex sm12 xl12 md12 xs12">
<div class="flex-center spinner-box">
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
:color="'#6c7fee'"
:size="20"
>
</fulfilling-bouncing-circle-spinner>
<span class="ml-3">{{loaded}}</span>
</div>
</div>
</va-item-section>
</va-item>
<div slot="body">
<div v-if="downloadOptions.download.status == 'downloading'" class="row flex sm12 xl12 md12 xs12">
<div class="row flex sm12 xl12 md12 xs12">
<div class="flex-center spinner-box mt-4 mb-5">
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
:color="'#6c7fee'"
:size="60"
>
</fulfilling-bouncing-circle-spinner>
</div>
</div>
</div>
<div v-else>
<div class="mb-5">
<va-item class="flex sm12 xl12 md12 xs12 mr-1 pa-0">
<va-icon
class="flex sm1 xl1 md1 xs1 start "
name="glyphicon glyphicon-filter"
size="1.0rem"
:fixedWidth = "Boolean('true')"
/>
<div class="flex sm11 xl11 md11 xs11 row">
<div v-for="(item,index) in downloadOptions.channel" :key="item.channel" class="filter-button">
<va-button
class="mx-1 px-1"
v-if="item.checked"
@click="channelUnchecked(index,downloadOptions.metaPath)"
small
>
{{item.alias}}
</va-button>
<va-button
class="mx-1 px-1"
v-else
@click="channelChecked(index,downloadOptions.metaPath)"
small outline
>
{{item.alias}}
</va-button>
</div>
</div>
</va-item>
</div>
<div class="mb-5">
<va-item class="flex sm12 xl12 md12 xs12 pa-0">
<va-icon
class="flex sm1 xl1 md1 xs1 mr-4"
:fixedWidth="true"
name="va-icon glyphicon glyphicon-time"
size="1.0rem"
/>
<div class="flex">
<va-slider
class="flex sm11 xl11 md11 xs11 filter-button"
value-visible
range
v-model="downloadOptions.timeRange"
@click.native="timeRangeChange(downloadOptions.timeRange,downloadOptions.metaPath)"
@mouseup.native="timeRangeChange(downloadOptions.timeRange,downloadOptions.metaPath)"
@mouseleave.native="timeRangeChange(downloadOptions.timeRange,downloadOptions.metaPath)"
@touchend.native="timeRangeChange(downloadOptions.timeRange,downloadOptions.metaPath)"
:min="downloadOptions.minTime"
:max="downloadOptions.maxTime"
/>
<span> {{ transTime(downloadOptions.timeRange) }} </span>
</div>
</va-item>
</div>
</div>
</div>
</va-collapse>
</va-accordion>
<va-list-separator v-if="i < downloadOptionsList.length - 1" :key="'separator' + downloadOptions.filename" />
</template>
<div class="row flex sm12 xl12 md12 xs12" style="height: 100vh;">
<div class="flex-center spinner-box mt-4 mb-5">
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
:color="'#6c7fee'"
:size="60"
>
</fulfilling-bouncing-circle-spinner>
</div>
</va-modal>
</div>
</div>
</template>
<script>
import { file } from '../../data/file/File'
import { downloadTaskManager } from '../../data/download/Download'
import { exportData } from '../../data/export/export'
import api from '@/data/api/index'
import types from '@/store/modules/download/types'
import { mapActions, mapMutations } from 'vuex'
import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
import api from '../../data/api/index'
import { mapFields } from 'vuex-map-fields'
import newDownload from '@/factories/file/downloadFactory'
import newChannel from '@/factories/file/channelFactory'
import { taskInfo } from '@/data/task/TaskInfo'
import configTable from '@/data/config-table/index'
export default {
name: 'Download',
@@ -147,391 +31,21 @@ export default {
},
data: () => {
return {
showDownload: false,
controllerList: [],
downloadList: [],
downloadListRecord: [],
downloadOptionsList: [],
// downloadInfo: {
// metaPath: '',
// previousPath: '',
// filenameWithType: '',
// filename: '',
// channel: [],
// timeRange: [0, 0],
// minTime: 0,
// maxTime: 0,
// status: 'idle',
// device: '',
// },
currentlyDownloadInfo: {
metaPath: '',
previousPath: '',
filenameWithType: '',
filename: '',
channel: [],
timeRange: [0, 0],
minTime: 0,
maxTime: 0,
download: {
status: 'idle',
rate: 0,
},
device: '',
},
estimatedTime: 0,
fileSegmentIndex: 0,
fileSegmentMax: 0,
totoalFileSize: 0,
loadingPercent: 0,
loadTime: 0,
interval: null,
data: '',
}
},
computed: {
// transTime (min,max) {
// return this.getTimeInFormat(min) + ' - ' + this.getTimeInFormat(max)
// },
loaded () {
return this.loadingPercent + '%'
},
},
mqtt: {
async '+/file_segment/+' (data, topic) {
console.log('file_segment')
console.log(String.fromCharCode.apply(null, data))
// console.log(navigator.connection.downlink)
// console.log(this.fileNum)
// console.log(this.downloadOptionsList.length)
// console.log(JSON.parse(String.fromCharCode.apply(null, data)).data.file_size)
if (this.downloadOptionsList.length > 0) {
await downloadTaskManager.updateFileSegmentInfo(String.fromCharCode.apply(null, data))
this.fileSegmentMax = downloadTaskManager.getFileSegmentMaxIndex()
this.checkFileSegmentGetOrNot()
}
},
async '+/file_segment_get/+' (data, topic) {
console.log('file_segment_get')
console.log(JSON.parse(new TextDecoder('utf-8').decode(data)))
if (this.downloadOptionsList.length > 0) {
const segmentData = atob(JSON.parse(new TextDecoder('utf-8').decode(data)).data.segment)
this.data += segmentData
this.fileSegmentIndex += 1
this.checkFileSegmentGetOrNot()
}
},
...mapFields('download', [
'metaList',
'downloadInfo',
'metaInfo',
]),
},
methods: {
transTime (timeRange) {
return this.getTimeInFormat(timeRange[0]) + ' - ' + this.getTimeInFormat(timeRange[1])
},
notify (name) {
this.showToast(`done ${name}`, {
position: 'bottom-right',
})
},
showDownloadModal: function () {
this.showDownload = true
},
channelChecked: function (channelIndex, path) {
downloadTaskManager.getDownloadOptions(path).channel[channelIndex].checked = true
this.refresh()
},
channelUnchecked: function (channelIndex, path) {
downloadTaskManager.getDownloadOptions(path).channel[channelIndex].checked = false
this.refresh()
},
getTimeInFormat: function (time) {
if (time < 60) {
const second = time
return `${second}s`
} else if (time < 3600) {
const second = time % 60
const minute = parseInt(time / 60)
return `${minute}m${second}s`
} else {
const hour = parseInt(time / 3600)
const hourRemain = time % 3600
const minute = parseInt(hourRemain / 60)
const second = hourRemain % 60
return `${hour}h${minute}m${second}s`
}
},
getCurrentFullPathName: function () {
return this.currentlyDownloadInfo.previousPath + '/' + this.currentlyDownloadInfo.filenameWithType
},
addDownloadTask: async function (info) {
console.log(info)
const promises = JSON.parse(info.channels).map(async ch => {
const rawData = await api.getRawFilesByParent(ch, info.id)
return rawData
})
const rawData = await Promise.all(promises)
console.log(rawData)
exportData.exportCSVByAPI(info, rawData)
// if (Array.isArray(downloadPath)) {
// downloadPath.forEach(path => {
// // this.downloadList.push(path.path)
// downloadTaskManager.updateDownloadOptions(path.path)
// })
// } else {
// // this.downloadList.push(downloadPath)
// downloadTaskManager.updateDownloadOptions(downloadPath)
// }
// this.refresh()
// this.showDownloadModal()
// this.confirmDownload()
},
_addDownloadTask: function (downloadPath) {
if (Array.isArray(downloadPath)) {
downloadPath.forEach(path => {
this.downloadList.push(path.path)
this.updateDownloadInfo(path.path)
})
} else {
this.downloadList.push(downloadPath)
this.updateDownloadInfo(downloadPath)
}
this.confirmDownload()
},
refresh: function () {
this.downloadOptionsList = downloadTaskManager.getDownloadOptionsList()
console.log(this.downloadOptionsList)
},
confirmDownload: function (path) {
console.log('confirmDownload')
console.log(downloadTaskManager.getDownloadOptionsList())
console.log(downloadTaskManager.isFileDownloading())
console.log(downloadTaskManager.downloadTaskRemain())
if (!downloadTaskManager.isFileDownloading() && downloadTaskManager.downloadTaskRemain()) {
const downloadOptionsIndex = downloadTaskManager.getDownloadOptionsList().findIndex(downloadInfo => downloadInfo.metaPath === path)
// this.downloadBlockList[downloadInfoIndex].status = 'downloading'
this.currentlyDownloadInfo = downloadTaskManager.getDownloadOptionsList()[downloadOptionsIndex]
this.currentlyDownloadInfo.download.status = 'downloading'
console.log(this.currentlyDownloadInfo)
console.log(downloadTaskManager.getDownloadOptionsList())
downloadTaskManager.updateDownloadSubFileList(
this.currentlyDownloadInfo.metaPath,
this.currentlyDownloadInfo.channel,
this.currentlyDownloadInfo.timeRange,
)
this.calculateFileSize(this.currentlyDownloadInfo.metaPath)
console.log('getactualsize')
this.subfileListRemain()
}
// if (this.downloadList.length > 0 && this.currentlyDownloadInfo.status === 'idle') {
// this.showDownload()
// this.updateDownloadSubFileList(this.downloadList[0])
// } else {
// /* TODO If file downloading then waiting */
// console.log('no download task or file downloading')
// }
},
_confirmDownload: function () {
console.log('confirmDownload')
console.log(downloadTaskManager.getDownloadOptionsList())
// if (this.downloadList.length > 0 && this.currentlyDownloadInfo.status === 'idle') {
// this.showDownload()
// this.updateDownloadSubFileList(this.downloadList[0])
// } else {
// /* TODO If file downloading then waiting */
// console.log('no download task or file downloading')
// }
},
downloadAllSubFileList: async function (path) {
this.currentlyDownloadInfo = this.downloadInfo
downloadTaskManager.downloadAllSubFileList(path)
this.subfileListRemain()
},
// updateDownloadInfo: function (path) {
// console.log(path)
// const metaInfo = file.getMetaInfo(path)
// const downloadInfoIndex = this.downloadBlockList.findIndex(downloadInfo => downloadInfo.metaPath === path)
// if (downloadInfoIndex === -1) {
// this.downloadInfo.library = metaInfo.configuration._LIBRARY_
// this.downloadInfo.channel = metaInfo.channel.map(ch => {
// let channel = ''
// if (this.downloadInfo.library.includes('Elite')) {
// channel = (ch === 0) ? 'current' : (ch === 1) ? 'voltage' : (ch === 2) ? 'resistance' : ''
// } else {
// channel = 'channel' + ch
// }
// return {
// alias: channel,
// channel: ch,
// checked: true,
// }
// })
// this.downloadInfo.metaPath = path
// this.downloadInfo.previousPath = path.split('/').slice(0, -1).join('/')
// this.downloadInfo.filename = path.split(/[\/.]+/).slice(0, -1).pop()
// this.downloadInfo.minTime = parseInt([...new Set(metaInfo['start-time'])][0] / 1000)
// this.downloadInfo.maxTime = parseInt(metaInfo.time_duration / 1000)
// this.downloadInfo.timeRange = [this.downloadInfo.minTime, this.downloadInfo.maxTime]
// this.downloadInfo.status = 'idle'
// this.downloadBlockList.push(JSON.parse(JSON.stringify(this.downloadInfo)))
// } else {
// for (var item in this.downloadInfo) {
// this.downloadInfo[item] = this.downloadBlockList[downloadInfoIndex][item]
// }
// }
// },
updatecurrentlyDownloadInfo: function () {
const downloadInfoIndex = this.downloadBlockList.findIndex(downloadInfo => downloadInfo.metaPath === this.currentlyDownloadInfo.metaPath)
if (downloadInfoIndex !== -1) {
for (var item in this.downloadBlockList[downloadInfoIndex]) {
this.downloadBlockList[downloadInfoIndex][item] = this.currentlyDownloadInfo[item]
}
}
},
updateMetaDownloadInfo: function () {
downloadTaskManager.updateDownloadSubFileList(
this.currentlyDownloadInfo.metaPath,
this.currentlyDownloadInfo.channel,
this.currentlyDownloadInfo.timeRange,
)
},
updateDownloadSubFileList: function (path) {
console.log('updateDownloadSubFileList')
const downloadOptionsIndex = this.downloadBlockList.findIndex(downloadInfo => downloadInfo.metaPath === path)
this.downloadBlockList[downloadOptionsIndex].status = 'downloading'
this.currentlyDownloadInfo = this.downloadBlockList[downloadOptionsIndex]
this.updatecurrentlyDownloadInfo()
downloadTaskManager.updateDownloadSubFileList(
this.currentlyDownloadInfo.metaPath,
this.currentlyDownloadInfo.channel,
this.currentlyDownloadInfo.timeRange,
)
this.subfileListRemain()
},
_updateDownloadSubFileList: function (path) {
console.log(path)
console.log(this.downloadInfo)
const downloadOptionsIndex = this.downloadBlockList.findIndex(downloadInfo => downloadInfo.metaPath === path)
this.downloadBlockList[downloadOptionsIndex].status = 'downloading'
this.currentlyDownloadInfo = this.downloadBlockList[downloadOptionsIndex]
// this.updatecurrentlyDownloadInfo()
downloadTaskManager.updateDownloadSubFileList(
this.currentlyDownloadInfo.metaPath,
this.currentlyDownloadInfo.channel,
this.currentlyDownloadInfo.timeRange,
)
this.subfileListRemain()
},
subfileListRemain: function () {
console.log('subfileListRemain')
if (downloadTaskManager.checkDownloadSubFileList(this.currentlyDownloadInfo.metaPath)) {
this.currentlyDownloadInfo.filenameWithType = downloadTaskManager.getFirstSubfile(this.currentlyDownloadInfo.metaPath)
this.mqttPub('BPS_FF_user', JSON.stringify({
header: 'file_segment/0',
method: 'new',
path: this.getCurrentFullPathName(),
}))
} else {
this.loadingPercent = 100
console.log(this.currentlyDownloadInfo.filenameWithType + ' download complete')
console.log(performance.now())
this.exportCSV()
this.test(this.downloadDone)
// this.currentlyDownloadInfo.status = this.currentlyDownloadInfo.status = 'idle'
// this.updatecurrentlyDownloadInfo()
// this.loadingPercent = 0
}
},
checkFileSegmentGetOrNot: function () {
console.log('checkFileSegmentGetOrNot')
if (this.fileSegmentIndex >= this.fileSegmentMax) {
const subfile = file.shiftDownloadSubFileList(this.currentlyDownloadInfo.metaPath)
file.pushDownloadData(this.currentlyDownloadInfo.metaPath, subfile, this.data)
this.data = ''
this.fileSegmentIndex = 0
this.subfileListRemain()
} else {
this.mqttPub('BPS_FF_user', JSON.stringify({
header: 'file_segment_get/0',
segment: this.fileSegmentIndex,
path: this.getCurrentFullPathName(),
}))
}
},
exportCSV: function () {
exportData.exportCSV(this.currentlyDownloadInfo)
},
exportTXT: function () {
},
timeRangeChange: function (timeRange, path) {
downloadTaskManager.getDownloadOptions(path).timeRange = timeRange
this.refresh()
},
calculateFileSize: function () {
this.totoalFileSize = file.getFileSize(this.currentlyDownloadInfo.metaPath)
// const allSubfile = downloadTaskManager.getAllSubfile(this.currentlyDownloadInfo.metaPath)
// this.fileNum = allSubfile.length
const downlinkSpeed = this.getNetSpeed('data:image/png;base64,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', 3)
// this.totoalFileSize = (allSubfile.length) * 1000000
console.log(downlinkSpeed)
console.log(this.totoalFileSize)
this.estimatedTime = this.totoalFileSize / (downlinkSpeed * 1024)
if (this.totoalFileSize >= 1 * 1024 * 1024) {
console.log('size big')
this.estimatedTime = this.estimatedTime * 10
}
console.log(this.estimatedTime)
this.loadTime = parseInt((this.estimatedTime / 1000) % 60) * 100
console.log(this.loadTime)
this.doProgress()
// allSubfile.forEach(subfile => {
// console.log(subfile)
// this.currentlyDownloadInfo.filenameWithType = subfile
// this.mqttPub('BPS_FF_user', JSON.stringify({
// header: 'file_segment/0',
// method: 'new',
// path: this.getCurrentFullPathName(),
// }))
// })
},
doProgress () {
const step = this.estimatedTime / 100 * 1000
this.interval = setInterval(() => {
if (this.loadingPercent >= 99) {
console.log('complete')
clearInterval(this.interval)
this.estimatedTime = 0
} else {
this.loadingPercent++
}
}, step)
},
getNetSpeed (url, times) {
const connection = window.navigator.connection
if (connection && connection.downlink) {
return connection.downlink * 1024 / 8
}
},
test: async function (fn) {
return await setTimeout(async function () {
await fn()
}, 1000)
},
downloadDone: function () {
downloadTaskManager.getDownloadOptionsList().shift()
this.loadingPercent = 0
this.refresh()
this.confirmDownload()
},
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: 'BPS_FF',
id: taskInfo.getTaskInfo().controllerID,
mac: '',
status: 'loading',
isScan: true,
@@ -540,43 +54,205 @@ export default {
}
await update()
},
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
mqttSub: function (val) {
this.$mqtt.subscribe(val)
},
mqttUnSub: function (val) {
this.$mqtt.unsubscribe(val)
},
pageMqttSub: function () {
this.controllerList.forEach(controller => {
// this.mqttSub(controller.id + '/broadcast')
this.mqttSub(controller.id + '/file_meta_info/+')
this.mqttSub(controller.id + '/file_segment/+')
this.mqttSub(controller.id + '/file_segment_get/+')
notify (name) {
this.showToast(`done ${name}`, {
position: 'bottom-right',
})
},
pageMqttUnSub: function () {
this.controllerList.forEach(controller => {
// this.mqttUnSub(controller.id + '/broadcast')
this.mqttUnSub(controller.id + '/file_meta_info/+')
this.mqttUnSub(controller.id + '/file_segment/+')
this.mqttUnSub(controller.id + '/file_segment_get/+')
})
chunkArray (rawDataIDArray, chunkSize) {
const arrayLength = rawDataIDArray.length
const results = []
for (let index = 0; index < arrayLength; index += chunkSize) {
results.push(rawDataIDArray.slice(index, index + chunkSize))
}
return results
},
...mapActions('download',
[
types.raw.rawDataByID,
types.raw.rawDataByIDs,
types.raw.rawSdDataByID,
types.export.setHeader,
types.export.setTitle,
types.export.setData,
types.download.closeWriter,
types.download.setStream,
types.download.setSampleRate,
types.download.setIDList,
types.download.clearStream,
],
),
...mapMutations('download',
[
types.download.clearIDList,
],
),
},
watch: {
},
// watch: {
// loadingPercent(val) {
// if (val >= 100) {
// console.log('complete');
// clearInterval(this.interval)
// }
// }
// },
async mounted () {
await this.getControllerList()
this.pageMqttSub()
// TODO authorization
const format = this.$route.params.format.split('-')[0]
const allChannel = this.$route.params.format.split('-')[1]
this.metaList = this.$route.params.metaList.split('-')
const sd = this.$route.params.sd
while (this.metaList.length !== 0) {
let meta
const metaID = this.metaList.pop()
const ret = await api.meta.getByID(metaID)
if (ret.status === 200) {
meta = ret.data[0]
}
if (meta !== undefined) {
this.metaInfo = meta
const channelParamObj = configTable[meta.device.library_name].MODE[meta.parameter_set.MODE].channels
const channelArray = allChannel === 'all' ? JSON.parse(this.metaInfo.channels) : Object.keys(channelParamObj).filter(ele => ele !== 'time')
const channelList = []
// split to different subfile by channel
if (meta.device.library_name.indexOf('Neulive') >= 0) {
if (channelArray.some(el => el >= 256)) {
channelList.push(channelArray.filter(el => (el >= 256 && el <= 259)))
channelList.push(channelArray.filter(el => el < 256))
} else {
channelList.push(channelArray)
}
} else if (meta.device.library_name.indexOf('Elite') >= 0) {
channelList.push(channelArray)
}
while (channelList.length > 0) {
const channels = channelList.pop()
let maxSplitFiles = 1
let fileIndex = 0
// find max raw data need sub file
for (const rawDataIndex of channels) {
const dataLength = meta.raw_data[rawDataIndex].length
maxSplitFiles = Math.max(maxSplitFiles, Math.ceil(meta.raw_data[rawDataIndex].length / dataLength))
meta.raw_data[rawDataIndex] = this.chunkArray(meta.raw_data[rawDataIndex], dataLength)
}
while (fileIndex < maxSplitFiles) {
// create new download info & add channel
if (this.downloadInfo === null) {
this.downloadInfo = newDownload()
}
this.downloadInfo.channel = channels
// download format
this.downloadInfo.format = format
// download device and filename
if (meta.device.library_name.indexOf('Neulive') >= 0) {
this.downloadInfo.device = [meta.device.library_name.slice(0, 7), meta.device.library_name.slice(7)]
if (this.downloadInfo.channel.some(el => el >= 256 && el <= 259)) {
this.downloadInfo.filename = meta.name + '-accerlate'
this.downloadInfo.filename += (sd !== undefined) ? '-sd' : ''
this.downloadInfo.size = parseInt(parseInt(meta.size) / (76 * (maxSplitFiles)))
} else {
this.downloadInfo.filename = meta.name
this.downloadInfo.filename += (sd !== undefined) ? '-sd' : ''
this.downloadInfo.size = parseInt(meta.size / (maxSplitFiles))
}
} else if (meta.device.library_name.indexOf('Elite') >= 0) {
this.downloadInfo.device = [meta.device.library_name.slice(0, 5), meta.device.library_name.slice(5)]
this.downloadInfo.filename = meta.name
this.downloadInfo.size = parseInt(meta.size / (maxSplitFiles))
}
// create new channel info & get sample rate
for (const channel of this.downloadInfo.channel) {
if (this.downloadInfo.channelInfo[channel] === undefined) {
this.downloadInfo.channelInfo[channel] = newChannel()
this.setSampleRateDownload({ channel: channel })
}
}
// set download ID list
this.clearIDListDownload()
for (const channel of this.downloadInfo.channel) {
this.setIDListDownload({ channel: channel, fileIndex: fileIndex })
}
// if create writer
this.clearStreamDownload()
this.setStreamDownload()
// set Header
if (this.downloadInfo.format !== 'csv-edf') {
await this.setHeaderExport()
}
await this.setTitleExport()
// start download data
let rowIndex = 0
let columnNum = 0
const requestArray = []
console.time('download')
// console.log(this.downloadInfo)
while (rowIndex - 10 < this.downloadInfo.maxRows) {
// console.log('rowIndex < this.downloadInfo.maxRows', rowIndex, this.downloadInfo.maxRows)
for (const channel of this.downloadInfo.channel) {
columnNum = this.downloadInfo.channelInfo[channel].downloadIDList.length
for (const idx in this.downloadInfo.channelInfo[channel].downloadIDList) {
const _idx = parseInt(idx)
if (this.downloadInfo.channelInfo[channel].downloadDataBuffer[idx] === undefined) {
this.downloadInfo.channelInfo[channel].downloadDataBuffer[idx] = []
}
// const rawID = this.downloadInfo.channelInfo[channel].downloadIDList[_idx][rowIndex]
const rawIDList = this.downloadInfo.channelInfo[channel].downloadIDList[_idx].slice(rowIndex, rowIndex + 10)
// console.log(channel, rawIDList)
rawIDList.length > 0 && requestArray.push(api.raw.getAttrByIDs(channel, rawIDList, 'id-channel-size-serial_number-start_time-end_time-data'))
if (rawIDList.length === 0) columnNum -= 1
}
}
const responseArray = await Promise.all(requestArray)
// console.log('responseArray', responseArray)
for (const responseIndex in responseArray) {
const response = responseArray[responseIndex]
// console.log('response', response)
const idx = responseIndex % columnNum
for (const data of response.data) {
const timeUnitScale = channelParamObj.time.unit[channelParamObj.time.downloadUnit]
const channelUnitScale = channelParamObj[data.channel]?.unit[channelParamObj[data.channel]?.downloadUnit]
// console.log('data', data)
const dataArray = data.data.split('"***"').slice(0, -1)
// console.log('dataArray', dataArray)
for (const raw of dataArray) {
const rawArray = raw.split(' ')
const newArray = rawArray[0] === '' ? [] : rawArray.map((ele, index) => {
// console.log((parseInt(ele) / timeUnitScale).toFixed(Math.log10(timeUnitScale)))
return (index % 2 === 0) ? String((parseInt(ele) / timeUnitScale).toFixed(Math.log10(timeUnitScale))) : channelUnitScale ? String((parseInt(ele) / channelUnitScale).toFixed(Math.log10(channelUnitScale))) : ele
})
this.downloadInfo.channelInfo[data.channel].downloadDataBuffer[idx].push(...newArray)
// console.log('rawArray', rawArray)
}
}
}
requestArray.length = 0
// console.log('this.downloadInfo.channelInfo', this.downloadInfo.channelInfo)
// console.log('this.downloadInfo.maxRows', this.downloadInfo.maxRows)
await this.setDataExport({ last: (rowIndex >= this.downloadInfo.maxRows - 1) })
rowIndex += 10
}
this.closeWriterDownload()
fileIndex += 1
}
console.timeEnd('download')
}
}
}
await new Promise(resolve => setTimeout(resolve, 2000)) // sleep 2s prevent window close
window.close()
},
destroyed () {
this.pageMqttUnSub()
+264
View File
@@ -0,0 +1,264 @@
<template>
<div>
<div class="row flex sm12 xl12 md12 xs12" style="height: 100vh;">
<div class="flex-center spinner-box mt-4 mb-5">
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
:color="'#6c7fee'"
:size="60"
>
</fulfilling-bouncing-circle-spinner>
<progress-modal
:ref="'progressModalRef'"
/>
</div>
</div>
</div>
</template>
<script>
import api from '@/data/api/index'
import types from '@/store/modules/download/types'
import { mapActions, mapMutations } from 'vuex'
import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
import { mapFields } from 'vuex-map-fields'
import newDownload from '@/factories/file/downloadFactory'
import newChannel from '@/factories/file/channelFactory'
import progressModal from '@/components/common/progressBarByValueModal/progressModal.vue'
import { taskInfo } from '@/data/task/TaskInfo'
import configTable from '@/data/config-table/index'
export default {
name: 'DownloadOffline',
components: {
FulfillingBouncingCircleSpinner,
progressModal,
},
data: () => {
return {
controllerList: [],
}
},
computed: {
...mapFields('download', [
'metaList',
'downloadInfo',
'metaInfo',
]),
},
methods: {
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: taskInfo.getTaskInfo().controllerID,
mac: '',
status: 'loading',
isScan: true,
files: [],
})
}
await update()
},
notify (name) {
this.showToast(`done ${name}`, {
position: 'bottom-right',
})
},
chunkArray (rawDataIDArray, chunkSize) {
const arrayLength = rawDataIDArray.length
const results = []
for (let index = 0; index < arrayLength; index += chunkSize) {
results.push(rawDataIDArray.slice(index, index + chunkSize))
}
return results
},
...mapActions('download',
[
types.raw.rawDataByID,
types.raw.rawDataByIDs,
types.raw.rawSdDataByID,
types.export.setHeader,
types.export.setTitle,
types.export.setData,
types.export.setAll,
types.download.closeWriter,
types.download.setStream,
types.download.setSampleRate,
types.download.setIDList,
],
),
...mapMutations('download',
[
types.download.clearIDList,
],
),
},
watch: {
},
async mounted () {
await this.getControllerList()
// TODO authorization
const format = this.$route.params.format.split('-')[0]
const allChannel = this.$route.params.format.split('-')[1]
this.metaList = this.$route.params.metaList.split('-')
const sd = this.$route.params.sd
while (this.metaList.length !== 0) {
let meta
const metaID = this.metaList.pop()
const ret = await api.meta.getByID(metaID)
if (ret.status === 200) {
meta = ret.data[0]
}
if (meta !== undefined) {
this.metaInfo = meta
const channelParamObj = configTable[meta.device.library_name].MODE[meta.parameter_set.MODE].channels
const channelArray = allChannel === 'all' ? JSON.parse(this.metaInfo.channels) : Object.keys(channelParamObj).filter(ele => ele !== 'time')
const channelList = []
if (meta.device.library_name.indexOf('Neulive') >= 0) {
if (channelArray.some(el => el >= 256)) {
channelList.push(channelArray.filter(el => (el >= 256 && el <= 259)))
channelList.push(channelArray.filter(el => el < 256))
} else {
channelList.push(channelArray)
}
} else if (meta.device.library_name.indexOf('Elite') >= 0) {
channelList.push(channelArray)
}
this.$refs.progressModalRef.show()
while (channelList.length > 0) {
const channels = channelList.pop()
let maxSplitFiles = 1
let fileIndex = 0
// find max raw data need sub file
for (const rawDataIndex of Object.keys(meta.raw_data)) {
let dataLength = 0
if (rawDataIndex >= 256) {
dataLength = meta.raw_data[rawDataIndex].length
} else {
dataLength = 10000
}
maxSplitFiles = Math.max(maxSplitFiles, Math.ceil(meta.raw_data[rawDataIndex].length / dataLength))
meta.raw_data[rawDataIndex] = this.chunkArray(meta.raw_data[rawDataIndex], dataLength)
}
while (fileIndex < maxSplitFiles) {
if (this.downloadInfo === null) {
this.downloadInfo = newDownload()
}
this.downloadInfo.channel = channels
// download format
this.downloadInfo.format = format
// download device and filename
if (meta.device.library_name.indexOf('Neulive') >= 0) {
this.downloadInfo.device = [meta.device.library_name.slice(0, 7), meta.device.library_name.slice(7)]
if (this.downloadInfo.channel.some(el => el >= 256 && el <= 259)) {
this.downloadInfo.filename = meta.name + '-accerlate-' + format
this.downloadInfo.filename += (sd !== undefined) ? '-sd' : ''
this.downloadInfo.size = parseInt(parseInt(meta.size) / 76)
} else {
this.downloadInfo.filename = meta.name + '-' + format
this.downloadInfo.filename += (sd !== undefined) ? '-sd' : ''
this.downloadInfo.size = parseInt(meta.size)
}
} else if (meta.device.library_name.indexOf('Elite') >= 0) {
this.downloadInfo.device = [meta.device.library_name.slice(0, 5), meta.device.library_name.slice(5)]
this.downloadInfo.filename = meta.name + '-' + (fileIndex + 1).toString()
this.downloadInfo.size = parseInt(meta.size)
}
this.$refs.progressModalRef.setTitle(this.downloadInfo.filename)
// get sampleRate && downloadList
for (const channel of this.downloadInfo.channel) {
if (this.downloadInfo.channelInfo[channel] === undefined) {
this.downloadInfo.channelInfo[channel] = newChannel()
this.setSampleRateDownload({ channel: channel })
}
}
this.clearIDListDownload()
for (const channel of this.downloadInfo.channel) {
this.setIDListDownload({ channel: channel, fileIndex: fileIndex })
}
// start download data
fileIndex += 1
let rowIndex = 0
let columnNum = 0
const requestArray = []
console.time('download')
while (rowIndex - 10 < this.downloadInfo.maxRows) {
this.$refs.progressModalRef.setValue(parseInt((rowIndex / this.downloadInfo.maxRows) * 100))
// console.log('rowIndex < this.downloadInfo.maxRows', rowIndex, this.downloadInfo.maxRows)
for (const channel of this.downloadInfo.channel) {
columnNum = this.downloadInfo.channelInfo[channel].downloadIDList.length
for (const idx in this.downloadInfo.channelInfo[channel].downloadIDList) {
const _idx = parseInt(idx)
if (this.downloadInfo.channelInfo[channel].downloadDataBuffer[idx] === undefined) {
this.downloadInfo.channelInfo[channel].downloadDataBuffer[idx] = []
}
// const rawID = this.downloadInfo.channelInfo[channel].downloadIDList[_idx][rowIndex]
const rawIDList = this.downloadInfo.channelInfo[channel].downloadIDList[_idx].slice(rowIndex, rowIndex + 10)
// console.log(channel, rawIDList)
rawIDList.length > 0 && requestArray.push(api.raw.getAttrByIDs(channel, rawIDList, 'id-channel-size-serial_number-start_time-end_time-data'))
if (rawIDList.length === 0) columnNum -= 1
}
}
const responseArray = await Promise.all(requestArray)
// console.log('responseArray', responseArray)
for (const responseIndex in responseArray) {
const response = responseArray[responseIndex]
// console.log('response', response)
const idx = responseIndex % columnNum
// console.log('response', response)
for (const data of response.data) {
const timeUnitScale = channelParamObj.time.unit[channelParamObj.time.downloadUnit]
const channelUnitScale = channelParamObj[data.channel]?.unit[channelParamObj[data.channel]?.downloadUnit]
// console.log('data', data)
const dataArray = data.data.split('"***"').slice(0, -1)
// console.log('dataArray', dataArray)
for (const raw of dataArray) {
const rawArray = raw.split(' ')
const newArray = rawArray[0] === '' ? [] : rawArray.map((ele, index) => {
return (index % 2 === 0) ? String((parseInt(ele) / timeUnitScale).toFixed(Math.log10(timeUnitScale))) : channelUnitScale ? String((parseInt(ele) / channelUnitScale).toFixed(Math.log10(channelUnitScale))) : ele
})
this.downloadInfo.channelInfo[data.channel].downloadDataBuffer[idx].push(...newArray)
// console.log('rawArray', rawArray)
}
}
}
requestArray.length = 0
// console.log('this.downloadInfo.channelInfo', this.downloadInfo.channelInfo)
// console.log('this.downloadInfo.maxRows', this.downloadInfo.maxRows)
// await this.setDataExport({ last: (rowIndex >= this.downloadInfo.maxRows - 1) })
rowIndex += 10
}
await this.setAllExport({ last: (rowIndex >= this.downloadInfo.maxRows - 1) })
this.$refs.progressModalRef.setValue(100)
}
}
}
}
await new Promise(resolve => setTimeout(resolve, 2000)) // sleep
window.close()
},
destroyed () {
},
}
</script>
<style>
.filter-button {
text-align: center;
}
</style>
+29 -27
View File
@@ -1,45 +1,34 @@
<template>
<div>
<div class="row">
<div class="flex md12 xl12 xs12 sm12" :style="AreaStyle">
<file-table :ref="'file_ref'" @download="addDownloadTask"/>
</div>
<div class="flex md12 xl12 xs12 sm12" :style="AreaStyle">
<download :ref="'download_ref'"></download>
</div>
</div>
<file-table :ref="'file_ref'"/>
</div>
</template>
<script>
import FileTable from './file-table/FileTable.vue'
import Download from '../download/Download.vue'
// import Download from '../download/Download.vue'
import { file } from '../../data/file/File'
import api from '../../data/api/index'
import { taskInfo } from '@/data/task/TaskInfo'
export default {
components: {
FileTable,
Download,
},
data () {
return {
controllerList: [],
AreaStyle: {
height: 'auto',
'overflow-y': 'hidden',
'overflow-x': 'hidden',
},
}
},
methods: {
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: 'BPS_FF',
id: taskInfo.getTaskInfo().controllerID,
mac: '',
status: 'loading',
isScan: true,
devices: [],
})
}
await update()
@@ -63,32 +52,45 @@ export default {
addDownloadTask: function (info) {
this.$refs.download_ref.addDownloadTask(info)
},
pageInitPub: function () {
downloadingFile: function () {
this.$refs.file_ref.loadingFiles = !this.$refs.file_ref.loadingFiles
},
pageInitPub: async function () {
this.controllerList.forEach(async (controller) => {
this.$refs.file_ref.currentPathIndex = file.getPathMaxIndex()
file.clearFileList()
const folders = await api.getCollectionsFoldersByParent(0)
const files = await api.getFolderMetaFileByParent(0)
file.updateFileList(folders)
file.updateFileList(files)
const initCollection = await api.collection.getByName('admin')
this.$refs.file_ref.fileLists = file.getFileList()
this.$refs.file_ref.pathLists = file.getPathList()
this.$refs.file_ref.loadingFiles = false
if (initCollection.data !== 0) {
file.addPath(initCollection.data[0])
this.$refs.file_ref.currentPathIndex = file.getPathMaxIndex()
this.$refs.file_ref.currentInfo = initCollection.data[0]
const folders = await api.collection.getByParent('folder', initCollection.data[0].id)
const files = await api.meta.getAttrByParent('folder', initCollection.data[0].id, 'id-path-name-parent-description-size-time_duration-uuid-device-channels-created_at')
file.updateFileList(folders)
file.updateFileList(files)
this.$refs.file_ref.fileLists = file.getFileList()
this.$refs.file_ref.pathLists = file.getPathList()
this.$refs.file_ref.loadingFiles = false
}
})
},
},
async mounted () {
await taskInfo.updateTaskInfo()
await this.getControllerList()
await api.getJwtData()
await api.auth.getJwtData()
console.log(await api.meta.getByParentWithLimit('folder', 2, 5, 0, 'DESC'))
this.pageMqttSub()
this.pageInitPub()
},
destroyed () {
this.pageMqttUnSub()
file.clearFileList()
file.clearPathList()
},
}
</script>
<style lang="scss">
</style>
+309 -92
View File
@@ -29,6 +29,11 @@
:okText=" $t('modal.confirm') "
@ok="editFile()"
@cancel="undoEdit()"
@keyup.native.enter="() => {
editFile()
showModal.editFile = false
}"
tabindex="0"
>
<va-input
:value="editInfo.changedName"
@@ -37,6 +42,7 @@
:success="editInfo.success"
:error="editInfo.error"
:error-messages="editInfo.errorMessages"
:ref="'edit_input'"
@input="checkFileNameValidate"
removable
/>
@@ -45,23 +51,45 @@
v-model="showModal.deleteFile"
size="small"
:title="'DELETE'"
:message="`Delete File ${deleteInfo.name}.`"
:okText=" $t('modal.confirm') "
@ok="deleteFile()"
@keyup.native.enter="() => {
deleteFile()
showModal.deleteFile = false
}"
tabindex="1"
>
<!-- invisiable to focus on modal -->
<p>Delete File {{ deleteInfo.name }} ? <input type="text" :ref="'delete_input'" style="opacity: 0; line-height: 0;"/></p>
</va-modal>
<va-modal
v-model="showModal.deleteMultiFiles"
size="small"
:title="'DELETE'"
:okText=" $t('modal.confirm') "
@ok="deleteMultiFiles()"
@keyup.native.enter="() => {
deleteMultiFiles()
showModal.deleteMultiFiles = false
}"
tabindex="2"
>
<!-- invisiable to focus on modal -->
<p>Delete select files? <input type="text" :ref="'delete_multi_input'" style="opacity: 0; line-height: 0;"/></p>
</va-modal>
<va-card class="flex sm12 xl12 md12 xs12">
<!-- <template slot="header">
<template slot="header">
<div class="flex sm12 xl12 md12 xs12" style="text-align: end;">
<va-button class="" color="success" v-if="selected.length" @click="showrefs" target="_blank" small>
<va-button class="" color="success" v-if="selected.length" @click="downloadSelected" target="_blank" small>
DOWNLOAD
</va-button>
<va-button class="" color="danger" v-if="selected.length" target="_blank" small>
<va-button class="" color="danger" v-if="selected.length" @click="deleteMultiFilesConfirm" target="_blank" small>
DELETE
</va-button>
</div>
</template> -->
</template>
<!-- SearchField & perPageSelect-->
<div class="row align--center">
@@ -89,7 +117,7 @@
<!-- CreateFolder & FilePath -->
<div class="flex mb-4">
<va-icon
name="fa fa-plus-circle"
name="fa fa-plus"
size="1rem"
class="mr-2"
style="cursor: pointer;"
@@ -137,9 +165,9 @@
v-else
:ref="'datatable_ref'"
>
<!-- <template slot="select" slot-scope="props">
<template slot="select" slot-scope="props">
<va-checkbox :value="props.rowData.checked" @input="select(props.rowData)"/>
</template> -->
</template>
<template slot="name" slot-scope="props">
<va-icon
:name="(props.rowData.type==='folder')?'fa fa-folder':'fa fa-file'"
@@ -160,17 +188,39 @@
{{transTime(props.rowData.time_duration)}}
</template>
<template slot="device_info" slot-scope="props">
{{transDeviceInfo(props.rowData.configuration)}}
{{transDeviceInfo(props.rowData.device)}}
</template>
<template slot="actions" slot-scope="props" >
<va-popover :message="`download ${props.rowData.name}`" placement="top">
<va-button flat small color="gray" icon="fa fa-download" v-if="props.rowData.type !== 'folder'" @click.stop="download(props.rowData)"/>
<va-popover :message="`sdcard ${props.rowData.name}`" placement="top">
<sd-card-button
v-if="(props.rowData.type !== 'folder') && (props.rowData.device.library_name.indexOf('Neulive') >= 0) && (props.rowData.sd_data_record === true)"
:meta="props.rowData"
:uuidList="SDuuidList"
:controller="controllerList[0]"
@refreshPage="refreshPage"
@downloadSdCard="downloadSdCard"
/>
</va-popover>
<va-popover :message="`download ${props.rowData.name} in csv format`" placement="top">
<va-button flat small color="gray" icon="fa fa-download" v-if="props.rowData.type !== 'folder' && props.rowData.device.library_name.indexOf('Neulive') >= 0" @click.stop="downloadCsv(props.rowData)"/>
</va-popover>
<va-popover :message="`download ${props.rowData.name} in excel format`" placement="top">
<va-button flat small color="gray" icon="fa fa-download" v-if="props.rowData.type !== 'folder' && props.rowData.device.library_name.indexOf('Elite') >= 0" @click.stop="downloadExcel(props.rowData)"/>
</va-popover>
<va-popover :message="`download ${props.rowData.name} in csv-edf format`" placement="top">
<va-button flat small color="gray" icon="fa fa-download" v-if="props.rowData.type !== 'folder' && props.rowData.device.library_name.indexOf('Neulive') >= 0" @click.stop="downloadExcel(props.rowData)"/>
</va-popover>
<va-popover :message="`replay ${props.rowData.name}`" placement="top">
<va-button flat small color="gray" icon="fa fa-eye" v-if="props.rowData.type !== 'folder'" @click.stop="replay(props.rowData)"/>
</va-popover>
<va-popover :message="`spike ${props.rowData.name}`" placement="top">
<va-button flat small color="gray" icon="fa fa-filter" v-if="props.rowData.type !== 'folder' && props.rowData.device.library_name.indexOf('Neulive') >= 0" @click.stop="spike(props.rowData)"/>
</va-popover>
<va-popover :message="`edit ${props.rowData.name}`" placement="top">
<va-button flat small color="gray" icon="fa fa-pencil" @click.stop="editFileConfirm(props.rowData.path, props.rowData.name, props.rowData.type)"/>
<va-button flat small color="gray" icon="fa fa-pencil" @click.stop="editFileConfirm(props.rowData)"/>
</va-popover>
<va-popover :message="`delete ${props.rowData.name}`" placement="top">
<va-button flat small color="gray" icon="fa fa-trash" @click.stop="deleteFileConfirm(props.rowData.path, props.rowData.name)"/>
<va-button flat small color="gray" icon="fa fa-trash" @click.stop="deleteFileConfirm(props.rowData)"/>
</va-popover>
</template>
</va-data-table>
@@ -183,27 +233,31 @@ import { debounce } from 'lodash'
import { file } from '../../../data/file/File'
import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
import api from '../../../data/api/index'
import SdCardButton from '../sdcard/SdCardButton.vue'
export default {
name: 'FileTable',
components: {
FulfillingBouncingCircleSpinner,
SdCardButton,
},
data () {
return {
term: null,
perPage: '6',
perPageOptions: ['4', '6', '10', '20'],
perPage: '80',
perPageOptions: ['20', '40', '80', '160'],
fileLists: [],
pathLists: [],
currentPathIndex: -1,
currentPage: 0,
currentInfo: {},
loadingFiles: true,
showModal: {
createFolder: false,
deleteFile: false,
deleteMultiFiles: false,
editFile: false,
},
@@ -216,9 +270,7 @@ export default {
errorMessages: [],
},
editInfo: {
path: '',
name: '',
type: '',
info: {},
changedName: '',
success: false,
error: false,
@@ -228,6 +280,7 @@ export default {
deleteInfo: {
path: '',
name: '',
metaID: '',
},
styleList: {
@@ -236,19 +289,22 @@ export default {
height: '2rem',
},
},
SDuuidList: [],
controllerList: [],
}
},
computed: {
fields () {
return [
// {
// name: '__slot:select',
// },
{
name: '__slot:select',
width: '5%',
},
{
name: '__slot:name',
title: 'name',
sortField: 'name',
width: '20%',
width: '15%',
titleClass: 'text-center',
},
// {
@@ -290,7 +346,7 @@ export default {
{
name: '__slot:actions',
dataClass: 'text-right',
width: '15%',
width: '25%',
},
]
},
@@ -299,7 +355,9 @@ export default {
return this.fileLists
}
return this.fileLists.filter(item => {
return item.name.toLowerCase().includes(this.term.toLowerCase())
if (item.name !== null) {
return item.name.toLowerCase().includes(this.term.toLowerCase())
}
})
},
selected () {
@@ -316,7 +374,7 @@ export default {
// },
select: function (file) {
event.stopPropagation()
const idx = this.fileLists.findIndex(f => f.name === file.name)
const idx = this.fileLists.findIndex(f => f.id === file.id)
this.fileLists[idx].checked = !this.fileLists[idx].checked
},
search: debounce(function (term) {
@@ -339,18 +397,17 @@ export default {
return this.GLOBAL.transTime(time)
}
},
transDeviceInfo: function (configuration) {
if (configuration === undefined) {
transDeviceInfo: function (device) {
if (device === undefined) {
return '--'
} else {
return configuration._DEVICE_NAME_ + '\n' + configuration._DEVICE_ADDR_
return device.device_name + '\n' + this.GLOBAL.transMac(device.device_address)
}
},
openFile: async function (info) {
console.log('openfile', info)
console.log(this.pathLists)
if (info.type === 'folder') {
this.currentInfo = info
this.loadingFiles = true
// clear file and add path
file.clearFileList()
@@ -358,16 +415,15 @@ export default {
this.currentPathIndex = file.getPathMaxIndex()
// call getfolder api and update
const folders = await api.getCollectionsFoldersByParent(info.id)
const files = await api.getFolderMetaFileByParent(info.id)
const folders = await api.collection.getByParent('folder', info.id)
const files = await api.meta.getAttrByParent('folder', info.id, 'id-path-name-parent-description-size-time_duration-uuid-device-channels-created_at')
file.updateFileList(folders)
file.updateFileList(files)
this.fileLists = file.getFileList()
this.loadingFiles = false
} else {
// this.fileInfoName = info.name
// this.$emit('showFileInfoTable', info.path)
// TODO file info
}
},
openPath: async function (item, index) {
@@ -377,9 +433,10 @@ export default {
file.clearFileList()
file.slicePathList(index)
this.currentPathIndex = file.getPathMaxIndex()
this.currentInfo = item
// call getfolder api and update
const folders = await api.getCollectionsFoldersByParent(item.id)
const files = await api.getFolderMetaFileByParent(item.id)
const folders = await api.collection.getByParent('folder', item.id)
const files = await api.meta.getAttrByParent('folder', item.id, 'id-path-name-parent-description-size-time_duration-uuid-device-channels-created_at')
file.updateFileList(folders)
file.updateFileList(files)
@@ -395,43 +452,55 @@ export default {
this.currentPathIndex = -1
// call getfolder api and update
const folders = await api.getCollectionsFoldersByParent(0)
const files = await api.getFolderMetaFileByParent(0)
file.updateFileList(folders)
file.updateFileList(files)
this.fileLists = file.getFileList()
this.loadingFiles = false
const initCollection = await api.collection.getByParentName('folder', 0, 'root')
if (initCollection.data.length === 1) {
this.currentInfo = initCollection.data[0]
const folders = await api.collection.getByParent('folder', initCollection.data[0].id)
const files = await api.meta.getAttrByParent('folder', initCollection.data[0].id, 'id-path-name-parent-description-size-time_duration-uuid-device-channels-created_at')
file.updateFileList(folders)
file.updateFileList(files)
this.fileLists = file.getFileList()
this.loadingFiles = false
}
},
createFolderConfirm: function () {
this.inputFieldReset(this.createInfo)
this.createFolder = true
this.showModal.createFolder = true
},
checkFolderNameValidate: debounce(async function (term) {
if (term.length === 0) {
// folder name empty
this.setInputFieldError(this.createInfo.errorMessagesAll[1], this.createInfo)
return false
}
const illegalChar = term.match(/[^(\w\-)]+/gm)
if (illegalChar !== null) {
// folder name contains illegal characters
this.setInputFieldError(this.createInfo.errorMessagesAll[0] + ' ' + illegalChar[0], this.createInfo)
} else {
// folder name existed
const existedFolder = await api.getCollectionsByName(term)
const existedFolder = await api.collection.getByParentName(this.currentInfo.type, this.currentInfo.id, term)
if (existedFolder.data.length === 0) {
this.setInputFieldSuccess(this.createInfo)
} else {
this.setInputFieldError(this.createInfo.errorMessagesAll[2], this.createInfo)
}
}
if (term.length === 0) {
// folder name empty
this.setInputFieldError(this.createInfo.errorMessagesAll[1], this.createInfo)
}
this.createInfo.changedName = term
}, 200),
}, 250),
createFolder: async function () {
const parent = [].concat((this.pathLists.length === 0) ? 0 : this.pathLists[this.pathLists.length - 1].id)
const parent = [].concat((this.pathLists.length === 0) ? this.currentInfo.id : this.pathLists[this.pathLists.length - 1].id)
const type = 'folder'
await api.createCollection(this.createInfo.changedName, parent, type)
this.refreshCurrentPage()
await api.collection.create({
name: this.createInfo.changedName,
parent: { [type]: parent },
type: type,
size: 0,
})
await this.refreshPage()
this.showToast(`Folder ${this.createInfo.changedName} create.`, {
position: 'bottom-right',
})
},
undoCreate: function () {
this.createInfo.success = false
@@ -439,21 +508,25 @@ export default {
this.createInfo.changedName = ''
this.createInfo.name = ''
},
editFileConfirm: function (path, name, type) {
this.editInfo.path = path
this.editInfo.name = name
this.editInfo.type = type
this.editFile = true
editFileConfirm: function (info) {
this.editInfo.info = info
this.editInfo.changedName = info.name
this.showModal.editFile = true
setTimeout(() => {
this.$refs.edit_input.$refs.input.focus()
}, 100)
},
editFile: function () {
// this.mqttPub('BPS_FF_user', JSON.stringify({
// header: 'file_rename/0',
// path: this.editInfo.path,
// content: this.editInfo.changedName,
// }))
editFile: async function () {
// TODO editFile
if (this.editInfo.type !== 'folder') {
await api.meta.update(this.editInfo.info.id, { name: this.editInfo.changedName })
} else {
}
await this.editFileDone()
},
checkFileNameValidate: debounce(function (term) {
const illegalChar = term.match(/[^(\w\-)]+/gm)
this.editInfo.changedName = term
if (term.length === 0) {
// input text empty
this.editInfo.error = true
@@ -467,7 +540,13 @@ export default {
this.editInfo.errorMessages.pop()
this.editInfo.errorMessages.push(this.editInfo.errorMessagesAll[0] + ' ' + illegalChar[0])
} else {
const existedFile = this.fileLists.filter(file => file.name.replace('/', '') === term)
const existedFile = this.fileLists.filter((file) => {
if (file.name != null) {
return file.name.replace('/', '') === term
} else {
return false
}
})
if (existedFile.length === 0) {
this.editInfo.error = false
this.editInfo.success = true
@@ -479,14 +558,13 @@ export default {
this.editInfo.errorMessages.push(this.editInfo.errorMessagesAll[2])
}
}
this.editInfo.changedName = term
}, 200),
editFileDone: function () {
this.mqttPub('BPS_FF_user', JSON.stringify({
header: 'file_list/0',
path: file.getPath(),
}))
this.showToast(`file rename ${this.editInfo.name}`, {
editFileDone: async function () {
const tmpCurrentPage = this.$refs.datatable_ref.currentPage
await this.refreshPage()
this.$refs.datatable_ref.currentPage = tmpCurrentPage
this.$refs.datatable_ref.inputPage(tmpCurrentPage)
this.showToast(`${this.editInfo.info.name} -> ${this.editInfo.changedName}`, {
position: 'bottom-right',
})
},
@@ -499,27 +577,66 @@ export default {
},
removeFileFromList: function () {
},
deleteFileConfirm: function (path, name) {
this.deleteInfo.path = path
this.deleteInfo.name = name
this.deleteFile = true
fillDeleteInfo: function (info) {
if (info.type === 'folder') {
this.deleteInfo.folderID = info.id
this.deleteInfo.name = info.name
} else {
this.deleteInfo.path = info.path
this.deleteInfo.name = info.name
this.deleteInfo.metaID = info.id
}
},
deleteFile: function () {
// this.loadingFiles = true
// this.mqttPub('BPS_FF_user', JSON.stringify({
// header: 'file_delete/0',
// path: this.deleteInfo.path,
// }))
deleteFolder: async function (id) {
await api.collection.update(id, { deleted: true })
await api.collection.clearDel()
},
deleteFileDone: function () {
deleteSingleFileByDeleteInfo: async function () {
await api.meta.update(this.deleteInfo.metaID, { deleted: true })
await api.meta.clearDel()
},
deleteFileConfirm: function (info) {
this.fillDeleteInfo(info)
this.showModal.deleteFile = true
setTimeout(() => {
this.$refs.delete_input.focus()
}, 100)
},
deleteFile: async function () {
this.showToast('deleting file...', {
position: 'bottom-right',
})
if (this.deleteInfo.metaID === undefined) {
await this.deleteFolder(this.deleteInfo.folderID)
} else {
await this.deleteSingleFileByDeleteInfo()
}
await this.deleteFileDone()
},
deleteFileDone: async function () {
const tmpCurrentPage = this.$refs.datatable_ref.currentPage
// rebuild table
this.fileLists = this.fileLists.filter(file => file.name !== this.deleteInfo.name)
await this.refreshPage()
this.$refs.datatable_ref.currentPage = tmpCurrentPage
this.$refs.datatable_ref.inputPage(tmpCurrentPage)
// this.loadingFiles = false
this.showToast(`deleted ${this.deleteInfo.name}`, {
position: 'bottom-right',
})
},
deleteMultiFilesConfirm: function () {
this.showModal.deleteMultiFiles = true
setTimeout(() => {
this.$refs.delete_multi_input.focus()
}, 100)
},
deleteMultiFiles: async function () {
this.showToast('deleting file...', {
position: 'bottom-right',
})
this.deleteSelected()
},
inputFieldReset: function (info) {
info.name = ''
info.changedName = ''
@@ -536,18 +653,118 @@ export default {
info.errorMessages.pop()
info.errorMessages.push(message)
},
refreshCurrentPage: function () {
this.$refs.datatable_ref.refresh()
this.$refs.datatable_ref.currentPage = 1
refreshPage: async function () {
if (this.currentPathIndex === -1) {
this.openHome()
} else {
this.loadingFiles = true
// clear file and add path
file.clearFileList()
// call getfolder api and update
const folders = await api.collection.getByParent('folder', this.currentInfo.id)
const files = await api.meta.getAttrByParent('folder', this.currentInfo.id, 'id-path-name-parent-description-size-time_duration-uuid-device-channels-created_at')
file.updateFileList(folders)
file.updateFileList(files)
this.fileLists = file.getFileList()
this.loadingFiles = false
}
// this.$refs.datatable_ref.refresh()
// this.$refs.datatable_ref.currentPage = 1
},
showrefs: function () {
this.$emit('download', this.selected)
downloadSelected: function () {
for (let i = 0; i < this.selected.length; i++) {
const meta = this.selected[i]
this.downloadExcel(meta)
}
},
download: async function (info) {
this.$emit('download', info)
async deleteSelected () {
for (let i = 0; i < this.selected.length; i++) {
const meta = this.selected[i]
this.fillDeleteInfo(meta)
await this.deleteSingleFileByDeleteInfo()
this.showToast(`deleted ${this.deleteInfo.name}`, {
position: 'bottom-right',
})
}
const tmpCurrentPage = this.$refs.datatable_ref.currentPage
await this.refreshPage()
this.$refs.datatable_ref.currentPage = tmpCurrentPage
this.$refs.datatable_ref.inputPage(tmpCurrentPage)
},
downloadCsv: async function (meta) {
const href = location.href.split('/')[2]
const connectCheck = await api.connection.check()
if (connectCheck.status === 200) {
window.open('http://' + href + '/#/download/online/csv/' + meta.id)
} else {
window.open('http://' + href + '/#/download/offline/csv/' + meta.id)
}
},
downloadExcel: async function (meta) {
const href = location.href.split('/')[2]
const connectCheck = await api.connection.check()
if (meta.device.library_name.indexOf('Elite') >= 0) {
if (connectCheck.status === 200) {
window.open('http://' + href + '/#/download/online/excel/' + meta.id)
} else {
window.open('http://' + href + '/#/download/offline/excel/' + meta.id)
}
} else if (meta.device.library_name.indexOf('Neulive') >= 0) {
if (connectCheck.status === 200) {
window.open('http://' + href + '/#/download/online/csv-edf/' + meta.id)
} else {
window.open('http://' + href + '/#/download/offline/csv-edf/' + meta.id)
}
}
},
downloadSdCard: async function (meta) {
const href = location.href.split('/')[2]
if (meta.device.library_name.indexOf('Neulive') >= 0) {
if (window.navigator.onLine) {
window.open('http://' + href + '/#/download/online/csv/' + meta.id + '/sd')
} else {
window.open('http://' + href + '/#/download/offline/csv/' + meta.id + '/sd')
}
}
},
async getSDuuidList () {
// const uuidList = ['32abdb14-fc0c-11eb-9aa8-dca6326cbc6b', '940ca938-f662-11eb-8a41-dca6326cbc6b']
if (this.controllerList.length > 0) {
if (this.controllerList[0].sd_uploading === false) {
const ret = await api.sdcard.getuuidList()
if (ret.status === 200) {
this.SDuuidList = ret.data
}
}
}
},
replay: function (meta) {
if (meta.device.library_name.includes('Neulive') === true) {
// window.open('http://' + location.href.split('/')[2].split(':')[0] + '/#/admin/data-replay/' + meta.id)
this.$router.push({
path: '/admin/data-replay/' + meta.id,
})
} else if (meta.device.library_name.includes('Elite') === true) {
// window.open('http://' + location.href.split('/')[2].split(':')[0] + '/#/admin/data-replay/elite/' + meta.id)
this.$router.push({
path: '/admin/data-replay/elite/' + meta.id,
})
}
},
spike: function (meta) {
if (meta.device.library_name.includes('Neulive') === true) {
this.$router.push({
path: '/admin/data-spike/' + meta.id,
})
}
},
},
mounted () {
async mounted () {
const controllerList = await api.controller.getAll()
this.controllerList = controllerList.data
this.getSDuuidList()
},
destroyed () {
},
@@ -0,0 +1,84 @@
<template>
<div/>
</template>
<script>
import { apiManager } from './apiManager'
export default {
name: 'SdCardApiAction',
components: {
},
props: {
},
data () {
return {
metaID: '',
mac_address: '',
uuid: '',
}
},
mqtt: {
},
methods: {
initMetaInfo (meta) {
this.metaID = meta.id
// bytes array to hex string formamt
this.mac_address = meta.device.device_address.map(data =>
data.toString(16)
.padStart(2, '0')
.toUpperCase()).join(':')
this.uuid = meta.uuid
},
// async checkInSD (meta) {
// this.initMetaInfo(meta)
// this.pageToast('Start checking in SD card...')
// apiManager.startProgressBar()
// const result = await apiManager.call('Check_in_SD', this.metaID, this.mac_address, this.uuid)
// this.checkSDresult = result.data
// this.pageToast('In SD card: ' + this.checkSDresult)
// apiManager.endProgressBar()
// return result.data
// },
async moveToDB (meta, controller) {
this.initMetaInfo(meta)
this.pageToast('Start Moving to database...')
const result = await apiManager.call('Move_to_DB', controller.id, this.metaID, this.mac_address, this.uuid)
return result
},
async deleteSDCard (meta, controller) {
this.initMetaInfo(meta)
this.pageToast('Start deleting in SD card...')
await apiManager.call('Delete_SD', controller.id, this.metaID, this.mac_address, this.uuid)
},
pageToast: function (mes) {
this.showToast(
mes,
{
icon: 'fa-bell',
position: 'bottom-right',
duration: 4000,
},
)
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
<style lang="scss">
#nprogress .bar {
background: red;
}
#nprogress .spinner-icon {
border-top-color: red;
border-left-color: red;
}
</style>
+148
View File
@@ -0,0 +1,148 @@
<template>
<div>
<!-- recorded = false, no icon; recorded = true, gray icon; uploaded = true, blue icon; in uuid list: gray icon + red exclam -->
<va-button
class="va-button--with-left-icon va-button--without-title"
v-show="meta.sd_data_record === true"
:icon="meta.sd_data_uploaded === true ? 'fa fa-download' : ''"
:color="this.$themes.primary"
@click.native.stop="performButtonAction()"
flat
small
>
<va-icon
v-if="meta.sd_data_uploaded === false"
class="va-button__content__icon va-button__content__icon-left"
name="material-icons"
color="grey"
@click.native.stop="performButtonAction()"
small
fixed-width
> sd_card
</va-icon>
</va-button>
<sd-card-api-action :ref="'sd_card_api'"/>
<va-modal
class="flex sm12 xl12 md12 xs12"
v-model="moveToDBModal"
size="small"
:title="'UPLOAD SD CARD DATA'"
:okText=" $t('modal.confirm') "
@ok="moveToDB()"
/>
<progress-modal
title="SD card data uploading"
:time="(parseInt(meta.time_duration) / 2e6).toString()"
:ref="'progressModalRef'"
/>
</div>
</template>
<script>
import SdCardApiAction from './SdCardApiAction.vue'
import progressModal from '@/components/common/progressBarModal/progressModal.vue'
export default {
name: 'SdCardButton',
components: {
SdCardApiAction,
progressModal,
},
props: {
controller: {
type: Object,
required: true,
},
uuidList: {
type: Array,
required: true,
},
meta: {
type: Object,
required: true,
},
},
data () {
return {
isSdCardDataLoaded: false,
moveToDBModal: false,
checkSDresult: '',
metaID: '',
mac_address: '',
uuid: '',
icon: 'fa fa-usb',
}
},
mqtt: {
},
methods: {
init () {
this.metaID = this.meta.id
this.mac_address = this.meta.device.device_address.map(data =>
data.toString(16)
.padStart(2, '0')
.toUpperCase()).join(':')
this.uuid = this.meta.uuid
},
async performButtonAction () {
const recorded = this.meta.sd_data_record // true or false
const uploaded = this.meta.sd_data_uploaded // true or false
if (recorded === true) {
if (uploaded !== true) {
if (this.uuidList.includes(this.uuid)) {
this.moveToDBModal = true
} else {
this.pageToast('Can not access data. Please connect your device to hub by usb.')
}
} else {
this.executeDownload()
}
}
},
async moveToDB () {
await this.executeUpload()
this.$emit('refreshPage')
},
// async executeCheckInSD () {
// return await this.$refs.sd_card_api.checkInSD(this.meta)
// },
async executeUpload () {
this.$refs.progressModalRef.show()
const result = await this.$refs.sd_card_api.moveToDB(this.meta, this.controller).catch(_ => {
this.$refs.progressModalRef.hide()
this.pageToast('Upload SD card data error, please connect Neullive to Hub by usb or data corrupted.')
})
if (result.data === true) {
this.pageToast('Upload SD card data done.')
} else {
this.pageToast('Upload SD card data error, please connect Neullive to Hub by usb or data corrupted.')
}
this.$refs.progressModalRef.progressDone()
// remove delete sd card first, still have problem.
// await this.$refs.sd_card_api.deleteSDCard(this.meta, this.controller)
},
executeDownload () {
this.$emit('downloadSdCard', this.meta)
},
pageToast: function (mes) {
this.showToast(
mes,
{
icon: 'fa-bell',
position: 'bottom-right',
duration: 7000,
},
)
},
},
async mounted () {
this.init()
},
watch: { // cuz data table will not call mounted
meta: function (val) {
this.init()
},
},
}
</script>
+35
View File
@@ -0,0 +1,35 @@
import api from '@/data/api/index'
import nProgress from 'nprogress'
export const apiManager = {
call: async (instruction, controllerID, metaID, macAddress, uuid) => {
if (instruction === 'Check_in_SD') {
return await api.sdcard.exist({
controllerID: controllerID,
metaID: metaID,
mac: macAddress,
uuid: uuid,
})
} else if (instruction === 'Delete_SD') {
return await api.sdcard.deleted({
controllerID: controllerID,
metaID: metaID,
mac: macAddress,
uuid: uuid,
})
} else if (instruction === 'Move_to_DB') {
return await api.sdcard.upload({
controllerID: controllerID,
metaID: metaID,
mac: macAddress,
uuid: uuid,
})
}
},
startProgressBar: () => {
nProgress.start()
},
endProgressBar: () => {
nProgress.done()
},
}
@@ -18,11 +18,11 @@ export default [
],
},
{
categoryName: 'Project',
categoryName: 'Task',
items: [
{
itemName: 'ProjectContent',
itemLink: '/project/content',
itemName: 'TaskContent',
itemLink: '/task/content',
},
],
},
@@ -38,8 +38,8 @@ export default [
itemLink: '/admin/statistics/progress-bars',
},
// {
// itemName: 'ProjectContent',
// itemLink: '/admin/statistics/project-content',
// itemName: 'TaskContent',
// itemLink: '/admin/statistics/task-content',
// },
],
},

Some files were not shown because too many files have changed in this diff Show More