Compare commits

...

362 Commits

Author SHA1 Message Date
Samuele Locatelli c0c97cc0c7 Merge remote-tracking branch 'origin/develop' into develop 2020-09-28 13:09:00 +02:00
Samuele Locatelli fc9a727118 typo + DB (insert or update) solo con BIT 2020-09-28 13:08:50 +02:00
= 7d57c489d1 Merge remote-tracking branch 'CMS/develop' into develop 2020-09-28 12:52:34 +02:00
= 4bcf940134 hub setpoint hmi 2020-09-28 12:51:28 +02:00
Samuele Locatelli c7052ac390 Salvataggio spostamento ordine load recipe 2020-09-28 11:21:37 +02:00
Samuele Locatelli 7497f01e7a FIx ordine scrittura conferma HMI e mod recipe UI 2020-09-28 10:52:47 +02:00
Samuele Locatelli 024f5369e8 typo 2020-09-28 10:52:27 +02:00
Samuele Locatelli a990dcf712 inizio vers 0.20.100 2020-09-28 10:51:50 +02:00
= a382a313e2 fix zoom 2020-09-28 10:24:29 +02:00
= 39f5be6d9c fix delay disegno riscaldi 2020-09-28 10:11:01 +02:00
Samuele E. Locatelli cead2275eb Merge remote-tracking branch 'origin/develop' into develop 2020-09-28 09:20:07 +02:00
Samuele E. Locatelli e808411cb2 Merge branch 'featue/Axes' into develop 2020-09-28 09:18:13 +02:00
= da8744de56 fix dashboard time layut 2020-09-28 09:18:12 +02:00
Samuele E. Locatelli 0ea0fbd8d4 fix client problems and slider behaviour 2020-09-28 09:16:54 +02:00
= 4d31463688 tempo trascorso + production hub 2020-09-28 09:16:06 +02:00
Samuele Locatelli 7086c0a83f Merge remote-tracking branch 'origin/develop' into featue/Axes 2020-09-25 11:47:17 +02:00
Samuele Locatelli c5bda8d774 revisione gest sample periods configurabili da XML 2020-09-25 11:46:55 +02:00
Samuele Locatelli c0bc78cb5e update conf dei periodi sample/sleep 2020-09-25 11:46:28 +02:00
Samuele Locatelli 5504019044 new rel 2020-09-25 11:46:16 +02:00
Samuele Locatelli 08d48f6044 modifica calcoli equality x uso epsilon a 0.1 2020-09-25 11:46:10 +02:00
Samuele Locatelli a554e42f06 Gestione lettura conf periodi sampling + setup x cicli principali del periodo di sampling 2020-09-25 09:49:00 +02:00
Samuele Locatelli b4fe6f0c05 Modifica conf server x gestione sampling interval 2020-09-25 09:48:41 +02:00
= 5f117de287 Merge remote-tracking branch 'CMS/develop' into develop 2020-09-25 09:19:35 +02:00
= 89e0e90166 fix hub logging 2020-09-25 09:19:10 +02:00
Samuele E. Locatelli 7a6d6aad56 update DTO model x ridurre variazione a epsilon * 100 2020-09-24 19:34:34 +02:00
Samuele E. Locatelli c85ed17448 Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into develop 2020-09-24 18:00:17 +02:00
Samuele E. Locatelli a74d2abb19 fix slider behaviour 2020-09-24 17:59:15 +02:00
= 91fafd459b fix riscaldi resize 2020-09-24 17:51:32 +02:00
= 5fead0145c Merge remote-tracking branch 'CMS/develop' into develop 2020-09-24 17:35:13 +02:00
= 8f97eeecfd autocompose a 0 fix 2020-09-24 17:35:02 +02:00
Samuele E. Locatelli 1cadbfd640 Merge remote-tracking branch 'origin/develop' into develop 2020-09-24 17:24:02 +02:00
NICOLA CARMINATI c6ee7a74b0 Fix riscaldi & softkey 2020-09-24 17:23:04 +02:00
Samuele E. Locatelli 98f64f57e5 Merge branch 'featue/Axes' into develop 2020-09-24 17:21:33 +02:00
Samuele E. Locatelli 287e5d1ab8 Fix client 2020-09-24 17:06:44 +02:00
Samuele E. Locatelli 88e1c64c3b FIx "salva con nome" 2020-09-24 17:06:19 +02:00
Samuele Locatelli ad3a91ad1c new rel 98 2020-09-24 11:03:17 +02:00
= fb9f1c4b72 fix assi 2020-09-24 10:47:14 +02:00
= b8e3cd7ef0 axis 2020-09-24 10:35:17 +02:00
= 074df56d4d Merge remote-tracking branch 'CMS/develop' into develop 2020-09-24 09:03:20 +02:00
= f4d226fc2b fix gaude info 2020-09-24 09:03:07 +02:00
Samuele E. Locatelli 790652a8c8 Merge remote-tracking branch 'origin/develop' into featue/Axes 2020-09-24 08:49:35 +02:00
Samuele E. Locatelli 816d49a08c pulizia doppia gestione eccezione 2020-09-24 08:49:17 +02:00
Samuele Locatelli bc7116cf5d Merge remote-tracking branch 'origin/develop' into featue/Axes 2020-09-24 08:47:49 +02:00
Samuele Locatelli 617bb783d2 fix invio gauges (eliminato commento) 2020-09-24 08:47:38 +02:00
= 26f225fabc Merge remote-tracking branch 'CMS/develop' into develop 2020-09-24 08:30:44 +02:00
Samuele Locatelli ac1c8f7067 Merge branch 'featue/Axes' into develop 2020-09-23 23:25:01 +02:00
Samuele Locatelli 7238579305 update vers numb 2020-09-23 23:24:47 +02:00
Samuele Locatelli f13cadd145 Fix errata duplicazione invio dati assi, fix anche x GAUGES e dati ricetta 2020-09-23 23:24:19 +02:00
Samuele Locatelli 216980b923 @Paolo: hub.ts: track info assi (log su console) 2020-09-23 23:24:01 +02:00
Samuele Locatelli 149205e998 Merge branch 'featue/Axes' into develop 2020-09-23 20:03:36 +02:00
Samuele Locatelli ffd24f2539 COmpletata gestione dll core assi thermo 2020-09-23 20:03:11 +02:00
Samuele Locatelli 147b84ab19 NC config per lettura assi (per ora 0 da core_library) 2020-09-23 19:04:16 +02:00
Samuele Locatelli ec9e23071f pulizia commenti + conf lettura ogni 200ms 2020-09-23 18:15:21 +02:00
Samuele Locatelli 85aebf6385 Start rel 95 con VERA lettura assi 2020-09-23 18:12:57 +02:00
Samuele Locatelli 17eabc16da Merge remote-tracking branch 'origin/develop' into develop 2020-09-23 18:06:18 +02:00
Samuele Locatelli 1faba838a7 Pacchetto modifiche x nuovo DTO info assi 2020-09-23 18:06:06 +02:00
Samuele Locatelli 12378bdac7 start new rel 94 2020-09-23 18:05:49 +02:00
= 611fcb940d fix layout 2020-09-23 17:51:36 +02:00
= ab345f7f99 folder create 2020-09-23 17:49:03 +02:00
= e22a34a34e folder & file management 2020-09-23 17:15:18 +02:00
= 1cb0605d41 Merge remote-tracking branch 'CMS/develop' into develop 2020-09-23 16:18:57 +02:00
= 1b8e84dd30 layout 2020-09-23 16:18:48 +02:00
= 9d8a3cd1ea layout assi 2020-09-23 16:15:56 +02:00
Samuele Locatelli ed9f33e5e8 Merge remote-tracking branch 'origin/develop' into develop 2020-09-23 08:37:04 +02:00
Samuele Locatelli fa04f490dc new rel 2020-09-23 08:36:57 +02:00
= 4e625e71c5 fix cicli.. 2020-09-23 08:31:23 +02:00
Samuele E. Locatelli fa9bed3196 fix gestione "*" modificato in caso di annulla causa "rimbalzo reset" 2020-09-22 15:05:30 +02:00
Samuele E. Locatelli 8b645e01d1 Merge remote-tracking branch 'origin/develop' into develop 2020-09-22 14:12:23 +02:00
Samuele Locatelli a8fdd44497 vers 92 2020-09-22 14:09:55 +02:00
Samuele Locatelli f5d1aa04f1 Merge remote-tracking branch 'origin/develop' into featue/Axes 2020-09-22 14:09:37 +02:00
Samuele E. Locatelli c4468e62d8 added Utilities and Users manager 2020-09-22 14:01:58 +02:00
= bf4487909c event gantt 2020-09-22 12:50:36 +02:00
Samuele Locatelli 6dc778bbf3 ricompilazione x refresh vue 2020-09-22 11:59:27 +02:00
Samuele Locatelli 0fc43251bc Merge branch 'develop' into featue/Axes 2020-09-22 11:17:00 +02:00
Samuele Locatelli 188ce800e8 FIx gestione starred "sovrascritta" in canceledit 2020-09-22 11:16:47 +02:00
Samuele Locatelli a7db8bd047 Fix gestione nome ricetta in LOAD 2020-09-22 10:28:27 +02:00
Samuele Locatelli a6ee88e4e7 start new rel 0.16.60 2020-09-22 10:09:36 +02:00
Samuele Locatelli 75d881edf6 Merge remote-tracking branch 'origin/develop' into develop 2020-09-22 10:09:11 +02:00
Samuele Locatelli 5f95125ae2 Fix x localhost test 2020-09-22 10:09:01 +02:00
Samuele Locatelli 354bf0df6d COrrezione conf assi come da call con F.Bolis 2020-09-22 10:08:10 +02:00
= ff6a7a1962 fix gantt posizioning on zoomout 2020-09-22 09:35:06 +02:00
= d079e187e1 Merge remote-tracking branch 'CMS/develop' into develop 2020-09-22 09:24:52 +02:00
= e21c13e7c8 asterisco 2020-09-22 09:24:25 +02:00
Samuele Locatelli 3c3ca13af3 Merge branch 'develop' into featue/Axes 2020-09-21 18:23:56 +02:00
Samuele Locatelli 2de6e9aae2 ver 89 2020-09-21 18:23:50 +02:00
Samuele E. Locatelli 87f55952f8 invio immediato cambio nome ricetta 2020-09-21 18:22:04 +02:00
Samuele E. Locatelli 843aa43240 Merge remote-tracking branch 'origin/develop' into develop 2020-09-21 17:58:46 +02:00
= 65c7379111 fix changed data 2020-09-21 17:55:11 +02:00
Samuele E. Locatelli c46f7a531a fix invio immediato nome ricetta sul salva con nome & co... 2020-09-21 17:50:28 +02:00
Samuele E. Locatelli 87494489f6 Merge remote-tracking branch 'origin/develop' into develop 2020-09-21 17:21:22 +02:00
Samuele E. Locatelli ca45edab94 Saltata verifica "in fiducia" nel debug degli errori SE visibili 2020-09-21 17:18:12 +02:00
Samuele Locatelli ca318a255e Merge remote-tracking branch 'origin/develop' into develop 2020-09-21 17:17:30 +02:00
Samuele E. Locatelli 3aae8b0f9b added "duplicate recipe" and changed warmers color 2020-09-21 17:08:01 +02:00
= 5951ab295c fix save as image 2020-09-21 09:02:02 +02:00
Samuele Locatelli 2ec4598482 Merge remote-tracking branch 'origin/develop' into develop 2020-09-21 07:44:17 +02:00
Samuele Locatelli 6730de1833 COmmentata aprte assi non testata 2020-09-21 07:43:57 +02:00
Samuele E. Locatelli 9c5644c52b Merge remote-tracking branch 'origin/develop' into develop 2020-09-21 07:21:54 +02:00
Samuele E. Locatelli 1753027afd fixes on Recipe 2020-09-20 16:18:26 +02:00
Samuele Locatelli a2c5d327db inizio aggiunta gestione info assi 2020-09-20 12:54:08 +02:00
Samuele Locatelli 04d94b572c Ok signal-r x NOMI ASSI e tipo (da conf) 2020-09-20 12:14:17 +02:00
Samuele Locatelli 134981c2d7 Aggiunta metodi preliminari gestione dati ASSI 2020-09-20 11:54:38 +02:00
Samuele Locatelli 5da1afa0eb Prosegue gestione dati assi (da conf con XML) 2020-09-20 11:54:23 +02:00
Samuele Locatelli e42a231989 Aggiunta xsd x conf assi + update conf assi 2020-09-20 11:53:46 +02:00
Samuele Locatelli e509c83b90 start new rel 88 2020-09-20 10:19:55 +02:00
Samuele Locatelli 79f28bc415 Update datamodel in OUT 2020-09-20 10:19:22 +02:00
Samuele Locatelli 2c94761966 Merge remote-tracking branch 'origin/develop' into develop 2020-09-18 18:22:23 +02:00
Samuele Locatelli 44c6e48398 new rel 2020-09-18 18:11:52 +02:00
Samuele Locatelli 6c1aa037d5 Invio starred modifica ricetta con signal-r 2020-09-18 18:11:35 +02:00
= 3a8f702a87 Merge remote-tracking branch 'CMS/develop' into develop 2020-09-18 17:17:35 +02:00
= b21592609b modal save confirm 2020-09-18 17:17:23 +02:00
Samuele Locatelli 5a4e86f861 Merge remote-tracking branch 'origin/develop' into develop 2020-09-18 16:57:52 +02:00
Samuele E. Locatelli 0e41eb6033 fix apth x browser locale JS 2020-09-18 16:57:13 +02:00
Samuele E. Locatelli 11100544c9 aggiunta zip demo recipes 2020-09-18 16:57:00 +02:00
Samuele Locatelli 42069a2cb2 Update config parametri opzionali 2020-09-18 16:46:24 +02:00
Samuele Locatelli 5c1777a4b6 Merge remote-tracking branch 'origin/develop' into develop 2020-09-18 11:02:51 +02:00
Samuele Locatelli de81cde6ec new rel 86 2020-09-18 11:02:37 +02:00
= 7c47415d65 fix autocomplete con valori stringa.. 2020-09-18 10:25:13 +02:00
= dcceb55652 Merge remote-tracking branch 'CMS/develop' into develop 2020-09-18 09:43:40 +02:00
= 247bf212ae Merge remote-tracking branch 'CMS/develop' into develop 2020-09-18 09:43:32 +02:00
= f5b2745a87 warmers.. 2020-09-18 09:41:19 +02:00
Samuele Locatelli 6f46e5a9a5 Merge branch 'develop' into new/M156 2020-09-18 09:39:23 +02:00
Samuele Locatelli 1c0f161640 update config controller x gestione unità di misura 2020-09-18 09:36:02 +02:00
Samuele Locatelli 7a66c3d63d aggiunta unità di misura in serverConfig 2020-09-18 09:35:34 +02:00
= 23af55e1e1 riscaldi 2020-09-17 17:23:43 +02:00
Samuele Locatelli 8e3f3ec5e0 new rel 2020-09-17 13:00:59 +02:00
Samuele Locatelli cf96c67a3c Merge remote-tracking branch 'origin/develop' into develop 2020-09-17 12:55:35 +02:00
Samuele Locatelli ae8f931372 Gestione lettura ed export config parametri lastra 2020-09-17 12:55:10 +02:00
Samuele Locatelli 20d9bf716d Aggiunta XML x conf parametri lastra 2020-09-17 12:54:58 +02:00
Samuele E. Locatelli 2f6f308f19 Merge remote-tracking branch 'origin/develop' into develop 2020-09-17 12:43:59 +02:00
= 7fd2b6ca30 Merge remote-tracking branch 'CMS/develop' into develop 2020-09-17 12:07:29 +02:00
= aff9643216 riscaldi inferiori autocomposizione 2020-09-17 12:05:17 +02:00
= 465b09c176 riscaldi autocomposizione 2020-09-17 12:02:18 +02:00
Samuele E. Locatelli 1efde033b2 Update input x nuovo tipo finirestra popup 2020-09-17 11:52:15 +02:00
NICOLA CARMINATI 4a609bc35b Other behaviour fixes 2020-09-17 11:46:27 +02:00
NICOLA CARMINATI 88aa48a3d8 Fix M156 and modal Behaviour 2020-09-17 11:40:02 +02:00
Samuele E. Locatelli b280dca20f Merge remote-tracking branch 'origin/develop' into develop 2020-09-17 10:13:36 +02:00
Samuele E. Locatelli a6d6041b06 aggiunta finestra 2 2020-09-17 10:13:05 +02:00
Samuele E. Locatelli 46b7b02da9 fix check inp button null 2020-09-17 10:01:20 +02:00
= 98d3798824 fix toggle on error color 2020-09-16 16:00:26 +02:00
= dd7e9b9e19 Merge remote-tracking branch 'CMS/develop' into develop 2020-09-16 15:47:23 +02:00
= 550b448dc2 disegno piastra... mancano le dimensioni dei riscaldi 2020-09-16 15:46:42 +02:00
= afaa8f3576 fix numeric unit of measure 2020-09-16 15:46:14 +02:00
NICOLA CARMINATI 328d2ed176 Fix M155 merge 2020-09-16 12:56:32 +02:00
NICOLA CARMINATI 9bd1faf083 Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into develop
# Conflicts:
#	Thermo.Active/wwwroot/src/app_modules/machine/components/m155-dialog.ts
#	Thermo.Active/wwwroot/src/app_modules/machine/components/m155-dialog.vue
2020-09-16 10:49:08 +02:00
NICOLA CARMINATI 6526a20d5c Fix m155 2020-09-16 10:47:21 +02:00
NICOLA CARMINATI 9f4adce366 Added M155 2020-09-16 10:46:24 +02:00
= 7d29511fdb click fuori da combo e paddle 2020-09-16 10:30:56 +02:00
= e28b736ebf fix keyboard 2020-09-16 09:54:23 +02:00
= 383b5417d4 Merge remote-tracking branch 'CMS/develop' into develop 2020-09-15 14:24:24 +02:00
= 3f9b2a8c8e modali m155 m156 2020-09-15 14:24:07 +02:00
Samuele Locatelli 382d961761 Merge remote-tracking branch 'origin/develop' into develop 2020-09-15 13:04:28 +02:00
Samuele Locatelli ae3294ca46 new rel 82 2020-09-15 13:04:18 +02:00
NICOLA CARMINATI 1f75da9bef Fix Buttons UI 2020-09-15 12:38:08 +02:00
NICOLA CARMINATI ed8400619c Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into develop 2020-09-15 12:24:47 +02:00
NICOLA CARMINATI 67fcba0053 Added icons to the footer buttons 2020-09-15 12:23:47 +02:00
= a7548a6e78 cursore ciclo 2020-09-15 11:34:45 +02:00
= 90fe35fc1c Merge remote-tracking branch 'CMS/develop' into develop 2020-09-15 11:16:12 +02:00
= 4737d22a2f fix gantt to setup 2020-09-15 11:16:01 +02:00
Samuele Locatelli 7a9dca8807 Merge remote-tracking branch 'origin/develop' into develop 2020-09-15 09:23:04 +02:00
Samuele Locatelli 2dfc9e293f new rel 2020-09-15 09:22:50 +02:00
Samuele Locatelli 3cca07422c Unità di misura: messa in DTO da NCAdapter (era commentata) 2020-09-15 09:22:32 +02:00
NICOLA CARMINATI af4870d99d Gestione +/- e setvalue Riscaldi 2020-09-14 18:26:16 +02:00
Samuele Locatelli 7b6ee330bb abbassato sample period x produzione (500 --> 250ms) 2020-09-14 13:26:51 +02:00
Samuele Locatelli 8542b6c565 Merge branch 'develop' into new/dirSaveMgt 2020-09-12 17:25:04 +02:00
Samuele Locatelli 3c65bced53 fix letter case per xsd 2020-09-12 17:24:52 +02:00
Samuele Locatelli 95d29cc716 Aggunta files di config XML/XSD 2020-09-12 17:19:55 +02:00
Samuele Locatelli bcde0c8d86 Completato inserimento metodi x M156 2020-09-12 17:09:11 +02:00
Samuele Locatelli 76deabb93b Aggiunta preliminare metodi x gestione M156 2020-09-12 16:41:29 +02:00
Samuele Locatelli bfc99fc826 Merge branch 'develop' into new/dirSaveMgt 2020-09-10 17:26:53 +02:00
Samuele Locatelli cb28589f79 Gestione calcolo modifica parametri ricette + fix livedata save (tested) 2020-09-10 17:26:37 +02:00
Samuele Locatelli 8cae6edff2 start new rel 2020-09-10 15:33:45 +02:00
Samuele Locatelli 34a71b5784 Merge branch 'develop' into new/dirSaveMgt 2020-09-10 13:15:53 +02:00
Samuele Locatelli 455ddd660c new rel x SIM 2020-09-10 13:15:42 +02:00
Samuele Locatelli bbada3a929 update x fix calcolo tempo ciclo, calcolo durata, inizio lotto... 2020-09-10 13:15:29 +02:00
Samuele Locatelli 0a00ba3eae Merge remote-tracking branch 'origin/develop' into new/dirSaveMgt 2020-09-10 12:29:13 +02:00
Samuele Locatelli 7a3a068908 new rel 2020-09-10 12:21:13 +02:00
= 2a3de715da Merge remote-tracking branch 'CMS/develop' into develop 2020-09-10 10:12:47 +02:00
= 002b235d76 fix dashboar 2020-09-10 10:12:14 +02:00
= b135f017d5 modali da gantt 2020-09-10 09:52:02 +02:00
Samuele Locatelli 32e0c34945 rel ver x prod 2020-09-10 07:58:00 +02:00
Samuele Locatelli f32d0c0daf Merge remote-tracking branch 'origin/develop' into new/dirSaveMgt 2020-09-10 07:56:57 +02:00
NICOLA CARMINATI 014f63bd2b Added folder / file Manager to the Client 2020-09-09 18:03:56 +02:00
= a6e58365dd recipe note.. preview on save 2020-09-09 16:55:03 +02:00
= 7481d3bf28 print ricetta 2020-09-09 16:43:48 +02:00
= c036cd30e2 Merge remote-tracking branch 'CMS/develop' into develop 2020-09-09 15:51:52 +02:00
= 682efe1928 enabled fields visibility 2020-09-09 12:16:04 +02:00
= d511b49c64 enabled fields visibility 2020-09-09 12:15:54 +02:00
Samuele Locatelli bb7ef476ed new rel 2020-09-09 09:58:42 +02:00
Samuele Locatelli 393da8156b Aggiunto metodo x fornire note ad UI 2020-09-09 09:58:31 +02:00
Samuele Locatelli 575b74c676 Merge remote-tracking branch 'origin/develop' into new/dirSaveMgt 2020-09-09 08:16:52 +02:00
Samuele Locatelli 9f27a7b5ce Impostato default dirm da serverConfig/sharedPath 2020-09-09 08:16:43 +02:00
NICOLA CARMINATI 12ee118e72 Fix OnScreenKeyboard Option 2020-09-08 18:08:02 +02:00
= 00994f993b fix number 2020-09-08 17:31:50 +02:00
= 581c6d44fe fix sovrapposizione gant boxes 2020-09-08 15:04:32 +02:00
Samuele Locatelli a75edd650e start new rel 2020-09-08 14:56:50 +02:00
= eea8a2fa5d fix apertura blocchetti da categorie 2020-09-08 12:50:59 +02:00
= 14c9fb628b warmers 2020-09-08 12:40:25 +02:00
= 18530ea7b3 fix combo 2020-09-08 10:48:46 +02:00
= 04447282ea timeline gannt 2020-09-08 10:23:52 +02:00
= 582a4455e0 Merge remote-tracking branch 'CMS/develop' into develop 2020-09-08 10:09:28 +02:00
= 43fa8448d2 fix disegno stampo 2020-09-08 10:09:18 +02:00
Samuele Locatelli a6df5719f0 Merge remote-tracking branch 'origin/develop' into feature/prodMgmt 2020-09-08 09:49:07 +02:00
Samuele Locatelli d23f6fd4c5 new rel 2020-09-08 09:48:58 +02:00
= 91a554d616 utilities 2020-09-08 09:43:12 +02:00
= e96d97890f cancel della ricetta 2020-09-08 09:37:52 +02:00
= 42186c9509 fix remainging time negativo 2020-09-08 09:19:51 +02:00
= b0391855f5 fix numeric 2020-09-08 08:54:52 +02:00
= 305e2220f8 valueact 2020-09-08 08:48:31 +02:00
= a5d2323dea fix combo status 2020-09-08 08:41:17 +02:00
= 95db7bbdd9 Merge remote-tracking branch 'CMS/develop' into develop 2020-09-08 08:35:44 +02:00
= 345918cdaf valueAct 2020-09-08 08:35:19 +02:00
Samuele Locatelli 8bc9fc97c8 new rel 2020-09-07 13:55:09 +02:00
Samuele Locatelli cd5ea6c6cc Merge remote-tracking branch 'origin/develop' into feature/prodMgmt 2020-09-07 13:53:07 +02:00
= fb91158ee6 fix gant print & slider. 2020-09-07 12:52:53 +02:00
= 7b724b070f slider 2020-09-07 11:16:11 +02:00
= 7bb8602595 Merge remote-tracking branch 'CMS/develop' into develop 2020-09-07 10:32:55 +02:00
Samuele Locatelli 02b1b3b4c6 Merge branch 'feature/prodMgmt' into develop 2020-09-04 19:25:10 +02:00
Samuele Locatelli f499cdc203 new rel intermedia 71 2020-09-04 19:24:32 +02:00
Samuele Locatelli fa9db02e0e Aggiornamento gestione moduli x avere categorie + sub 2020-09-04 19:24:18 +02:00
Samuele Locatelli 136f3c40ff Update xml e validatore modBlock 2020-09-04 19:23:57 +02:00
= 0e02b0ca3f fixes 2020-09-04 17:14:15 +02:00
= 913834a34d Merge remote-tracking branch 'CMS/develop' into develop 2020-09-04 15:14:54 +02:00
= 6b0d5e2c03 fix generali e gestione produzione 2020-09-04 15:14:32 +02:00
Samuele Locatelli 3ead2b7283 Merge branch 'feature/prodMgmt' into develop 2020-09-04 11:52:21 +02:00
Samuele Locatelli 66ba44868e Update x nuova gest codici errore in core library 2020-09-04 11:46:30 +02:00
Samuele Locatelli 529266b57b Merge branch 'feature/prodMgmt' into develop 2020-09-04 10:45:54 +02:00
Samuele Locatelli e1280c193f eliminati commenti + aggiornamento readme, testato bounce ricetta 2020-09-04 10:45:41 +02:00
Samuele Locatelli 77cec0160a rimesso metodo x set AUTO + metodo x start prod full 2020-09-04 09:32:17 +02:00
Samuele Locatelli f7234dd34b new rel 2020-09-04 09:29:30 +02:00
Samuele Locatelli 4c7ad000db rimesso softkey x reset 2020-09-04 09:24:06 +02:00
Samuele Locatelli 140afc4539 Merge branch 'feature/prodMgmt' into develop 2020-09-03 17:56:52 +02:00
Samuele Locatelli 699ccfbfba Commentata gest cicli warmup come richiesto 2020-09-03 17:56:44 +02:00
Samuele Locatelli 3877cb7843 new rel 2020-09-03 12:04:11 +02:00
Samuele Locatelli 80e6192e46 Conf parameters per gestione scrittura recipe 2020-09-03 12:03:59 +02:00
Samuele Locatelli 2786c8e6a8 Merge branch 'develop' into feature/prodMgmt 2020-09-03 11:19:07 +02:00
Samuele Locatelli efbfd857f6 new rel 2020-09-03 11:18:55 +02:00
Samuele Locatelli 3968f72061 Gestione cicli riscaldo in WRITE sul PLC 2020-09-03 11:18:50 +02:00
Samuele Locatelli 88e78736f0 Merge branch 'feature/prodMgmt' into develop 2020-09-02 18:23:09 +02:00
Samuele Locatelli a362829256 Update gestione nuovo dato scrap (metodo x salvataggio...) 2020-09-02 18:21:11 +02:00
Samuele Locatelli 43abdd203b update note x migrations 2020-09-02 18:20:59 +02:00
Samuele Locatelli 74e51a4156 Update modello dati x SCRAP parts 2020-09-02 18:00:51 +02:00
Samuele Locatelli 52621f83e8 new sprint 2020-09-02 18:00:36 +02:00
= 9be02d4666 dashboard & toggle.. 2020-09-02 17:52:54 +02:00
Samuele Locatelli d16712bbd9 Merge branch 'bugfix/softkeys' into develop 2020-09-02 15:46:26 +02:00
Samuele Locatelli 8c96c46d35 typo eliminato calcolo superseeded 2020-09-02 15:46:08 +02:00
Samuele Locatelli 678312ceca Fiox display su prod panel 2020-09-02 15:44:59 +02:00
Samuele Locatelli 072b216eff Update ordinamento softkey by M.Carissoni 2020-09-02 15:44:52 +02:00
= 2f2fc02730 clock & dashboard 2020-09-02 15:44:10 +02:00
= cccd8f2c36 gantt printing 2020-09-02 15:15:41 +02:00
Samuele Locatelli 4e27d3fe63 rivisto eliminazione transports.log 2020-09-02 14:19:21 +02:00
Samuele Locatelli 8d57a29fd9 start new sprint 2020-09-02 14:17:55 +02:00
Samuele Locatelli c45c81dbf7 Merge branch 'bugfix/calcoloStatus' into develop 2020-09-02 14:05:57 +02:00
Samuele Locatelli 7417c20dcc Fix gestione (si spera) status overview 2020-09-02 13:26:16 +02:00
Samuele Locatelli a98500bade Aggiunta preliminare readme.md 2020-09-02 12:22:42 +02:00
Samuele Locatelli 154897e835 start new release 2020-09-02 11:47:46 +02:00
Samuele Locatelli 587f4b3e82 new vers numb 2020-09-02 11:41:03 +02:00
Samuele Locatelli 8714898228 Eliminato dati perturbati grafico prod 2020-09-02 11:40:21 +02:00
Samuele Locatelli 49ccfe10e7 Merge remote-tracking branch 'origin/develop' into develop 2020-09-02 11:32:14 +02:00
Samuele Locatelli 1168c826c1 Eliminazione transports.log 2020-09-02 11:31:51 +02:00
= 71a1333c12 gantt print 2020-09-01 16:52:24 +02:00
= 4c5f1e975f fix 2020-09-01 16:04:20 +02:00
= 4a5d0b9770 saveas notes 2020-09-01 16:03:31 +02:00
= 1e4dc168ac save notes 2020-09-01 15:34:22 +02:00
= d2fd9675fd header menu 2020-09-01 11:15:56 +02:00
= 9440a01ff7 numeric 2020-08-31 17:00:04 +02:00
= 968dab090d fix velocità di aggiornamento slider tramite tasti. 2020-08-31 16:10:39 +02:00
= b47975c7f6 conferma annulla 2020-08-31 10:58:12 +02:00
= cc9527fbad Merge remote-tracking branch 'CMS/develop' into develop 2020-08-31 10:30:17 +02:00
= 208b2122ac toggle disabled 2020-08-31 10:24:07 +02:00
Samuele E. Locatelli 4dde0de70a fix gestione forcing rilettura status overview 2020-08-31 10:15:02 +02:00
Samuele Locatelli d3f65680e9 Merge branch 'develop' into feature/recipe 2020-08-27 16:55:00 +02:00
Samuele Locatelli 4879979ae6 fix x core library + new rel 2020-08-27 16:54:38 +02:00
= a379fc96d3 kwh 2020-08-27 16:42:25 +02:00
Samuele Locatelli a1fd3ec363 update x calcolo modifiche ed errori su parametri SEMPRE calcolati 2020-08-27 15:39:39 +02:00
Samuele Locatelli 22b5b3453b Merge remote-tracking branch 'origin/develop' into develop 2020-08-27 15:31:01 +02:00
= 06d83de1df toggle-button visibility + enabled status 2020-08-26 11:18:12 +02:00
= 828701c865 fix layout riscaldi 2020-08-26 11:11:22 +02:00
= 5dc96371ce fix packages 2020-08-26 11:11:12 +02:00
= 3ce95c81dd babel upgrade 2020-08-26 11:05:58 +02:00
NICOLA CARMINATI 1f7d34327c Fix styled parts 2020-08-25 11:51:36 +02:00
Samuele Locatelli 8aadb503ec start new rel vers 2020-08-07 17:23:48 +02:00
Samuele Locatelli e7f221376f Merge remote-tracking branch 'origin/develop' into develop 2020-08-07 15:01:12 +02:00
Samuele Locatelli d4d26408ad Fix log recipe confirm error 2020-08-07 14:59:30 +02:00
= 3e6b9390da Merge remote-tracking branch 'CMS/develop' into develop 2020-08-07 12:21:55 +02:00
= a03fe6c7c7 softkey slider 2020-08-07 12:21:22 +02:00
= 90d3e33f2b fix save recipe 2020-08-07 12:02:26 +02:00
= 3388520048 riferimento traduzioni correnti 2020-08-07 11:57:52 +02:00
= b938239572 fix quote stampo 2020-08-07 10:24:40 +02:00
Samuele Locatelli 71fb94f59b check errori divers: debug(SIM) / release(PROD) 2020-07-29 19:31:40 +02:00
Samuele Locatelli b78cbfc38a FIx calcolo errori: SOLO parametri visibili... 2020-07-29 14:17:51 +02:00
Samuele Locatelli 3403836f7e Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into develop 2020-07-29 10:13:34 +02:00
Samuele Locatelli f0dc2333fb New release, fix strobe race condition 2020-07-29 10:13:00 +02:00
= 4fafa3a791 fix posizione toggle riscaldi superiori inferiori 2020-07-29 09:17:59 +02:00
Samuele Locatelli 3564f0cb72 Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into develop 2020-07-29 08:19:36 +02:00
NICOLA CARMINATI 6b1bf6f94b Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into develop 2020-07-28 17:36:23 +02:00
NICOLA CARMINATI d2f8c7f893 Fix disabled softkey 2020-07-28 17:34:01 +02:00
= 7f3ad3dbd9 Merge remote-tracking branch 'CMS/develop' into develop 2020-07-28 10:25:15 +02:00
= 01c42162d0 toggle & conferma disabilitato 2020-07-28 10:24:55 +02:00
= 8afcaf8f6f Merge remote-tracking branch 'CMS/develop' into develop 2020-07-28 10:09:24 +02:00
= 54573c76b1 toggle & combo 2020-07-28 09:41:58 +02:00
Samuele Locatelli 5900f2b9d9 new release 2020-07-28 09:08:18 +02:00
Samuele Locatelli 821b7accbd Fix calcolo IchMin x resistenze 2+ 2020-07-28 09:08:06 +02:00
Samuele Locatelli f6bc7e4ef4 Merge in new rel 2020-07-27 16:43:49 +02:00
Samuele Locatelli 0e35c3da9e Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into feature/recipe 2020-07-27 16:43:08 +02:00
Samuele Locatelli d48d6e7925 Correazione formula IchMin 2020-07-27 16:42:04 +02:00
NICOLA CARMINATI b91a18b434 Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into develop 2020-07-27 16:29:39 +02:00
NICOLA CARMINATI abaf3a4794 General fixes 2020-07-27 16:11:25 +02:00
Samuele Locatelli dbc2777bcd Merge branch 'develop' into feature/recipe 2020-07-27 14:33:06 +02:00
Samuele Locatelli 7ee0cdb5a6 new rel 2020-07-27 14:32:56 +02:00
Samuele Locatelli 69f1398d9a fix out usersoftkeys 2020-07-27 14:32:18 +02:00
Samuele Locatelli b707c4a2f5 Merge branch 'develop' into feature/recipe 2020-07-27 10:51:51 +02:00
Samuele Locatelli f741a39644 Added Operator Confirmation in starred softkey 2020-07-27 10:42:51 +02:00
Samuele Locatelli 6624c6b219 Start new rel con nuovo XML softkey 2020-07-27 08:22:11 +02:00
Samuele Locatelli 2819c901f1 new release 2020-07-24 11:18:05 +02:00
= 30ac1496e2 fix autorizzazioni e info di processo 2020-07-24 09:36:27 +02:00
= 2bbd500360 gantt animations 2020-07-23 19:16:39 +02:00
= d887dc7d48 Merge remote-tracking branch 'CMS/develop' into develop 2020-07-23 18:22:46 +02:00
= be669f66f1 revert login 2020-07-23 18:22:30 +02:00
Samuele Locatelli 5c96a2c9f1 Merge branch 'develop' into feature/recipe 2020-07-23 17:59:59 +02:00
Samuele Locatelli d4cc3a8877 new release 2020-07-23 17:59:46 +02:00
Samuele Locatelli d79d883224 Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into develop 2020-07-23 17:58:51 +02:00
= 2e646b0547 fix softkeys 2020-07-23 17:51:20 +02:00
Samuele Locatelli 578351fbcc update min rev 2020-07-23 17:43:39 +02:00
= a1b5bbb9ef posizione tastiera & windows buttons 2020-07-23 17:26:05 +02:00
= 88095c418b fix step slider e riscaldi 2020-07-23 17:03:34 +02:00
= 866ae7c089 gantt positioning 2020-07-23 16:33:07 +02:00
= 5166e8db62 Merge remote-tracking branch 'CMS/develop' into develop 2020-07-23 14:27:16 +02:00
= ededb27d80 .window-buttons + processinfo + gantt 2020-07-23 14:26:42 +02:00
= 7ff75037f7 dashboard e processo 2020-07-23 14:18:01 +02:00
Samuele Locatelli bd350e15e4 Merge branch 'feature/recipe' into develop 2020-07-23 12:12:17 +02:00
Samuele Locatelli 10d3e8e958 Added PPStatus + cleanup M155 & PP data 2020-07-23 12:12:05 +02:00
Samuele Locatelli fe5ea382b9 Acquired forced process status 2020-07-23 09:17:49 +02:00
Samuele Locatelli 7992723cba new release 2020-07-23 08:00:52 +02:00
Samuele Locatelli 5e22af4625 update labels 2020-07-23 07:50:23 +02:00
Samuele Locatelli 393768fe7c Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into develop 2020-07-22 19:04:48 +02:00
Samuele Locatelli 34edd6839e New Rel vers 2020-07-22 19:04:39 +02:00
= 0ef9a38073 manual/auto 2020-07-22 18:50:48 +02:00
= cb6271562b Merge remote-tracking branch 'CMS/develop' into develop 2020-07-22 18:33:26 +02:00
= 060a78964d fix starred softkeys 2020-07-22 18:32:51 +02:00
Samuele Locatelli 9159864ef2 Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into develop 2020-07-22 18:24:09 +02:00
NICOLA CARMINATI 4f863b71f0 Added file-info .RCP 2020-07-22 18:18:58 +02:00
= c0edbdbd2f fix paddle starred & dashboard 2020-07-22 18:07:44 +02:00
NICOLA CARMINATI b893a9f2e0 Fix delete cache-folder on startup 2020-07-22 16:53:09 +02:00
= 71f4192bba fix posizinone card riscaldi 2020-07-22 16:43:45 +02:00
Samuele Locatelli ffadf07aaf Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into feature/recipe 2020-07-22 14:11:20 +02:00
Samuele Locatelli 0648f53c94 Fix base address for iChMin 2020-07-22 14:10:34 +02:00
Samuele Locatelli d4e917cce2 Update install script 2020-07-22 13:18:55 +02:00
Samuele Locatelli 895914fd24 Added script for PROD deploy 2020-07-22 12:38:33 +02:00
Samuele Locatelli bc5fde0844 Fix labels & Fix conf userSoftKeys 2020-07-22 10:46:10 +02:00
= b9f82cb6f0 starred ? 2020-07-22 10:33:52 +02:00
= cc6ba8f0ef Merge remote-tracking branch 'CMS/develop' into develop 2020-07-22 09:39:34 +02:00
= 772aa06eb9 softkeys 2020-07-22 09:39:00 +02:00
Samuele Locatelli 2399cd0a9d Merge branch 'develop' into feature/recipe 2020-07-22 09:02:08 +02:00
Samuele Locatelli 35d0e05908 start new release cycle 2020-07-22 09:01:56 +02:00
Samuele Locatelli a057bb115e Merge branch 'develop' of https://bitbucket.org/ncarminati/cms_thermo_active into feature/recipe 2020-07-21 17:46:16 +02:00
Samuele Locatelli fa9a477a88 Fix decoding of softkey new data 2020-07-21 17:46:03 +02:00
Samuele Locatelli 0f23124a17 traduzione nuova label 2020-07-21 17:32:28 +02:00
Samuele Locatelli d2e728abf5 Modifica XML/XSD per gesiotne NUOVA info softkeys 2020-07-21 17:32:17 +02:00
= ecf740044d Merge remote-tracking branch 'CMS/develop' into develop 2020-07-21 16:46:25 +02:00
Samuele Locatelli 0341d98a95 Start new vers 2020-07-21 16:20:58 +02:00
= a88560e0c1 fix inversione quote 2020-07-21 14:33:55 +02:00
= 30a104854c fix inversione quote 2020-07-21 14:30:53 +02:00
255 changed files with 14596 additions and 8751 deletions
+2 -2
View File
@@ -4,7 +4,7 @@
<IsSCM>false</IsSCM>
<TranspColor>#FF00FF</TranspColor>
<RenderingMethod>GPU</RenderingMethod> <!-- GPU/CPU -->
<ShowVirtualKeyboard>false</ShowVirtualKeyboard>
<ShowVirtualKeyboard>true</ShowVirtualKeyboard>
<RunningOnSecondaryScreen>false</RunningOnSecondaryScreen>
<DeveloperMode>true</DeveloperMode>
</Client>
@@ -15,6 +15,6 @@
<DeleteCahceFolderOnStartup>false</DeleteCahceFolderOnStartup>
</Connection>
<VendorHmi>
<FollowNcWindow>True</FollowNcWindow>
<FollowNcWindow>false</FollowNcWindow>
</VendorHmi>
</Config>
+196 -60
View File
@@ -36,14 +36,16 @@ namespace Active_Client.Browser_Tools
private MainForm mainForm;
private static readonly string[] _validExtensions = { "", ".json", ".rcp", ".tpl" };
private static readonly string[] _validExtensions = {".json", ".rcp", ".tpl" };
//private static readonly string[] _validExtensions = { "", ".txt", ".cnc", ".cn", ".cno", ".ini", ".mpf", ".spf", ".tap", ".anc", ".iso" };
private static readonly string[] _validImages = { ".jpg", ".jpeg", ".png" };
private static readonly string[] _validImages = { ".svg" };
private static string jobPath = "";
private static Dictionary<string, IntPtr> _editorOpened = new Dictionary<string, IntPtr>();
private static EditorVar _currentEditorObject = new EditorVar();
public static string RECENT_FOLDER_KEY = "RECENT";
public static string RECENT_FOLDER_KEY = "RECENT";
private const string THERMO_RECIPE_PATH = @"C:\CMS\Recipes";
private const string CMS_PATH = @"C:\CMS";
public static FileSystemWatcher watcher = null;
public static DateTime _lastTimeFileWatcherEventRaised = DateTime.Now;
@@ -76,9 +78,16 @@ namespace Active_Client.Browser_Tools
AddFunction("openOrStartProcess").Execute += openOrStartProcess;
AddFunction("isVirtualKeybConfigured").Execute += isVirtualKeybConfigured;
AddFunction("getOSdriveList").Execute += getOSdriveList;
AddFunction("getAllRecipeDirectories").Execute += getAllRecipeDirectories;
AddFunction("getFileList").Execute += getFileList;
AddFunction("getProgramInfo").Execute += getProgramInfo;
AddFunction("editProgram").Execute += editProgram;
AddFunction("deleteFile").Execute += deleteFile;
AddFunction("deleteFolder").Execute += deleteFolder;
AddFunction("createFolder").Execute += createFolder;
AddFunction("duplicateRecipe").Execute += duplicateRecipe;
AddFunction("uploadAndActivateProgram").Execute += uploadAndActivateProgram;
AddFunction("uploadAndAddToQueue").Execute += uploadAndAddToQueue;
@@ -358,72 +367,83 @@ namespace Active_Client.Browser_Tools
{
List<Drive> drivelist = new List<Drive>();
// USB & HD Drives
foreach (var drive in DriveInfo.GetDrives())
if (Directory.Exists(THERMO_RECIPE_PATH))
{
if (drive.IsReady)
drivelist.Add(new Drive()
{
//Filter NC Address
if (drive.DriveType != DriveType.Network)
{
drivelist.Add(new Drive()
{
Name = ElaborateName(drive.VolumeLabel, drive.Name.TrimEnd('\\'), drive.DriveType),
Path = drive.RootDirectory.ToString(),
Type = ElaborateType(drive.DriveType)
});
}
}
}
// Desktop folder
drivelist.Add(new Drive()
{
Name = ElaborateName("Desktop", "", DriveType.Unknown),
Path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\",
Type = "SPFO"
});
try
{
// Network Folders
var searcher = new ManagementObjectSearcher("select * from Win32_MappedLogicalDisk");
foreach (ManagementObject queryObj in searcher.Get())
{
//Filter not CNC folder
if (!queryObj["ProviderName"].ToString().Contains(Config.VendorHmiConfig.IpAddress))
{
drivelist.Add(new Drive()
{
Name = ElaborateName(queryObj["VolumeName"].ToString(), queryObj["Name"].ToString(), DriveType.Network),
Path = queryObj["Name"].ToString(),
Type = ElaborateType(DriveType.Network)
});
}
}
}
catch (Exception ex)
{
Name = ElaborateName("Recipes", "", DriveType.Unknown),
Path = THERMO_RECIPE_PATH + "\\",
Type = "SPFO"
});
}
e.SetReturnValue(JsonConvert.SerializeObject(drivelist));
}
public void getAllRecipeDirectories(object sender, CfrV8HandlerExecuteEventArgs e)
{
List<string> dirs = this.DirSearch(THERMO_RECIPE_PATH);
for (int i = 0; i< dirs.Count; i++)
{
dirs[i] = dirs[i].Remove(0,CMS_PATH.Length +1);
}
e.SetReturnValue(JsonConvert.SerializeObject(dirs));
}
public void duplicateRecipe(object sender, CfrV8HandlerExecuteEventArgs e)
{
if (e.Arguments.Count() < 2)
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
return;
}
string oldFile = CMS_PATH + "\\" + e.Arguments[0].StringValue + ".rcp";
string newFile = CMS_PATH + "\\" + e.Arguments[1].StringValue + ".rcp";
string oldImage = CMS_PATH + "\\" + e.Arguments[0].StringValue + ".svg";
string newImage = CMS_PATH + "\\" + e.Arguments[1].StringValue + ".svg";
if (!File.Exists(oldFile))
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_not_found")));
return;
}
if (File.Exists(newFile))
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_already_exists")));
return;
}
try
{
File.Copy(oldFile, newFile, true);
if (File.Exists(oldImage))
{
File.Copy(oldImage, newImage, true);
}
}
catch (Exception ex)
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("cannot_copy_file")));
}
}
// Read all files in directory
public void getFileList(object sender, CfrV8HandlerExecuteEventArgs e)
{
List<FileModel> filelist = new List<FileModel>();
if (e.Arguments.Count() == 0)
{
e.SetReturnValue(JsonConvert.SerializeObject(new List<FileModel>()));
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
return;
}
string p = e.Arguments[0].StringValue;
if (p != RECENT_FOLDER_KEY && !Directory.Exists(p))
{
e.SetReturnValue(JsonConvert.SerializeObject(new List<FileModel>()));
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_not_exists")));
return;
}
@@ -474,6 +494,90 @@ namespace Active_Client.Browser_Tools
e.SetReturnValue(JsonConvert.SerializeObject(filelist));
}
public void deleteFile(object sender, CfrV8HandlerExecuteEventArgs e)
{
if (e.Arguments.Count() == 0)
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
return;
}
// Get path
string p = e.Arguments[0].StringValue;
FileAttributes attr = File.GetAttributes(p);
if (!File.Exists(p) || attr.HasFlag(FileAttributes.Directory))
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_not_found")));
return;
}
if (attr.HasFlag(FileAttributes.ReadOnly))
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("file_not_editable")));
return;
}
try
{
File.Delete(p);
string images = Path.ChangeExtension(p, "svg");
if(File.Exists(images))
{
File.Delete(images);
}
}
catch(Exception ex)
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("cannot_delete_file")));
}
}
public void deleteFolder(object sender, CfrV8HandlerExecuteEventArgs e)
{
if (e.Arguments.Count() == 0)
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
return;
}
// Get path
string p = e.Arguments[0].StringValue;
FileAttributes attr = File.GetAttributes(p);
if (!Directory.Exists(p) || !attr.HasFlag(FileAttributes.Directory))
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("directory_not_found")));
return;
}
if (attr.HasFlag(FileAttributes.ReadOnly))
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("directory_not_editable")));
return;
}
try
{
Directory.Delete(p,true);
}
catch (Exception ex)
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("cannot_delete_directory")));
}
}
public void createFolder(object sender, CfrV8HandlerExecuteEventArgs e)
{
if (e.Arguments.Count() == 0)
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("error_arguments_not_ok")));
return;
}
string path = e.Arguments[0].StringValue;
try
{
Directory.CreateDirectory(path);
}
catch (Exception ex)
{
e.SetReturnValue(JsonConvert.SerializeObject(new ErrorContainer("cannot_delete_directory")));
}
}
// Upload and activate the program
public async void uploadAndActivateProgram(object sender, CfrV8HandlerExecuteEventArgs e)
{
@@ -660,8 +764,7 @@ namespace Active_Client.Browser_Tools
// Read info of a file
public void getProgramInfo(object sender, CfrV8HandlerExecuteEventArgs e)
{
string line, imagePath, imageDirectory;
int counter = 0;
string imagePath, imageDirectory;
if (e.Arguments.Count() == 0)
{
@@ -689,22 +792,35 @@ namespace Active_Client.Browser_Tools
imagePath = Path.GetFileNameWithoutExtension(p);
imageDirectory = Path.GetDirectoryName(p);
file.Content = new List<string>();
file.SheetX = "";
file.SheetY = "";
file.SheetZ = "";
file.Annotation = "";
try
{
StreamReader fileRead = new StreamReader(p);
while ((line = fileRead.ReadLine()) != null && counter < 10)
dynamic content = JsonConvert.DeserializeObject(File.ReadAllText(p));
if(content != null && content.RecipeParameters != null)
{
file.Content.Add(line);
counter++;
if(content.RecipeParameters.general_sizes_sheet_dim_x != null)
file.SheetX = content.RecipeParameters.general_sizes_sheet_dim_x;
if (content.RecipeParameters.general_sizes_sheet_dim_y != null)
file.SheetY = content.RecipeParameters.general_sizes_sheet_dim_y;
if (content.RecipeParameters.general_sizes_sheet_thickness != null)
file.SheetZ = content.RecipeParameters.general_sizes_sheet_thickness;
if (content.recipeNotes != null)
file.Annotation = content.recipeNotes;
}
fileRead.Close();
foreach (string ext in _validImages)
{
if (File.Exists(imageDirectory + "/" + imagePath + ext))
{
file.PreviewBase64 = "data:image/" + ext + ";base64," + Convert.ToBase64String(File.ReadAllBytes(imageDirectory + "/" + imagePath + ext));
if (ext.ToLower().Equals(".svg"))
file.PreviewBase64 = File.ReadAllText(imageDirectory + "/" + imagePath + ext);
else
file.PreviewBase64 = "data:image/" + ext + ";base64," + Convert.ToBase64String(File.ReadAllBytes(imageDirectory + "/" + imagePath + ext));
break;
}
}
@@ -955,6 +1071,26 @@ namespace Active_Client.Browser_Tools
return retName;
}
private List<String> DirSearch(string sDir)
{
List<String> files = new List<String>();
try
{
files.Add(sDir);
foreach (string d in Directory.GetDirectories(sDir))
{
files.AddRange(DirSearch(d));
}
}
catch (System.Exception excpt)
{
MessageBox.Show(excpt.Message);
}
return files;
}
#endregion FILESYSTEM_METHODS
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+5 -1
View File
@@ -9,7 +9,11 @@ namespace Active_Client.Browser_Tools.Models
public String AbsolutePath;
public DateTime CreationDate;
public DateTime LastModDate;
public List<String> Content;
public String SheetX;
public String SheetY;
public String SheetZ;
public String Annotation;
public Boolean CanEdit;
public string PreviewBase64;
}
+17 -4
View File
@@ -11,6 +11,7 @@ using System.Globalization;
using System.IO;
using System.Linq;
using System.Management;
using System.Security.Permissions;
using System.Threading;
using System.Windows.Forms;
@@ -25,14 +26,13 @@ namespace Active_Client
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#region MAIN_METHOD
[STAThread]
[STAThread]
[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)]
static void Main(string[] args)
{
//Crate General Exception Handler
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(GeneralExMethod);
//Crate General Exception Handler
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(GeneralExMethod);
//Read App Configuration
readConfiguration();
@@ -179,6 +179,19 @@ namespace Active_Client
//Method called Before Cef Initialization
static void Chromium_OnBeforeCfxInitialize(OnBeforeCfxInitializeEventArgs e)
{
try
{
if (Config.ConnectionConfig.DeleteCahceFolderOnStartup && Directory.Exists(Constants.BROWSER_CACHE_FOLDER))
{
Directory.Delete(Constants.BROWSER_CACHE_FOLDER, true);
}
}
catch (Exception E)
{
ShowAlarmAndClose(E.Message);
}
e.Settings.WindowlessRenderingEnabled = true;
//Path Setup
+3 -3
View File
@@ -165,7 +165,7 @@ namespace Active_Client.View
public void sendClose()
{
//Close Virtual Keyboard Runtime
if (Config.ClientConfig.ShowVirtualKeyboard && Environment.OSVersion.Version.Major < 10)
if (Config.ClientConfig.ShowVirtualKeyboard)
NcWindow.closeVirtualKeyboard();
//Close the NC HMI && Stop Following Nc
@@ -259,7 +259,7 @@ namespace Active_Client.View
Browser.DisplayHandler.OnConsoleMessage += BrowserConsoleMessage;
Browser.DownloadHandler.OnBeforeDownload += BeforeDownload;
//Filter only < Win_10 Platform
if (Config.ClientConfig.ShowVirtualKeyboard && Environment.OSVersion.Version.Major < 10)
if (Config.ClientConfig.ShowVirtualKeyboard)
ChromiumWebBrowser.RemoteProcessCreated += (e) => { e.RenderProcessHandler.OnFocusedNodeChanged += BrowserNodeChanged; };
}
@@ -434,7 +434,7 @@ namespace Active_Client.View
string dom = ev.Node.GetElementAttribute("type").ToLower();
//Filter if the node Type is TEXT or PASSWORD
if (dom != null && (dom.Equals("text") || dom.Equals("password")))
if (dom != null && (dom.Equals("text") || dom.Equals("password") || dom.Equals("")))
NcWindow.openVirtualKeyboard(ev.Node.ElementBounds, ev.Browser.Identifier > 1, false);
}
//Filter if this node is TEXTAREA Node
+2 -2
View File
@@ -1047,7 +1047,7 @@ namespace Active_Client.View
if (!IsIconic(MainViewHandle))
{
//Show Virtual keyboard
if (Config.ClientConfig.ShowVirtualKeyboard && Environment.OSVersion.Version.Major < 10)
if (Config.ClientConfig.ShowVirtualKeyboard)
reOpenVirtualKeyboard();
}
}
@@ -1069,7 +1069,7 @@ namespace Active_Client.View
//SetForegroundWindow(hwnd);
//Hide Virtual keyboard
if (Config.ClientConfig.ShowVirtualKeyboard && Environment.OSVersion.Version.Major < 10 && KeyboardPID != 0 && ActualPID != KeyboardPID)
if (Config.ClientConfig.ShowVirtualKeyboard && KeyboardPID != 0 && ActualPID != KeyboardPID)
closeVirtualKeyboard();
}
+1 -30
View File
@@ -40,12 +40,7 @@ namespace Active_Client.View
LogoCMS.Visible = true;
LogoSCM.Visible = false;
}
//Setup The Browser
if (!SetupBrowser())
return;
//Set window Position
this.Location = new Point((Screen.PrimaryScreen.Bounds.Width / 2) - (this.Width / 2), (Screen.PrimaryScreen.Bounds.Height / 2) - (this.Height / 2));
}
@@ -164,30 +159,6 @@ namespace Active_Client.View
}
//Sub-Method used to SetupThe Browser Environment
private bool SetupBrowser()
{
//Delete Browser Cache
try
{
if (Config.ConnectionConfig.DeleteCahceFolderOnStartup && Directory.Exists(Constants.BROWSER_CACHE_FOLDER))
{
setStatus("Deleting Browser Chache Folder...", "");
Directory.Delete(Constants.BROWSER_CACHE_FOLDER, true);
}
}
catch (Exception E)
{
setStatus("Close the application!", E.Message);
return false;
}
return true;
}
//Sub-Method used to test the connection
private bool testConnection(Uri url, out Boolean error)
{
BIN
View File
Binary file not shown.
+29
View File
@@ -0,0 +1,29 @@
# Progetto Thermo.Active CMS
## Struttura Progetto
## Ambiente sviluppo e simulazione
## Procedura udpate DB
In caso di update del modello DB, seguendo questa guida (https://www.entityframeworktutorial.net/efcore/entity-framework-core-migration.aspx#:~:text=Adding%20a%20Migration,-At%20the%20very&text=So%2C%20firstly%2C%20you%20need%20to,command%20to%20add%20a%20migration.&text=If%20you%20are%20using%20dotnet,Interface%2C%20execute%20the%20following%20command.)
* si modifica lato classe il modello
* si apre il PM Nuget,s elezionando il progetto DB (che contiene le migrations)
* si da il comando di migrazione con un testo descrittivo, tipo
add-migration MyFirstMigration
* si può poi aggiornare il DB manualmente (o all'avvio del sw) con il comando
Update-Database
## Procedura Riavvio su SIM
Step come indicati da M.Carissoni:
* mettere macchina in MANUAL
* Dai un paio di ResetSK (prima softkey! oppure sul pannello siemens)
* fai cicloReset (softkey)
* parcheggio macchina da GANT (fino a che si spegne)
* quando si spegne ciclo reset auto
* Inizia a lampeggiare start e lo clicchi e parte
* Quando si spegne cicloReset fai cicloAuto
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="inputsOperator">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="realValueModal" type="valuesType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="showValModal" type="showValType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="buttonsListModal" type="buttonsType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="simpleModal" type="modalType" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:complexType name="valuesType">
<xs:all>
<xs:element name="id" minOccurs='1' maxOccurs='1'/>
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
</xs:all>
</xs:complexType>
<xs:complexType name="showValType">
<xs:all>
<xs:element name="id" minOccurs='1' maxOccurs='1'/>
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
<xs:element name="buttons">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="button">
<xs:complexType>
<xs:all>
<xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:int"></xs:element>
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="buttonsType">
<xs:all>
<xs:element name="id" minOccurs='1' maxOccurs='1'/>
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
<xs:element name="buttons">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="button">
<xs:complexType>
<xs:all>
<xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:int"></xs:element>
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="modalType">
<xs:all>
<xs:element name="id" minOccurs='1' maxOccurs='1'/>
<xs:element name="title" type="translatedText" minOccurs='1' maxOccurs='1'/>
</xs:all>
</xs:complexType>
<!-- Translations field Type -->
<xs:complexType name="translatedText">
<xs:sequence>
<xs:element name="lang" type="langType" minOccurs="0" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- lang field -->
<xs:complexType name="langType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="langKey" use="required" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
@@ -552,17 +552,17 @@
"233": 0
},
"RecipeOverview": {
"General": "HasError",
"Positions": "HasError",
"Cycle": "ChangedOk",
"Heats": "ChangedOk",
"Pyrometer": "ChangedOk",
"Drawing": "ChangedOk",
"UpperPlate": "ChangedOk",
"Cooling": "HasError",
"Vacuum": "ChangedOk",
"Extraction": "ChangedOk",
"Options": "HasError"
"General": "Unchanged",
"Positions": "Unchanged",
"Cycle": "Unchanged",
"Heats": "Unchanged",
"Pyrometer": "Unchanged",
"Drawing": "Unchanged",
"UpperPlate": "Unchanged",
"Cooling": "Unchanged",
"Vacuum": "Unchanged",
"Extraction": "Unchanged",
"Options": "Unchanged"
},
"TC_last": 2532.940840175
}
+34 -24
View File
@@ -1,27 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<axes>
<axis id="1" >X</axis>
<axis id="2" >Y</axis>
<axis id="3" >Z</axis>
<axis id="4" >B</axis>
<axis id="5" >C</axis>
<axis id="6" >V</axis>
<axis id="7" ></axis>
<axis id="8" ></axis>
<axis id="9" ></axis>
<axis id="10" ></axis>
<axis id="11" ></axis>
<axis id="12" ></axis>
<axis id="13" ></axis>
<axis id="14" ></axis>
<axis id="15" ></axis>
<axis id="16" ></axis>
<axis id="17" >SP</axis>
<axis id="18" ></axis>
<axis id="19" ></axis>
<axis id="20" ></axis>
<axis id="21" ></axis>
<axis id="22" ></axis>
<axis id="23" ></axis>
<axis id="24" ></axis>
<axis id="1" name="KI_Asse_W1" type="LINEAR" enabled="true" />
<axis id="2" name="KI_Asse_W2" type="LINEAR" enabled="true" />
<axis id="3" name="KI_Asse_W3" type="LINEAR" enabled="false" />
<axis id="4" name="KI_Asse_W4" type="LINEAR" enabled="false" />
<axis id="5" name="KI_Asse_Z1" type="LINEAR" enabled="true" />
<axis id="6" name="KI_Asse_Z2" type="LINEAR" enabled="true" />
<axis id="7" name="KI_Asse_Z3" type="LINEAR" enabled="true" />
<axis id="8" name="KI_Asse_Z4" type="LINEAR" enabled="true" />
<axis id="9" name="KI_Asse_R1" type="LINEAR" enabled="true" />
<axis id="10" name="KI_Asse_R2" type="LINEAR" enabled="false" />
<axis id="11" name="KI_Asse_S1" type="LINEAR" enabled="true" />
<axis id="12" name="KI_Asse_S2" type="LINEAR" enabled="false" />
<axis id="13" name="KI_Asse_CZ1" type="LINEAR" enabled="true" />
<axis id="14" name="KI_Asse_CZ2" type="LINEAR" enabled="true" />
<axis id="15" name="KI_Asse_CZ3" type="LINEAR" enabled="true" />
<axis id="16" name="KI_Asse_CZ4" type="LINEAR" enabled="true" />
<axis id="17" name="KI_Asse_U1" type="LINEAR" enabled="true" />
<axis id="18" name="KI_Asse_U2" type="LINEAR" enabled="true" />
<axis id="19" name="KI_Asse_P" type="LINEAR" enabled="true" />
<axis id="20" name="KI_Asse_X" type="LINEAR" enabled="true" />
<axis id="21" name="KI_Asse_CX1" type="LINEAR" enabled="true" />
<axis id="22" name="KI_Asse_CX2" type="LINEAR" enabled="true" />
<axis id="23" name="KI_Asse_CY1" type="LINEAR" enabled="true" />
<axis id="24" name="KI_Asse_CY2" type="LINEAR" enabled="true" />
<axis id="25" name="KI_Asse_F11" type="LINEAR" enabled="true" />
<axis id="26" name="KI_Asse_F12" type="LINEAR" enabled="false" />
<axis id="27" name="KI_Asse_F21" type="LINEAR" enabled="true" />
<axis id="28" name="KI_Asse_F22" type="LINEAR" enabled="false" />
<axis id="29" name="KI_Asse_F31" type="LINEAR" enabled="true" />
<axis id="30" name="KI_Asse_F32" type="LINEAR" enabled="false" />
<axis id="31" name="KI_Asse_F41" type="LINEAR" enabled="true" />
<axis id="32" name="KI_Asse_F42" type="LINEAR" enabled="false" />
<axis id="33" name="KI_Asse_E" type="LINEAR" enabled="true" />
<axis id="34" name="KI_Asse_M" type="LINEAR" enabled="false" />
</axes>
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="axes">
<xs:complexType>
<xs:sequence>
<xs:element name="axis" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="axisType"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="axisType">
<xs:attribute name="id" type="xs:integer" use="required">
</xs:attribute>
<xs:attribute name="name" type="xs:string" use="required">
</xs:attribute>
<xs:attribute name="type" type="axType" use="required">
</xs:attribute>
<xs:attribute name="enabled" type="xs:boolean" use="required">
</xs:attribute>
</xs:complexType>
<xs:simpleType name="axType" final="restriction" >
<xs:restriction base="xs:string">
<xs:enumeration value="NA" />
<xs:enumeration value="LINEAR" />
<xs:enumeration value="ROTATIONAL" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<inputsOperator>
<buttonsListModal>
<id>1</id>
<title>
<lang langKey="it">Hai rimosso manualmente anche il pezzo lavorato ?</lang>
<lang langKey="en">Have you also manually removed the workpiece ?</lang>
</title>
<buttons>
<button>
<value>0</value>
<title>
<lang langKey="it">No</lang>
<lang langKey="en">No</lang>
</title>
</button>
<button>
<value>1</value>
<title>
<lang langKey="it">Si</lang>
<lang langKey="en">Yes</lang>
</title>
</button>
</buttons>
</buttonsListModal>
<simpleModal>
<id>2</id>
<title>
<lang langKey="it">DUE Hai rimosso manualmente anche il pezzo lavorato ?</lang>
<lang langKey="en">DUE Have you also manually removed the workpiece ?</lang>
</title>
</simpleModal>
<realValueModal>
<id>10</id>
<title>
<lang langKey="en">External water</lang>
<lang langKey="it">Acqua esterna</lang>
</title>
</realValueModal>
<realValueModal>
<id>11</id>
<title>
<lang langKey="en">External water</lang>
<lang langKey="it">Acqua esterna</lang>
</title>
</realValueModal>
<buttonsListModal>
<id>6</id>
<title>
<lang langKey="en">External water</lang>
<lang langKey="it">Acqua esterna</lang>
</title>
<buttons>
<button>
<value>3</value>
<title>
<lang langKey="en">External water</lang>
<lang langKey="it">Acqua esterna</lang>
</title>
</button>
<button>
<value>4</value>
<title>
<lang langKey="en">External water</lang>
<lang langKey="it">Acqua esterna</lang>
</title>
</button>
</buttons>
</buttonsListModal>
</inputsOperator>
@@ -71,6 +71,9 @@
<idParam>80</idParam>
<showDelay>true</showDelay>
<priority>3</priority>
<category>Pyrometer</category>
<subCategory_1>Pyrometer</subCategory_1>
<subCategory_2></subCategory_2>
</block>
<block>
<id>9</id>
@@ -116,6 +119,9 @@
<idParam>99</idParam>
<showDelay>true</showDelay>
<priority>2</priority>
<category>Drawing</category>
<subCategory_1></subCategory_1>
<subCategory_2></subCategory_2>
</block>
<block>
<id>14</id>
@@ -152,6 +158,9 @@
<idParam>139</idParam>
<showDelay>true</showDelay>
<priority>4</priority>
<category>Cooling</category>
<subCategory_1>Pyrometer</subCategory_1>
<subCategory_2></subCategory_2>
</block>
<block>
<id>19</id>
@@ -16,6 +16,9 @@
<xs:element name="priority" type="xs:int" />
<xs:element name="scaleFactor" type="xs:int" minOccurs="0" />
<xs:element name="numDec" type="xs:int" minOccurs="0" />
<xs:element name="category" type="param_type" minOccurs="0" />
<xs:element name="subCategory_1" type="xs:string" minOccurs="0" />
<xs:element name="subCategory_2" type="xs:string" minOccurs="0" />
</xs:all>
</xs:complexType>
</xs:element>
@@ -23,6 +26,23 @@
</xs:complexType>
</xs:element>
<!-- Head Type -->
<xs:simpleType name="param_type" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="General" />
<xs:enumeration value="Positions" />
<xs:enumeration value="Cycle"/>
<xs:enumeration value="Heats"/>
<xs:enumeration value="Pyrometer"/>
<xs:enumeration value="Drawing"/>
<xs:enumeration value="UpperPlate"/>
<xs:enumeration value="Cooling"/>
<xs:enumeration value="Vacuum"/>
<xs:enumeration value="Extraction"/>
<xs:enumeration value="Options"/>
</xs:restriction>
</xs:simpleType>
<!-- Language Type -->
<xs:complexType name="langType">
<xs:simpleContent>
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="recipe">
<!-- Heads -->
<xs:complexType>
<xs:sequence>
<!-- Heads -->
<xs:element name="parameter" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
+122 -60
View File
@@ -1,64 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<serverConfig>
<ncConfig>
<ncVendor>S7NET</ncVendor> <!-- NO_NC/DEMO/FANUC/SIEMENS/OSAI/S7NET -->
<showNcHMI>false</showNcHMI>
<ncIpAddress>192.168.0.102</ncIpAddress>
<ncPort>102</ncPort>
<machineModel>Thermo 2020</machineModel>
<sharedPath>C:\PartPrg\</sharedPath>
<sharedName>//PARTPRG:/</sharedName>
<installationDate>01/06/2020</installationDate>
<mgiOption>false</mgiOption>
<siemensKeyboardOption>false</siemensKeyboardOption>
<machineNumberHasLetters>false</machineNumberHasLetters>
</ncConfig>
<softwareProdConfig>
<enabled>false</enabled>
<path>C:\Program Files\Notepad++\notepad++.exe</path>
</softwareProdConfig>
<serverConfig>
<serverPort>9000</serverPort>
<serverAddress>*</serverAddress>
<language>en</language>
<enableDirectoryBrowsing>true</enableDirectoryBrowsing>
<databaseAddress>localhost</databaseAddress>
<autoOpenCmsClient>false</autoOpenCmsClient>
<textEditorPath>C:\Windows\System32\notepad.exe</textEditorPath>
<MTCFolderPath>C:\CMS\MTC\ADAPTER\</MTCFolderPath>
<MTCApplicationName>SCMA</MTCApplicationName>
<CMSConnectReady>false</CMSConnectReady>
<maxAlarmsRows>50000</maxAlarmsRows>
<alarmToDelete>5000</alarmToDelete>
</serverConfig>
<extSoftwares>
<software>
<longName>Calculator</longName>
<shortName>CAL</shortName>
<path>C:\Windows\System32\calc.exe</path>
<arguments></arguments>
<inMainMenuBar>true</inMainMenuBar>
</software>
<software>
<longName>NotePad</longName>
<shortName>NP</shortName>
<path>C:\Windows\System32\notepad.exe</path>
<arguments></arguments>
<inMainMenuBar>true</inMainMenuBar>
</software>
<software>
<longName>MsPaint</longName>
<shortName>PA</shortName>
<path>C:\Windows\System32\mspaint.exe</path>
<arguments></arguments>
<inMainMenuBar>false</inMainMenuBar>
</software>
<software>
<longName>NotePad2</longName>
<shortName>NP2</shortName>
<path>C:\Windows\System32\notepad.exe</path>
<arguments></arguments>
<inMainMenuBar>false</inMainMenuBar>
</software>
<ncConfig>
<ncVendor>S7NET</ncVendor>
<!-- NO_NC/DEMO/FANUC/SIEMENS/OSAI/S7NET -->
<showNcHMI>false</showNcHMI>
<ncIpAddress>192.168.0.102</ncIpAddress>
<ncPort>102</ncPort>
<machineModel>Thermo 2020</machineModel>
<sharedPath>C:\CMS\Recipes\</sharedPath>
<sharedName>//PARTPRG:/</sharedName>
<installationDate>01/06/2020</installationDate>
<mgiOption>false</mgiOption>
<siemensKeyboardOption>false</siemensKeyboardOption>
<machineNumberHasLetters>false</machineNumberHasLetters>
</ncConfig>
<softwareProdConfig>
<enabled>false</enabled>
<path>C:\Program Files\Notepad++\notepad++.exe</path>
</softwareProdConfig>
<serverConfig>
<serverPort>9000</serverPort>
<serverAddress>*</serverAddress>
<language>en</language>
<enableDirectoryBrowsing>true</enableDirectoryBrowsing>
<databaseAddress>localhost</databaseAddress>
<autoOpenCmsClient>false</autoOpenCmsClient>
<textEditorPath>C:\Windows\System32\notepad.exe</textEditorPath>
<MTCFolderPath>C:\CMS\MTC\ADAPTER\</MTCFolderPath>
<MTCApplicationName>SCMA</MTCApplicationName>
<CMSConnectReady>false</CMSConnectReady>
<maxAlarmsRows>50000</maxAlarmsRows>
<alarmToDelete>5000</alarmToDelete>
</serverConfig>
<extSoftwares>
<software>
<longName>Calculator</longName>
<shortName>CAL</shortName>
<path>C:\Windows\System32\calc.exe</path>
<arguments></arguments>
<inMainMenuBar>true</inMainMenuBar>
</software>
<software>
<longName>NotePad</longName>
<shortName>NP</shortName>
<path>C:\Windows\System32\notepad.exe</path>
<arguments></arguments>
<inMainMenuBar>true</inMainMenuBar>
</software>
<software>
<longName>MsPaint</longName>
<shortName>PA</shortName>
<path>C:\Windows\System32\mspaint.exe</path>
<arguments></arguments>
<inMainMenuBar>false</inMainMenuBar>
</software>
<software>
<longName>NotePad2</longName>
<shortName>NP2</shortName>
<path>C:\Windows\System32\notepad.exe</path>
<arguments></arguments>
<inMainMenuBar>false</inMainMenuBar>
</software>
</extSoftwares>
<additionalParameters>
<entry>
<key>warmerPlanSizeX</key>
<value>1500</value>
</entry>
<entry>
<key>warmerPlanSizeY</key>
<value>1200</value>
</entry>
<entry>
<key>resistSizeX</key>
<value>250</value>
</entry>
<entry>
<key>resistSizeY</key>
<value>60</value>
</entry>
<entry>
<key>warmerAutocompStartValue</key>
<value>30</value>
</entry>
<entry>
<key>warmerAutocompStep</key>
<value>5</value>
</entry>
</additionalParameters>
<unitOfMeasures>
<unitOfMeasure id="0" value="" />
<unitOfMeasure id="1" value="%" />
<unitOfMeasure id="2" value="mm" />
<unitOfMeasure id="3" value="°C" />
<unitOfMeasure id="4" value="Nm" />
<unitOfMeasure id="5" value="Bar" />
<unitOfMeasure id="6" value="mm/s" />
<unitOfMeasure id="7" value="mm/10" />
<unitOfMeasure id="8" value="Bar/10" />
<unitOfMeasure id="9" value="°C/10" />
<unitOfMeasure id="10" value="Nm/10" />
</unitOfMeasures>
<sampling>
<thread name="alarms" value="200" />
<thread name="axis" value="200" />
<thread name="area" value="500" />
<thread name="confReq" value="2000" />
<thread name="expMan" value="30000" />
<thread name="functionEnab" value="300" />
<thread name="gauges" value="500" />
<thread name="m154" value="500" />
<thread name="mCommands" value="250" />
<thread name="powerOn" value="500" />
<thread name="prodCycle" value="1000" />
<thread name="prodInfo" value="1000" />
<thread name="prodPanel" value="1000" />
<thread name="modules" value="200" />
<thread name="recipe" value="400" />
<thread name="scada" value="1000" />
<thread name="statusCommand" value="250" />
<thread name="userSK" value="250" />
<thread name="warmers" value="1500" />
<thread name="watchdog" value="250" />
</sampling>
</serverConfig>
@@ -63,10 +63,61 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="additionalParameters" >
<xs:complexType>
<xs:sequence>
<xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name="key" type="xs:string" />
<xs:element name="value" type="xs:string" />
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="unitOfMeasures">
<xs:complexType>
<xs:sequence>
<xs:element name="unitOfMeasure" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="umType"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sampling" >
<xs:complexType>
<xs:sequence>
<xs:element name="thread" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="sampleType"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<xs:complexType name="umType">
<xs:attribute name="id" type="xs:integer" use="required">
</xs:attribute>
<xs:attribute name="value" type="xs:string" use="required">
</xs:attribute>
</xs:complexType>
<xs:complexType name="sampleType">
<xs:attribute name="name" type="xs:string" use="required">
</xs:attribute>
<xs:attribute name="value" type="xs:integer" use="required">
</xs:attribute>
</xs:complexType>
<xs:simpleType name="ncType" final="restriction" >
<xs:restriction base="xs:string">
<xs:enumeration value="DEMO" />
+139 -63
View File
@@ -2,7 +2,7 @@
<userSoftKeys>
<softKey_procedure>
<active>false</active>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>1</plcId>
@@ -17,18 +17,17 @@
<active>true</active>
<category>2</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>2</plcId>
<plcId>1</plcId>
<localizedNames>
<lang langKey="en">Refresh alarms</lang>
<lang langKey="it">Refresh allarmi</lang>
</localizedNames>
<visible>true</visible>
<starred>true</starred>
</softKey_procedure>
<softKey_toggle>
<softKey_procedure>
<active>false</active>
<category>3</category>
<category>2</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>3</plcId>
<localizedNames>
@@ -36,11 +35,11 @@
<lang langKey="it">Termoregolatori</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
</softKey_procedure>
<softKey_toggle>
<softKey_procedure>
<active>false</active>
<category>4</category>
<category>2</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>4</plcId>
<localizedNames>
@@ -48,11 +47,11 @@
<lang langKey="it">Portellone frontale</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
</softKey_procedure>
<softKey_toggle>
<softKey_procedure>
<active>true</active>
<category>5</category>
<category>2</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>5</plcId>
<localizedNames>
@@ -60,12 +59,11 @@
<lang langKey="it">Pausa ciclo</lang>
</localizedNames>
<visible>true</visible>
<starred>true</starred>
</softKey_toggle>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>6</category>
<category>1</category>
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
<plcId>6</plcId>
<localizedNames>
@@ -76,9 +74,9 @@
<starred>true</starred>
</softKey_procedure>
<softKey_toggle>
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>7</plcId>
<localizedNames>
@@ -87,9 +85,22 @@
</localizedNames>
<visible>true</visible>
<starred>true</starred>
</softKey_toggle>
</softKey_procedure>
<softKey_toggle>
<softKey_procedure>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>8</plcId>
<localizedNames>
<lang langKey="en">Heaters Back</lang>
<lang langKey="it">Riscaldi indietro</lang>
</localizedNames>
<visible>true</visible>
<starred>true</starred>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
@@ -99,47 +110,72 @@
<lang langKey="it">Pompe vuoto</lang>
</localizedNames>
<visible>true</visible>
</softKey_toggle>
<starred>true</starred>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
<plcId>10</plcId>
<localizedNames>
<lang langKey="en">Last cycle</lang>
<lang langKey="it">Ultimo ciclo</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>false</active>
<category>10</category>
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
<plcId>11</plcId>
<localizedNames>
<lang langKey="en">START Cycle</lang>
<lang langKey="it">START Ciclo</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>4</category>
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
<plcId>12</plcId>
<localizedNames>
<lang langKey="en">Reset hours pump 1</lang>
<lang langKey="it">Reset contaore pompa 1</lang>
</localizedNames>
<visible>true</visible>
<visible>false</visible>
</softKey_procedure>
<softKey_procedure>
<active>false</active>
<category>1</category>
<category>4</category>
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
<plcId>13</plcId>
<localizedNames>
<lang langKey="en">Reset hours pump 2</lang>
<lang langKey="it">Reset contaore pompa 2</lang>
</localizedNames>
<visible>true</visible>
<visible>false</visible>
</softKey_procedure>
<softKey_procedure>
<active>false</active>
<category>1</category>
<category>4</category>
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
<plcId>14</plcId>
<localizedNames>
<lang langKey="en">Reset hours pump 3</lang>
<lang langKey="it">Reset contaore pompa 3</lang>
</localizedNames>
<visible>true</visible>
<visible>false</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>1</category>
<category>4</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>15</plcId>
<localizedNames>
@@ -151,7 +187,7 @@
<softKey_procedure>
<active>true</active>
<category>1</category>
<category>4</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>16</plcId>
<localizedNames>
@@ -163,7 +199,7 @@
<softKey_procedure>
<active>true</active>
<category>4</category>
<category>3</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>17</plcId>
<localizedNames>
@@ -175,7 +211,7 @@
<softKey_procedure>
<active>true</active>
<category>4</category>
<category>3</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>18</plcId>
<localizedNames>
@@ -187,7 +223,7 @@
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>3</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>19</plcId>
<localizedNames>
@@ -199,7 +235,7 @@
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>3</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>20</plcId>
<localizedNames>
@@ -211,7 +247,7 @@
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>3</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>21</plcId>
<localizedNames>
@@ -223,7 +259,7 @@
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>3</category>
<operatorConfirmationNeeded>true</operatorConfirmationNeeded>
<plcId>22</plcId>
<localizedNames>
@@ -231,11 +267,13 @@
<lang langKey="it">Ventose setup</lang>
</localizedNames>
<visible>true</visible>
<refCallParam>cycle_loader_enable</refCallParam>
<refCallLabel>cycle_loader_enable_button</refCallLabel>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>3</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>23</plcId>
<localizedNames>
@@ -247,7 +285,7 @@
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>3</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>24</plcId>
<localizedNames>
@@ -259,7 +297,7 @@
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>3</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>25</plcId>
<localizedNames>
@@ -271,7 +309,7 @@
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>3</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>26</plcId>
<localizedNames>
@@ -283,7 +321,7 @@
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>3</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>27</plcId>
<localizedNames>
@@ -295,7 +333,7 @@
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>2</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>28</plcId>
<localizedNames>
@@ -307,7 +345,7 @@
<softKey_procedure>
<active>false</active>
<category>7</category>
<category>2</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>29</plcId>
<localizedNames>
@@ -319,19 +357,21 @@
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>2</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>30</plcId>
<localizedNames>
<lang langKey="en">Frame X</lang>
<lang langKey="it">Apertura cornice</lang>
<lang langKey="it">Larghezza cornice</lang>
</localizedNames>
<visible>true</visible>
<refCallParam>general_sizes_frame_dim_x</refCallParam>
<refCallLabel>general_sizes_frame_dim_x_button</refCallLabel>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>2</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>31</plcId>
<localizedNames>
@@ -339,11 +379,13 @@
<lang langKey="it">Profondità cornice</lang>
</localizedNames>
<visible>true</visible>
<refCallParam>general_sizes_frame_dim_y</refCallParam>
<refCallLabel>general_sizes_frame_dim_y_button</refCallLabel>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>2</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>32</plcId>
<localizedNames>
@@ -351,11 +393,13 @@
<lang langKey="it">Larghezza piastrafinestra</lang>
</localizedNames>
<visible>true</visible>
<refCallParam>general_sizes_plate_dim_x</refCallParam>
<refCallLabel>general_sizes_plate_dim_x_button</refCallLabel>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<category>2</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>33</plcId>
<localizedNames>
@@ -363,36 +407,68 @@
<lang langKey="it">Profondità piastrafinestra</lang>
</localizedNames>
<visible>true</visible>
<refCallParam>general_sizes_plate_dim_y</refCallParam>
<refCallLabel>general_sizes_plate_dim_y_button</refCallLabel>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>2</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>34</plcId>
<localizedNames>
<lang langKey="en">Windowplate Up</lang>
<lang langKey="it">Piastrafinestra su</lang>
</localizedNames>
<visible>true</visible>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>36</plcId>
<localizedNames>
<lang langKey="en">Dashboard Setpoint Plus</lang>
<lang langKey="it">Dashboard Setpoint Plus</lang>
</localizedNames>
<visible>true</visible>
<refCallParam>dash_setpoint_plus</refCallParam>
<refCallLabel>dash_setpoint_plus_button</refCallLabel>
</softKey_procedure>
<softKey_procedure>
<active>true</active>
<category>7</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<plcId>34</plcId>
<plcId>37</plcId>
<localizedNames>
<lang langKey="en">Preheating cycles</lang>
<lang langKey="it">Cicli di preriscaldo</lang>
<lang langKey="en">Dashboard Setpoint Minus</lang>
<lang langKey="it">Dashboard Setpoint Minus</lang>
</localizedNames>
<visible>true</visible>
<refCallParam>dash_setpoint_minus</refCallParam>
<refCallLabel>dash_setpoint_minus_button</refCallLabel>
</softKey_procedure>
<!--
<softKey_group>
<active>true</active>
<category>3</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<localizedNames>
<lang langKey="en">Brakes ON/FF:</lang>
<lang langKey="it">Freni ON/OFF</lang>
</localizedNames>
<subKeys>
<subKey active="true" plcId="50"> B </subKey>
<subKey active="true" plcId="51"> C </subKey>
</subKeys>
<visible>true</visible>
</softKey_group>
-->
<!--softKey_group>
<active>true</active>
<category>1</category>
<operatorConfirmationNeeded>false</operatorConfirmationNeeded>
<localizedNames>
<lang langKey="en">aaa:</lang>
<lang langKey="it">aaa</lang>
</localizedNames>
<subKeys>
<subKey active="true" plcId="21"> B </subKey>
<subKey active="true" plcId="22"> C </subKey>
</subKeys>
<visible>true</visible>
</softKey_group-->
</userSoftKeys>
@@ -31,6 +31,8 @@
<xs:element name="active" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="visible" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="starred" minOccurs="0" type="xs:boolean"></xs:element>
<xs:element name="refCallLabel" minOccurs="0" type="xs:string"></xs:element>
<xs:element name="refCallParam" minOccurs="0" type="xs:string"></xs:element>
<xs:element name="category" type="xs:integer"></xs:element>
<xs:element name="operatorConfirmationNeeded" type="xs:boolean"></xs:element>
<xs:element name="localizedNames">
@@ -66,6 +68,8 @@
<xs:element name="active" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="visible" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="starred" minOccurs="0" type="xs:boolean"></xs:element>
<xs:element name="refCallLabel" minOccurs="0" type="xs:string"></xs:element>
<xs:element name="refCallParam" minOccurs="0" type="xs:string"></xs:element>
<xs:element name="category" type="xs:integer"></xs:element>
<xs:element name="operatorConfirmationNeeded" type="xs:boolean"></xs:element>
<xs:element name="localizedNames">
@@ -86,6 +90,8 @@
<xs:element name="active" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="visible" minOccurs="1" maxOccurs="1" type="xs:boolean"></xs:element>
<xs:element name="starred" minOccurs="0" type="xs:boolean"></xs:element>
<xs:element name="refCallLabel" minOccurs="0" type="xs:string"></xs:element>
<xs:element name="refCallParam" minOccurs="0" type="xs:string"></xs:element>
<xs:element name="category" type="xs:integer"></xs:element>
<xs:element name="operatorConfirmationNeeded" type="xs:boolean"></xs:element>
<xs:element name="localizedNames">
+11 -11
View File
@@ -552,17 +552,17 @@
"233": 0
},
"RecipeOverview": {
"General": "HasError",
"Positions": "HasError",
"Cycle": "ChangedOk",
"Heats": "ChangedOk",
"Pyrometer": "ChangedOk",
"Drawing": "ChangedOk",
"UpperPlate": "ChangedOk",
"Cooling": "HasError",
"Vacuum": "ChangedOk",
"Extraction": "ChangedOk",
"Options": "HasError"
"General": "Unchanged",
"Positions": "Unchanged",
"Cycle": "Unchanged",
"Heats": "Unchanged",
"Pyrometer": "Unchanged",
"Drawing": "Unchanged",
"UpperPlate": "Unchanged",
"Cooling": "Unchanged",
"Vacuum": "Unchanged",
"Extraction": "Unchanged",
"Options": "Unchanged"
},
"TC_last": 2532.940840175
}
+5 -2
View File
@@ -11,6 +11,9 @@ namespace Thermo.Active.Config
public static ServerConfigModel ServerStartupConfig;
public static NcConfigModel NcConfig;
public static List<ExtSoftwareModel> ExtSoftwaresConfig;
public static Dictionary<string, string> AdditionalParametersConfig;
public static Dictionary<int, string> UnitMeasuresConfig;
public static Dictionary<string, int> ThreadSamplingConfig;
public static SoftwareProdConfigModel SoftwareProdConfig;
public static MachineModel MachineConfig;
public static List<MaintenanceConfigModel> MaintenancesConfig;
@@ -51,10 +54,9 @@ namespace Thermo.Active.Config
public static List<ScadaSchemaModel> SubscribedScada = new List<ScadaSchemaModel>();
public static List<string> MacrosConfig;
public static List<InputOperatorConfigModel> InputsOperatorConfig;
public static string CMSMainProgramContent;
// Thermo
public static List<ThermoProdConfigModel> ThermoProdConfig;
public static List<RecipeConfigModel> RecipeConfig;
@@ -62,6 +64,7 @@ namespace Thermo.Active.Config
public static List<RiskResistModel> RiskResistConfig;
public static List<RiskChannelModel> RiskChannelConfig;
public static List<RiskBoardModel> RiskBoardConfig;
public static List<AxesConfigModel> AxesConfig;
}
+97 -7
View File
@@ -38,9 +38,11 @@ namespace Thermo.Active.Config
ReadRecipeConfig();
ReadModBlockConfig();
ReadRiskConfig();
ReadAxesConfig();
// ReadCMSConnectConfig();
ReadMacros();
ReadScadaFile();
ReadM156();
}
catch (XmlException ex)
{
@@ -254,6 +256,49 @@ namespace Thermo.Active.Config
}
}
private static void ReadM156()
{
// Get Areas file handler
XDocument xmlConfigFile = GetXmlHandlerWithValidator(M156_CONFIG_SCHEMA_PATH, M156_CONFIG_PATH);
InputsOperatorConfig = xmlConfigFile
.Descendants("inputsOperator")
.Elements()
.Select(x => new InputOperatorConfigModel()
{
Id = Convert.ToInt32(x.Element("id").Value),
Messages = x.Element("title").Elements().ToDictionary( // Read localized names and convert into a dictionary
y => y.Attribute("langKey").Value, y => y.Value
),
Buttons = x.Element("buttons")?.Elements().ToDictionary( // Read buttons data and convert into a dictionary
y => Convert.ToByte(y.Element("value").Value),
y => y.Element("title").Elements().ToDictionary( // Read localized names and convert into a dictionary
z => z.Attribute("langKey").Value,
z => z.Value
)
),
Type = GetInputOperatoType(x.Name.ToString())
})
.ToList();
}
public static string GetInputOperatoType(string tagName)
{
switch (tagName)
{
case "modalValue":
return "REAL";
case "buttonsListModal":
return "MULTIPLE_BUTTONS";
case "showValModal":
return "SHOW_VAL";
case "simpleModal":
return "MODAL";
default:
return "REAL";
}
}
#region Read config from file from configuration
@@ -326,6 +371,27 @@ namespace Thermo.Active.Config
InMainMenuBar = Convert.ToBoolean(x.Element("inMainMenuBar").Value),
Id = softwareId++.ToString()
}).ToList();
// carico additionals parameters
AdditionalParametersConfig = xmlConfigFile
.Descendants("additionalParameters")
.Elements("entry")
.Select(x => new KeyValuePair<string,string>(x.Element("key").Value,x.Element("value").Value))
.ToDictionary(x => x.Key, x => x.Value);
// carico unità di misura...
UnitMeasuresConfig = xmlConfigFile
.Descendants("unitOfMeasures")
.Elements("unitOfMeasure")
.Select(x => new KeyValuePair<int, string>(Convert.ToInt32(x.Attribute("id").Value), x.Attribute("value").Value))
.ToDictionary(x => x.Key, x => x.Value);
// carico conf periodi thread...
ThreadSamplingConfig = xmlConfigFile
.Descendants("sampling")
.Elements("thread")
.Select(x => new KeyValuePair<string, int>(x.Attribute("name").Value, Convert.ToInt32(x.Attribute("value").Value)))
.ToDictionary(x => x.Key, x => x.Value);
}
private static void ReadAreaConfig()
@@ -518,6 +584,8 @@ namespace Thermo.Active.Config
IsActive = Convert.ToBoolean(x.Element("active").Value),
IsVisible = Convert.ToBoolean(x.Element("visible").Value),
IsStarred = x.Element("starred") != null ? Convert.ToBoolean(x.Element("starred").Value) : false,
RefCallLabel = x.Element("refCallLabel") != null ? x.Element("refCallLabel").Value : "",
RefCallParam = x.Element("refCallParam") != null ? x.Element("refCallParam").Value : "",
Category = Convert.ToInt32(x.Element("category").Value),
LocalizedNames = x.Element("localizedNames").Elements().ToDictionary( // Read localized names and convert into a dictionary
y => y.Attribute("langKey").Value, y => y.Value
@@ -626,7 +694,6 @@ namespace Thermo.Active.Config
NumDec = Convert.ToInt32(x.Element("numDec").Value),
MinVal = Convert.ToInt32(x.Element("minVal").Value),
MaxVal = Convert.ToInt32(x.Element("maxVal").Value),
})
.ToList();
}
@@ -652,7 +719,10 @@ namespace Thermo.Active.Config
Priority = Convert.ToInt16(x.Element("priority").Value),
// attributi presi da default se NON presenti...
ScaleFactor = x.Element("scaleFactor") != null ? Convert.ToInt16(x.Element("scaleFactor").Value) : 1000,
NumDec = x.Element("numDec") != null ? Convert.ToInt16(x.Element("numDec").Value) : 1
NumDec = x.Element("numDec") != null ? Convert.ToInt16(x.Element("numDec").Value) : 1,
Category = x.Element("category") != null ? x.Element("category").Value : "",
SubCategory_1 = x.Element("subCategory_1") != null ? x.Element("subCategory_1").Value : "",
SubCategory_2 = x.Element("subCategory_2") != null ? x.Element("subCategory_2").Value : ""
})
.ToList();
}
@@ -760,13 +830,14 @@ namespace Thermo.Active.Config
SetpointThermo = 0,
MaxPower = riferimento.Potenza,
NumResist = 1,
CalcIchMin = riferimento.Modello.Contains("Quarzo") || riferimento.Modello.Contains("Alogena")
// 2020.07.27 applicato x tutti
CalcIchMin = true //riferimento.Modello.Contains("Quarzo") || riferimento.Modello.Contains("Alogena")
});
}
else
{
chanFound.NumResist += 1;
}
}
else
{
chanFound.NumResist += 1;
}
}
@@ -804,6 +875,25 @@ namespace Thermo.Active.Config
}
}
/// <summary>
/// Axes config setup from file
/// </summary>
private static void ReadAxesConfig()
{
XDocument xmlConfigFile = GetXmlHandlerWithValidator(AXES_CONFIG_SCHEMA_PATH, AXES_CONFIG_PATH);
// Read head config from XML file
AxesConfig = xmlConfigFile
.Root
.Elements()
.Select(x => new AxesConfigModel()
{
Id = Convert.ToInt16(x.Attribute("id").Value),
Name = x.Attribute("name").Value,
Type = GetTActAxes_Type(x.Attribute("type").Value)
})
.ToList();
}
private static void ReadCMSConnectConfig()
{
String _tempUSR, _tempPSW;
@@ -51,6 +51,9 @@
<Content Include="Config\axesConfig.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Config\inputOperatorConfig.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Config\macrosConfig.xml">
<SubType>Designer</SubType>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
@@ -88,7 +91,7 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Config\userSoftKeyConfig.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<SubType>Designer</SubType>
</Content>
<EmbeddedResource Include="Config\userSoftKeyConfigValidator.xsd">
@@ -200,6 +203,14 @@
</ItemGroup>
<ItemGroup />
<ItemGroup>
<EmbeddedResource Include="Config\inputOperatorConfigValidator.xsd">
<SubType>Designer</SubType>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="Config\axesConfigValidator.xsd">
<SubType>Designer</SubType>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
<None Include="Config\Recipes\template.tpl">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
+103 -123
View File
@@ -15,6 +15,7 @@ using Thermo.Active.Database.Controllers;
using Thermo.Active.Model.DTOModels;
using Thermo.Active.Model.DTOModels.AlarmModels;
using Thermo.Active.Model.DTOModels.Scada;
using Thermo.Active.Model.DTOModels.ThAxes;
using Thermo.Active.Model.DTOModels.ThModules;
using Thermo.Active.Model.DTOModels.ThProd;
using Thermo.Active.Model.DTOModels.ThRecipe;
@@ -28,6 +29,7 @@ using static Thermo.Active.Utils.ExceptionManager;
public static class ThreadsFunctions
{
public static int axisRtCounter = 0;
public static int recipeRtCounter = 0;
public static int modulesRtCounter = 0;
public static bool reconnectionIsRunning = false;
@@ -36,6 +38,20 @@ public static class ThreadsFunctions
private static ConcurrentDictionary<string, long> Counter = new ConcurrentDictionary<string, long>();
private static Thread ConnThread;
/// <summary>
/// restituisce il periodo di campionamento SE configurato, altrimenti 1000 ms
/// </summary>
/// <param name="threadName"></param>
/// <returns></returns>
private static int samplMsec(string threadName)
{
int answ = 500;
if (ThreadSamplingConfig.ContainsKey(threadName))
{
answ = ThreadSamplingConfig[threadName];
}
return answ;
}
#region Functions
@@ -76,7 +92,7 @@ public static class ThreadsFunctions
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("watchdog"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException ex)
@@ -84,7 +100,6 @@ public static class ThreadsFunctions
ncAdapter.Dispose();
}
}
/// <summary>
/// Manage status/command words for actions
/// </summary>
@@ -117,7 +132,7 @@ public static class ThreadsFunctions
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(250, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("statusCommand"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException ex)
@@ -125,7 +140,6 @@ public static class ThreadsFunctions
ncAdapter.Dispose();
}
}
/// <summary>
/// Manage action for conf request
/// </summary>
@@ -160,49 +174,7 @@ public static class ThreadsFunctions
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(2000, (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException ex)
{
ncAdapter.Dispose();
}
}
/// <summary>
/// Manage action for conf request
/// </summary>
public static void ManageProdUpdate()
{
NcAdapter ncAdapter = new NcAdapter();
Stopwatch sw = new Stopwatch();
try
{
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
ManageLibraryError(libraryError);
while (true)
{
sw.Restart();
// Check if client is connected
if (ncAdapter.numericalControl.NC_IsConnected())
{
//// Manage status command
//libraryError = ncAdapter.ManageProdUpdate();
//if (libraryError.errorCode != 0)
// ManageLibraryError(libraryError);
}
else
RestoreConnection();
sw.Stop();
//Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(1000, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("confReq"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException ex)
@@ -245,7 +217,7 @@ public static class ThreadsFunctions
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(200, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("alarms"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -286,7 +258,7 @@ public static class ThreadsFunctions
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(400, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("powerOn"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -318,16 +290,8 @@ public static class ThreadsFunctions
ManageLibraryError(libraryError);
else
{
libraryError = ncAdapter.GetM155Data(out List<DTOM155InputModel> m155Data);
if (libraryError.errorCode != 0)
ManageLibraryError(libraryError);
else
{
// Send processes through signalR
MessageServices.Current.Publish(SEND_PROCESSES_DATA, null, processesPPData);
// Send m155 through signalR
MessageServices.Current.Publish(SEND_M155_DATA, null, m155Data);
}
// Send processes through signalR
MessageServices.Current.Publish(SEND_PROCESSES_DATA, null, processesPPData);
}
}
else
@@ -382,7 +346,7 @@ public static class ThreadsFunctions
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(200, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("functionEnab"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -433,7 +397,7 @@ public static class ThreadsFunctions
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(30000);
Thread.Sleep(CalcSleepTime(samplMsec("expMan"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -480,7 +444,7 @@ public static class ThreadsFunctions
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(200, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("userSK"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -488,7 +452,10 @@ public static class ThreadsFunctions
ncAdapter.Dispose();
}
}
public static void ReadAxesNamesData()
/// <summary>
/// Lettura valori ASSI (tutti i disponibili)
/// </summary>
public static void ReadAxisInfoData()
{
NcAdapter ncAdapter = new NcAdapter();
Stopwatch sw = new Stopwatch();
@@ -502,17 +469,23 @@ public static class ThreadsFunctions
while (true)
{
// ogni n counter leggo anche dati NON RT
axisRtCounter--;
bool onlyRt = axisRtCounter > 0;
//check reset...
axisRtCounter = axisRtCounter < 0 ? 4 : axisRtCounter;
sw.Restart();
if (ncAdapter.numericalControl.NC_IsConnected())
{
// Get Data from config and PLC
libraryError = ncAdapter.ReadAxisData(out List<DTOAxisNameModel> axes);
libraryError = ncAdapter.ReadAxisData(onlyRt, out Dictionary<int, DTOAxisInfoModel> axisData);
if (libraryError.errorCode != 0)
ManageLibraryError(libraryError);
else
// Send through signalR
MessageServices.Current.Publish(SEND_AXIS_NAMES_DATA, null, axes);
MessageServices.Current.Publish(SEND_AXIS_INFO, null, axisData);
}
else
RestoreConnection();
@@ -523,50 +496,7 @@ public static class ThreadsFunctions
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(800, (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
{
ncAdapter.Dispose();
}
}
public static void ReadAxesPositionsData()
{
NcAdapter ncAdapter = new NcAdapter();
Stopwatch sw = new Stopwatch();
try
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
ManageLibraryError(libraryError);
while (true)
{
sw.Restart();
if (ncAdapter.numericalControl.NC_IsConnected())
{
// Get Data from NC
libraryError = ncAdapter.GetAxesPositionsBySelectedProcess(out DTOAxesModel axesPositions);
if (libraryError.errorCode != 0)
ManageLibraryError(libraryError);
else
// Send through signalR
MessageServices.Current.Publish(SEND_AXES, null, axesPositions);
}
else
RestoreConnection();
sw.Stop();
//Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(100, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("axis"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -610,7 +540,7 @@ public static class ThreadsFunctions
//Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("scada"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -653,7 +583,7 @@ public static class ThreadsFunctions
//Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("gauges"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -695,7 +625,7 @@ public static class ThreadsFunctions
//Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait 500 ms
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("prodPanel"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -737,7 +667,7 @@ public static class ThreadsFunctions
//Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("prodInfo"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -779,7 +709,7 @@ public static class ThreadsFunctions
//Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("prodCycle"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -818,8 +748,6 @@ public static class ThreadsFunctions
MessageServices.Current.Publish(SEND_THERMO_RECIPE_FULL, null, currRecipe);
// FIXME TODO verificare come ridurre chiamate
// ora gestisco la overview!
libraryError = ncAdapter.GetRecipeOverview(out Dictionary<RecipeSection, RecipeCatStatus> currOverview);
if (libraryError.IsError())
@@ -827,6 +755,14 @@ public static class ThreadsFunctions
MessageServices.Current.Publish(SEND_THERMO_RECIPE_OVERWIEW, null, currOverview);
// ora gestisco la lettura della overview di "modificata
DTORecipeStatus message = new DTORecipeStatus()
{
recipeName = NcAdapter.RecipeLiveData.RecipeName,
hasChanged = NcAdapter.RecipeLiveData.hasChanged
};
MessageServices.Current.Publish(SEND_THERMO_RECIPE_CHANGED, null, message);
}
else
RestoreConnection();
@@ -836,7 +772,7 @@ public static class ThreadsFunctions
// Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("recipe"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -877,7 +813,7 @@ public static class ThreadsFunctions
// Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(1800, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("warmers"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -918,7 +854,7 @@ public static class ThreadsFunctions
// Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("area"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -959,7 +895,53 @@ public static class ThreadsFunctions
// Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(250, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("modules"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
{
ncAdapter.Dispose();
}
}
public static void ReadMComandsData()
{
NcAdapter ncAdapter = new NcAdapter();
Stopwatch sw = new Stopwatch();
try
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.errorCode != 0)
ManageLibraryError(libraryError);
while (true)
{
sw.Restart();
if (ncAdapter.numericalControl.NC_IsConnected())
{
// solo x S7Net...
if (NcConfig.NcVendor == NC_VENDOR.S7NET)
{
libraryError = ncAdapter.GetM156Data(out List<DTOM156InputModel> m156Data);
if (libraryError.IsError())
ManageLibraryError(libraryError);
else
MessageServices.Current.Publish(SEND_M156_DATA, null, m156Data);
}
}
else
RestoreConnection();
sw.Stop();
//Update thread timer
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(samplMsec("mCommands"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -1133,7 +1115,7 @@ public static class ThreadsFunctions
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
// Wait
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
Thread.Sleep(CalcSleepTime(samplMsec("m154"), (int)sw.ElapsedMilliseconds));
}
}
catch (ThreadAbortException)
@@ -1141,8 +1123,6 @@ public static class ThreadsFunctions
ncAdapter.Dispose();
}
}
public static void SetupCmsConnect()
{
NcAdapter ncAdapter = new NcAdapter();
+3 -2
View File
@@ -19,10 +19,8 @@ namespace Thermo.Active.Core
//ThreadsFunctions.ReadProcessesPPStatus,
ThreadsFunctions.ReadEnabledFunctionality,
ThreadsFunctions.ReadExpiredMaintenances,
//ThreadsFunctions.ReadAxesPositionsData,
ThreadsFunctions.ReadUserSoftKeysData,
//ThreadsFunctions.ReadHeadsData,
//ThreadsFunctions.ReadAxesNamesData,
//ThreadsFunctions.ReadActiveProgramData,
//ThreadsFunctions.ReadPartProgramQueueData,
// ThreadsFunctions.ReadNcSoftKeysData,
@@ -35,7 +33,10 @@ namespace Thermo.Active.Core
ThreadsFunctions.ReadAreaData,
ThreadsFunctions.ReadModulesData,
ThreadsFunctions.ReadScadaData,
ThreadsFunctions.ReadMComandsData,
ThreadsFunctions.ReadAxisInfoData,
ThreadsFunctions.ReadM154Data // levare?
};
private static Action ThreadSetupCmsConnect = ThreadsFunctions.SetupCmsConnect;
@@ -1,161 +1,192 @@
using System;
using System.Collections.Generic;
using System.Data.Entity.Migrations;
using System.Linq;
using Thermo.Active.Model.DatabaseModels;
namespace Thermo.Active.Database.Controllers
{
public class ProdInfoController : IDisposable
public class ProdInfoController : IDisposable
{
private DatabaseContext dbCtx;
public ProdInfoController()
{
private DatabaseContext dbCtx;
public ProdInfoController()
{
// Initialize database context
dbCtx = new DatabaseContext();
}
public void Dispose()
{
// Clear database context
dbCtx.Dispose();
}
/// <summary>
/// Get record by NumDone
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public ProdInfoModel FindByNumDone(int num)
{
return dbCtx
.ProdInfo
.Where(x => x.NumDone == num)
.SingleOrDefault();
}
/// <summary>
/// Get historical paginated data from DB (DESC ordered
/// </summary>
/// <param name="numStart"></param>
/// <param name="numRecord"></param>
/// <returns></returns>
public List<ProdInfoModel> GetPaginated(int numStart, int numRecord)
{
// cehck numEnd
int numEnd = numStart - numRecord;
if (numEnd < 0)
numEnd = 0;
// retrieve
return dbCtx
.ProdInfo
.Where(x => x.NumDone <= numStart && x.NumDone > numEnd)
.OrderByDescending(x => x.DtEvent)
.ToList();
}
/// <summary>
/// Create new prodInfo record on DB
/// </summary>
/// <param name="NumTarget"></param>
/// <param name="NumDone"></param>
/// <param name="TimeWarm"></param>
/// <param name="TimeVent"></param>
/// <param name="TimeVacuum"></param>
/// <param name="TimeCycleGross"></param>
/// <param name="TimeCycleNet"></param>
/// <param name="MaterialTempEndWarm"></param>
/// <param name="MaterialTempEndVent"></param>
/// <param name="MoldTemp"></param>
/// <param name="VacuumReadVal"></param>
/// <param name="MouldEnergyOUT"></param>
/// <param name="MouldEnergyIN"></param>
/// <returns></returns>
public ProdInfoModel Create(short NumTarget, short NumDone, int TimeWarm, int TimeVent, int TimeVacuum, int TimeCycleGross, int TimeCycleNet, double MaterialTempEndWarm, double MaterialTempEndVent, double MoldTemp, double VacuumReadVal, double MouldEnergyOUT, double MouldEnergyIN)
{
// Create database machine model
ProdInfoModel prodData = new ProdInfoModel()
{
DtEvent = DateTime.Now,
NumTarget = NumTarget,
NumDone = NumDone,
TimeWarm = TimeWarm,
TimeVent = TimeVent,
TimeVacuum = TimeVacuum,
TimeCycleGross = TimeCycleGross,
TimeCycleNet = TimeCycleNet,
MaterialTempEndWarm = MaterialTempEndWarm,
MaterialTempEndVent = MaterialTempEndVent,
MoldTemp = MoldTemp,
VacuumReadVal = VacuumReadVal,
MouldEnergyOUT = MouldEnergyOUT,
MouldEnergyIN = MouldEnergyIN
};
try
{
// Add to database
dbCtx.ProdInfo.Add(prodData);
// Commit changes
dbCtx.SaveChanges();
}
catch
{ }
return prodData;
}
/// <summary>
/// Process table and keep only maxKeep most recent ones
/// </summary>
/// <param name="maxKeep"></param>
/// <returns></returns>
public bool PurgeOldest(int maxKeep)
{
bool answ = false;
// check if purge needed
int numRec = dbCtx.ProdInfo.Count();
if (numRec > maxKeep)
{
ProdInfoModel firstToDelete = (ProdInfoModel)(from p in dbCtx.ProdInfo
orderby p.DtEvent descending
select p).Skip(maxKeep).Take(1);
// call deletion
dbCtx
.ProdInfo
.RemoveRange(
dbCtx
.ProdInfo
.Where(x => x.DtEvent <= firstToDelete.DtEvent)
);
try
{
// save!
dbCtx.SaveChanges();
answ = true;
}
catch
{ }
}
return answ;
}
/// <summary>
/// Process table and delete all record (truncate)
/// </summary>
/// <returns></returns>
public bool PurgeAll()
{
bool answ = false;
try
{
dbCtx
.Database
.ExecuteSqlCommand("TRUNCATE TABLE prodInfo");
}
catch
{ }
return answ;
}
// Initialize database context
dbCtx = new DatabaseContext();
}
public void Dispose()
{
// Clear database context
dbCtx.Dispose();
}
/// <summary>
/// Get record by NumDone
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public ProdInfoModel FindByNumDone(int num)
{
return dbCtx
.ProdInfo
.Where(x => x.NumDone == num)
.SingleOrDefault();
}
/// <summary>
/// Get historical paginated data from DB (DESC ordered
/// </summary>
/// <param name="numStart"></param>
/// <param name="numRecord"></param>
/// <returns></returns>
public List<ProdInfoModel> GetPaginated(int numStart, int numRecord)
{
// cehck numEnd
int numEnd = numStart - numRecord;
if (numEnd < 0)
numEnd = 0;
// retrieve
return dbCtx
.ProdInfo
.Where(x => x.NumDone <= numStart && x.NumDone > numEnd)
.OrderByDescending(x => x.DtEvent)
.ToList();
}
/// <summary>
/// Create new prodInfo record on DB
/// </summary>
/// <param name="NumTarget"></param>
/// <param name="NumDone"></param>
/// <param name="TimeWarm"></param>
/// <param name="TimeVent"></param>
/// <param name="TimeVacuum"></param>
/// <param name="TimeCycleGross"></param>
/// <param name="TimeCycleNet"></param>
/// <param name="MaterialTempEndWarm"></param>
/// <param name="MaterialTempEndVent"></param>
/// <param name="MoldTemp"></param>
/// <param name="VacuumReadVal"></param>
/// <param name="MouldEnergyOUT"></param>
/// <param name="MouldEnergyIN"></param>
/// <param name="IsScrap"></param>
/// <returns></returns>
public ProdInfoModel Create(short NumTarget, short NumDone, int TimeWarm, int TimeVent, int TimeVacuum, int TimeCycleGross, int TimeCycleNet, double MaterialTempEndWarm, double MaterialTempEndVent, double MoldTemp, double VacuumReadVal, double MouldEnergyOUT, double MouldEnergyIN, bool IsScrap)
{
// Create database machine model
ProdInfoModel prodData = new ProdInfoModel()
{
DtEvent = DateTime.Now,
NumTarget = NumTarget,
NumDone = NumDone,
TimeWarm = TimeWarm,
TimeVent = TimeVent,
TimeVacuum = TimeVacuum,
TimeCycleGross = TimeCycleGross,
TimeCycleNet = TimeCycleNet,
MaterialTempEndWarm = MaterialTempEndWarm,
MaterialTempEndVent = MaterialTempEndVent,
MoldTemp = MoldTemp,
VacuumReadVal = VacuumReadVal,
MouldEnergyOUT = MouldEnergyOUT,
MouldEnergyIN = MouldEnergyIN,
IsScrap = IsScrap
};
try
{
// Add to database
dbCtx.ProdInfo.AddOrUpdate(prodData);
//dbCtx.ProdInfo.Add(prodData);
// Commit changes
dbCtx.SaveChanges();
}
catch
{ }
return prodData;
}
/// <summary>
/// Process table and set as scrap by num value
/// </summary>
/// <param name="maxKeep"></param>
/// <returns></returns>
public bool SetScrap(int num, bool isScrap)
{
bool answ = false;
var currRecord = dbCtx
.ProdInfo
.Where(x => x.NumDone == num)
.SingleOrDefault();
try
{
if (currRecord != null)
{
currRecord.IsScrap = isScrap;
}
// save!
dbCtx.SaveChanges();
answ = true;
}
catch
{ }
return answ;
}
/// <summary>
/// Process table and keep only maxKeep most recent ones
/// </summary>
/// <param name="maxKeep"></param>
/// <returns></returns>
public bool PurgeOldest(int maxKeep)
{
bool answ = false;
// check if purge needed
int numRec = dbCtx.ProdInfo.Count();
if (numRec > maxKeep)
{
ProdInfoModel firstToDelete = (ProdInfoModel)(from p in dbCtx.ProdInfo
orderby p.DtEvent descending
select p).Skip(maxKeep).Take(1);
// call deletion
dbCtx
.ProdInfo
.RemoveRange(
dbCtx
.ProdInfo
.Where(x => x.DtEvent <= firstToDelete.DtEvent)
);
try
{
// save!
dbCtx.SaveChanges();
answ = true;
}
catch
{ }
}
return answ;
}
/// <summary>
/// Process table and delete all record (truncate)
/// </summary>
/// <returns></returns>
public bool PurgeAll()
{
bool answ = false;
try
{
dbCtx
.Database
.ExecuteSqlCommand("TRUNCATE TABLE prodInfo");
}
catch
{ }
return answ;
}
}
}
@@ -46,6 +46,8 @@ namespace Thermo.Active.Database.Controllers
Id = softKey.Id,
Category = softKey.Category,
OperatorConfirmationNeeded = softKey.OperatorConfirmationNeeded,
RefCallLabel = softKey.RefCallLabel,
RefCallParam = softKey.RefCallParam,
Type = softKey.Type,
SubKeys = tmpSubKey
});
@@ -0,0 +1,29 @@
// <auto-generated />
namespace Thermo.Active.Database.Migrations
{
using System.CodeDom.Compiler;
using System.Data.Entity.Migrations;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
[GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")]
public sealed partial class AddedScrapPartMgmt : IMigrationMetadata
{
private readonly ResourceManager Resources = new ResourceManager(typeof(AddedScrapPartMgmt));
string IMigrationMetadata.Id
{
get { return "202009021558544_AddedScrapPartMgmt"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
@@ -0,0 +1,18 @@
namespace Thermo.Active.Database.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class AddedScrapPartMgmt : DbMigration
{
public override void Up()
{
AddColumn("dbo.ProdInfo", "IsScrap", c => c.Boolean(nullable: false));
}
public override void Down()
{
DropColumn("dbo.ProdInfo", "IsScrap");
}
}
}
File diff suppressed because one or more lines are too long
@@ -131,6 +131,10 @@
<Compile Include="Migrations\202006170558519_AddedProdInfoModel.Designer.cs">
<DependentUpon>202006170558519_AddedProdInfoModel.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\202009021558544_AddedScrapPartMgmt.cs" />
<Compile Include="Migrations\202009021558544_AddedScrapPartMgmt.Designer.cs">
<DependentUpon>202009021558544_AddedScrapPartMgmt.cs</DependentUpon>
</Compile>
<Compile Include="Migrations\Configuration.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Redis\redUtil.cs" />
@@ -173,6 +177,9 @@
<EmbeddedResource Include="Migrations\202006170558519_AddedProdInfoModel.resx">
<DependentUpon>202006170558519_AddedProdInfoModel.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Migrations\202009021558544_AddedScrapPartMgmt.resx">
<DependentUpon>202009021558544_AddedScrapPartMgmt.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
@@ -0,0 +1,13 @@
using System.Collections.Generic;
using static Thermo.Active.Model.Constants;
namespace Thermo.Active.Model.ConfigModels
{
public class AxesConfigModel
{
public int Id;
public string Name { get; set; }
public bool IsSelectable { get; set; } = true;
public TACT_AXES_TYPE Type { get; set; }
}
}
@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Thermo.Active.Model.ConfigModels
{
public class InputOperatorConfigModel
{
public int Id { get; set; }
public Dictionary<string, string> Messages { get; set; }
public Dictionary<byte, Dictionary<string, string>> Buttons { get; set; }
public string Type { get; set; }
}
}
@@ -14,5 +14,8 @@ namespace Thermo.Active.Model.ConfigModels
public int Priority { get; set; }
public int ScaleFactor { get; set; } = 1000;
public int NumDec { get; set; } = 1;
public string Category { get; set; }
public string SubCategory_1 { get; set; }
public string SubCategory_2 { get; set; }
}
}
@@ -11,6 +11,8 @@ namespace Thermo.Active.Model.ConfigModels
public bool IsActive { get; set; }
public bool IsVisible { get; set; }
public bool IsStarred { get; set; } = false;
public string RefCallParam { get; set; } = "";
public string RefCallLabel { get; set; } = "";
public bool OperatorConfirmationNeeded { get; set; }
public List<SubKeysModel> SubKeys { get; set; }
public int PlcId { get; set; }
+19 -6
View File
@@ -102,6 +102,12 @@ namespace Thermo.Active.Model
COOLING,
EXTRACTION
}
public enum TACT_AXES_TYPE
{
NA = 0,
LINEAR,
ROTATIONAL
}
[JsonConverter(typeof(StringEnumConverter))]
public enum TACT_PROD_CATEGORY
@@ -222,9 +228,8 @@ namespace Thermo.Active.Model
public const int numRecProdPanelGraph = 30;
public const string CONFIG_DIRECTORY = "Config\\";
public const string RECIPE_DIRECTORY = "Recipes\\";
public const string RECIPE_TEMPLATE_PATH = CONFIG_DIRECTORY + RECIPE_DIRECTORY + "template.tpl";
public const string LIVE_RECIPE_PATH = TEMP_FOLDER + RECIPE_DIRECTORY + "current.rcp";
public const string RECIPE_TEMPLATE_PATH = CONFIG_DIRECTORY + "Recipes\\template.tpl";
public const string LIVE_RECIPE_PATH = TEMP_FOLDER + "Recipes\\current.rcp";
public const string RESOURCE_DIRECTORY = @"Thermo.Active.Config.Config.";
public const string SERVER_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + @"serverConfigValidator.xsd";
public const string SERVER_CONFIG_PATH = CONFIG_DIRECTORY + "serverConfig.xml";
@@ -232,6 +237,9 @@ namespace Thermo.Active.Model
public const string AREAS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "areasConfigValidator.xsd";
public const string AREAS_CONFIG_PATH = CONFIG_DIRECTORY + "areasConfig.xml";
public const string M156_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "inputOperatorConfigValidator.xsd";
public const string M156_CONFIG_PATH = CONFIG_DIRECTORY + "inputOperatorConfig.xml";
public const string MAINTENANCES_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "maintenancesConfigValidator.xsd";
public const string CUSTOMER_CONTACTS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "customerContactConfigValidator.xsd";
public const string MAINTENANCES_CONFIG_PATH = CONFIG_DIRECTORY + "maintenancesConfig.xml";
@@ -270,6 +278,10 @@ namespace Thermo.Active.Model
public const string MACROS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "macrosConfigValidator.xsd";
public const string MACROS_CONFIG_PATH = CONFIG_DIRECTORY + "macrosConfig.xml";
public const string AXES_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + @"axesConfigValidator.xsd";
public const string AXES_CONFIG_PATH = CONFIG_DIRECTORY + "axesConfig.xml";
public const string MAIN_PROGRAM_CONFIG_PATH = CONFIG_DIRECTORY + "customMainProgram.txt";
@@ -298,22 +310,23 @@ namespace Thermo.Active.Model
public const string SEND_POWER_ON_DATA = "SEND_POWER_ON_DATA";
public const string SEND_GENERIC_DATA = "SEND_GENERIC_DATA";
public const string SEND_AXES = "SEND_AXES";
public const string SEND_PROCESSES_DATA = "SEND_PROCESSES_STATUS";
public const string SEND_FUNCTIONALITY_DATA = "SEND_FUNCTION_DATA";
public const string SEND_EXPIRED_MAINTENANCES_DATA = "SEND_EXPIRED_MAINTENANCES_DATA";
public const string SEND_USER_SOFTKEYS_DATA = "SEND_USER_SOFTKEYS_DATA";
public const string SEND_NC_SOFTKEYS_DATA = "SEND_NC_SOFTKEYS_DATA";
public const string SEND_HEADS_DATA = "SEND_HEADS_DATA";
public const string SEND_AXIS_NAMES_DATA = "SEND_AXIS_NAMES_DATA";
public const string SEND_AXIS_INFO = "SEND_AXIS_INFO";
public const string SEND_ACTIVE_PROGRAM_DATA = "SEND_ACTIVE_PROGRAM_DATA";
public const string SEND_QUEUE_DATA = "SEND_QUEUE_DATA";
public const string SEND_M155_DATA = "SEND_M155_DATA";
public const string SEND_M156_DATA = "SEND_M156_DATA";
public const string SEND_SCADA_DATA = "SEND_SCADA_DATA";
// MVVM Messages for Thermo active specs
public const string SEND_THERMO_RECIPE_FULL = "SEND_THERMO_RECIPE_FULL";
public const string SEND_THERMO_RECIPE_OVERWIEW = "SEND_THERMO_RECIPE_OVERWIEW";
public const string SEND_THERMO_RECIPE_CHANGED = "SEND_THERMO_RECIPE_CHANGED";
public const string SEND_THERMO_MODULE_DATA = "SEND_THERMO_MODULE_DATA";
public const string SEND_THERMO_WARMERS_DATA = "SEND_THERMO_WARMERS_DATA";
public const string SEND_THERMO_AREA_DATA = "SEND_THERMO_AREA_DATA";
@@ -378,7 +391,7 @@ namespace Thermo.Active.Model
public static readonly string[] VALID_FILE_EXTENSIONS = { "", ".txt", ".cnc", ".ini", ".mpf", ".spf" };
public static readonly string[] VALID_IMAGE_EXTENSIONS = { ".jpg", ".jpeg", ".png", ".bmp", ".gif" };
public const double EPSILON = 0.001;
public const double EPSILON = 0.1;
public static string QUEUE_FILE_NAME = "pp";
public const string JOB_MAIN_FILENAME = "main.cnc";
public const string JOB_METADATA_FILENAME = "metadata.json";
@@ -1,33 +0,0 @@
using static CMS_CORE_Library.Models.DataStructures;
namespace Thermo.Active.Model.DTOModels
{
public class DTOAxisNameModel : AxisModel
{
public new string Type;
public override bool Equals(object obj)
{
// Object is not a DTOAxisNameModel instance
if (!(obj is DTOAxisNameModel item))
return false;
if (item.Id != Id)
return false;
if (item.Name != Name)
return false;
if (item.IsSelectable != IsSelectable)
return false;
return true;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
}
@@ -20,6 +20,7 @@ namespace Thermo.Active.Model.DTOModels
public bool SiemensKeyboardOption { get; set; }
public List<ExtSoftwareModel> ExtSoftwares { get; set; }
public Dictionary<string, string> AdditionalParameters { get; set; }
public CultureInfo DefaultLanguage
{
@@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static CMS_CORE_Library.Models.DataStructures;
namespace Thermo.Active.Model.DTOModels
{
public class DTOM156InputModel : M156InputIsNeededModel
{
public Dictionary<byte, string> Buttons;
public string Type;
public bool isM156 = true;
public override bool Equals(object obj)
{
if (!(obj is DTOM156InputModel item))
return false;
if (Process != item.Process)
return false;
if (Type != item.Type)
return false;
return true;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
}
@@ -82,11 +82,11 @@ namespace Thermo.Active.Model.DTOModels
if (WorkOverride != item.WorkOverride)
return false;
if (offsetData.RealLength != item.offsetData.RealLength)
return false;
//if (offsetData.RealLength != item.offsetData.RealLength)
// return false;
if (offsetData.RealRadius != item.offsetData.RealRadius)
return false;
//if (offsetData.RealRadius != item.offsetData.RealRadius)
// return false;
if (FeedOverride != item.FeedOverride)
return false;
@@ -8,6 +8,8 @@ namespace Thermo.Active.Model.DTOModels
public int Id { get; set; }
public int Category { get; set; }
public bool OperatorConfirmationNeeded { get; set; }
public string RefCallParam { get; set; } = "";
public string RefCallLabel { get; set; } = "";
public SOFTKEY_TYPE Type { get; set; }
public Dictionary<int, string> SubKeys { get; set; }
}
@@ -20,6 +22,9 @@ namespace Thermo.Active.Model.DTOModels
public bool Visible { get; set; }
public bool Starred { get; set; } = false;
public bool Value { get; set; }
public bool OperatorConfirmationNeeded { get; set; }
public string RefCallParam { get; set; } = "";
public string RefCallLabel { get; set; } = "";
public override bool Equals(object obj)
{
@@ -34,6 +39,12 @@ namespace Thermo.Active.Model.DTOModels
return false;
if (Value != item.Value)
return false;
if (OperatorConfirmationNeeded != item.OperatorConfirmationNeeded)
return false;
if (RefCallParam != item.RefCallParam)
return false;
if (RefCallLabel != item.RefCallLabel)
return false;
return true;
}
@@ -43,4 +54,5 @@ namespace Thermo.Active.Model.DTOModels
return base.GetHashCode();
}
}
}
@@ -78,7 +78,6 @@ namespace Thermo.Active.Model.DTOModels.Scada
// Inputs = new List<DTOScadaInputModel>();
// }
//}
public class DTOScadaButtonModel
{
public int Id { get; set; }
@@ -0,0 +1,137 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Thermo.Active.Model.Constants;
namespace Thermo.Active.Model.DTOModels.ThAxes
{
public class DTOAxisInfoModel
{
/// <summary>
/// Actual position
/// </summary>
public int ID { get; set; } = 0;
/// <summary>
/// Actual position
/// </summary>
public string name { get; set; } = "";
/// <summary>
/// Type of axis
/// </summary>
public string type { get; set; } = "";
/// <summary>
/// Actual position
/// </summary>
public double position { get; set; } = 0;
/// <summary>
/// Actual Speed
/// </summary>
public double speed { get; set; } = 0;
/// <summary>
/// Actual Load
/// </summary>
public double load { get; set; } = 0;
/// <summary>
/// Error code (0=none)
/// </summary>
public int errorCode { get; set; } = 0;
/// <summary>
/// Movement
/// </summary>
public int movPhase { get; set; } = 0;
/// <summary>
/// Status Word
/// </summary>
public int statusCode { get; set; } = 0;
public override bool Equals(object obj)
{
// Object is not a GaugeModel instance
if (!(obj is DTOAxisInfoModel item))
return false;
if (ID != item.ID)
return false;
if (name != item.name)
return false;
if (Math.Round(Math.Abs(position - item.position), 1) >= Constants.EPSILON)
return false;
if (Math.Round(Math.Abs(speed - item.speed), 1) >= Constants.EPSILON)
return false;
if (Math.Round(Math.Abs(load - item.load), 1) >= Constants.EPSILON)
return false;
if (errorCode != item.errorCode)
return false;
if (movPhase != item.movPhase)
return false;
if (statusCode != item.statusCode)
return false;
return true;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
#if false
private bool CheckDictInt(IDictionary<string, int> x, IDictionary<string, int> y)
{
// early-exit checks
if (y == null)
return x == null;
if (x == null)
return false;
if (x.Count != y.Count)
return false;
// Check keys are the same
foreach (string k in x.Keys)
if (!y.ContainsKey(k))
return false;
// Check values are different
foreach (string k in x.Keys)
{
if (y[k] != x[k])
return false;
}
return true;
}
public bool CheckDictDouble(IDictionary<string, double> x, IDictionary<string, double> y)
{
// early-exit checks
if (y == null)
return x == null;
if (x == null)
return false;
if (x.Count != y.Count)
return false;
// Check keys are the same
foreach (string k in x.Keys)
if (!y.ContainsKey(k))
return false;
// Check values are different
foreach (string k in x.Keys)
{
double a = Math.Abs(y[k] - x[k]);
if (Math.Round(a, 3) >= Constants.EPSILON)
return false;
}
return true;
}
#endif
}
}
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using static Thermo.Active.Model.Constants;
@@ -24,6 +25,9 @@ namespace Thermo.Active.Model.DTOModels.ThModules
public bool Running { get; set; } = false;
public bool HasError { get; set; } = false;
public bool Terminated { get; set; } = false;
public string Category { get; set; } = "";
public string SubCategory_1 { get; set; } = "";
public string SubCategory_2 { get; set; } = "";
public override bool Equals(object obj)
@@ -49,13 +53,13 @@ namespace Thermo.Active.Model.DTOModels.ThModules
return false;
if (NumDec != item.NumDec)
return false;
if (ActualDelay != item.ActualDelay)
if (Math.Round(Math.Abs(ActualDelay - item.ActualDelay), 1) >= Constants.EPSILON)
return false;
if (ActualDuration != item.ActualDuration)
if (Math.Round(Math.Abs(ActualDuration - item.ActualDuration), 1) >= Constants.EPSILON)
return false;
if (EstimatedDelay != item.EstimatedDelay)
if (Math.Round(Math.Abs(EstimatedDelay - item.EstimatedDelay), 1) >= Constants.EPSILON)
return false;
if (EstimatedDuration != item.EstimatedDuration)
if (Math.Round(Math.Abs(EstimatedDuration - item.EstimatedDuration), 1) >= Constants.EPSILON)
return false;
if (!Enumerable.SequenceEqual(PrecedingId, item.PrecedingId))
return false;
@@ -67,6 +71,12 @@ namespace Thermo.Active.Model.DTOModels.ThModules
return false;
if (Terminated != item.Terminated)
return false;
if (Category != item.Category)
return false;
if (SubCategory_1 != item.SubCategory_1)
return false;
if (SubCategory_2 != item.SubCategory_2)
return false;
return true;
}
@@ -25,6 +25,7 @@ namespace Thermo.Active.Model.DTOModels.ThProd
public double VacuumReadVal { get; set; } = 0;
public double MouldEnergyOUT { get; set; } = 0;
public double MouldEnergyIN { get; set; } = 0;
public bool IsScrap { get; set; } = false;
public override bool Equals(object obj)
{
@@ -38,27 +39,29 @@ namespace Thermo.Active.Model.DTOModels.ThProd
return false;
if (NumDone != item.NumDone)
return false;
if (TimeWarm != item.TimeWarm)
if (Math.Round(Math.Abs(TimeWarm - item.TimeWarm), 1) >= Constants.EPSILON)
return false;
if (TimeVent != item.TimeVent)
if (Math.Round(Math.Abs(TimeVent - item.TimeVent), 1) >= Constants.EPSILON)
return false;
if (TimeVacuum != item.TimeVacuum)
if (Math.Round(Math.Abs(TimeVacuum - item.TimeVacuum), 1) >= Constants.EPSILON)
return false;
if (TimeCycleGross != item.TimeCycleGross)
if (Math.Round(Math.Abs(TimeCycleGross - item.TimeCycleGross), 1) >= Constants.EPSILON)
return false;
if (TimeCycleNet != item.TimeCycleNet)
if (Math.Round(Math.Abs(TimeCycleNet - item.TimeCycleNet), 1) >= Constants.EPSILON)
return false;
if (MaterialTempEndWarm != item.MaterialTempEndWarm)
if (Math.Round(Math.Abs(MaterialTempEndWarm - item.MaterialTempEndWarm), 1) >= Constants.EPSILON)
return false;
if (MaterialTempEndVent != item.MaterialTempEndVent)
if (Math.Round(Math.Abs(MaterialTempEndVent - item.MaterialTempEndVent), 1) >= Constants.EPSILON)
return false;
if (MoldTemp != item.MoldTemp)
if (Math.Round(Math.Abs(MoldTemp - item.MoldTemp), 1) >= Constants.EPSILON)
return false;
if (VacuumReadVal != item.VacuumReadVal)
if (Math.Round(Math.Abs(VacuumReadVal - item.VacuumReadVal), 1) >= Constants.EPSILON)
return false;
if (MouldEnergyOUT != item.MouldEnergyOUT)
if (Math.Round(Math.Abs(MouldEnergyOUT - item.MouldEnergyOUT), 1) >= Constants.EPSILON)
return false;
if (MouldEnergyIN != item.MouldEnergyIN)
if (Math.Round(Math.Abs(MouldEnergyIN - item.MouldEnergyIN), 1) >= Constants.EPSILON)
return false;
if (IsScrap != item.IsScrap)
return false;
return true;
@@ -88,6 +91,7 @@ namespace Thermo.Active.Model.DTOModels.ThProd
this.VacuumReadVal = pimRawData.VacuumReadVal;
this.MouldEnergyIN = pimRawData.MouldEnergyIN;
this.MouldEnergyOUT = pimRawData.MouldEnergyOUT;
this.IsScrap = pimRawData.IsScrap;
}
}
}
@@ -30,17 +30,17 @@ namespace Thermo.Active.Model.DTOModels.ThProd
return false;
if (InizioProd != item.InizioProd)
return false;
if (StimaDurata != item.StimaDurata)
if (Math.Round(Math.Abs(StimaDurata - item.StimaDurata), 1) >= Constants.EPSILON)
return false;
if (TempAct != item.TempAct)
if (Math.Round(Math.Abs(TempAct - item.TempAct), 1) >= Constants.EPSILON)
return false;
if (TempSetpoint != item.TempSetpoint)
if (Math.Round(Math.Abs(TempSetpoint - item.TempSetpoint), 1) >= Constants.EPSILON)
return false;
if (NomeRicetta != item.NomeRicetta)
return false;
if (LastCadenza != item.LastCadenza)
if (Math.Round(Math.Abs(LastCadenza - item.LastCadenza), 1) >= Constants.EPSILON)
return false;
if (LastTCiclo != item.LastTCiclo)
if (Math.Round(Math.Abs(LastTCiclo - item.LastTCiclo), 1) >= Constants.EPSILON)
return false;
if (!Enumerable.SequenceEqual(TS_Cadenza, item.TS_Cadenza))
return false;
@@ -22,7 +22,7 @@ namespace Thermo.Active.Model.DTOModels.ThProd
if (!Category.Equals(item.Category))
return false;
if (Value != item.Value)
if (Math.Round(Math.Abs(Value - item.Value), 1) >= Constants.EPSILON)
return false;
if (Name != item.Name)
return false;
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Thermo.Active.Model.DTOModels.ThRecipe
{
public class DTORecipeStatus
{
public string recipeName { get; set; } = "";
public bool hasChanged { get; set; } = false;
public bool forceSend { get; set; } = false;
}
}
@@ -12,6 +12,10 @@ namespace Thermo.Active.Model.DTOModels.ThRecipe
/// </summary>
public string RecipeName = "current.json";
/// <summary>
/// Current DIR of loaded recipe
/// </summary>
public string RecipeDir = "";
/// <summary>
/// User that made last save
/// </summary>
public string UserSave = "";
@@ -35,7 +39,9 @@ namespace Thermo.Active.Model.DTOModels.ThRecipe
/// Note ricetta
/// </summary>
public string recipeNotes = "";
/// <summary>
/// Verifica se sia cambiata da versione letta
/// </summary>
public bool hasChanged = false;
}
}
@@ -42,6 +42,8 @@ namespace Thermo.Active.Model.DatabaseModels
public double MouldEnergyOUT { get; set; }
[Column("MouldEnergyIN")]
public double MouldEnergyIN { get; set; }
[Column("IsScrap")]
public bool IsScrap { get; set; }
}
}
@@ -63,6 +63,8 @@
<Compile Include="ConfigModels\AlarmsConfigModel.cs" />
<Compile Include="ConfigModels\CmsConnectConfigModel.cs" />
<Compile Include="ConfigModels\ExtSoftwareModel.cs" />
<Compile Include="ConfigModels\InputOperatorConfigModel.cs" />
<Compile Include="ConfigModels\AxesConfigModel.cs" />
<Compile Include="ConfigModels\ThermoProdConfigModel.cs" />
<Compile Include="ConfigModels\ModBlockConfigModel.cs" />
<Compile Include="ConfigModels\RiskConfigModel.cs" />
@@ -104,12 +106,14 @@
<Compile Include="DTOModels\AlarmModels\DTOAlarmHistoricModel.cs" />
<Compile Include="DTOModels\AlarmModels\DTOAlarmsModel.cs" />
<Compile Include="DTOModels\DTOAxesModel.cs" />
<Compile Include="DTOModels\DTOAxisNameModel.cs" />
<Compile Include="DTOModels\DTOClientConfigurationModel.cs" />
<Compile Include="DTOModels\DTOM156InputModel.cs" />
<Compile Include="DTOModels\ThAxes\DTOAxisInfoModel.cs" />
<Compile Include="DTOModels\ThModules\DTOModulesBlock.cs" />
<Compile Include="DTOModels\ThProd\DTOProdInfo.cs" />
<Compile Include="DTOModels\ThProd\DTOThermoPanelProd.cs" />
<Compile Include="DTOModels\ThProd\DTOThermoProd.cs" />
<Compile Include="DTOModels\ThRecipe\DTORecipeStatus.cs" />
<Compile Include="DTOModels\ThRecipe\LiveData.cs" />
<Compile Include="DTOModels\ThWarmers\DTOWarmers.cs" />
<Compile Include="DTOModels\ThRecipe\DTORecipeParam.cs" />
+2863 -2643
View File
File diff suppressed because it is too large Load Diff
+52 -39
View File
@@ -611,7 +611,9 @@ namespace Thermo.Active.NC
{
try
{
ReadLiveData();
RecipeLiveData = readLiveData();
// salva current
SaveRecipeCurrent();
}
catch (XmlException ex)
{
@@ -632,9 +634,9 @@ namespace Thermo.Active.NC
/// <summary>
/// Try to load live data from json persistence file
/// </summary>
public static bool ReadLiveData()
public static LiveData readLiveData()
{
bool answ = false;
LiveData answ = null;
if (File.Exists(LIVE_RECIPE_PATH))
{
// load all text data
@@ -642,11 +644,10 @@ namespace Thermo.Active.NC
try
{
// deserialize to object
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
answ = JsonConvert.DeserializeObject<LiveData>(rawData);
}
catch
{ }
answ = true;
}
else
{
@@ -655,18 +656,15 @@ namespace Thermo.Active.NC
try
{
// deserialize to object
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
answ = JsonConvert.DeserializeObject<LiveData>(rawData);
// from template --> reset (if present) overview data...
foreach (var item in RecipeLiveData.RecipeOverview)
{
RecipeLiveData.RecipeOverview[item.Key] = RecipeCatStatus.Unchanged;
answ.RecipeOverview[item.Key] = RecipeCatStatus.Unchanged;
}
}
catch
{ }
// salva current
SaveRecipeCurrent();
answ = true;
}
// rendo se fatto
return answ;
@@ -674,9 +672,9 @@ namespace Thermo.Active.NC
/// <summary>
/// Try to load selected recipe to live data (memory and json persistence file)
/// </summary>
public static bool LoadRecipe(string filePath)
public static LiveData LoadRecipe(string filePath)
{
bool answ = false;
LiveData answ = null;
// check file extension: accetta json / rcp / tpl
if (!(filePath.EndsWith(".json") || filePath.EndsWith(".rcp") || filePath.EndsWith(".tpl")))
{
@@ -689,27 +687,29 @@ namespace Thermo.Active.NC
if (!Path.IsPathRooted(filePath))
{
// controllo se ha path della recipe directory
if (!filePath.Contains(RECIPE_DIRECTORY) && filePath != RECIPE_TEMPLATE_PATH)
if (!filePath.Contains(NcConfig.SharedPath) && filePath != RECIPE_TEMPLATE_PATH)
{
// aggiungo base path!
filePath = RECIPE_DIRECTORY + filePath;
filePath = NcConfig.SharedPath + filePath;
}
}
if (File.Exists(filePath))
{
answ = true;
// load all text data
var rawData = File.ReadAllText(filePath);
try
{
// deserialize to object
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
answ = JsonConvert.DeserializeObject<LiveData>(rawData);
// fix directory se mancasse
answ.RecipeDir = $"{Path.GetDirectoryName(filePath)}\\";
// fix Modifica dati
answ.hasChanged = false;
// fix NOME ricetta
answ.RecipeName = fileName;
}
catch
{ }
// update current live data!
SaveRecipeCurrent();
}
// rendo se fatto
return answ;
@@ -731,6 +731,10 @@ namespace Thermo.Active.NC
{
// deserialize to object
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
// fix directory default
RecipeLiveData.RecipeDir = NcConfig.SharedPath;
// fix Modifica dati
RecipeLiveData.hasChanged = false;
// from template --> reset (if present) overview data...
if (RecipeLiveData.RecipeOverview != null)
{
@@ -758,16 +762,16 @@ namespace Thermo.Active.NC
bool answ = false;
try
{
answ = true;
// serialize
string rawData = JsonConvert.SerializeObject(RecipeLiveData, Newtonsoft.Json.Formatting.Indented);
// save live!
var dir = Path.GetDirectoryName(LIVE_RECIPE_PATH);
var dir = $"{Path.GetDirectoryName(LIVE_RECIPE_PATH)}\\";
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
File.WriteAllText(LIVE_RECIPE_PATH, rawData);
answ = true;
}
catch
{ }
@@ -786,31 +790,38 @@ namespace Thermo.Active.NC
try
{
// save live!
var dir = Path.GetDirectoryName(RECIPE_DIRECTORY);
var dir = $"{Path.GetDirectoryName(NcConfig.SharedPath)}\\";
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
// se non ho name valido --> FIX come svg...
if (!filePath.EndsWith(".svg"))
{
filePath = RecipeLiveData.RecipeName.Replace(".rcp", ".svg");
}
// Delete previous image
if (File.Exists(filePath))
{
File.Delete(filePath);
}
if (!Path.IsPathRooted(filePath))
{
// aggiungo base path!
filePath = RECIPE_DIRECTORY + filePath;
// aggiungo base path! se ho path della ricetta corrente uso quella...
string currPath = RecipeLiveData.RecipeDir;
if (!string.IsNullOrEmpty(currPath))
{
currPath = NcConfig.SharedPath;
}
filePath = $"{currPath}{filePath}";
}
// Save NEW image
File.WriteAllBytes(filePath, fileData);
imageUploaded = true;
}
catch
{ }
return imageUploaded;
}
/// <summary>
@@ -820,12 +831,13 @@ namespace Thermo.Active.NC
{
// duplicate data...
LiveData data2save = RecipeLiveData;
data2save.RecipeDir = NcConfig.SharedPath;
// template --> reset overview data...
data2save.RecipeOverview = new Dictionary<RecipeSection, RecipeCatStatus>();
return SaveRecipe(RECIPE_TEMPLATE_PATH, data2save);
}
/// <summary>
/// Try to save live recipe to selected filePath
/// Try to save LIVE recipe to selected filePath
/// </summary>
public static bool SaveRecipe(string filePath, LiveData currRecipe)
{
@@ -839,24 +851,25 @@ namespace Thermo.Active.NC
// default: ricetta!
filePath += ".rcp";
}
string fileName = Path.GetFileName(filePath);
// fix name!
currRecipe.RecipeName = fileName;
// serialize
string rawData = JsonConvert.SerializeObject(currRecipe, Newtonsoft.Json.Formatting.Indented);
// save live!
File.WriteAllText(LIVE_RECIPE_PATH, rawData);
// verifica path
if (!Path.IsPathRooted(filePath))
{
// controllo se ha path della recipe directory
if (!filePath.Contains(RECIPE_DIRECTORY) && filePath != RECIPE_TEMPLATE_PATH)
if (!filePath.Contains(NcConfig.SharedPath) && filePath != RECIPE_TEMPLATE_PATH)
{
// aggiungo base path!
filePath = RECIPE_DIRECTORY + filePath;
filePath = NcConfig.SharedPath + filePath;
}
}
// fix name, path, modifica!
currRecipe.RecipeName = Path.GetFileName(filePath);
currRecipe.RecipeDir = $"{Path.GetDirectoryName(filePath)}\\";
currRecipe.hasChanged = false;
// serialize
string rawData = JsonConvert.SerializeObject(currRecipe, Newtonsoft.Json.Formatting.Indented);
// save live!
File.WriteAllText(LIVE_RECIPE_PATH, rawData);
// save!
File.WriteAllText(filePath, rawData);
}
+1
View File
@@ -37,6 +37,7 @@
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
+400 -400
View File
@@ -30,436 +30,436 @@ namespace Thermo.Active.UI
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerControlWindow));
this.StepNotifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
this.NotifyIconMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
this.adminMachineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.passwordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.goBackToStandardModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator = new System.Windows.Forms.ToolStripSeparator();
this.resetSpindleHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.resetCountersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.resetMachineWorkingHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.StopServerItem = new System.Windows.Forms.ToolStripMenuItem();
this.TXTstatus = new System.Windows.Forms.TextBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.stopServerButton = new System.Windows.Forms.Button();
this.openUiButton = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.label3 = new System.Windows.Forms.Label();
this.TXTVersion = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.TXTType = new System.Windows.Forms.Label();
this.CHNcConnected = new System.Windows.Forms.CheckBox();
this.label2 = new System.Windows.Forms.Label();
this.TXTMachId = new System.Windows.Forms.Label();
this.LISTThreadStatus = new System.Windows.Forms.ListView();
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.menuToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.closeCMSServerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.serviceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.passwordToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.goBackToStandardModeToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.resetSpindleHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.resetCountersToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.resetMachineWorkingHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.NotifyIconMenu.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.panel1.SuspendLayout();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
// StepNotifyIcon
//
this.StepNotifyIcon.BalloonTipText = "Active";
this.StepNotifyIcon.ContextMenuStrip = this.NotifyIconMenu;
this.StepNotifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("StepNotifyIcon.Icon")));
this.StepNotifyIcon.Text = "Active";
this.StepNotifyIcon.Visible = true;
this.StepNotifyIcon.DoubleClick += new System.EventHandler(this.NotifyIcon_Click);
//
// NotifyIconMenu
//
this.NotifyIconMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerControlWindow));
this.StepNotifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
this.NotifyIconMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
this.adminMachineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.passwordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.goBackToStandardModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator = new System.Windows.Forms.ToolStripSeparator();
this.resetSpindleHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.resetCountersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.resetMachineWorkingHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.StopServerItem = new System.Windows.Forms.ToolStripMenuItem();
this.TXTstatus = new System.Windows.Forms.TextBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.stopServerButton = new System.Windows.Forms.Button();
this.openUiButton = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.label3 = new System.Windows.Forms.Label();
this.TXTVersion = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.TXTType = new System.Windows.Forms.Label();
this.CHNcConnected = new System.Windows.Forms.CheckBox();
this.label2 = new System.Windows.Forms.Label();
this.TXTMachId = new System.Windows.Forms.Label();
this.LISTThreadStatus = new System.Windows.Forms.ListView();
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.menuToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.closeCMSServerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.serviceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.passwordToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.goBackToStandardModeToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.resetSpindleHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.resetCountersToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.resetMachineWorkingHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.NotifyIconMenu.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.panel1.SuspendLayout();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
// StepNotifyIcon
//
this.StepNotifyIcon.BalloonTipText = "Active";
this.StepNotifyIcon.ContextMenuStrip = this.NotifyIconMenu;
this.StepNotifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("StepNotifyIcon.Icon")));
this.StepNotifyIcon.Text = "Active";
this.StepNotifyIcon.Visible = true;
this.StepNotifyIcon.DoubleClick += new System.EventHandler(this.NotifyIcon_Click);
//
// NotifyIconMenu
//
this.NotifyIconMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.adminMachineToolStripMenuItem,
this.toolStripSeparator3,
this.StopServerItem});
this.NotifyIconMenu.Name = "NotifyIconMenu";
this.NotifyIconMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
this.NotifyIconMenu.Size = new System.Drawing.Size(175, 54);
//
// adminMachineToolStripMenuItem
//
this.adminMachineToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.NotifyIconMenu.Name = "NotifyIconMenu";
this.NotifyIconMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
this.NotifyIconMenu.Size = new System.Drawing.Size(175, 54);
//
// adminMachineToolStripMenuItem
//
this.adminMachineToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.passwordToolStripMenuItem,
this.goBackToStandardModeToolStripMenuItem,
this.toolStripSeparator,
this.resetSpindleHoursToolStripMenuItem,
this.resetCountersToolStripMenuItem,
this.resetMachineWorkingHoursToolStripMenuItem});
this.adminMachineToolStripMenuItem.Name = "adminMachineToolStripMenuItem";
this.adminMachineToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.adminMachineToolStripMenuItem.Text = "Service";
//
// passwordToolStripMenuItem
//
this.passwordToolStripMenuItem.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Lock_icon;
this.passwordToolStripMenuItem.Name = "passwordToolStripMenuItem";
this.passwordToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.passwordToolStripMenuItem.Text = "Password";
this.passwordToolStripMenuItem.Click += new System.EventHandler(this.passwordToolStripMenuItem_Click);
//
// goBackToStandardModeToolStripMenuItem
//
this.goBackToStandardModeToolStripMenuItem.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Unlock_icon;
this.goBackToStandardModeToolStripMenuItem.Name = "goBackToStandardModeToolStripMenuItem";
this.goBackToStandardModeToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.goBackToStandardModeToolStripMenuItem.Text = "Go back to standard mode";
this.goBackToStandardModeToolStripMenuItem.Visible = false;
this.goBackToStandardModeToolStripMenuItem.Click += new System.EventHandler(this.goBackToStandardModeToolStripMenuItem_Click);
//
// toolStripSeparator
//
this.toolStripSeparator.Name = "toolStripSeparator";
this.toolStripSeparator.Size = new System.Drawing.Size(231, 6);
this.toolStripSeparator.Visible = false;
//
// resetSpindleHoursToolStripMenuItem
//
this.resetSpindleHoursToolStripMenuItem.Name = "resetSpindleHoursToolStripMenuItem";
this.resetSpindleHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.resetSpindleHoursToolStripMenuItem.Text = "Reset Spindle Active Time";
this.resetSpindleHoursToolStripMenuItem.Visible = false;
this.resetSpindleHoursToolStripMenuItem.Click += new System.EventHandler(this.resetSpindleHoursToolStripMenuItem_Click);
//
// resetCountersToolStripMenuItem
//
this.resetCountersToolStripMenuItem.Name = "resetCountersToolStripMenuItem";
this.resetCountersToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.resetCountersToolStripMenuItem.Text = "Reset CMS-Active Counters";
this.resetCountersToolStripMenuItem.Visible = false;
this.resetCountersToolStripMenuItem.Click += new System.EventHandler(this.resetCountersToolStripMenuItem_Click);
//
// resetMachineWorkingHoursToolStripMenuItem
//
this.resetMachineWorkingHoursToolStripMenuItem.Name = "resetMachineWorkingHoursToolStripMenuItem";
this.resetMachineWorkingHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.resetMachineWorkingHoursToolStripMenuItem.Text = "Reset Machine Working Hours";
this.resetMachineWorkingHoursToolStripMenuItem.Visible = false;
this.resetMachineWorkingHoursToolStripMenuItem.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem_Click);
//
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(171, 6);
//
// StopServerItem
//
this.StopServerItem.Name = "StopServerItem";
this.StopServerItem.Size = new System.Drawing.Size(174, 22);
this.StopServerItem.Text = "Close Active Server";
this.StopServerItem.Click += new System.EventHandler(this.StopServerItem_Click);
//
// TXTstatus
//
this.TXTstatus.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
this.adminMachineToolStripMenuItem.Name = "adminMachineToolStripMenuItem";
this.adminMachineToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.adminMachineToolStripMenuItem.Text = "Service";
//
// passwordToolStripMenuItem
//
this.passwordToolStripMenuItem.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Lock_icon;
this.passwordToolStripMenuItem.Name = "passwordToolStripMenuItem";
this.passwordToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.passwordToolStripMenuItem.Text = "Password";
this.passwordToolStripMenuItem.Click += new System.EventHandler(this.passwordToolStripMenuItem_Click);
//
// goBackToStandardModeToolStripMenuItem
//
this.goBackToStandardModeToolStripMenuItem.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Unlock_icon;
this.goBackToStandardModeToolStripMenuItem.Name = "goBackToStandardModeToolStripMenuItem";
this.goBackToStandardModeToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.goBackToStandardModeToolStripMenuItem.Text = "Go back to standard mode";
this.goBackToStandardModeToolStripMenuItem.Visible = false;
this.goBackToStandardModeToolStripMenuItem.Click += new System.EventHandler(this.goBackToStandardModeToolStripMenuItem_Click);
//
// toolStripSeparator
//
this.toolStripSeparator.Name = "toolStripSeparator";
this.toolStripSeparator.Size = new System.Drawing.Size(231, 6);
this.toolStripSeparator.Visible = false;
//
// resetSpindleHoursToolStripMenuItem
//
this.resetSpindleHoursToolStripMenuItem.Name = "resetSpindleHoursToolStripMenuItem";
this.resetSpindleHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.resetSpindleHoursToolStripMenuItem.Text = "Reset Spindle Active Time";
this.resetSpindleHoursToolStripMenuItem.Visible = false;
this.resetSpindleHoursToolStripMenuItem.Click += new System.EventHandler(this.resetSpindleHoursToolStripMenuItem_Click);
//
// resetCountersToolStripMenuItem
//
this.resetCountersToolStripMenuItem.Name = "resetCountersToolStripMenuItem";
this.resetCountersToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.resetCountersToolStripMenuItem.Text = "Reset CMS-Active Counters";
this.resetCountersToolStripMenuItem.Visible = false;
this.resetCountersToolStripMenuItem.Click += new System.EventHandler(this.resetCountersToolStripMenuItem_Click);
//
// resetMachineWorkingHoursToolStripMenuItem
//
this.resetMachineWorkingHoursToolStripMenuItem.Name = "resetMachineWorkingHoursToolStripMenuItem";
this.resetMachineWorkingHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.resetMachineWorkingHoursToolStripMenuItem.Text = "Reset Machine Working Hours";
this.resetMachineWorkingHoursToolStripMenuItem.Visible = false;
this.resetMachineWorkingHoursToolStripMenuItem.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem_Click);
//
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(171, 6);
//
// StopServerItem
//
this.StopServerItem.Name = "StopServerItem";
this.StopServerItem.Size = new System.Drawing.Size(174, 22);
this.StopServerItem.Text = "Close Active Server";
this.StopServerItem.Click += new System.EventHandler(this.StopServerItem_Click);
//
// TXTstatus
//
this.TXTstatus.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.SetColumnSpan(this.TXTstatus, 2);
this.TXTstatus.Enabled = false;
this.TXTstatus.Location = new System.Drawing.Point(3, 435);
this.TXTstatus.Name = "TXTstatus";
this.TXTstatus.ReadOnly = true;
this.TXTstatus.Size = new System.Drawing.Size(438, 20);
this.TXTstatus.TabIndex = 8;
this.TXTstatus.Text = "...";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.tableLayoutPanel1.SetColumnSpan(this.TXTstatus, 2);
this.TXTstatus.Enabled = false;
this.TXTstatus.Location = new System.Drawing.Point(3, 435);
this.TXTstatus.Name = "TXTstatus";
this.TXTstatus.ReadOnly = true;
this.TXTstatus.Size = new System.Drawing.Size(438, 20);
this.TXTstatus.TabIndex = 8;
this.TXTstatus.Text = "...";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.stopServerButton, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.openUiButton, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.TXTstatus, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.LISTThreadStatus, 0, 0);
this.tableLayoutPanel1.Location = new System.Drawing.Point(12, 27);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 89F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 54F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(444, 457);
this.tableLayoutPanel1.TabIndex = 58;
//
// stopServerButton
//
this.stopServerButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.stopServerButton, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.openUiButton, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.TXTstatus, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.LISTThreadStatus, 0, 0);
this.tableLayoutPanel1.Location = new System.Drawing.Point(12, 27);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 89F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 54F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(444, 457);
this.tableLayoutPanel1.TabIndex = 58;
//
// stopServerButton
//
this.stopServerButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.stopServerButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stopServerButton.Location = new System.Drawing.Point(225, 381);
this.stopServerButton.Name = "stopServerButton";
this.stopServerButton.Size = new System.Drawing.Size(216, 48);
this.stopServerButton.TabIndex = 3;
this.stopServerButton.TabStop = false;
this.stopServerButton.Text = "Close Active";
this.stopServerButton.Click += new System.EventHandler(this.StopServerButton_Click);
//
// openUiButton
//
this.openUiButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.stopServerButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.stopServerButton.Location = new System.Drawing.Point(225, 381);
this.stopServerButton.Name = "stopServerButton";
this.stopServerButton.Size = new System.Drawing.Size(216, 48);
this.stopServerButton.TabIndex = 3;
this.stopServerButton.TabStop = false;
this.stopServerButton.Text = "Close Active";
this.stopServerButton.Click += new System.EventHandler(this.StopServerButton_Click);
//
// openUiButton
//
this.openUiButton.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.openUiButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.openUiButton.Location = new System.Drawing.Point(3, 381);
this.openUiButton.Name = "openUiButton";
this.openUiButton.Size = new System.Drawing.Size(216, 48);
this.openUiButton.TabIndex = 58;
this.openUiButton.TabStop = false;
this.openUiButton.Text = "Open Active Client";
this.openUiButton.Click += new System.EventHandler(this.OpenUiButton_Click);
//
// panel1
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.openUiButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.openUiButton.Location = new System.Drawing.Point(3, 381);
this.openUiButton.Name = "openUiButton";
this.openUiButton.Size = new System.Drawing.Size(216, 48);
this.openUiButton.TabIndex = 58;
this.openUiButton.TabStop = false;
this.openUiButton.Text = "Open Active Client";
this.openUiButton.Click += new System.EventHandler(this.OpenUiButton_Click);
//
// panel1
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.SetColumnSpan(this.panel1, 2);
this.panel1.Controls.Add(this.label3);
this.panel1.Controls.Add(this.TXTVersion);
this.panel1.Controls.Add(this.label1);
this.panel1.Controls.Add(this.TXTType);
this.panel1.Controls.Add(this.CHNcConnected);
this.panel1.Controls.Add(this.label2);
this.panel1.Controls.Add(this.TXTMachId);
this.panel1.Location = new System.Drawing.Point(3, 292);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(438, 83);
this.panel1.TabIndex = 9;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(3, 49);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(78, 13);
this.label3.TabIndex = 59;
this.label3.Text = "Active Version:";
//
// TXTVersion
//
this.TXTVersion.AutoSize = true;
this.TXTVersion.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TXTVersion.Location = new System.Drawing.Point(87, 49);
this.TXTVersion.Name = "TXTVersion";
this.TXTVersion.Size = new System.Drawing.Size(19, 13);
this.TXTVersion.TabIndex = 58;
this.TXTVersion.Text = "---";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(3, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(44, 13);
this.label1.TabIndex = 54;
this.label1.Text = "Vendor:";
//
// TXTType
//
this.TXTType.AutoSize = true;
this.TXTType.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TXTType.Location = new System.Drawing.Point(48, 24);
this.TXTType.Name = "TXTType";
this.TXTType.Size = new System.Drawing.Size(19, 13);
this.TXTType.TabIndex = 53;
this.TXTType.Text = "---";
//
// CHNcConnected
//
this.CHNcConnected.AutoCheck = false;
this.CHNcConnected.ForeColor = System.Drawing.SystemColors.ControlText;
this.CHNcConnected.Location = new System.Drawing.Point(340, 24);
this.CHNcConnected.Name = "CHNcConnected";
this.CHNcConnected.Size = new System.Drawing.Size(81, 20);
this.CHNcConnected.TabIndex = 52;
this.CHNcConnected.Text = "Connected";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(142, 24);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(63, 13);
this.label2.TabIndex = 57;
this.label2.Text = "Machine Id:";
//
// TXTMachId
//
this.TXTMachId.AutoSize = true;
this.TXTMachId.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TXTMachId.Location = new System.Drawing.Point(240, 24);
this.TXTMachId.Name = "TXTMachId";
this.TXTMachId.Size = new System.Drawing.Size(19, 13);
this.TXTMachId.TabIndex = 56;
this.TXTMachId.Text = "---";
//
// LISTThreadStatus
//
this.LISTThreadStatus.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.tableLayoutPanel1.SetColumnSpan(this.panel1, 2);
this.panel1.Controls.Add(this.label3);
this.panel1.Controls.Add(this.TXTVersion);
this.panel1.Controls.Add(this.label1);
this.panel1.Controls.Add(this.TXTType);
this.panel1.Controls.Add(this.CHNcConnected);
this.panel1.Controls.Add(this.label2);
this.panel1.Controls.Add(this.TXTMachId);
this.panel1.Location = new System.Drawing.Point(3, 292);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(438, 83);
this.panel1.TabIndex = 9;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(3, 49);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(78, 13);
this.label3.TabIndex = 59;
this.label3.Text = "Active Version:";
//
// TXTVersion
//
this.TXTVersion.AutoSize = true;
this.TXTVersion.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TXTVersion.Location = new System.Drawing.Point(87, 49);
this.TXTVersion.Name = "TXTVersion";
this.TXTVersion.Size = new System.Drawing.Size(19, 13);
this.TXTVersion.TabIndex = 58;
this.TXTVersion.Text = "---";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(3, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(44, 13);
this.label1.TabIndex = 54;
this.label1.Text = "Vendor:";
//
// TXTType
//
this.TXTType.AutoSize = true;
this.TXTType.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TXTType.Location = new System.Drawing.Point(48, 24);
this.TXTType.Name = "TXTType";
this.TXTType.Size = new System.Drawing.Size(19, 13);
this.TXTType.TabIndex = 53;
this.TXTType.Text = "---";
//
// CHNcConnected
//
this.CHNcConnected.AutoCheck = false;
this.CHNcConnected.ForeColor = System.Drawing.SystemColors.ControlText;
this.CHNcConnected.Location = new System.Drawing.Point(340, 24);
this.CHNcConnected.Name = "CHNcConnected";
this.CHNcConnected.Size = new System.Drawing.Size(81, 20);
this.CHNcConnected.TabIndex = 52;
this.CHNcConnected.Text = "Connected";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(142, 24);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(63, 13);
this.label2.TabIndex = 57;
this.label2.Text = "Machine Id:";
//
// TXTMachId
//
this.TXTMachId.AutoSize = true;
this.TXTMachId.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.TXTMachId.Location = new System.Drawing.Point(240, 24);
this.TXTMachId.Name = "TXTMachId";
this.TXTMachId.Size = new System.Drawing.Size(19, 13);
this.TXTMachId.TabIndex = 56;
this.TXTMachId.Text = "---";
//
// LISTThreadStatus
//
this.LISTThreadStatus.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1,
this.columnHeader2});
this.tableLayoutPanel1.SetColumnSpan(this.LISTThreadStatus, 2);
this.LISTThreadStatus.Dock = System.Windows.Forms.DockStyle.Fill;
this.LISTThreadStatus.HideSelection = false;
this.LISTThreadStatus.Location = new System.Drawing.Point(3, 3);
this.LISTThreadStatus.Name = "LISTThreadStatus";
this.LISTThreadStatus.Size = new System.Drawing.Size(438, 283);
this.LISTThreadStatus.TabIndex = 59;
this.LISTThreadStatus.UseCompatibleStateImageBehavior = false;
this.LISTThreadStatus.View = System.Windows.Forms.View.Details;
//
// columnHeader1
//
this.columnHeader1.Text = "Thread Name";
this.columnHeader1.Width = 328;
//
// columnHeader2
//
this.columnHeader2.Text = "Time";
this.columnHeader2.Width = 78;
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tableLayoutPanel1.SetColumnSpan(this.LISTThreadStatus, 2);
this.LISTThreadStatus.Dock = System.Windows.Forms.DockStyle.Fill;
this.LISTThreadStatus.HideSelection = false;
this.LISTThreadStatus.Location = new System.Drawing.Point(3, 3);
this.LISTThreadStatus.Name = "LISTThreadStatus";
this.LISTThreadStatus.Size = new System.Drawing.Size(438, 283);
this.LISTThreadStatus.TabIndex = 59;
this.LISTThreadStatus.UseCompatibleStateImageBehavior = false;
this.LISTThreadStatus.View = System.Windows.Forms.View.Details;
//
// columnHeader1
//
this.columnHeader1.Text = "Thread Name";
this.columnHeader1.Width = 328;
//
// columnHeader2
//
this.columnHeader2.Text = "Time";
this.columnHeader2.Width = 78;
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(468, 24);
this.menuStrip1.TabIndex = 59;
this.menuStrip1.Text = "menuStrip1";
//
// menuToolStripMenuItem
//
this.menuToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(468, 24);
this.menuStrip1.TabIndex = 59;
this.menuStrip1.Text = "menuStrip1";
//
// menuToolStripMenuItem
//
this.menuToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.closeCMSServerToolStripMenuItem,
this.toolStripSeparator2,
this.serviceToolStripMenuItem});
this.menuToolStripMenuItem.Name = "menuToolStripMenuItem";
this.menuToolStripMenuItem.Size = new System.Drawing.Size(50, 20);
this.menuToolStripMenuItem.Text = "Menu";
//
// closeCMSServerToolStripMenuItem
//
this.closeCMSServerToolStripMenuItem.Name = "closeCMSServerToolStripMenuItem";
this.closeCMSServerToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.closeCMSServerToolStripMenuItem.Text = "Close Active Server";
this.closeCMSServerToolStripMenuItem.Click += new System.EventHandler(this.closeCMSServerToolStripMenuItem_Click);
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(171, 6);
//
// serviceToolStripMenuItem
//
this.serviceToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuToolStripMenuItem.Name = "menuToolStripMenuItem";
this.menuToolStripMenuItem.Size = new System.Drawing.Size(50, 20);
this.menuToolStripMenuItem.Text = "Menu";
//
// closeCMSServerToolStripMenuItem
//
this.closeCMSServerToolStripMenuItem.Name = "closeCMSServerToolStripMenuItem";
this.closeCMSServerToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.closeCMSServerToolStripMenuItem.Text = "Close Active Server";
this.closeCMSServerToolStripMenuItem.Click += new System.EventHandler(this.closeCMSServerToolStripMenuItem_Click);
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(171, 6);
//
// serviceToolStripMenuItem
//
this.serviceToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.passwordToolStripMenuItem1,
this.goBackToStandardModeToolStripMenuItem1,
this.toolStripSeparator1,
this.resetSpindleHoursToolStripMenuItem1,
this.resetCountersToolStripMenuItem1,
this.resetMachineWorkingHoursToolStripMenuItem1});
this.serviceToolStripMenuItem.Name = "serviceToolStripMenuItem";
this.serviceToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.serviceToolStripMenuItem.Text = "Service";
//
// passwordToolStripMenuItem1
//
this.passwordToolStripMenuItem1.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Lock_icon;
this.passwordToolStripMenuItem1.Name = "passwordToolStripMenuItem1";
this.passwordToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.passwordToolStripMenuItem1.Text = "Password";
this.passwordToolStripMenuItem1.Click += new System.EventHandler(this.passwordToolStripMenuItem1_Click);
//
// goBackToStandardModeToolStripMenuItem1
//
this.goBackToStandardModeToolStripMenuItem1.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Unlock_icon;
this.goBackToStandardModeToolStripMenuItem1.Name = "goBackToStandardModeToolStripMenuItem1";
this.goBackToStandardModeToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.goBackToStandardModeToolStripMenuItem1.Text = "Go back to standard mode";
this.goBackToStandardModeToolStripMenuItem1.Visible = false;
this.goBackToStandardModeToolStripMenuItem1.Click += new System.EventHandler(this.goBackToStandardModeToolStripMenuItem1_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(231, 6);
this.toolStripSeparator1.Visible = false;
//
// resetSpindleHoursToolStripMenuItem1
//
this.resetSpindleHoursToolStripMenuItem1.Name = "resetSpindleHoursToolStripMenuItem1";
this.resetSpindleHoursToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.resetSpindleHoursToolStripMenuItem1.Text = "Reset Spindle Active Time";
this.resetSpindleHoursToolStripMenuItem1.Visible = false;
this.resetSpindleHoursToolStripMenuItem1.Click += new System.EventHandler(this.resetSpindleHoursToolStripMenuItem1_Click);
//
// resetCountersToolStripMenuItem1
//
this.resetCountersToolStripMenuItem1.Name = "resetCountersToolStripMenuItem1";
this.resetCountersToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.resetCountersToolStripMenuItem1.Text = "Reset CMS-Active Counters";
this.resetCountersToolStripMenuItem1.Visible = false;
this.resetCountersToolStripMenuItem1.Click += new System.EventHandler(this.resetCountersToolStripMenuItem1_Click);
//
// resetMachineWorkingHoursToolStripMenuItem1
//
this.resetMachineWorkingHoursToolStripMenuItem1.Name = "resetMachineWorkingHoursToolStripMenuItem1";
this.resetMachineWorkingHoursToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.resetMachineWorkingHoursToolStripMenuItem1.Text = "Reset Machine Working Hours";
this.resetMachineWorkingHoursToolStripMenuItem1.Visible = false;
this.resetMachineWorkingHoursToolStripMenuItem1.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem1_Click);
//
// ServerControlWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(468, 496);
this.Controls.Add(this.menuStrip1);
this.Controls.Add(this.tableLayoutPanel1);
this.ForeColor = System.Drawing.SystemColors.ControlText;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1;
this.Margin = new System.Windows.Forms.Padding(2);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ServerControlWindow";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ServerControlWindow_FormClosing);
this.Load += new System.EventHandler(this.ServerControlWindow_Load);
this.NotifyIconMenu.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
this.serviceToolStripMenuItem.Name = "serviceToolStripMenuItem";
this.serviceToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.serviceToolStripMenuItem.Text = "Service";
//
// passwordToolStripMenuItem1
//
this.passwordToolStripMenuItem1.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Lock_icon;
this.passwordToolStripMenuItem1.Name = "passwordToolStripMenuItem1";
this.passwordToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.passwordToolStripMenuItem1.Text = "Password";
this.passwordToolStripMenuItem1.Click += new System.EventHandler(this.passwordToolStripMenuItem1_Click);
//
// goBackToStandardModeToolStripMenuItem1
//
this.goBackToStandardModeToolStripMenuItem1.Image = global::Thermo.Active.UI.Properties.Resources.Apps_Unlock_icon;
this.goBackToStandardModeToolStripMenuItem1.Name = "goBackToStandardModeToolStripMenuItem1";
this.goBackToStandardModeToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.goBackToStandardModeToolStripMenuItem1.Text = "Go back to standard mode";
this.goBackToStandardModeToolStripMenuItem1.Visible = false;
this.goBackToStandardModeToolStripMenuItem1.Click += new System.EventHandler(this.goBackToStandardModeToolStripMenuItem1_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(231, 6);
this.toolStripSeparator1.Visible = false;
//
// resetSpindleHoursToolStripMenuItem1
//
this.resetSpindleHoursToolStripMenuItem1.Name = "resetSpindleHoursToolStripMenuItem1";
this.resetSpindleHoursToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.resetSpindleHoursToolStripMenuItem1.Text = "Reset Spindle Active Time";
this.resetSpindleHoursToolStripMenuItem1.Visible = false;
this.resetSpindleHoursToolStripMenuItem1.Click += new System.EventHandler(this.resetSpindleHoursToolStripMenuItem1_Click);
//
// resetCountersToolStripMenuItem1
//
this.resetCountersToolStripMenuItem1.Name = "resetCountersToolStripMenuItem1";
this.resetCountersToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.resetCountersToolStripMenuItem1.Text = "Reset CMS-Active Counters";
this.resetCountersToolStripMenuItem1.Visible = false;
this.resetCountersToolStripMenuItem1.Click += new System.EventHandler(this.resetCountersToolStripMenuItem1_Click);
//
// resetMachineWorkingHoursToolStripMenuItem1
//
this.resetMachineWorkingHoursToolStripMenuItem1.Name = "resetMachineWorkingHoursToolStripMenuItem1";
this.resetMachineWorkingHoursToolStripMenuItem1.Size = new System.Drawing.Size(234, 22);
this.resetMachineWorkingHoursToolStripMenuItem1.Text = "Reset Machine Working Hours";
this.resetMachineWorkingHoursToolStripMenuItem1.Visible = false;
this.resetMachineWorkingHoursToolStripMenuItem1.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem1_Click);
//
// ServerControlWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(468, 496);
this.Controls.Add(this.menuStrip1);
this.Controls.Add(this.tableLayoutPanel1);
this.ForeColor = System.Drawing.SystemColors.ControlText;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1;
this.Margin = new System.Windows.Forms.Padding(2);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ServerControlWindow";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ServerControlWindow_FormClosing);
this.Load += new System.EventHandler(this.ServerControlWindow_Load);
this.NotifyIconMenu.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
+15
View File
@@ -70,6 +70,21 @@ namespace Thermo.Active.Utils
return answ;
}
/// <summary>
/// Conversion string --> TACT_AXIS_TYPE
/// </summary>
/// <param name="strValue"></param>
/// <returns></returns>
public static TACT_AXES_TYPE GetTActAxes_Type(string strValue)
{
TACT_AXES_TYPE answ = TACT_AXES_TYPE.NA;
try
{
answ = (TACT_AXES_TYPE)Enum.Parse(typeof(TACT_AXES_TYPE), strValue);
}
catch { }
return answ;
}
/// <summary>
/// Conversion string --> TACT_MBLOCK_TYPE
/// </summary>
/// <param name="strValue"></param>
+6 -3
View File
@@ -14,6 +14,9 @@
<add key="enableDirectoryBrowsing" value="true" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
<add key="ServerServiceName" value="MariaDB" />
<add key="nMaxParamWrite" value="5" />
<add key="delayParamWrite" value="5" />
<add key="ewmaPar100" value="40" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.6.2" />
@@ -108,7 +111,7 @@
<add name="SignalR-Bus" />
</listeners>
</source>
<source name="SignalR.Transports.WebSocketTransport">
<!-- <source name="SignalR.Transports.WebSocketTransport">
<listeners>
<add name="SignalR-Transports" />
</listeners>
@@ -132,7 +135,7 @@
<listeners>
<add name="SignalR-Transports" />
</listeners>
</source>
</source> -->
<source name="SignalR.ReflectedHubDescriptorProvider">
<listeners>
<add name="SignalR-Init" />
@@ -146,7 +149,7 @@
<!-- Specifies the trace writer for output -->
<sharedListeners>
<!-- Listener for transport events -->
<add name="SignalR-Transports" type="System.Diagnostics.TextWriterTraceListener" initializeData="logs/transports.log" />
<!--<add name="SignalR-Transports" type="System.Diagnostics.TextWriterTraceListener" initializeData="logs/transports.log" />-->
<!-- Listener for scaleout provider events -->
<add name="SignalR-Bus" type="System.Diagnostics.TextWriterTraceListener" initializeData="logs/bus.log" />
<!-- Listener for hub discovery events -->
@@ -172,6 +172,7 @@ namespace Thermo.Active.Controllers.SignalR
throw new HubException(libraryError.localizationKey);
}
#if false
[SignalRAuthorize(FunctionAccess = GENERAL, Action = ACTIONS.WRITE)]
public void WriteM155Response(int process, double responseVal)
{
@@ -179,6 +180,20 @@ namespace Thermo.Active.Controllers.SignalR
CmsError libraryError = ncAdapter.WriteM155Data(process, responseVal);
if (libraryError.IsError())
throw new HubException(libraryError.localizationKey);
}
#endif
[SignalRAuthorize(FunctionAccess = GENERAL, Action = ACTIONS.WRITE)]
public void WriteM156Response(int process, double responseVal)
{
using (NcAdapter ncAdapter = new NcAdapter())
{
ncAdapter.Connect();
CmsError cmsError = ncAdapter.WriteM156Data(process, responseVal);
if (cmsError.IsError())
throw new HubException(cmsError.localizationKey);
}
}
[SignalRAuthorize(FunctionAccess = GENERAL, Action = ACTIONS.WRITE)]
@@ -45,6 +45,7 @@ namespace Thermo.Active.Controllers.WebApi
ProdEnabled = SoftwareProdConfig.Enabled,
ProdPath = SoftwareProdConfig.Path,
ExtSoftwares = ExtSoftwaresConfig,
AdditionalParameters = AdditionalParametersConfig,
Autorun = ServerStartupConfig.AutoOpenCmsClient,
EditorPath = ServerStartupConfig.TextEditorPath,
MgiOption = NcConfig.MgiOption,
@@ -55,10 +55,10 @@ namespace Thermo.Active.Controllers.WebApi
Dictionary<string, string> alarmsNames = GetPlcAlarmsTranslations(language);
Dictionary<string, string> headsNames = GetLocalizedHeadsNames(language);
// scada
Dictionary<string, string> scadaTranslations = GetScadaTranslations(language);
Dictionary<string, string> m156Translations = GetM156Translations(language);
// THermo (modules and recipe enums) translations
// Thermo (modules and recipe enums) translations
Dictionary<string, string> thermoTranslations = GetThermoTranslations(language);
@@ -72,7 +72,9 @@ namespace Thermo.Active.Controllers.WebApi
translations = translations.Concat(headsNames).ToDictionary(x => x.Key, x => x.Value);
// Scada
translations = translations.Concat(scadaTranslations).ToDictionary(x => x.Key, x => x.Value);
// Scada
// M156
translations = translations.Concat(m156Translations).ToDictionary(x => x.Key, x => x.Value);
// Thermo
translations = translations.Concat(thermoTranslations).ToDictionary(x => x.Key, x => x.Value);
if (translations == null)
@@ -210,5 +212,31 @@ namespace Thermo.Active.Controllers.WebApi
return translatedNames;
}
public static Dictionary<string, string> GetM156Translations(string language)
{
Dictionary<string, string> translatedNames = new Dictionary<string, string>();
foreach (var input in InputsOperatorConfig)
{
translatedNames.Add(
"m156_title_" + input.Id,
GetValueFromLocalizationList(input.Messages, language, "Title_" + input.Id)
);
if (input.Buttons != null && input.Buttons.Count() > 0)
foreach (var button in input.Buttons)
{
// Add translated button text to the list
// Buttons have a Dictionary<string, string> with the translations
translatedNames.Add(
"m156_" + input.Id + "_button_" + button.Key,
GetValueFromLocalizationList(button.Value, language, "Button_" + button.Key)
);
}
}
return translatedNames;
}
}
}
@@ -45,6 +45,7 @@ namespace Thermo.Active.Controllers.WebApi
// ritorno solo fatto!
return Ok();
}
#if true
/// <summary>
/// Request mode AUTO
/// </summary>
@@ -71,7 +72,8 @@ namespace Thermo.Active.Controllers.WebApi
// ritorno solo fatto!
return Ok();
}
}
#endif
/// <summary>
/// Request mode SETUP
/// </summary>
@@ -100,9 +102,42 @@ namespace Thermo.Active.Controllers.WebApi
return Ok();
}
/// <summary>
/// Set item as scrap
/// </summary>
/// <param name="num">item NUM</param>
/// <param name="isScrap">scrap flag (true/false)</param>
/// <returns></returns>
[Route("setScrap"), HttpPut]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.RECIPE_MANAGER, Action = ACTIONS.READ)]
public IHttpActionResult SetScrap(int num, bool isScrap)
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"NC Not connected! | SetScrap | {libraryError.exception}");
return BadRequest(libraryError.localizationKey);
}
// scrivo sul DB che il pezzo è SCRAPPED
libraryError = ncAdapter.SetScrap(num, isScrap);
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"SetScrap error | {libraryError.exception}");
return BadRequest(libraryError.localizationKey);
}
// ritorno solo fatto!
return Ok();
}
/// <summary>
/// Request start production
/// </summary>
/// <param name="requestQty">item NUM</param>
/// <param name="newWorkOrder">scrap flag (true/false)</param>
/// <returns></returns>
[Route("start"), HttpPut]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.RECIPE_MANAGER, Action = ACTIONS.READ)]
@@ -116,19 +151,73 @@ namespace Thermo.Active.Controllers.WebApi
return BadRequest(libraryError.localizationKey);
}
// scrivo sul PLC il comando strobe richiesta AUTO!
libraryError = ncAdapter.UpdateProdInfoData((short)requestQty, newWorkOrder);
// legacy method
short numCicliRisc = 0;
// scrivo sul PLC pezzi richiesti, cicli riscaldo + comando strobe reset se encessario!
libraryError = ncAdapter.UpdateProdInfoData((short)requestQty, newWorkOrder, numCicliRisc);
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"StartProd error | {libraryError.exception}");
return BadRequest(libraryError.localizationKey);
}
// se new workorder --> registro nuova data lorro!
// se new workorder --> registro nuova data x start lotto!
if (newWorkOrder)
{
ncAdapter.lottoStart = DateTime.Now;
}
// scrivo sul PLC il comando strobe richiesta AUTO!
libraryError = ncAdapter.StrobeMode(Mode.AUTO);
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"RequestAuto error | {libraryError.exception}");
return BadRequest(libraryError.localizationKey);
}
// ritorno solo fatto!
return Ok();
}
/// <summary>
/// Request start production
/// </summary>
/// <param name="requestQty">item NUM</param>
/// <param name="newWorkOrder">scrap flag (true/false)</param>
/// <param name="numCicliRisc">warmup cycle requested (0=none)</param>
/// <returns></returns>
[Route("startFull"), HttpPut]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.RECIPE_MANAGER, Action = ACTIONS.READ)]
public IHttpActionResult StartProdFull(int requestQty, bool newWorkOrder, int numCicliRisc)
{
// Try connection
CmsError libraryError = ncAdapter.Connect();
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"NC Not connected! | StartProd | {libraryError.exception}");
return BadRequest(libraryError.localizationKey);
}
// scrivo sul PLC pezzi richiesti, cicli riscaldo + comando strobe reset se encessario!
libraryError = ncAdapter.UpdateProdInfoData((short)requestQty, newWorkOrder, (short)numCicliRisc);
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"StartProd error | {libraryError.exception}");
return BadRequest(libraryError.localizationKey);
}
// se new workorder --> registro nuova data x start lotto!
if (newWorkOrder)
{
ncAdapter.lottoStart = DateTime.Now;
}
// scrivo sul PLC il comando strobe richiesta AUTO!
libraryError = ncAdapter.StrobeMode(Mode.AUTO);
if (libraryError.IsError())
{
ThermoActiveLogger.LogError($"RequestAuto error | {libraryError.exception}");
return BadRequest(libraryError.localizationKey);
}
// ritorno solo fatto!
return Ok();
}
File diff suppressed because it is too large Load Diff
@@ -238,7 +238,7 @@ namespace Thermo.Active.Controllers.WebApi
try
{
// ora salvo ANCHE i dati live...
NcFileAdapter.RecipeLiveData.ChannelSetpoints = chSetpoints;
NcAdapter.RecipeLiveData.ChannelSetpoints = chSetpoints;
// e salvo su disco
NcFileAdapter.SaveRecipeCurrent();
}
+13 -13
View File
@@ -1,17 +1,17 @@
mb_DiscesaCZ,CZ
mb_MembDiscesaZ,Z
mb_DiscesaCZ,↓ Cornice
mb_MembDiscesaZ,↓ Controstampo
mb_MembZ,Controstampo
mb_Mod_MembSalitaZ,Z
mb_Mod_AppoggioDiscesaW,W
mb_Mod_MembSalitaZ,↑ Controstampo
mb_Mod_AppoggioDiscesaW,↓ Stampo
mb_Mod_RiscaldoInf,Riscaldo inferiore
mb_Mod_RiscaldoSup,Riscaldo superiore
mb_Mod_PirometroRisc,Pirometro riscaldo
mb_Mod_DecompSustain,Decompressione/Sostentamento
mb_Mod_Acrilico,Acrilico
mb_Mod_RiscaldiIndietro,RS
mb_Mod_RiscaldiIndietro,← Riscaldi
mb_Mod_ExtraR,Riscaldo superiore aggiuntivo
mb_Mod_Imbutitura,Imbutitura
mb_Mod_SalitaW,W
mb_Mod_SalitaW,↑ Stampo
mb_Mod_AttesaStampo,Attesa stampo
mb_Mod_Raffreddamento,Raffreddamento
mb_Mod_PirometroRaffr,Pirometro raffreddamento
@@ -20,24 +20,24 @@ mb_Mod_VuotoDiretto,Vuoto diretto
mb_Mod_VuotoAux,Vuoto ausiliario
mb_Mod_Nebulizz,Nebulizzatori
mb_Mod_AttesaPartenzaZ,Attesa partenza Z
mb_Mod_DiscesaZ,Z
mb_Mod_DiscesaZ,↓ Controstampo
mb_Mod_Z,Controstampo basso
mb_Mod_SalitaZ,Z
mb_Mod_SalitaZ,↑ Controstampo
mb_Mod_AriaZ,Aria controstampo
mb_Mod_VuotoZ,Vuoto controstampo
mb_Mod_ScaricoVuotoZ,Scarico vuoto controstampo
mb_Mod_ScaricoVuoto,Scarico vuoto
mb_Mod_EstrazioneZ,Estrazione controstampo
mb_Mod_DiscesaAssistZ,Z
mb_Mod_DiscesaAssistZ,↓ Controstampo
mb_Mod_Estrazione,Estrazione
mb_Mod_DiscesaW,W
mb_Mod_RiscaldiIndietro2,RS
mb_Mod_SalitaCZ,CZ
mb_Mod_DiscesaW,↓ Stampo
mb_Mod_RiscaldiIndietro2,← Riscaldi
mb_Mod_SalitaCZ,↑ Cornice
mb_Mod_Riscaldi2,Secondo riscaldo
mb_Mod_Estrazione_Aux_W,Estrazione ausiliaria
mb_Mod_Attesa_Pirometro,Attesa pirometro
mb_Mod_Prevuoto,Prevuoto
mb_Mod_SalitaAssistZ,Z
mb_Mod_SalitaAssistZ,↑ Controstampo
general_sizes_mould_dim_x,Larghezza stampo
general_sizes_mould_dim_y,Profondità stampo
general_sizes_mould_max_height,Altezza massima stampo
+10 -10
View File
@@ -60,13 +60,9 @@ namespace Thermo.Active.Listeners
{
SignalRListener.SendHeadsData(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_AXIS_NAMES_DATA, (a, b) =>
infos.Add(MessageServices.Current.Subscribe(SEND_AXIS_INFO, (a, b) =>
{
SignalRListener.SendAxesNamesData(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_AXES, (a, b) =>
{
SignalRListener.SendAxesToClient(a);
SignalRListener.SendThermoAxisInfoData(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_ACTIVE_PROGRAM_DATA, (a, b) =>
{
@@ -78,10 +74,6 @@ namespace Thermo.Active.Listeners
SignalRListener.SendPartProgramQueue(a);
SignalRDatabaseHandler.UpdateQueue(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_M155_DATA, (a, b) =>
{
SignalRListener.SendM155Data(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_SCADA_DATA, (a, b) =>
{
SignalRListener.SendScadaData(a);
@@ -90,6 +82,10 @@ namespace Thermo.Active.Listeners
{
SignalRListener.SetGatewayRebootStatus(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_M156_DATA, (a, b) =>
{
SignalRListener.SendM156Data(a);
}));
// add specific modules for THERMO
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_RECIPE_FULL, (a, b) =>
@@ -100,6 +96,10 @@ namespace Thermo.Active.Listeners
{
SignalRListener.SendThermoRecipeOverviewData(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_RECIPE_CHANGED, (a, b) =>
{
SignalRListener.SendThermoRecipeChangedData(a);
}));
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_MODULE_DATA, (a, b) =>
{
SignalRListener.SendThermoModulesData(a);
@@ -4,11 +4,13 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using TeamDev.SDK.FluentProgramming;
using Thermo.Active.Config;
using Thermo.Active.Controllers.SignalR;
using Thermo.Active.Model.DTOModels;
using Thermo.Active.Model.DTOModels.AlarmModels;
using Thermo.Active.Model.DTOModels.Scada;
using Thermo.Active.Model.DTOModels.ThAxes;
using Thermo.Active.Model.DTOModels.ThModules;
using Thermo.Active.Model.DTOModels.ThProd;
using Thermo.Active.Model.DTOModels.ThRecipe;
@@ -34,17 +36,6 @@ namespace Thermo.Active.Listeners.SignalR
}
}
public static void SendAxesToClient(object newAxesData)
{
if (!LastAxesPositions.Equals(newAxesData))
{
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
LastAxesPositions = newAxesData as DTOAxesModel;
context.Clients.Group("ncData").axesPositions(newAxesData);
}
}
public static void SendPowerOnDataToClient(object powerOnData)
{
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
@@ -170,20 +161,6 @@ namespace Thermo.Active.Listeners.SignalR
}
}
public static void SendAxesNamesData(object axesNames)
{
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
List<DTOAxisNameModel> newData = axesNames as List<DTOAxisNameModel>;
// Check if collections are equals
if (newData.Count != LastAxesNamesData.Count || !LastAxesNamesData.All(newData.Contains))
{
LastAxesNamesData = newData;
// Send data to clients
context.Clients.Group("ncData").axesNames(axesNames);
}
}
public static void SendActiveProgramData(object programData)
{
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
@@ -226,18 +203,17 @@ namespace Thermo.Active.Listeners.SignalR
}
}
public static void SendM155Data(object data)
public static void SendM156Data(object data)
{
List<DTOM155InputModel> dtoM155Data = data as List<DTOM155InputModel>;
List<DTOM156InputModel> dtoM156Data = data as List<DTOM156InputModel>;
if (!LastM155Data.SequenceEqual(dtoM155Data))
if (!LastM156Data.SequenceEqual(dtoM156Data))
{
LastM155Data = dtoM155Data;
LastM156Data = dtoM156Data;
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").m155Data(dtoM155Data);
context.Clients.Group("ncData").m156Data(dtoM156Data);
}
}
public static void SendScadaData(object scada)
{
List<DTOScadaModel> scadaVal = scada as List<DTOScadaModel>;
@@ -274,8 +250,9 @@ namespace Thermo.Active.Listeners.SignalR
if (diffData.Count > 0)
{
// salvo update
LastRecipeFullData = currRecipeFull;
// salvo update CLONANDO
//LastRecipeFullData = currRecipeFull;
LastRecipeFullData = currRecipeFull.Keys.ToDictionary(_ => _, _ => currRecipeFull[_].Clone());
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").recipeFullData(diffData);
@@ -312,7 +289,17 @@ namespace Thermo.Active.Listeners.SignalR
context.Clients.Group("ncData").recipeOverData(currRecipeOver);
}
}
public static void SendThermoRecipeChangedData(object message)
{
DTORecipeStatus currMessage = message as DTORecipeStatus;
if (currMessage.hasChanged != recipeHasChanged || currMessage.forceSend)
{
// salvo update
recipeHasChanged = currMessage.hasChanged;
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").recipeChangedData(currMessage);
}
}
public static void SendThermoModulesData(object modules)
{
Dictionary<int, DTOModulesBlock> currModules = modules as Dictionary<int, DTOModulesBlock>;
@@ -342,7 +329,6 @@ namespace Thermo.Active.Listeners.SignalR
context.Clients.Group("ncData").modulesData(currModules);
}
}
public static void SendThermoWarmersData(object warmers)
{
Dictionary<int, DTOWarmers> currWarmers = warmers as Dictionary<int, DTOWarmers>;
@@ -372,8 +358,6 @@ namespace Thermo.Active.Listeners.SignalR
context.Clients.Group("ncData").warmersData(currWarmers);
}
}
public static void SendThermoAreaData(object area)
{
Dictionary<string, double> currArea = area as Dictionary<string, double>;
@@ -403,17 +387,34 @@ namespace Thermo.Active.Listeners.SignalR
context.Clients.Group("ncData").areaData(currArea);
}
}
public static void sendThermoGaugeData(object currentLiveProd)
{
Dictionary<string, DTOThermoProd> currLiveProd = currentLiveProd as Dictionary<string, DTOThermoProd>;
Dictionary<string, DTOThermoProd> diffGaugeData = new Dictionary<string, DTOThermoProd>();
if (!LastLiveProdData.Equals(currLiveProd))
foreach (var item in currLiveProd)
{
LastLiveProdData = currLiveProd;
if (!LastLiveProdData.ContainsKey(item.Key))
{
diffGaugeData.Add(item.Key, item.Value);
}
else
{
// comparazione
if (!item.Value.Equals(LastLiveProdData[item.Key]))
{
diffGaugeData.Add(item.Key, item.Value);
}
}
}
if (diffGaugeData.Count > 0)
{
// salvo update CLONANDO
LastLiveProdData = currLiveProd.Keys.ToDictionary(_ => _, _ => currLiveProd[_].Clone());
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").gaugeData(currLiveProd);
context.Clients.Group("ncData").gaugeData(diffGaugeData);
}
}
public static void SendThermoProdPanelData(object prodPanelData)
@@ -453,6 +454,36 @@ namespace Thermo.Active.Listeners.SignalR
}
}
public static void SendThermoAxisInfoData(object axisInfoData)
{
Dictionary<int, DTOAxisInfoModel> currInfoAxes = axisInfoData as Dictionary<int, DTOAxisInfoModel>;
Dictionary<int, DTOAxisInfoModel> diffAxisData = new Dictionary<int, DTOAxisInfoModel>();
foreach (var item in currInfoAxes)
{
if (!LastAxisInfoData.ContainsKey(item.Key))
{
diffAxisData.Add(item.Key, item.Value);
}
else
{
// comparazione
if (!item.Value.Equals(LastAxisInfoData[item.Key]))
{
diffAxisData.Add(item.Key, item.Value);
}
}
}
// se ho differenze invio!
if (diffAxisData.Count > 0)
{
// salvo update CLONANDO
LastAxisInfoData= currInfoAxes.Keys.ToDictionary(_ => _, _ => currInfoAxes[_].Clone());
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
context.Clients.Group("ncData").axisInfo(diffAxisData);
}
}
public static void SetGatewayRebootStatus(object status)
{
string msg = status.ToString();
@@ -502,18 +533,17 @@ namespace Thermo.Active.Listeners.SignalR
group.userSoftKeys(LastUserSoftKeysData);
// Send heads data
group.headsData(LastHeadsData);
// Send axesNames data
group.axesNames(LastAxesNamesData);
// Send positions
group.axesPositions(LastAxesPositions);
// Send Axis Info data
group.axisInfo(LastAxisInfoData);
// Send active program data
group.activeProgramData(LastProgramData);
// Send magazine is active data
group.magazineIsActive(LastNcMagazineIsActive);
// Send PP Queue
group.partProgramQueue(LastPartProgramQueue);
// Send m155 data
group.m155Data(LastM155Data);
// Send m156
group.m156Data(LastM156Data);
// Send Scada
group.scadaData(LastScadaData);
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using Thermo.Active.Model.DTOModels;
using Thermo.Active.Model.DTOModels.AlarmModels;
using Thermo.Active.Model.DTOModels.Scada;
using Thermo.Active.Model.DTOModels.ThAxes;
using Thermo.Active.Model.DTOModels.ThModules;
using Thermo.Active.Model.DTOModels.ThProd;
using Thermo.Active.Model.DTOModels.ThRecipe;
@@ -22,17 +23,19 @@ namespace Thermo.Active.Listeners
public static List<DTOUserSoftKeyModel> LastUserSoftKeysData = new List<DTOUserSoftKeyModel>();
public static List<DTONcSoftKeyModel> LastNcSoftKeysData = new List<DTONcSoftKeyModel>();
public static List<DTOHeadModel> LastHeadsData = new List<DTOHeadModel>();
public static DTOAxesModel LastAxesPositions = new DTOAxesModel();
public static List<DTOAxisNameModel> LastAxesNamesData = new List<DTOAxisNameModel>();
public static DTOActiveProgramDataModel LastProgramData = new DTOActiveProgramDataModel();
public static Dictionary<int, bool> LastNcMagazineIsActive = new Dictionary<int, bool>();
public static List<DTOQueueModel> LastPartProgramQueue = new List<DTOQueueModel>();
public static List<DTOM155InputModel> LastM155Data = new List<DTOM155InputModel>();
#if false
public static List<DTOM155InputModel> LastM155Data = new List<DTOM155InputModel>();
#endif
public static List<DTOM156InputModel> LastM156Data = new List<DTOM156InputModel>();
public static List<DTOScadaModel> LastScadaData = new List<DTOScadaModel>();
// FIXME TODO inserire oggetti corretti per THERMO
// Oggetti specifici per THERMO (1° definizione)
public static Dictionary<string, DTORecipeParam> LastRecipeFullData = new Dictionary<string, DTORecipeParam>();
public static Dictionary<RecipeSection, RecipeCatStatus> LastRecipeOverData = new Dictionary<RecipeSection, RecipeCatStatus>();
public static bool? recipeHasChanged = null;
public static Dictionary<int, DTOModulesBlock> LastModulesData = new Dictionary<int, DTOModulesBlock>();
public static Dictionary<int, DTOWarmers> LastWarmersData = new Dictionary<int, DTOWarmers>();
public static Dictionary<string, double> LastAreaData = new Dictionary<string, double>();
@@ -40,6 +43,8 @@ namespace Thermo.Active.Listeners
public static ThermoModels.ProdCycleModel LastProdCycleData = new ThermoModels.ProdCycleModel();
public static DTOProdInfo LastProdInfoData = new DTOProdInfo();
public static DTOThermoPanelProd LastProdPanelData = new DTOThermoPanelProd();
// Oggetti per assi THERMO
public static Dictionary<int, DTOAxisInfoModel> LastAxisInfoData = new Dictionary<int, DTOAxisInfoModel>();
public static bool LastIsNcConnected = false;
}
+1 -1
View File
@@ -30,4 +30,4 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("0.9.46")]
[assembly: AssemblyVersion("0.20.100")]
+81
View File
@@ -0,0 +1,81 @@
# Script di installazione in macchina zip dell'ultima release di ThermoActive
# Check parameters
Param (
[Parameter(Mandatory=$True)]
[ValidateNotNull()]
$zipPath
)
# recupera timestamp x logging
function Get-TimeStamp
{
return "[{0:MM/dd/yy} {0:HH:mm:ss}]" -f (Get-Date)
}
# registra log!
function DoLog($txt2log)
{
Write-Output "$(Get-TimeStamp) $txt2log" | Out-File c:\tmp\Script.log -Append
}
function checkFolder($dirPath)
{
if(!(Test-Path -path $dirPath))
{
New-Item -ItemType directory -Path $dirPath
DoLog("Folder path has been created successfully at $dirPath")
}
}
Write-Output "-------------------------------- START script --------------------------------" | Out-File c:\tmp\Script.log
$StopWatch = New-Object System.Diagnostics.Stopwatch
$StopWatch.Start()
# directory di base
$BaseDir = "C:\CMS"
$ArchiveDir = "$BaseDir\Archive"
$BackupDir = "$BaseDir\Backup"
$ConfDir = "$BaseDir\Conf"
$LogDir = "$BaseDir\Logs"
$UnzipDir = "$BaseDir\Unzip"
$ProgramDir = "$BaseDir\ThermoActive"
$adesso = Get-Date -Format "yyyy.MM.dd_HH.mm"
# mi sposto in Dir di base
cd $BaseDir
# creo se non ci fosse dir varie
checkFolder($BaseDir)
checkFolder($ArchiveDir)
checkFolder($BackupDir)
checkFolder($ConfDir)
checkFolder($LogDir)
checkFolder($UnzipDir)
checkFolder($ProgramDir)
# Salvo CONF varie
robocopy $ProgramDir"\Config\" $BackupDir"\Config\" /MIR /Z /LOG:$LogDir"\Config.1.log"
robocopy $ProgramDir"\Dict\" $BackupDir"\Dict\" /MIR /Z /LOG:$LogDir"\Dict.1.log"
robocopy $ProgramDir"\Recipes\" $BackupDir"\Recipes\" /MIR /Z /LOG:$LogDir"\Recipes.1.log"
robocopy $ProgramDir"\TMP\" $BackupDir"\TMP\" /MIR /Z /LOG:$LogDir"\Tmp.1.log"
# Move versione attuale
Move-Item -Path $ProgramDir -Destination $ArchiveDir"\ThermoActive_$adesso"
# Faccio unzip NUOVA versione
Expand-Archive -Path $zipPath -DestinationPath $UnzipDir -Force
# Move da ZIP a program
Move-Item -Path $UnzipDir -Destination $ProgramDir
#robocopy $UnzipDir $ProgramDir /MIR /Z /LOG:$LogDir+"Newversion.log" /XD "Config Dict Recipes"
# Ripristino CONF
robocopy $BackupDir"\Config\" $ProgramDir"\Config\" /MIR /Z /LOG:$LogDir"\Config.2.log"
robocopy $BackupDir"\Dict\" $ProgramDir"\Dict\" /MIR /Z /LOG:$LogDir"\Dict.2.log"
robocopy $BackupDir"\Recipes\" $ProgramDir"\Recipes\" /MIR /Z /LOG:$LogDir"\Recipes.2.log"
robocopy $BackupDir"\TMP\" $ProgramDir"\TMP\" /MIR /Z /LOG:$LogDir"\Tmp.2.log"
$StopWatch.Stop()
$StopWatch.Elapsed | Out-File $LogDir"\Install.log" -Append
DoLog("-------------------------------- END script --------------------------------")
+2 -1
View File
@@ -11,7 +11,8 @@ Param (
$npmInstall,
[Parameter(Mandatory=$True)]
[ValidateNotNull()]
$npmBuild,[Parameter(Mandatory=$True)]
$npmBuild,
[Parameter(Mandatory=$True)]
[ValidateNotNull()]
$version
)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 B

@@ -337,6 +337,8 @@ button.soft {
.togglebutton {
vertical-align: middle;
-webkit-tap-highlight-color: transparent;
}
.togglebutton,
@@ -374,6 +376,12 @@ fieldset[disabled] .form-group.is-focused .togglebutton label {
.togglebutton label .toggle {
text-align: left;
margin-left: 5px;
&.error {
background-color: rgba(255, 0, 0, .7) !important;
color: #222;
background-image: none !important;
}
}
.togglebutton label .toggle,
@@ -432,18 +440,19 @@ fieldset[disabled] .form-group.is-focused .togglebutton label {
color: #fff;
}
.togglebutton.big {
.togglebutton.big,
.togglebutton.big[disabled] {
span.toggle {
height: 40px;
width: 112px;
border-radius: 20px;
font-size: 17px;
line-height: 40px;
font-weight: bold;
height: 40px !important;
width: 112px !important;
border-radius: 20px !important;
font-size: 17px !important;
line-height: 40px !important;
font-weight: bold !important;
&:after {
width: 36px;
height: 36px;
width: 36px !important;
height: 36px !important;
}
}
@@ -309,7 +309,7 @@
margin-right: 20px;
.fa-arrow-up,
.fa-arrow-down {
.fa-arrow-down {
font-size: 24px;
}
@@ -890,7 +890,7 @@
.axes:last-child {
margin-bottom: 16px;
}
.tabs {
min-height: 30px;
width: 100%;
@@ -937,7 +937,7 @@
border-radius: 2px;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
.label-container{
.label-container {
display: flex;
justify-content: space-around;
font-weight: 600;
@@ -962,6 +962,63 @@
}
.card-folder-path {
.context-menu {
position: relative;
width: 40px;
.context-area {
top: 50px;
display: none;
background-color: #fff;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
position: absolute;
width: 300px;
left: -150px + 24px;
padding-inline-start: 0;
padding-inline-end: 0;
&.show {
display: block !important;
z-index: 10;
}
li {
list-style-type: none;
height: 62px;
border-bottom: 1px solid rgba(0, 0, 0, 0.5);
color: #545454;
display: flex;
align-items: center;
justify-content: flex-start;
padding: 0 28px;
font-weight: 500;
font-size: 18px;
cursor: pointer;
&:last-of-type {
border-bottom: none;
}
}
&:before {
content: "";
position: absolute;
top: -15px;
left: calc(~'50% - 8px');
display: block;
width: 0;
height: 0;
border-left: 15px solid transparent;
border-right: 15px solid transparent;
border-bottom: 15px solid #fff;
}
}
}
width: auto;
height: 64px;
display: flex;
@@ -1555,7 +1612,7 @@
padding-right: 8px;
font-size: 20px;
text-align: left;
padding-left: 8px;
padding-left: 8px;
}
}
@@ -1930,7 +1987,7 @@
background-color: @color-clear-blue-30;
color: #002680;
.not-exist{
.not-exist {
color: #d0021b !important;
}
@@ -6104,4 +6161,4 @@
}
}
}
} */
} */
@@ -10,7 +10,7 @@
width: 100%;
background-image: url("../../assets/icons/png/bg.png");
position: fixed;
z-index: 1001;
z-index: 1002;
display: grid;
grid-template-rows: 144px 1fr;
grid-template-columns: 152px 1fr 610px 1fr 152px;
@@ -173,9 +173,10 @@
}
time {
font-size: 120px;
font-size: 100px;
font-weight: 300;
z-index: 1;
max-height: 140px;
}
}
@@ -26,6 +26,9 @@ footer {
display: flex;
align-items: center;
justify-content: space-evenly;
img {
margin: 0px 5px;
}
}
.container {
@@ -143,6 +143,60 @@
margin-left: 5px;
margin-right: 5px;
}
.context-menu {
position: relative;
.context-area {
top: 50px;
display: none;
background-color: #fff;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
position: absolute;
width: 300px;
left: -150px + 24px;
padding-inline-start: 0;
padding-inline-end: 0;
&.show {
display: block !important;
}
li {
list-style-type: none;
height: 62px;
border-bottom: 1px solid rgba(0, 0, 0, 0.5);
color: #545454;
display: flex;
align-items: center;
justify-content: flex-start;
padding: 0 28px;
font-weight: 500;
font-size: 18px;
cursor: pointer;
&:last-of-type {
border-bottom: none;
}
}
&:before {
content: "";
position: absolute;
top: -15px;
left: calc(~'50% - 8px');
display: block;
width: 0;
height: 0;
border-left: 15px solid transparent;
border-right: 15px solid transparent;
border-bottom: 15px solid #fff;
}
}
}
}
.colorWhite {
@@ -156,6 +210,10 @@
align-items: center;
-webkit-user-select: none;
&.prioritize {
z-index: 9000;
}
button {
font-size: 28px;
justify-content: center;
@@ -139,6 +139,25 @@ select:focus {
}
.input-select{
font-size: 18px;
font-weight: 500;
color: #6d6d6d;
min-width: 200px;
width: fit-content;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: none;
display: flex;
flex-flow: row nowrap;
padding: 0 10px;
align-items: center;
justify-content: stretch;
padding-right: 25px;
position: relative;
cursor: pointer;
}
.input-area {
width: 100%;
@@ -146,6 +165,7 @@ select:focus {
flex-flow: row;
align-items: center;
justify-content: space-between;
max-width: 472px;
&.grid {
display: grid;
@@ -222,6 +242,7 @@ select:focus {
color: #002680;
font-size: 24px;
font-weight: 500;
overflow: hidden;
// flex: 0.7;
}
@@ -51,6 +51,7 @@
@import "report.less";
@import "users.less";
@import "tooltip.less";
@import "saveas.less";
@background-color: rgb(216, 216, 216);
@@ -216,6 +216,17 @@
margin-left: auto;
}
}
.content-modal-showval {
display: flex;
align-items: center;
span {
word-wrap: break-word;
max-width: 700px;
font-size: 30px
}
}
.content-btn {
width: 592px;
@@ -1159,7 +1170,7 @@
justify-content: center;
&.nc {
z-index: 700;
z-index: 1002;
}
&.internal {
@@ -1493,7 +1504,6 @@
.title_lbl,
.description_lbl {
margin-top: 22px;
margin-left: 24px;
font-size: 14px;
color: @color-warm-grey;
margin-bottom: 4px;
@@ -2378,7 +2388,7 @@
line-height: 4px;
.title {
width: 110px;
min-width: 130px;
text-align: right;
color: @color-darkish-blue;
}
@@ -2436,6 +2446,9 @@
overflow: visible;
position: relative;
cursor: pointer;
width: 100%;
height: 100%;
overflow: hidden;
img {
display: block;
@@ -2475,6 +2488,11 @@
overflow-x: hidden;
height: calc(~"100% - 360px");
flex-flow: column;
.key {
width: 200px;
font-weight: 800;
}
.row {
width: 99%;
@@ -3427,7 +3445,7 @@
position: absolute;
width: 100%;
height: 100%;
background: #cccccc;
background: #ffffff;
top: 0;
display: block;
overflow: hidden;
@@ -4118,8 +4136,7 @@
display: flex;
flex-flow: column;
.title_lbl,
.description_lbl {
.title_lbl {
margin-top: 22px;
margin-left: 24px;
font-size: 14px;
@@ -9,24 +9,27 @@
right: 0;
bottom: 80px;
overflow: visible;
z-index: 100;
background-color: #ddd;
width: 1360px;
box-shadow: 2px 10px 15px 0 rgba(0, 0, 0, 0.5);
box-shadow: none;
transform: translateX(1360px);
transition: transform .3s ease-in-out;
transition: transform .3s .2s ease-in-out,box-shadow .3s linear;
display: flex;
align-items: stretch;
justify-content: flex-start;
z-index: 1100;
z-index: 1001;
&.open-full {
transform: translateX(0);
box-shadow: 2px 10px 15px 0 rgba(0, 0, 0, 0.5);
transition: transform .1s ease-in-out,box-shadow .3s .1s linear;
}
&.open-half {
transform: translateX(680px);
box-shadow: 2px 10px 15px 0 rgba(0, 0, 0, 0.5);
transition: transform .1s ease-in-out,box-shadow .3s .1s linear;
}
.paddleButton {
@@ -127,7 +130,7 @@
width: 100%;
height: 100px;
border-radius: 2px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
background-color: #808e96;
cursor: pointer;
color: #fff;
@@ -141,6 +144,26 @@
justify-content: center;
padding: 1rem;
box-sizing: border-box;
border: none;
position: relative;
&.active {
box-shadow: inset 0px 0px 0px 3px #1791ff;
&[disabled]::after{
box-shadow: inset 0px 0px 0px 3px #1791ff !important;
}
}
&[disabled]::after{
top:0;
left: 0;
position: absolute;
width: 100%;
height: 100%;
background-color: #aaaaaaaa;
content: "";
}
button.configure {
position: absolute;
@@ -153,6 +176,55 @@
color: @color-darkish-blue;
background: #fff;
}
&.pressed:active,
&:active {
background-color: #57636b;
}
}
.starred-softkey {
box-sizing: border-box;
border-radius: 2px;
margin: 0 8px;
text-align: center;
font-size: 18px;
font-weight: bold;
box-shadow: none;
padding: 0 20px;
border: none;
position: relative;
background-image: linear-gradient(to bottom, @color-white2, @color-silver) !important;
&.pressed:active,
&:active {
background-image: linear-gradient(to bottom, @color-silver, @color-white2) !important;
}
&.pressed {
background-image: linear-gradient(to bottom, @color-silver, @color-white2) !important;
}
&.active {
box-shadow: inset 0px 0px 0px 3px #1791ff !important;
&[disabled]::after{
box-shadow: inset 0px 0px 0px 3px #1791ff !important;
}
}
img{
-webkit-user-drag: none;
}
&[disabled]::after{
top:0;
left: 0;
position: absolute;
width: 100%;
height: 100%;
background-color: #aaaaaaaa;
content: "";
}
}
.box-softkeys-prefered-footer {
@@ -119,6 +119,9 @@
color: @color-green;
}
.black{
color: #4b4b4b;
}
.content.READY,
.status.READY{
color: @color-clear-blue;
@@ -21,18 +21,18 @@
.tab-header {
width: 70%;
display: flex;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(160px, 200px));
align-items: center;
justify-content: space-evenly;
justify-content: flex-end;
grid-column-gap: 10px;
button {
border: none;
border-radius: 2px;
background-image: linear-gradient(to bottom, #f1f1f1 0%, #bbbcbc 98%);
display: grid;
grid-template-columns: 48px 101px;
grid-template-rows: 48px;
height: 48px;
span {
margin: auto;
font-size: 13px;
@@ -45,6 +45,7 @@
}
label {
justify-self: flex-end;
font-size: 32px;
line-height: 1;
}
@@ -33,4 +33,11 @@
}
}
.icon{
font-size: 30px;
margin-left: 10px;
}
}
@@ -0,0 +1,36 @@
// out: false, sourceMap: false, main: ../style.less
.modal.save-as {
width: 600px;
height: 400px;
top: calc(~'50% - 250px');
section{
display: block !important;
}
label{
margin-top: 22px;
font-size: 14px;
color: #878787;
margin-bottom: 4px;
}
article {
input {
padding: 5px;
font-size: 18px;
font-weight: 500;
color: #6d6d6d;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: none;
display: flex;
flex-flow: row nowrap;
padding: 0 20px;
align-items: center;
justify-content: stretch;
}
}
}
@@ -12,6 +12,42 @@
width: 100vw;
height: 100vh;
.notes_textarea{
border-radius: 2px;
height: 97px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: solid 1px #bbbcbc;
padding: 10px;
box-sizing: border-box;
resize: none;
}
.select_folder{
height: 48px;
background-color: #fff;
padding: 0 20px;
font-size: 1rem;
font-weight: 500;
color: #6d6d6d;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: none;
display: flex;
flex-flow: row nowrap;
align-items: center;
justify-content: stretch;
padding-right: 25px;
position: relative;
cursor: pointer;
}
.description_lbl{
margin-top: 22px;
font-size: 14px;
color: #878787;
margin-bottom: 4px;
}
.tab-header {
display: flex;
flex-flow: row;
@@ -173,7 +209,7 @@
}
footer {
height: 82px;
height: 64px;
display: flex;
justify-content: flex-end;
align-items: center;
@@ -238,6 +274,34 @@
}
}
i {
grid-column-start: -1;
grid-column-end: 1;
grid-row: 2;
z-index: 2;
margin: auto;
position: absolute;
top: -10px;
left: 47px;
font-size: 25px;
width: 14px;
height: 14px;
overflow: visible;
background-color: white;
justify-content: center;
align-items: center;
display: flex;
border-radius: 7px;
&.fa-check-circle {
color: #90BF3D;
}
&.fa-check-circle.undone-step {
color: #1791FF;
}
}
span,
label {
grid-row-start: 1;
@@ -446,6 +510,8 @@ article {
padding-bottom: 10px;
padding-top: 5px;
border: 2px solid #979797;
box-sizing: border-box;
align-items: center;
}
.submit {
File diff suppressed because one or more lines are too long
+340 -32
View File
@@ -10,6 +10,39 @@
width: 100vw;
height: 100vh;
}
.setup .notes_textarea {
border-radius: 2px;
height: 97px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: solid 1px #bbbcbc;
padding: 10px;
box-sizing: border-box;
resize: none;
}
.setup .select_folder {
height: 48px;
background-color: #fff;
padding: 0 20px;
font-size: 1rem;
font-weight: 500;
color: #6d6d6d;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: none;
display: flex;
flex-flow: row nowrap;
align-items: center;
justify-content: stretch;
padding-right: 25px;
position: relative;
cursor: pointer;
}
.setup .description_lbl {
margin-top: 22px;
font-size: 14px;
color: #878787;
margin-bottom: 4px;
}
.setup .tab-header {
display: flex;
flex-flow: row;
@@ -144,7 +177,7 @@
width: 100%;
}
.setup .modal section.body footer {
height: 82px;
height: 64px;
display: flex;
justify-content: flex-end;
align-items: center;
@@ -196,6 +229,31 @@
.setup .modal-footer-navigator .setup-button.current .background-bottom {
box-shadow: -3px -5px 5px rgba(0, 0, 0, 0.2) inset;
}
.setup .modal-footer-navigator .setup-button i {
grid-column-start: -1;
grid-column-end: 1;
grid-row: 2;
z-index: 2;
margin: auto;
position: absolute;
top: -10px;
left: 47px;
font-size: 25px;
width: 14px;
height: 14px;
overflow: visible;
background-color: white;
justify-content: center;
align-items: center;
display: flex;
border-radius: 7px;
}
.setup .modal-footer-navigator .setup-button i.fa-check-circle {
color: #90BF3D;
}
.setup .modal-footer-navigator .setup-button i.fa-check-circle.undone-step {
color: #1791FF;
}
.setup .modal-footer-navigator .setup-button span,
.setup .modal-footer-navigator .setup-button label {
grid-row-start: 1;
@@ -360,6 +418,8 @@ article .box .body {
padding-bottom: 10px;
padding-top: 5px;
border: 2px solid #979797;
box-sizing: border-box;
align-items: center;
}
.box .submit {
margin: auto;
@@ -521,6 +581,15 @@ article .box .body {
.modal.m155 .content-real-showval input {
margin-left: auto;
}
.modal.m155 .content-modal-showval {
display: flex;
align-items: center;
}
.modal.m155 .content-modal-showval span {
word-wrap: break-word;
max-width: 700px;
font-size: 30px;
}
.modal.m155 .content-btn {
width: 592px;
box-shadow: 0 0px 3px 0 rgba(0, 0, 0, 0.4);
@@ -1329,7 +1398,7 @@ article .box .body {
justify-content: center;
}
.backdrop.nc {
z-index: 700;
z-index: 1002;
}
.backdrop.internal {
height: calc(100vh - 80px);
@@ -1612,7 +1681,6 @@ article .box .body {
.modal.create-maintenance .title .description_lbl,
.modal.create-maintenance .description .description_lbl {
margin-top: 22px;
margin-left: 24px;
font-size: 14px;
color: #878787;
margin-bottom: 4px;
@@ -2496,7 +2564,7 @@ article .box .body {
.modal.modal-add-element-queue .modal-load-program-body .selected-item .selected-item-header .subtitle .title,
.modal.modal-load-program .modal-add-element-queue-body .selected-item .selected-item-header .subtitle .title,
.modal.modal-add-element-queue .modal-add-element-queue-body .selected-item .selected-item-header .subtitle .title {
width: 110px;
min-width: 130px;
text-align: right;
color: #002680;
}
@@ -2566,6 +2634,9 @@ article .box .body {
overflow: visible;
position: relative;
cursor: pointer;
width: 100%;
height: 100%;
overflow: hidden;
}
.modal.modal-load-program .modal-load-program-body .selected-item .selected-item-body .selected-item-body-image .container img,
.modal.modal-add-element-queue .modal-load-program-body .selected-item .selected-item-body .selected-item-body-image .container img,
@@ -2612,6 +2683,13 @@ article .box .body {
height: calc(100% - 360px);
flex-flow: column;
}
.modal.modal-load-program .modal-load-program-body .selected-item .selected-item-body .selected-item-body-description .key,
.modal.modal-add-element-queue .modal-load-program-body .selected-item .selected-item-body .selected-item-body-description .key,
.modal.modal-load-program .modal-add-element-queue-body .selected-item .selected-item-body .selected-item-body-description .key,
.modal.modal-add-element-queue .modal-add-element-queue-body .selected-item .selected-item-body .selected-item-body-description .key {
width: 200px;
font-weight: 800;
}
.modal.modal-load-program .modal-load-program-body .selected-item .selected-item-body .selected-item-body-description .row,
.modal.modal-add-element-queue .modal-load-program-body .selected-item .selected-item-body .selected-item-body-description .row,
.modal.modal-load-program .modal-add-element-queue-body .selected-item .selected-item-body .selected-item-body-description .row,
@@ -3431,7 +3509,7 @@ article .box .body {
position: absolute;
width: 100%;
height: 100%;
background: #cccccc;
background: #ffffff;
top: 0;
display: block;
overflow: hidden;
@@ -4024,9 +4102,7 @@ article .box .body {
flex-flow: column;
}
.modal.create-user .title .title_lbl,
.modal.create-user .description .title_lbl,
.modal.create-user .title .description_lbl,
.modal.create-user .description .description_lbl {
.modal.create-user .description .title_lbl {
margin-top: 22px;
margin-left: 24px;
font-size: 14px;
@@ -4132,7 +4208,7 @@ article .box .body {
width: 100%;
background-image: url("../../assets/icons/png/bg.png");
position: fixed;
z-index: 1001;
z-index: 1002;
display: grid;
grid-template-rows: 144px 1fr;
grid-template-columns: 152px 1fr 610px 1fr 152px;
@@ -4271,9 +4347,10 @@ article .box .body {
.dashboard .first_col .timing-area .start time,
.dashboard .first_col .timing-area .current time,
.dashboard .first_col .timing-area .end time {
font-size: 120px;
font-size: 100px;
font-weight: 300;
z-index: 1;
max-height: 140px;
}
.dashboard .first_col .timing-area .start::before {
background-image: url(/assets/svg/dashboard-top-left.svg);
@@ -4526,6 +4603,10 @@ article .box .body {
font-weight: bold;
color: #fff;
}
.warmers .icon {
font-size: 30px;
margin-left: 10px;
}
.slider {
display: grid;
grid-template-columns: 48px 1fr 48px;
@@ -4759,22 +4840,25 @@ article .box .body {
right: 0;
bottom: 80px;
overflow: visible;
z-index: 100;
background-color: #ddd;
width: 1360px;
box-shadow: 2px 10px 15px 0 rgba(0, 0, 0, 0.5);
box-shadow: none;
transform: translateX(1360px);
transition: transform 0.3s ease-in-out;
transition: transform 0.3s 0.2s ease-in-out, box-shadow 0.3s linear;
display: flex;
align-items: stretch;
justify-content: flex-start;
z-index: 1100;
z-index: 1001;
}
.paddle.open-full {
transform: translateX(0);
box-shadow: 2px 10px 15px 0 rgba(0, 0, 0, 0.5);
transition: transform 0.1s ease-in-out, box-shadow 0.3s 0.1s linear;
}
.paddle.open-half {
transform: translateX(680px);
box-shadow: 2px 10px 15px 0 rgba(0, 0, 0, 0.5);
transition: transform 0.1s ease-in-out, box-shadow 0.3s 0.1s linear;
}
.paddle .paddleButton {
width: 40px;
@@ -4852,20 +4936,36 @@ article .box .body {
width: 100%;
height: 100px;
border-radius: 2px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
background-color: #808e96;
cursor: pointer;
color: #fff;
font-size: 18px;
font-weight: 500;
display: grid;
position: relative;
grid-template-columns: auto 1fr;
grid-column-gap: 10px;
align-items: center;
justify-content: center;
padding: 1rem;
box-sizing: border-box;
border: none;
position: relative;
}
.softkey.active {
box-shadow: inset 0px 0px 0px 3px #1791ff;
}
.softkey.active[disabled]::after {
box-shadow: inset 0px 0px 0px 3px #1791ff !important;
}
.softkey[disabled]::after {
top: 0;
left: 0;
position: absolute;
width: 100%;
height: 100%;
background-color: #aaaaaaaa;
content: "";
}
.softkey button.configure {
position: absolute;
@@ -4878,6 +4978,48 @@ article .box .body {
color: #002680;
background: #fff;
}
.softkey.pressed:active,
.softkey:active {
background-color: #57636b;
}
.starred-softkey {
box-sizing: border-box;
border-radius: 2px;
margin: 0 8px;
text-align: center;
font-size: 18px;
font-weight: bold;
box-shadow: none;
padding: 0 20px;
border: none;
position: relative;
background-image: linear-gradient(to bottom, #f1f1f1, #bbbcbc) !important;
}
.starred-softkey.pressed:active,
.starred-softkey:active {
background-image: linear-gradient(to bottom, #bbbcbc, #f1f1f1) !important;
}
.starred-softkey.pressed {
background-image: linear-gradient(to bottom, #bbbcbc, #f1f1f1) !important;
}
.starred-softkey.active {
box-shadow: inset 0px 0px 0px 3px #1791ff !important;
}
.starred-softkey.active[disabled]::after {
box-shadow: inset 0px 0px 0px 3px #1791ff !important;
}
.starred-softkey img {
-webkit-user-drag: none;
}
.starred-softkey[disabled]::after {
top: 0;
left: 0;
position: absolute;
width: 100%;
height: 100%;
background-color: #aaaaaaaa;
content: "";
}
.box-softkeys-prefered-footer {
height: 65px;
display: flex;
@@ -4966,17 +5108,17 @@ article .box .body {
}
.modal.processo-info header .tab-header {
width: 70%;
display: flex;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(160px, 200px));
align-items: center;
justify-content: space-evenly;
justify-content: flex-end;
grid-column-gap: 10px;
}
.modal.processo-info header .tab-header button {
border: none;
border-radius: 2px;
background-image: linear-gradient(to bottom, #f1f1f1 0%, #bbbcbc 98%);
display: grid;
grid-template-columns: 48px 101px;
grid-template-rows: 48px;
height: 48px;
}
.modal.processo-info header .tab-header button span {
margin: auto;
@@ -4987,6 +5129,7 @@ article .box .body {
margin: auto;
}
.modal.processo-info header .tab-header label {
justify-self: flex-end;
font-size: 32px;
line-height: 1;
}
@@ -5427,12 +5570,32 @@ select:focus {
color: #002680;
flex: 1;
}
.input-select {
font-size: 18px;
font-weight: 500;
color: #6d6d6d;
min-width: 200px;
width: fit-content;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: none;
display: flex;
flex-flow: row nowrap;
padding: 0 10px;
align-items: center;
justify-content: stretch;
padding-right: 25px;
position: relative;
cursor: pointer;
}
.input-area {
width: 100%;
display: flex;
flex-flow: row;
align-items: center;
justify-content: space-between;
max-width: 472px;
}
.input-area.grid {
display: grid;
@@ -5494,6 +5657,7 @@ select:focus {
color: #002680;
font-size: 24px;
font-weight: 500;
overflow: hidden;
}
.input-area .numeric {
font-size: 18px;
@@ -5887,6 +6051,11 @@ fieldset[disabled] .form-group.is-focused .togglebutton label {
text-align: left;
margin-left: 5px;
}
.togglebutton label .toggle.error {
background-color: rgba(255, 0, 0, 0.7) !important;
color: #222;
background-image: none !important;
}
.togglebutton label .toggle,
.togglebutton label input[type=checkbox][disabled] + .toggle {
content: "";
@@ -5937,19 +6106,22 @@ fieldset[disabled] .form-group.is-focused .togglebutton label {
background-image: linear-gradient(to bottom, #3fa4ff, #1791ff);
color: #fff;
}
.togglebutton.big span.toggle {
height: 40px;
width: 112px;
border-radius: 20px;
font-size: 17px;
line-height: 40px;
font-weight: bold;
.togglebutton.big span.toggle,
.togglebutton.big[disabled] span.toggle {
height: 40px !important;
width: 112px !important;
border-radius: 20px !important;
font-size: 17px !important;
line-height: 40px !important;
font-weight: bold !important;
}
.togglebutton.big span.toggle:after {
width: 36px;
height: 36px;
.togglebutton.big span.toggle:after,
.togglebutton.big[disabled] span.toggle:after {
width: 36px !important;
height: 36px !important;
}
.togglebutton.big input[type=checkbox]:checked + .toggle:after {
.togglebutton.big input[type=checkbox]:checked + .toggle:after,
.togglebutton.big[disabled] input[type=checkbox]:checked + .toggle:after {
left: 74px;
}
.custom-checkbox {
@@ -6189,6 +6361,57 @@ fieldset[disabled] .form-group.is-focused .togglebutton label {
margin-left: 5px;
margin-right: 5px;
}
#app > header .context-menu,
.dashboard > header .context-menu {
position: relative;
}
#app > header .context-menu .context-area,
.dashboard > header .context-menu .context-area {
top: 50px;
display: none;
background-color: #fff;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
position: absolute;
width: 300px;
left: -126px;
padding-inline-start: 0;
padding-inline-end: 0;
}
#app > header .context-menu .context-area.show,
.dashboard > header .context-menu .context-area.show {
display: block !important;
}
#app > header .context-menu .context-area li,
.dashboard > header .context-menu .context-area li {
list-style-type: none;
height: 62px;
border-bottom: 1px solid rgba(0, 0, 0, 0.5);
color: #545454;
display: flex;
align-items: center;
justify-content: flex-start;
padding: 0 28px;
font-weight: 500;
font-size: 18px;
cursor: pointer;
}
#app > header .context-menu .context-area li:last-of-type,
.dashboard > header .context-menu .context-area li:last-of-type {
border-bottom: none;
}
#app > header .context-menu .context-area:before,
.dashboard > header .context-menu .context-area:before {
content: "";
position: absolute;
top: -15px;
left: calc(50% - 8px);
display: block;
width: 0;
height: 0;
border-left: 15px solid transparent;
border-right: 15px solid transparent;
border-bottom: 15px solid #fff;
}
.colorWhite {
color: #fff !important;
}
@@ -6204,6 +6427,9 @@ fieldset[disabled] .form-group.is-focused .togglebutton label {
display: flex;
padding-right: 8px !important;
}
.window-buttons.prioritize {
z-index: 9000;
}
.window-buttons button {
font-size: 28px;
justify-content: center;
@@ -6449,6 +6675,9 @@ footer .machine-area {
align-items: center;
justify-content: space-evenly;
}
footer .machine-area img {
margin: 0px 5px;
}
footer .container {
display: flex;
flex-direction: row;
@@ -6701,6 +6930,9 @@ footer .container button.big:before {
.process-info .status.RUN {
color: #7ed321;
}
.process-info .black {
color: #4b4b4b;
}
.process-info .content.READY,
.process-info .status.READY {
color: #1791ff;
@@ -10512,6 +10744,53 @@ footer .container button.big:before {
margin: 4px 0 4px 5px;
cursor: pointer;
}
.card-folder-path .context-menu {
position: relative;
width: 40px;
}
.card-folder-path .context-menu .context-area {
top: 50px;
display: none;
background-color: #fff;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
position: absolute;
width: 300px;
left: -126px;
padding-inline-start: 0;
padding-inline-end: 0;
}
.card-folder-path .context-menu .context-area.show {
display: block !important;
z-index: 10;
}
.card-folder-path .context-menu .context-area li {
list-style-type: none;
height: 62px;
border-bottom: 1px solid rgba(0, 0, 0, 0.5);
color: #545454;
display: flex;
align-items: center;
justify-content: flex-start;
padding: 0 28px;
font-weight: 500;
font-size: 18px;
cursor: pointer;
}
.card-folder-path .context-menu .context-area li:last-of-type {
border-bottom: none;
}
.card-folder-path .context-menu .context-area:before {
content: "";
position: absolute;
top: -15px;
left: calc(50% - 8px);
display: block;
width: 0;
height: 0;
border-left: 15px solid transparent;
border-right: 15px solid transparent;
border-bottom: 15px solid #fff;
}
.card-folder-path:not(.disabled):active {
background-color: rgba(0, 0, 0, 0.4);
box-shadow: none;
@@ -23638,6 +23917,35 @@ footer .container button.big:before {
text-align: center;
color: #4b4b4b;
}
.modal.save-as {
width: 600px;
height: 400px;
top: calc(50% - 250px);
}
.modal.save-as section {
display: block !important;
}
.modal.save-as label {
margin-top: 22px;
font-size: 14px;
color: #878787;
margin-bottom: 4px;
}
.modal.save-as article input {
padding: 5px;
font-size: 18px;
font-weight: 500;
color: #6d6d6d;
height: 48px;
border-radius: 2px;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
border: none;
display: flex;
flex-flow: row nowrap;
padding: 0 20px;
align-items: center;
justify-content: stretch;
}
a,
a:visited,
a:hover,
@@ -7,301 +7,301 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="disegno-quote-velocita-stampo.svg"
id="svg8"
version="1.1"
viewBox="0 0 297 210"
width="297"
height="210"
width="297">
viewBox="0 0 297 210"
version="1.1"
id="svg8"
sodipodi:docname="disegno-quote-velocita-stampo.svg"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)">
<sodipodi:namedview
inkscape:object-nodes="false"
inkscape:current-layer="layer1"
inkscape:window-maximized="1"
inkscape:window-y="-9"
inkscape:window-x="-9"
inkscape:cy="51.482576"
inkscape:cx="187.49592"
inkscape:zoom="2.9247028"
showgrid="false"
id="namedview907"
inkscape:window-height="1001"
inkscape:window-width="1920"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
inkscape:document-rotation="0"
pagecolor="#ffffff"
bordercolor="#666666"
pagecolor="#ffffff" />
inkscape:document-rotation="0"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview907"
showgrid="false"
inkscape:zoom="2.9247028"
inkscape:cx="187.49592"
inkscape:cy="51.482576"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:object-nodes="false" />
<defs
id="defs2">
<inkscape:perspective
id="perspective32764"
inkscape:persp3d-origin="148.5 : 70 : 1"
inkscape:vp_z="297 : 105 : 1"
inkscape:vp_y="0 : 1000 : 0"
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 105 : 1"
sodipodi:type="inkscape:persp3d" />
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="297 : 105 : 1"
inkscape:persp3d-origin="148.5 : 70 : 1"
id="perspective32764" />
<marker
inkscape:isstock="true"
inkscape:stockid="ExperimentalArrow"
orient="auto-start-reverse"
refY="3.0"
refX="5.0"
id="marker1181"
refX="5.0"
refY="3.0"
orient="auto-start-reverse"
inkscape:stockid="ExperimentalArrow">
inkscape:isstock="true">
<path
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
id="path1179"
d="m 10,3 -10,3 0,-6 z"
id="path1179" />
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible;"
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path912" />
</marker>
<marker
orient="auto"
refY="0.0"
refX="0.0"
id="marker1176"
style="overflow:visible">
<path
id="path1055"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
transform="scale(0.8)" />
</marker>
<marker
style="overflow:visible"
id="TriangleOutL"
refX="0.0"
refY="0.0"
orient="auto">
<path
transform="scale(0.8)"
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
id="path1162" />
</marker>
<marker
orient="auto-start-reverse"
refY="3.0"
refX="5.0"
id="marker4178">
<path
id="path4176"
d="m 10,3 -10,3 0,-6 z"
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
</marker>
<marker
orient="auto-start-reverse"
refY="3.0"
refX="5.0"
id="marker4066">
<path
id="path4064"
d="m 10,3 -10,3 0,-6 z"
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
</marker>
<marker
orient="auto-start-reverse"
refY="3.0"
refX="5.0"
id="marker3448">
<path
id="path3446"
d="m 10,3 -10,3 0,-6 z"
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
</marker>
<marker
id="marker3312"
refX="5.0"
refY="3.0"
orient="auto-start-reverse">
<path
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
d="m 10,3 -10,3 0,-6 z"
id="path3310" />
</marker>
<marker
style="overflow:visible"
id="StopL"
refX="0.0"
refY="0.0"
orient="auto">
<path
transform="scale(0.8)"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1"
d="M 0.0,5.65 L 0.0,-5.65"
id="path1189" />
</marker>
<marker
orient="auto-start-reverse"
refY="3.0"
refX="5.0"
id="marker1984">
<path
id="path1982"
d="m 10,3 -10,3 0,-6 z"
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
</marker>
<marker
orient="auto-start-reverse"
refY="3.0"
refX="5.0"
id="marker1920">
<path
id="path1918"
d="m 10,3 -10,3 0,-6 z"
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
</marker>
<marker
style="overflow:visible"
id="marker1502"
refX="0.0"
refY="0.0"
orient="auto">
<path
transform="scale(0.6) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
id="path1500" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Sstart"
refX="0.0"
refY="0.0"
orient="auto">
<path
transform="scale(0.3) translate(-2.3,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#bbbcbc;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
id="path1050" />
</marker>
<marker
style="overflow:visible"
id="marker1406"
refX="0.0"
refY="0.0"
orient="auto">
<path
transform="scale(0.4) translate(10,0)"
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path1404" />
</marker>
<marker
style="overflow:visible;"
id="Arrow2Mend"
refX="0.0"
refY="0.0"
orient="auto">
inkscape:isstock="true">
<path
transform="scale(0.6) rotate(180) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#bbbcbc;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
id="path1047" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Mstart"
refX="0.0"
refY="0.0"
orient="auto">
<path
transform="scale(0.6) translate(0,0)"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#bbbcbc;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
id="path1044" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Mstart"
refX="0.0"
refY="0.0"
orient="auto">
<path
transform="scale(0.4) translate(10,0)"
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
id="path912"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path1026" />
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
id="ExperimentalArrow"
style="overflow:visible"
id="marker1176"
refX="0.0"
refY="0.0"
orient="auto">
<path
transform="scale(0.8)"
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
id="path1055" />
</marker>
<marker
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutL"
style="overflow:visible">
<path
id="path1162"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
transform="scale(0.8)" />
</marker>
<marker
id="marker4178"
refX="5.0"
refY="3.0"
orient="auto-start-reverse">
<path
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
d="m 10,3 -10,3 0,-6 z"
id="path1273" />
id="path4176" />
</marker>
<marker
id="marker4066"
refX="5.0"
refY="3.0"
orient="auto-start-reverse">
<path
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
d="m 10,3 -10,3 0,-6 z"
id="path4064" />
</marker>
<marker
id="marker3448"
refX="5.0"
refY="3.0"
orient="auto-start-reverse">
<path
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
d="m 10,3 -10,3 0,-6 z"
id="path3446" />
</marker>
<marker
orient="auto-start-reverse"
refY="3"
refX="5"
id="ExperimentalArrow-5">
refY="3.0"
refX="5.0"
id="marker3312">
<path
id="path1273-2"
d="M 10,3 0,6 V 0 Z"
id="path3310"
d="m 10,3 -10,3 0,-6 z"
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
</marker>
<marker
orient="auto"
refY="0.0"
refX="0.0"
id="StopL"
style="overflow:visible">
<path
id="path1189"
d="M 0.0,5.65 L 0.0,-5.65"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8)" />
</marker>
<marker
id="marker1984"
refX="5.0"
refY="3.0"
orient="auto-start-reverse">
<path
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
d="m 10,3 -10,3 0,-6 z"
id="path1982" />
</marker>
<marker
id="marker1920"
refX="5.0"
refY="3.0"
orient="auto-start-reverse">
<path
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
d="m 10,3 -10,3 0,-6 z"
id="path1918" />
</marker>
<marker
orient="auto"
refY="0.0"
refX="0.0"
id="marker1502"
style="overflow:visible">
<path
id="path1500"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) translate(0,0)" />
</marker>
<marker
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Sstart"
style="overflow:visible">
<path
id="path1050"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#bbbcbc;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.3) translate(-2.3,0)" />
</marker>
<marker
orient="auto"
refY="0.0"
refX="0.0"
id="marker1406"
style="overflow:visible">
<path
id="path1404"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
transform="scale(0.4) translate(10,0)" />
</marker>
<marker
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mend"
style="overflow:visible;">
<path
id="path1047"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#bbbcbc;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) rotate(180) translate(0,0)" />
</marker>
<marker
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mstart"
style="overflow:visible">
<path
id="path1044"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#bbbcbc;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) translate(0,0)" />
</marker>
<marker
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path1026"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1;fill:#bbbcbc;fill-opacity:1"
transform="scale(0.4) translate(10,0)" />
</marker>
<marker
orient="auto-start-reverse"
refY="3"
refX="5"
id="ExperimentalArrow-2">
refY="3.0"
refX="5.0"
id="ExperimentalArrow">
<path
id="path1273-1"
d="M 10,3 0,6 V 0 Z"
id="path1273"
d="m 10,3 -10,3 0,-6 z"
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
</marker>
<marker
orient="auto-start-reverse"
refY="3"
refX="5"
id="ExperimentalArrow-3">
<path
id="path1273-6"
d="M 10,3 0,6 V 0 Z"
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1" />
</marker>
<marker
id="marker1984-1"
id="ExperimentalArrow-5"
refX="5"
refY="3"
orient="auto-start-reverse">
<path
inkscape:connector-curvature="0"
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
d="M 10,3 0,6 V 0 Z"
id="path1982-1" />
id="path1273-2" />
</marker>
<marker
orient="auto"
refY="0"
refX="0"
id="StopL-8"
style="overflow:visible">
id="ExperimentalArrow-2"
refX="5"
refY="3"
orient="auto-start-reverse">
<path
inkscape:connector-curvature="0"
id="path1189-1"
d="M 0,5.65 V -5.65"
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
d="M 10,3 0,6 V 0 Z"
id="path1273-1" />
</marker>
<marker
id="ExperimentalArrow-3"
refX="5"
refY="3"
orient="auto-start-reverse">
<path
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
d="M 10,3 0,6 V 0 Z"
id="path1273-6" />
</marker>
<marker
orient="auto-start-reverse"
refY="3"
refX="5"
id="marker1984-1">
<path
id="path1982-1"
d="M 10,3 0,6 V 0 Z"
style="fill:context-stroke;stroke:#bbbcbc;stroke-opacity:1"
inkscape:connector-curvature="0" />
</marker>
<marker
style="overflow:visible"
id="StopL-8"
refX="0"
refY="0"
orient="auto">
<path
transform="scale(0.8)"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#bbbcbc;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8)" />
d="M 0,5.65 V -5.65"
id="path1189-1"
inkscape:connector-curvature="0" />
</marker>
</defs>
<metadata
@@ -319,227 +319,207 @@
<g
id="layer1">
<path
inkscape:connector-curvature="0"
id="path963"
style="fill:#979797;fill-opacity:1;stroke:#979797;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 156.931,209.46621 156.11454,0.72523508"
style="fill:#979797;fill-opacity:1;stroke:#979797;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="path963"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path967"
d="m 26.520225,102.56968 101.609595,0.0638 v 0 0 0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 27.881686,115.27013 26.766659,0.0328 v 0 0 0"
id="path967-2" />
d="m 26.520225,170.56968 101.609595,0.0638 v 0 0 0"
id="path967"
inkscape:connector-curvature="0" />
<path
id="path967-2"
d="m 27.881686,183.27013 26.766659,0.0328 v 0 0 0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<g
style="fill:#99cfff;fill-rule:evenodd;stroke:#002680;stroke-width:4;stroke-linejoin:round"
transform="matrix(0.26458333,0,0,0.26458333,36.848572,131.73977)"
id="g842"
transform="matrix(0.26458333,0,0,0.26458333,36.848572,63.739768)">
style="fill:#99cfff;fill-rule:evenodd;stroke:#002680;stroke-width:4;stroke-linejoin:round">
<rect
id="Rectangle-Copy"
x="11"
y="147"
height="48"
width="334"
height="48" />
y="147"
x="11"
id="Rectangle-Copy" />
<rect
id="Rectangle-Copy-2"
x="0"
y="199"
height="4"
width="356"
height="4" />
y="199"
x="0"
id="Rectangle-Copy-2" />
<polygon
id="Rectangle"
points="68,147 98,0 257.62107,0 287.62107,147 " />
points="257.62107,0 287.62107,147 68,147 98,0 "
id="Rectangle" />
<polygon
id="polygon840"
points="257.62107,147 287.62107,179 68,179 98,147 "
transform="matrix(1,0,0,-1,0,326)"
points="68,179 98,147 257.62107,147 287.62107,179 " />
id="polygon840" />
</g>
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.506214;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 128.13064,169.64777 -0.94836,-79.838053 v 0"
id="path1004"
d="m 128.13064,101.64777 -0.94836,-79.838053 v 0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.506214;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.507232;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 7.7467941,90.012593 144.96042,89.468186 v 0 0"
id="path1006"
d="M 7.7467941,22.012593 144.96042,21.468186 v 0 0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.507232;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 81.767182,90.017085 V 100.08673"
id="path1012"
d="M 81.767182,22.017085 V 32.086727"
style="fill:none;stroke:#bbbcbc;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path1014"
d="m 31.419476,115.38155 -5.26e-4,69.84397 v 0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.510365;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path1016"
d="M 14.545513,185.5762 141.91289,185.30405"
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path1018"
style="fill:none;stroke:#bbbcbc;stroke-width:0.530934;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 169.07902,100.69655 32.94825,0.0636 v 0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.530934;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="path1018"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.420779;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:"
d="M 136.74199,21.332161 V 32.475182"
id="path1012-1" />
id="path1012-1"
d="M 136.74199,89.332161 V 100.47518"
style="fill:none;stroke:#bbbcbc;stroke-width:0.420779;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.573405;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#StopL)"
d="m 8.1373094,90.089263 v 7.19921"
id="path1012-1-6"
d="m 8.1373094,22.089263 v 7.19921"
style="fill:none;stroke:#bbbcbc;stroke-width:0.573405;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#StopL)" />
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path3838"
style="fill:none;stroke:#bbbcbd;stroke-width:0.525286;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 209.62896,109.94961 h -40.55073 v 0"
style="fill:none;stroke:#bbbcbd;stroke-width:0.525286;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="path3838"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path4058"
style="fill:none;stroke:#bbbcbc;stroke-width:0.517246;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 274.94556,100.96858 h 16.60132"
style="fill:none;stroke:#bbbcbc;stroke-width:0.517246;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="path4058"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path4060"
style="fill:none;stroke:#bbbcbc;stroke-width:0.505291;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 278.21139,114.84836 H 291.2747"
style="fill:none;stroke:#bbbcbc;stroke-width:0.505291;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="path4060"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.5132;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path1012-9"
d="m 290.73041,100.87214 v 14.2521"
id="path1012-9" />
style="fill:none;stroke:#bbbcbc;stroke-width:0.5132;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<g
style="fill:#99cfff;fill-rule:evenodd;stroke:#002680;stroke-width:4;stroke-linejoin:round"
transform="matrix(0.26458333,0,0,0.26458333,184.30533,62.410816)"
id="g918"
transform="matrix(0.26458333,0,0,0.26458333,184.30533,62.410816)">
style="fill:#99cfff;fill-rule:evenodd;stroke:#002680;stroke-width:4;stroke-linejoin:round">
<rect
id="Rectangle-Copy-5"
x="11"
y="147"
height="48"
width="334"
height="48" />
y="147"
x="11"
id="Rectangle-Copy-5" />
<rect
id="Rectangle-Copy-2-3"
x="0"
y="199"
height="4"
width="356"
height="4" />
y="199"
x="0"
id="Rectangle-Copy-2-3" />
<polygon
id="Rectangle-1"
points="257.62107,0 287.62107,147 68,147 98,0 " />
points="257.62107,0 287.62107,147 68,147 98,0 "
id="Rectangle-1" />
<polygon
id="polygon916"
points="257.62107,147 287.62107,179 68,179 98,147 "
transform="matrix(1,0,0,-1,0,326)"
points="257.62107,147 287.62107,179 68,179 98,147 " />
id="polygon916" />
</g>
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.544692;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path1012-5"
d="M 178.87573,62.402301 V 100.34339"
id="path1012-5" />
style="fill:none;stroke:#bbbcbc;stroke-width:0.544692;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path6954"
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 209.90111,62.050773 H 178.05927"
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="path6954"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path7676"
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 290.73042,115.10538 v 4.08228 0"
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="path7676"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path7678"
style="fill:none;stroke:#bbbcbc;stroke-width:0.585901;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:"
d="M 172.07191,96.971722 V 109.67746"
style="fill:none;stroke:#bbbcbc;stroke-width:0.585901;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:" />
id="path7678"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path7680"
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 172.07191,110.04689 v 8.33945"
style="fill:none;stroke:#bbbcbc;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="path7680"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path1012-1-6-1"
d="M 28.871798,89.809207 V 170.21125"
style="fill:none;stroke:#bbbcbc;stroke-width:0.510445;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 28.871798,21.809207 V 102.21125"
id="path1012-1-6-1" />
inkscape:connector-curvature="0" />
<path
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 178.74528,61.891705 -1.99023,4.161391 h 3.98046 z"
id="path32784"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path32784"
d="m 178.74528,61.891705 -1.99023,4.161391 h 3.98046 z"
id="path32784-2"
d="m 81.78039,89.621142 -1.99023,4.16139 h 3.98046 z"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 81.78039,21.621142 -1.99023,4.16139 h 3.98046 z"
id="path32784-2"
inkscape:connector-curvature="0" />
<path
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 28.948815,21.983004 -1.99023,4.16139 h 3.98046 z"
inkscape:connector-curvature="0"
id="path32784-6"
inkscape:connector-curvature="0" />
d="m 28.948815,89.983004 -1.99023,4.16139 h 3.98046 z"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 8.1418572,21.802077 -1.99023,4.16139 h 3.9804598 z"
inkscape:connector-curvature="0"
id="path32784-5"
inkscape:connector-curvature="0" />
d="m 8.1418572,89.802077 -1.99023,4.16139 h 3.9804598 z"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 31.481832,115.52385 -1.99023,4.16139 h 3.98046 z"
id="path32784-57"
inkscape:connector-curvature="0" />
<path
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 290.75461,101.04944 -1.99023,4.16139 h 3.98046 z"
inkscape:connector-curvature="0"
id="path32784-51"
inkscape:connector-curvature="0" />
d="m 290.75461,101.04944 -1.99023,4.16139 h 3.98046 z"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 172.0645,109.91501 -1.99023,4.16139 h 3.98046 z"
inkscape:connector-curvature="0"
id="path32784-23"
inkscape:connector-curvature="0" />
d="m 172.0645,109.91501 -1.99023,4.16139 h 3.98046 z"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.299082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278896px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 81.961325,35.733683 -1.99023,-3.6186 h 3.98046 z"
inkscape:connector-curvature="0"
id="path32784-3"
d="m 81.961325,103.73368 -1.99023,-3.6186 h 3.98046 z"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278896px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 136.96407,103.64323 -1.99023,-3.6186 h 3.98046 z"
id="path32784-3-7"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path32784-3-7"
d="m 136.96407,35.643226 -1.99023,-3.6186 h 3.98046 z"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path32784-3-73"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 172.24542,100.41618 -1.99023,-3.618595 h 3.98046 z"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
id="path32784-3-73"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path32784-3-2"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 178.93983,100.41619 -1.99023,-3.6186 h 3.98046 z"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
id="path32784-3-2"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path32784-3-70"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 290.75462,114.89059 -1.99023,-3.6186 h 3.98046 z"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
id="path32784-3-70"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 127.93118,170.04456 -1.99023,-3.6186 h 3.98046 z"
id="path32784-3-5"
d="m 127.93118,102.04456 -1.99023,-3.618604 h 3.98046 z"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path32784-3-24"
d="m 31.481836,185.27239 -1.99023,-3.6186 h 3.98046 z"
style="fill:#bbbcbc;fill-opacity:1;stroke:none;stroke-width:0.278897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 20 KiB

@@ -4,5 +4,5 @@
"enabled": true,
"apiServerUrl": "http://localhost:9000/"
},
"allUIVisible": true
"allUIVisible": false
}
+1 -2
View File
@@ -19,13 +19,12 @@
</head>
<body>
<app>
<img src="/assets/icons/png/bg.png" style="display:hidden">
<div id="loading-spinner"><i class="fa fa-circle-o-notch fa-spin"></i></div>
</app>
<script src="/dist/vendors~main.js" type="text/javascript"></script>
<script src="/dist/build.js" type="text/javascript"></script>
</body>
</html>
+2648 -2628
View File
File diff suppressed because it is too large Load Diff
+11 -11
View File
@@ -25,7 +25,7 @@
"svg-pan-zoom": "3.6.1",
"v-tooltip": "^2.0.3",
"vee-validate": "2.1.1",
"vue": "^2.6.11",
"vue": "^2.6.12",
"vue-chartjs": "^3.5.0",
"vue-class-component": "7.2.3",
"vue-drag-drop": "1.1.4",
@@ -37,16 +37,16 @@
"vuex": "3.1.3"
},
"devDependencies": {
"@babel/plugin-proposal-export-default-from": "7.8.3",
"@babel/plugin-proposal-export-default-from": "7.10.4",
"@types/es6-promise": "3.3.0",
"@vue/cli-plugin-babel": "^4.1.0",
"@vue/cli-plugin-eslint": "^4.1.0",
"@vue/cli-plugin-router": "^4.1.0",
"@vue/cli-plugin-typescript": "^4.1.0",
"@vue/cli-plugin-vuex": "^4.1.0",
"@vue/cli-service": "^4.2.3",
"@vue/cli-plugin-babel": "^4.5.4",
"@vue/cli-plugin-eslint": "^4.5.4",
"@vue/cli-plugin-router": "^4.5.4",
"@vue/cli-plugin-typescript": "^4.5.4",
"@vue/cli-plugin-vuex": "^4.5.4",
"@vue/cli-service": "^4.5.4",
"autoprefixer": "^7.1.2",
"babel-loader": "8.0.6",
"babel-loader": "8.1.0",
"chalk": "^2.0.1",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0",
@@ -57,8 +57,8 @@
"ts-loader": "6.2.1",
"typescript": "3.8.3",
"url-loader": "^3.0.0",
"vue-loader": "^15.9.0",
"vue-template-compiler": "^2.6.11",
"vue-loader": "^15.9.3",
"vue-template-compiler": "^2.6.12",
"webpack": "^4.42.0",
"webpack-cli": "3.2.3",
"webpack-dev-server": "3.2.1"

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