From e940d3d63275761567186beea404f24cab2fb1c7 Mon Sep 17 00:00:00 2001 From: Lucio Maranta Date: Thu, 25 Jul 2019 12:19:38 +0200 Subject: [PATCH 1/5] WIP selected tool sub menu --- Step.Model/DTOModels/DTOHeadModel.cs | 8 +++ Step/Listeners/SignalR/SignalRListener.cs | 9 ++- Step/wwwroot/assets/styles/base/head.less | 48 ++++++++++++++++ Step/wwwroot/assets/styles/style.css | 57 +++++++++++++++++++ .../production/components/head-production.vue | 29 ++++++---- .../production/components/production.ts | 7 +++ .../production/components/production.vue | 3 +- 7 files changed, 147 insertions(+), 14 deletions(-) diff --git a/Step.Model/DTOModels/DTOHeadModel.cs b/Step.Model/DTOModels/DTOHeadModel.cs index 6d51ec8e..65141a4f 100644 --- a/Step.Model/DTOModels/DTOHeadModel.cs +++ b/Step.Model/DTOModels/DTOHeadModel.cs @@ -65,6 +65,14 @@ namespace Step.Model.DTOModels // Fanuc-Osai public int FamilyId; public int ShankId; + + public bool Disabled { get; set; } + public bool Broken { get; set; } + public bool Measured { get; set; } + public int ResidualLife { get; set; } + + public int MaxSpeed { get; set; } + public byte MaxLoad { get; set; } } public class DTOSpindleModel : DTOHeadModel diff --git a/Step/Listeners/SignalR/SignalRListener.cs b/Step/Listeners/SignalR/SignalRListener.cs index dd3acc1a..e2cdece5 100644 --- a/Step/Listeners/SignalR/SignalRListener.cs +++ b/Step/Listeners/SignalR/SignalRListener.cs @@ -174,12 +174,17 @@ namespace Step.Listeners.SignalR // Convert head into child model var spindle = (head as DTOSpindleModel); // Get tool data - var tool = controller.FindTool(spindle.MountedTool); + var tool = controller.FindToolWithDependencies(spindle.MountedTool); if( tool != null) spindle.ToolData = new DTOToolInSpindleModel() { FamilyId = tool.FamilyId, - ShankId = tool.ShankId ?? 0 + ShankId = tool.ShankId ?? 0, + Broken = ((DTONcToolModel)tool).Broken, + Disabled = ((DTONcToolModel)tool).Disabled, + Measured = ((DTONcToolModel)tool).Measured, + MaxLoad = tool.Family.MaxLoad, + MaxSpeed = tool.Family.MaxSpeed, }; } } diff --git a/Step/wwwroot/assets/styles/base/head.less b/Step/wwwroot/assets/styles/base/head.less index db6f529e..c1020319 100644 --- a/Step/wwwroot/assets/styles/base/head.less +++ b/Step/wwwroot/assets/styles/base/head.less @@ -201,11 +201,59 @@ .detail-box { height:94px; + border-top: 2px solid #979797; + width: 100%; + display: flex; } .smooth-enter, .smooth-leave-to { height: 0; transition: height .5s; } + + .row { + display: flex; + border-bottom: 2px solid #979797; + flex-direction: row; + flex-wrap: wrap; + width: 100%; + justify-content: center; + align-items: center; + flex:1; + } + .column{ + flex:1; + text-align: center; + width: 100%; + } + + .column-left { + display: flex; + flex-direction: column; + width: 70%; + border-right: 2px solid #979797; + } + + .column-right { + display: flex; + flex-direction: column; + width: 30%; + } + + .column-bottom-line { + display: flex; + flex-direction: column; + flex-basis: 100%; + flex: 1; + } + + .toolError{ + background-image: linear-gradient(to bottom, #ff4d63, #a10518); + color: #f1f1f1; + } + .measured{ + color: #f1f1f1; + background-image: linear-gradient(to bottom, #1791ff, #005e94); + } } .head-place-holder{ diff --git a/Step/wwwroot/assets/styles/style.css b/Step/wwwroot/assets/styles/style.css index 9c8bedf8..4651fe24 100644 --- a/Step/wwwroot/assets/styles/style.css +++ b/Step/wwwroot/assets/styles/style.css @@ -6622,6 +6622,9 @@ footer .container button.big:before { .head-production .detail-box, .head-awj .detail-box { height: 94px; + border-top: 2px solid #979797; + width: 100%; + display: flex; } .head-spindle .smooth-enter, .head-production .smooth-enter, @@ -6632,6 +6635,60 @@ footer .container button.big:before { height: 0; transition: height .5s; } +.head-spindle .row, +.head-production .row, +.head-awj .row { + display: flex; + border-bottom: 2px solid #979797; + flex-direction: row; + flex-wrap: wrap; + width: 100%; + justify-content: center; + align-items: center; + flex: 1; +} +.head-spindle .column, +.head-production .column, +.head-awj .column { + flex: 1; + text-align: center; + width: 100%; +} +.head-spindle .column-left, +.head-production .column-left, +.head-awj .column-left { + display: flex; + flex-direction: column; + width: 70%; + border-right: 2px solid #979797; +} +.head-spindle .column-right, +.head-production .column-right, +.head-awj .column-right { + display: flex; + flex-direction: column; + width: 30%; +} +.head-spindle .column-bottom-line, +.head-production .column-bottom-line, +.head-awj .column-bottom-line { + display: flex; + flex-direction: column; + flex-basis: 100%; + flex: 1; +} +.head-spindle .toolError, +.head-production .toolError, +.head-awj .toolError { + background-image: linear-gradient(to bottom, #ff4d63, #a10518); + color: #f1f1f1; +} +.head-spindle .measured, +.head-production .measured, +.head-awj .measured { + color: #f1f1f1; + background-image: linear-gradient(to bottom, #1791ff, #005e94); +} .head-place-holder { width: 240px; height: 102px; diff --git a/Step/wwwroot/src/app_modules/production/components/head-production.vue b/Step/wwwroot/src/app_modules/production/components/head-production.vue index dc521c3c..5dc653b5 100644 --- a/Step/wwwroot/src/app_modules/production/components/head-production.vue +++ b/Step/wwwroot/src/app_modules/production/components/head-production.vue @@ -45,15 +45,15 @@ {{vacuum.toFixed(2)}} {{'head_label_bar' | localize("bar")}} -
+
{{tool}} - {{'tooling_family_abbreviation' | localize('DP%d', familyId)}} - - {{'tooling_shank_abbreviation' | localize('DP%d', shankId)}} + {{'tooling_family_abbreviation' | localize('DP%d', toolData.familyId)}} + - {{'tooling_shank_abbreviation' | localize('DP%d', toolData.shankId)}} {{toolName}} - {{'tooling_tool_abbreviation' | localize('DP%d',toolDuplo)}} + {{'tooling_tool_abbreviation' | localize('DP%d', toolDuplo)}}
@@ -63,10 +63,20 @@ {{abrasive}} {{'head_label_gmin' | localize("g/min")}}
- -
- TESTsdajkhasjk ajkdhjkasdhjk sadhjk ashjksdahjk sdahj - ksdahjkjjkhadjhdashjsdahj sdhj hj jhjhjkhjk jkhjkhhjksjhksjhkajksdh akjdhjkjk ahdjkahdjka dhjkas h + +
+
+ {{'tooling_equipment_param_residualLife' | localize("Residual Life")}}: {{toolData.residualLife}} +
+ {{'tooling_equipment_param_maxLoad' | localize("Max load")}}: {{toolData.maxLoad}} + {{'tooling_equipment_param_maxSpeed' | localize("Max speed")}}: {{toolData.maxSpeed}} +
+
+
+ {{'tooling_equipment_param_disabled' | localize("Disabled")}} + {{'tooling_equipment_param_broken' | localize("Broken")}} + {{'tooling_equipment_param_measured' | localize("Measured")}} +
@@ -98,8 +108,7 @@ export default { title: { default: "head 1"}, workedTime: { default: 0 }, rotation: { default: 0}, - familyId: {default: 0}, - shankId: {default: 0}, + toolData: {} }, // // data: function(){ // // return{ diff --git a/Step/wwwroot/src/app_modules/production/components/production.ts b/Step/wwwroot/src/app_modules/production/components/production.ts index 1bd1fb9b..624544d3 100644 --- a/Step/wwwroot/src/app_modules/production/components/production.ts +++ b/Step/wwwroot/src/app_modules/production/components/production.ts @@ -146,6 +146,13 @@ export default class Production extends Vue { if(r.toolData) return r.toolData.familyId } + getHeadsToolData(id) { + var r = this.getHeadsProperty(id); + if(r.toolData) + return r.toolData + + return null + } clickCms() { productionActions.setCMSHmi(store); } diff --git a/Step/wwwroot/src/app_modules/production/components/production.vue b/Step/wwwroot/src/app_modules/production/components/production.vue index 5811f877..69d39452 100644 --- a/Step/wwwroot/src/app_modules/production/components/production.vue +++ b/Step/wwwroot/src/app_modules/production/components/production.vue @@ -74,8 +74,7 @@ :rotation="getHeadsProperty(h.id).rotation" :configured="getHeadsProperty(h.id).configured" :workedTime="getHeadsProperty(h.id).workedTime" - :shankId="getHeadsShankId(h.id)" - :familyId="getHeadsFamilyId(h.id)" + :toolData="getHeadsToolData(h.id)" @click="selectHead(h)" @overridePlus="overridePlus(h.id)" @overrideMinus="overrideMinus(h.id)">
From 3c00401e61eddda0e18e7cefd416c943a13b1c57 Mon Sep 17 00:00:00 2001 From: Lucio Maranta Date: Fri, 26 Jul 2019 13:01:33 +0200 Subject: [PATCH 2/5] WIP tool mounted in spindle data --- Libs/CMS_CORE_Library.dll | Bin 2879488 -> 2879488 bytes Step.Model/Constants.cs | 1 + Step.Utils/supportFunctions.cs | 12 +++--- Step/Controllers/WebApi/LanguageController.cs | 2 +- .../WebApi/NcToolManagerController.cs | 2 +- .../Database/SignalRDatabaseHandler.cs | 4 ++ Step/Properties/AssemblyInfo.cs | 2 +- Step/wwwroot/assets/styles/base/head.less | 33 ++++++++++++++- Step/wwwroot/assets/styles/style.css | 39 +++++++++++++++++- .../production/components/head-production.vue | 18 +++++--- 10 files changed, 96 insertions(+), 17 deletions(-) diff --git a/Libs/CMS_CORE_Library.dll b/Libs/CMS_CORE_Library.dll index 61b948f0acc1c6274e3f300412a71182ea3bd24c..ab4f1d62718f7fb9b37d9847e5749231b26046b5 100644 GIT binary patch delta 261 zcmZp8u%592h$nO~SM0KC>~8I5Z0%-h?PhN6W@+taZS7`j?PhQ7=4kEaZ0+W1?dERn z=GofK+xkb~x`9pYq3L1XTPKMIJU;7lyItWgFA(zqF+UIs0I?tt3jwh(5Q_k@C=iPQ zu{aP*0I?(xO98Po5X%6uED*~9u{;nf0I?zvD*>@G5UT*ODiEsyu{scI0I}wFg}+)n zuRt!JuK!$H(r`=bWGC&jKb#xaD)~t8&tzm|U|?{ziV4pz$}TQQOiqn)_6?4A_78H6 S_wjTJatw;xUinOiak#G2a`{%Y~O z0=ay;{&Q_f!&1Sr1e?6&u3KDgPvQ{>Z)9X(U~smI3C}OeE-pw+PK`; y.LangKey == language).FirstOrDefault(); + var translatedValue = label.Label.TextContents?.Where(y => y.LangKey == language).FirstOrDefault(); if (translatedValue != null) translatedNames.Add("scada_label_" + label.Id, translatedValue.TextContent); else diff --git a/Step/Controllers/WebApi/NcToolManagerController.cs b/Step/Controllers/WebApi/NcToolManagerController.cs index 5ec6f7d7..15bd9a86 100644 --- a/Step/Controllers/WebApi/NcToolManagerController.cs +++ b/Step/Controllers/WebApi/NcToolManagerController.cs @@ -163,7 +163,7 @@ namespace Step.Controllers.WebApi public IHttpActionResult PutTool(int toolId, [FromBody][Required]DTONewNcToolWithFamilyModel dtoToolWithFamily) { if (!ModelState.IsValid) - return BadRequest(ModelState); + return BadRequest(ModelState); DbNcToolModel tool = null; using (NcToolManagerController toolsManager = new NcToolManagerController()) diff --git a/Step/Listeners/Database/SignalRDatabaseHandler.cs b/Step/Listeners/Database/SignalRDatabaseHandler.cs index 7d4175cd..9f114d8d 100644 --- a/Step/Listeners/Database/SignalRDatabaseHandler.cs +++ b/Step/Listeners/Database/SignalRDatabaseHandler.cs @@ -72,6 +72,10 @@ namespace Step.Listeners.Database // Update nc data ncHandler.UpdateNcTools(controller); } + + // I need to update tool in spindle data + // Clean the heads cache, so the heads thread will be sent to the next cycle + LastHeadsData = new List(); } } } diff --git a/Step/Properties/AssemblyInfo.cs b/Step/Properties/AssemblyInfo.cs index f1edfae4..450f2ca5 100644 --- a/Step/Properties/AssemblyInfo.cs +++ b/Step/Properties/AssemblyInfo.cs @@ -31,4 +31,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("1.2.2")] +[assembly: AssemblyVersion("1.3")] diff --git a/Step/wwwroot/assets/styles/base/head.less b/Step/wwwroot/assets/styles/base/head.less index c1020319..d5e42a33 100644 --- a/Step/wwwroot/assets/styles/base/head.less +++ b/Step/wwwroot/assets/styles/base/head.less @@ -204,6 +204,11 @@ border-top: 2px solid #979797; width: 100%; display: flex; + span { + font-size: 18px; + line-height: 20px; + font-weight: 600; + } } .smooth-enter, .smooth-leave-to { height: 0; @@ -212,14 +217,38 @@ .row { display: flex; - border-bottom: 2px solid #979797; flex-direction: row; flex-wrap: wrap; width: 100%; - justify-content: center; + justify-content: space-between; align-items: center; flex:1; + span{ + margin-left: 5px; + } + .number { + color: #4b4b4b; + width: 70px; + height: 25px; + border-radius: 2px; + display: flex; + justify-content: flex-end; + align-items: center; + margin-right: 8px; + color: #4b4b4b; + padding-right: 8px; + font-size: 20px; + } } + + .row:nth-child(odd) .number { + background-color: @color-white4; + } + + .row:nth-child(even) .number { + background-color: @color-clear-blue-30; + } + .column{ flex:1; text-align: center; diff --git a/Step/wwwroot/assets/styles/style.css b/Step/wwwroot/assets/styles/style.css index 4651fe24..775adfef 100644 --- a/Step/wwwroot/assets/styles/style.css +++ b/Step/wwwroot/assets/styles/style.css @@ -6626,6 +6626,13 @@ footer .container button.big:before { width: 100%; display: flex; } +.head-spindle .detail-box span, +.head-production .detail-box span, +.head-awj .detail-box span { + font-size: 18px; + line-height: 20px; + font-weight: 600; +} .head-spindle .smooth-enter, .head-production .smooth-enter, .head-awj .smooth-enter, @@ -6639,14 +6646,42 @@ footer .container button.big:before { .head-production .row, .head-awj .row { display: flex; - border-bottom: 2px solid #979797; flex-direction: row; flex-wrap: wrap; width: 100%; - justify-content: center; + justify-content: space-between; align-items: center; flex: 1; } +.head-spindle .row span, +.head-production .row span, +.head-awj .row span { + margin-left: 5px; +} +.head-spindle .row .number, +.head-production .row .number, +.head-awj .row .number { + width: 70px; + height: 25px; + border-radius: 2px; + display: flex; + justify-content: flex-end; + align-items: center; + margin-right: 8px; + color: #4b4b4b; + padding-right: 8px; + font-size: 20px; +} +.head-spindle .row:nth-child(odd) .number, +.head-production .row:nth-child(odd) .number, +.head-awj .row:nth-child(odd) .number { + background-color: #f3f3f3; +} +.head-spindle .row:nth-child(even) .number, +.head-production .row:nth-child(even) .number, +.head-awj .row:nth-child(even) .number { + background-color: rgba(23, 145, 255, 0.3); +} .head-spindle .column, .head-production .column, .head-awj .column { diff --git a/Step/wwwroot/src/app_modules/production/components/head-production.vue b/Step/wwwroot/src/app_modules/production/components/head-production.vue index 5dc653b5..516d6722 100644 --- a/Step/wwwroot/src/app_modules/production/components/head-production.vue +++ b/Step/wwwroot/src/app_modules/production/components/head-production.vue @@ -63,13 +63,21 @@ {{abrasive}} {{'head_label_gmin' | localize("g/min")}} +
- {{'tooling_equipment_param_residualLife' | localize("Residual Life")}}: {{toolData.residualLife}}
- {{'tooling_equipment_param_maxLoad' | localize("Max load")}}: {{toolData.maxLoad}} - {{'tooling_equipment_param_maxSpeed' | localize("Max speed")}}: {{toolData.maxSpeed}} + {{'tooling_equipment_param_residualLife' | localize("Residual Life")}}: +
{{toolData.residualLife}}
+
+
+ {{'tooling_equipment_param_maxLoad' | localize("Max load")}}: +
{{toolData.maxLoad}}
+
+
+ {{'tooling_equipment_param_maxSpeed' | localize("Max speed")}}: +
{{toolData.maxSpeed}}
@@ -160,9 +168,9 @@ export default { return ore+ ":"+minuti+":"+secondi+"\nhh:mm:ss"; }, toggleDetail() { - this.detailBox = !this.detailBox + if(this.toolData) + this.detailBox = !this.detailBox } - } } \ No newline at end of file From 82a126092f40f283ac55ea82921111eff8b1f3ee Mon Sep 17 00:00:00 2001 From: Nicola Carminati Date: Mon, 29 Jul 2019 08:20:45 +0200 Subject: [PATCH 3/5] Tool Status Images --- .../assets/icons/Tools/Psd/Tool_Broken.psd | Bin 0 -> 88214 bytes .../assets/icons/Tools/Psd/Tool_Disabled.psd | Bin 0 -> 61354 bytes .../assets/icons/Tools/Psd/Tool_Measured.psd | Bin 0 -> 65286 bytes Step/wwwroot/assets/icons/Tools/ToolBroken.png | Bin 0 -> 13436 bytes .../wwwroot/assets/icons/Tools/ToolDisabled.png | Bin 0 -> 6939 bytes .../wwwroot/assets/icons/Tools/ToolMeasured.png | Bin 0 -> 8420 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Step/wwwroot/assets/icons/Tools/Psd/Tool_Broken.psd create mode 100644 Step/wwwroot/assets/icons/Tools/Psd/Tool_Disabled.psd create mode 100644 Step/wwwroot/assets/icons/Tools/Psd/Tool_Measured.psd create mode 100644 Step/wwwroot/assets/icons/Tools/ToolBroken.png create mode 100644 Step/wwwroot/assets/icons/Tools/ToolDisabled.png create mode 100644 Step/wwwroot/assets/icons/Tools/ToolMeasured.png diff --git a/Step/wwwroot/assets/icons/Tools/Psd/Tool_Broken.psd b/Step/wwwroot/assets/icons/Tools/Psd/Tool_Broken.psd new file mode 100644 index 0000000000000000000000000000000000000000..f58768ee2f763f05cd25c379a1d6625a6c6d95b3 GIT binary patch literal 88214 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 z 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 literal 0 HcmV?d00001 diff --git a/Step/wwwroot/assets/icons/Tools/Psd/Tool_Disabled.psd b/Step/wwwroot/assets/icons/Tools/Psd/Tool_Disabled.psd new file mode 100644 index 0000000000000000000000000000000000000000..e61373913b80bc413925d3567134ab07b089ecb0 GIT binary patch literal 61354 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 literal 0 HcmV?d00001 diff --git a/Step/wwwroot/assets/icons/Tools/Psd/Tool_Measured.psd b/Step/wwwroot/assets/icons/Tools/Psd/Tool_Measured.psd new file mode 100644 index 0000000000000000000000000000000000000000..1b516a940ad6e8888f698c2ab9400a3e24aa7fbd GIT binary patch literal 65286 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 Y*6CHT8gESdUu0UHof1WV#dO*K1FRg_=Kufz literal 0 HcmV?d00001 diff --git a/Step/wwwroot/assets/icons/Tools/ToolBroken.png b/Step/wwwroot/assets/icons/Tools/ToolBroken.png new file mode 100644 index 0000000000000000000000000000000000000000..89558223b3e3a1004f1856481e9c9ca9a8b10c13 GIT binary patch literal 13436 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 Ju97qh`9Izb#;pJV literal 0 HcmV?d00001 diff --git a/Step/wwwroot/assets/icons/Tools/ToolDisabled.png b/Step/wwwroot/assets/icons/Tools/ToolDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..3a02f0ea3d1f5e0bc2176455f0898835ec2861dd GIT binary patch literal 6939 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 aOn`h72cv&?5_13l1!H|Py(c)oZc< literal 0 HcmV?d00001 diff --git a/Step/wwwroot/assets/icons/Tools/ToolMeasured.png b/Step/wwwroot/assets/icons/Tools/ToolMeasured.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a0a9a933056608b9fb07c7ab5605d4ad5890f7 GIT binary patch literal 8420 zcmb_=1yq#XxA!xE(jiJqmkPtsF-W(hASp4#00Rs;bc%{WgOoHVNP{9EAtC9|EmD%w zEz;kE@B9A0d++++`>pk@J8L~__Bqeq`}}sDbN2H>M@xm2h@J=l08%woMO^@Z&|W?S zSHYQQQ7aJuK%{_DP|#6RP+)O&cdROtrerxCmk!t$$xvX0?c5*MDn}q9|if=Mc=6?+I z+uGPT89S+8PFp_h_3a}MxkkwqyOiSqNa#Mj3m<2W)>dupY6!uhQk}(Pp;*GU*j;G@ zfNfk~pCC-R%qgVI1;7DZNBB4>JAPa|uGQf(1XyB$SvJaLVn~cG(8>3p^9ImK3zX}9 zupt6o0f3WlfIJ&eND8d)t4Uu0#tY&nX@K#Zn*{_wBm_vgrNV(DTL&QYAL;VqG_?R( z#j33{DY0N1s1MP zYg8dX6E>kINqtc0MomILz4z|+>>TS{i&KTXCCzOLTfzmlw4_w_>#EDR8oeX{Kz}sQ zd@e2%v%IwMW65^eX=}eN=iG7Ig-x1uXXd;<0tXME(CXWouvlCi#dYm~lzTQh7CZzd z3;_F?BQv4zgjps;{eDN`zT&5{Oc~iaop%{;5)l(`a9U+I@Xv=!UkLqhnGFy61-?E1 z?zauNy_QWWY07aRjM1cjKz}|a6VjSKks-Nd=_W6UPD+ zcEWmL-A%>v@2%d?cGkJemit|DkN zT4?LT2=U}P39ehR!k=HWiW+C@C7?-(!eg^k6^;ve!?N=H#(lQ7PWLxB1@aEDW~%JF zQ1=@Wk*2c8G2c5`1Ye%MtXC0u_2~V5++iF~*-!77>0h>Ic?@8L$<0C%a~ucgE19H1 zs&euN)PH(nfWVhg)*%A|WVR9CEKMVxDIs1M(Q|cBTQ3@k7(|O$Ga89`Q86@SSZ)z; z;Dm=pq+z7+j&q&8lCqY-knr&nffjDI_;=csoPLx?tv*)piWnp1 zVy;bACe{p2b8fQh7V)YaWL<_ho`Q^Fg2LzU zOcOP9mX{7p?^(fhVb9l`J*m_R*f-GJk^a{xJJg{)Yz0$GIQ5uGDXBkc(D5h!%JRzN zeQy%dFw(~zs#dq?9O?Y&@@cE-U@01TSB8>OIv?zi zEpk6woP{1+lfDmos+<+3n)|@Ix}7ePmAYLJxnm?h>TZC$#_O1@Y4z~^(Yl7$l@kUp zn7@Xef=8ikv2Cnv`jT4@gsi<{c3a|G+Pz-ZUeaEFC@xe6S~2QSVp|eaA~xYS@p-~( z!+nE#V{Kx~(=}Z-oj3gej)ot464r{=-miUH``xo|ReH#J&3A?H;Oha|%G7|$0eV08 zfM#`TbZdZFj9-{QG=|PeK-_w}JI4B_V=}5{VEf6Bch|7?wXv=CxdUps+%;UA&+O(! zd}yR?i(PJ76$?)zCmruvTA>8LziEBbw($9O&nw5*wzUJ5LzwRFPTtAl@#3!aD2b6Y z#|+EQ-|D}gMm~M3l-71HTr|8RaUwAQdnHjb@vu1AK-$39;J{$4SZ&mFjdu+_YUrfH zV3vAY4u7)&)k^15q*2`_JN-BguwdgI??*;^{X2azbt=o{zCuiW9+_3 z$v7&BkqmIhcy@a^xz?|}`62wJpta!3ilH5YUA9O1o(N5zdJL8_$t#IQ51s!q-#OC{ zo3Kc~Sv&Y~=pZ+>E_Jfx8+v%ETdFOv=tPq*m7&Y*i`16f{`R5KoLl#NdVXqt%U;Yf z%-qY|*!-k{N&7<@SH>tmy7PPM!`TL`KLRc-g*@(E!If^8#>w={eD*o-Guw>RXZE1c zpp+o|(~J|zW9(V<@5Ud#yVN^cR}he9$RecS5&feNxQ@8Ycqw>q@kOpgUa7kZBax<( zCm|#?W_FKvX`II>8qWq6;EENq%>za`&<;c5u>l zvR+TE38^WpdF1o#x6)1$CFVK@;l_)F*6~)U7xNxC%TBL_(iUDnNW@r|E>7lrqFGw$ z#b$WlH5M_B2@rppOqujvX7MqLybg?3dokZxlkxiQlhmi$N}qEgbM9AE*W9}sx0G&> z@JoD3GEm{zK1^HLvt5W#TbIW-mM-oS`<|wO;^=g7-#52!P>EM*uhMdLNl}TFJY)RT zx2m;md3fSU7krn{Um4<`eLY-YKl0f7PUZAeV<5Luw^WCWS_Afu$LAsKL!TPe233<` zp&8rr)gyM|Q0jn&m~x$(@(<%RKE^wi5F)a>DUG~RpyX1cXDKB(=%K&(CXed3wU zoRO~nu7mI7Zj|oh!MAS}ctQ<@6AE5+VVz6&O+HyuSti)%Z#g85JTwTtLz7@p>{|S; z^mn;(&C;Bqmc>ZGfiHSuV)|b7*NrvRwKr?d#fQd?W%n8!zNfd|fmo1s(D^i~YDjY~mOH7efPZ5h%2Z~gIqDQ&GeU|gIg%NiTs z6QXrRBbij;u8XN5E)%I6uf0FIn%p64ky~u$p2-XFpV#@B-TP(oOV3P7aP+At$4{g%|u(L!kae7;S7M!J@a z)NsnA@1e$NilfcD?I9+o9EW&T91%sZuGGAlI`W zs$~yd){uwT4a2*on0?JP$$_n*;A4lT5s$IoV|-?rz71RL>kQS-TvIn|IBO4nd;Qv= z@g~~Tm^AZ?_9;94JaM*)e@wm_TzOuBY(mfeMl>P%z8I5lkr6)2IDd69^z6r=O1H`g zyE1!ZbUHIL11WvOu1#|Tc@!sz>wA5rcJfY3dcOy5)oj(ybTlxh+&Yy#*V!95w(iL9*FKb94mdxB9X{DR z36bEu2Hq;^FiJ)kJr`Syx1~E0kh5{ILb9l#E$xuHNJ|@Ew=U#e0KoM^Jut!;X==c& zUC?}%mpptvXjf1g0Pf28xLR5}A~7shNIR6X6x&u^BO43KMvBc)M3Z0BRRL*_QuT93 z>iKCsu=aDbmat)yk!HE;0|ynLkr+!BAGDLR2i!-B?T=nKNMBCF*jWCsU>v2`{sLvB zsl%e+;*Mky;S+^g^9u;Gh)M7Xh=__wi1D%rf@2uJI82Zq$}a&I5rXpzvi$vH16Omm zv4!g@D*wF}IFe$s$6#FHFqpTuH=nl&>06BLAk98eEmXN;u})Y*gm z9}S8~4{LXnD+cA_%yOyG(#pjXBgFkqdFMi=>iVfuDxm8GqXu&6E6T13DWY9k~p2o;w=3PCMJ_{GE|L z`FHXPg5n~gazf&A%JSj@0!k9{;80vqKmZJdn6i+lz(2BT&K?*`XKUm?Yooxm|CSZ| zA7$YR?nq0Fi~9o?7pH%+K*!z%rScK$lTxxn+oQwsGzpPe7x}&_1 zHp=cUXqG>IhNJ!s21^M+VNn5VF{q%BxFwWdSlAXSffN>oirZRA@QYZ9BgF)*+5VQd z`TzAF3)$`B6<#?t#z5`V^__ z4bRsdJKQnb4vUznp^vlTk+3zJqMT0kmJB7RuR~8hHMc$q5I*BLQ%(0tB@Gn*;^_-wOXbqBL%zzdvS} zVfOrFE4Zk%bkks($ZUDXXH^V6fw2&Dc^nZDQ64Pg|I4XdS66r9%-_S~!~V*UimsmC z7ild$z4-l~0}6wKg9{^u774~5Y`X?>RUTfPzUTYO84nZts2Nd3j)7tJhdyohlnoVf1ZbV*JatPEXa z>hg7_cL7%uiaN`@&aKs{KrY1*&#g`7#dLOZ$c+Fhlf_&zB5q3PIygFh4+=9(K29aG z_3s>JPdbzCvE^lqk+sRh(yJjB%h{*zOde#mP?|=!?5O!<|}8@^z_= zjr%kQ2M5hs_M4NR28#^KX5DT`ktsF-Y8(^4nig}z7v`g75_w8%LPH>N%}0C7i!1q=i97Qh*d&XfZ_^y8yh4uM>mn12cfU_F zPx~&X&l>0H7a3gfPN~eTC`@HV0IBv;)Vt02%$+f;3N~GFoIkk6dKas1WzNmWoAn{d zn5B7-j*gmj9G#phi$VSnydh_~=tukO-}ILHGGU)SeL|BjR2^s!y03GZ6l9ljm*f%( z5ATn6mzveV8F3Yw0J5y97VgXd%DdEp*6k6qw-@*a-!A&xGt@q_9}^Or#A6QnZMp3< zlA{z(K-*Mc7S6QRZ_VU5S{z%q_4(nn-&%>P?HM_W?r@NCNZw56**>sci5d#c_U=-( z#JTE^4( zyC+IbK<_?}p2GaT>7M+Q?gRK5Lf6s3!CixN`JP`P%^{&gD{-Hw5$VPiHWDA)zj;2kYBmh z`!4tTJsijO6^fW5LLlpHjt;swnHJ={7t+H@*Z4!iP3=~zMUBWdGN>u}L+XAe)L)Ep zVRwo3=E0~kGKnFp{ngL-hV?<#$AL42W|ZM5u>&Fqu6PpJz?eGs{)d&_DHjJpaAF9i z8CiZL$VcR9j7Kudax4;Jh0kjzvoeQ-6VkG{F;5tBc3-JME7uk4g7FVK%DYSUaEbE8 zE;b2|gd*5)c3%yj&)ekP+RNV|!Vuinq>N*;rP;-?Qb#5T?)Z?d-i*g@_+6^i77&** zk>**r`lwP}xt7WiCBJOIzR1TWrL|nMaSbqEo()hoNA})a>c}f)Lxi+4@IuE-+~T*q zslfnJFl+Le=I`b4QSt+nVC~JZbJC5y0RQL7^LjryrHiHg`XOjcR>ceT#Fmq@z;?-wFt+kqM;e2>4Oe{44N z2+#roV5zbo0C10&{eKgs!mhJT3iYJpVJrx%oNz;S-0u{48p~i6ny*$os+La@c~ZqH z+f+F=?cXr%Sx;4~T+LXg%7XZ5_0wFoslTniAtWR_95O{rkZfN|+Z(3H2ZOorTn=wN zab{Acxh{98Yh+~9WeY&AUm0p%&klcKFS#*-Zc79p3N+TfhjHE2FRp;3!XXY$7+=`t z6+DeNFM%}HPiY@}awTy>AE7f#p;z?-m$FP=zm!lAl8gX%& zy{nM;Th5Jbgw<@2|19~JgT_n3-G@ZgX_B&Tp>bw6k6%q22y8l$Zh&2D1~4C;-6?34!#NZkgr z1iqWDljr2*ge@;FqAfi_LLMQT=k|{7)SGXah~g8_Qt+}MWXr+JM>Edf{9K?zWd=XU z(YRjR2QOXc6w)022t>)ySW8;Q4XZr(uz zmUqv54)k|6HvUE;85Vw3Jt*k>j$YZuw-0uBFuI?Jn=IVicHSt|%FXBwkET*abzfiK zSTE>Ou#kM?G?oV+rya6hTQnf|7q&}dKx{o^jBw%ptwWkCIFH=^g8yIa{e!XE!O2M@ zc;#)<{&HcX!ootLJ3KtZJ$=<5l>Un$kV{wL5z98!BoHQaoCaM8{c#l+1wq6Z zVxZZ*#R$}Kxq29Ae)7Uj>ve73lG4)iYt1;PRMpUm=NX)ArU0Dwxv-6$-4^uDojZ1V zf5ip7fE}D`av^?|OWZ8TREmyQZfbgu7^u@Y4){z|HddF|^TR$cZT}lL=umNN617w> z3JglPx{>dYUmaA>!$SxRO%o?ye{%>zPQ_W^V?D#3opI$&*lWMS@I5AekuSrBmytgC ziCR6(b9bV|RAbzxgM~#}hRHS4*$}3;q@>Q+NfTRITBw{zRr=*hKAj|{1$oM^Yn!jE?Y%E3 z`D0)I*5-}miOubUal2K+SPj+7^~(+wE{dbZOM2xzFpQT>(^e-;zt0&`TJ2!2`ERLvqp0iD) z5YUFdN=WD__wN{_=dCxX%ARVHNv$1&V2|Gve8JNQ9TzYqpjJt?DI6X4cB+ry(LAf* z5u)VhdthjoBw^Q^rW@LJjqF+N;}KD_&wU!2E34gj5#c|LSsQ08ZV=$LU*nC+nQAuD zlll1L{YvNjbIMcgx)E~k_^zHfES2LzRNT@KZgxNAAGm*l@`>Wn8IfTb87sV z7csGhruMdbT5O^l-0re?H+8L6ne?i;UFj-43O>#~B1q;SOH4~kn{qPyj@n>yXsujPnVXBK7J)lNlC#UpQw6k)*7uj#n`btEMy$~!ZwV-nIIUI%2Xfqi-`II&jPlm zXUe%YahEns-F2a&W1bZ;XET(i>AvxCOj+__b$gbgTE|>*gl!l;laK6l;Gr3qgr7{! z&CNv~N(XJ$ZAllDlq6JGcPI;ew|K*lYoF`dI;(KOhSmML3Jxpgq=nwdfM^0gvu+&B2F+{8j<)UhI{mfGXhBILp9 z$a|YEN;OT*NO4nwWN{)qocWFjx(@=6ns+r1t;UG0I8*ocF~*hlvBkz8l&_M~4}V)o zZJP+!`)IDeg{gU=97)f4@@pfW@H$uLm_;xYY|Ngos_Bw3-R z4Yrs*xy`o=m_8fxqobShM;&;)n~KOl6Dh#TK8+2N^BUPS{QNx`bv|C_?c%%BMzi>7 zIU{~)$rk0{aB=Pcwt5LnQhpTtFUA=MquR)t2WuT47#N6R!2@D(q{5=<))`Ccn5wzY zk1G-$d0)yPqyitY56YbHj*y{_mb~i1$QbD-8RMCG8t?VzovUn->&oCN>q#I@)RzZHeAs*3!p!n z=t9;(ZL5u^edbBQ4kU)BtbXvlCmUjtQSeDP?uzki^9H}J_eku*$1(G@pSTtjtI9bQ z)59;T8tV_I{U5Wtb8Ds9AJtOuZ<5lrv^8VK6#FI?mY4DS=D34G`iW0oMnyF2CqH9K8gRQ6eRo&Yb$=_0QId~Q>Lk0MInOzA_Q#&)hRYdqbO-y| zSXt6D=FQ)q{ry}Gy}!4psjCzFM}(1aMeVZ`WpIgF?%j*1rE4f!;5oi|v)_|kDn9pz z5cnCucdOyhW_z|d>D<@-oh0G1ci#D0YG6?)&bP+kMsxC8OW0o2D&BxU^~xe`VNp>q z$COMYW4#&L($bRi@lVPxFNcQVql%J=u8eYEP3ft3@bTJA4tlU`qPUgc%oEYLkU|_@V0BOcL_otPn z*uxo3Gj8aZcM3XB%G|`{PM^$006&2V{`SgFS`D6t9ljfoRV3a?4BpuOb#?pSB7mb{ b$W@^532pcE#YObxhhjA)EyYrKMCktkiiQ*0 literal 0 HcmV?d00001 From cd03649e6ce707cae5d89ff890873a13b18f78e8 Mon Sep 17 00:00:00 2001 From: Lucio Maranta Date: Mon, 29 Jul 2019 14:16:29 +0200 Subject: [PATCH 4/5] Added new box which enter from right to left & New icon --- Step.Model/Constants.cs | 2 +- Step/wwwroot/assets/styles/base/head.less | 154 ++++++++++-------- Step/wwwroot/assets/styles/style.css | 154 +++++++++--------- .../production/components/head-production.vue | 13 +- 4 files changed, 170 insertions(+), 153 deletions(-) diff --git a/Step.Model/Constants.cs b/Step.Model/Constants.cs index b7224876..3206f32e 100644 --- a/Step.Model/Constants.cs +++ b/Step.Model/Constants.cs @@ -5,7 +5,7 @@ namespace Step.Model { public static class Constants { - public static bool IS_BETA = true; + public static bool IS_BETA = true; public static string NOT_FOUND_ALARM_MESSAGE = "Alarm_id_{0} : Message not found"; public static string NOT_CONFIGURATED_ALARM_MESSAGE = "Alarm_id_{0} : Message not configurated"; diff --git a/Step/wwwroot/assets/styles/base/head.less b/Step/wwwroot/assets/styles/base/head.less index d5e42a33..9bf7d009 100644 --- a/Step/wwwroot/assets/styles/base/head.less +++ b/Step/wwwroot/assets/styles/base/head.less @@ -117,6 +117,11 @@ } } + .detailBoxOpened { + background-color: @color-clear-blue-30; + + } + .tool-box, .load-box, .abrasive, @@ -189,100 +194,107 @@ } } } - - .smooth-enter-active, .smooth-leave-active { - height:94px; - transition: height .5s; - overflow: hidden; - } - .smooth-enter-active-to { - height:94px; - } - .detail-box { - height:94px; - border-top: 2px solid #979797; - width: 100%; + background-color: white; + height: 104px; + width: 416px; display: flex; + position: absolute; + right: 154px; span { + width: 156px; font-size: 18px; line-height: 20px; font-weight: 600; } } - .smooth-enter, .smooth-leave-to { - height: 0; - transition: height .5s; + + .detailBoxTransition-enter-active, .detailBoxTransition-leave-active { + width: 416px; + transition: width .5s; + overflow: hidden; } - .row { - display: flex; - flex-direction: row; - flex-wrap: wrap; - width: 100%; - justify-content: space-between; - align-items: center; - flex:1; - span{ - margin-left: 5px; - } - .number { - color: #4b4b4b; - width: 70px; - height: 25px; - border-radius: 2px; - display: flex; - justify-content: flex-end; - align-items: center; - margin-right: 8px; - color: #4b4b4b; - padding-right: 8px; - font-size: 20px; - } + .detailBoxTransition-enter-active-to { + width: 416px; } - - .row:nth-child(odd) .number { - background-color: @color-white4; - } - - .row:nth-child(even) .number { - background-color: @color-clear-blue-30; - } - - .column{ - flex:1; - text-align: center; - width: 100%; + + .detailBoxTransition-enter, .detailBoxTransition-leave-to { + width: 0; + transition: width .5s; } .column-left { display: flex; flex-direction: column; - width: 70%; + width: 247px; border-right: 2px solid #979797; + + .row { + display: flex; + flex-direction: row; + flex-wrap: wrap; + width: 247px; + justify-content: space-between; + align-items: center; + flex:1; + + span{ + margin-left: 5px; + } + + .number { + color: #4b4b4b; + width: 70px; + height: 25px; + border-radius: 2px; + display: flex; + justify-content: flex-end; + align-items: center; + margin-right: 8px; + color: #4b4b4b; + padding-right: 8px; + font-size: 20px; + } + } + + .row:nth-child(odd) .number { + background-color: @color-white4; + } + + .row:nth-child(even) .number { + background-color: @color-clear-blue-30; + } } .column-right { display: flex; - flex-direction: column; - width: 30%; - } - - .column-bottom-line { - display: flex; - flex-direction: column; - flex-basis: 100%; - flex: 1; + flex-direction: row; + width: 167px; + box-shadow: inset -7px 0 9px -7px rgba(0,0,0,0.5); + justify-content: center; + align-items: center; + + .column { + font-size: 45px; + flex:1; + text-align: center; + flex-direction: column; + width: 100%; + + img { + opacity: 0.2; + width: 45px; + height: auto; + } + + .iconActive { + opacity: 1; + color: #f1f1f1; + } + } } - .toolError{ - background-image: linear-gradient(to bottom, #ff4d63, #a10518); - color: #f1f1f1; - } - .measured{ - color: #f1f1f1; - background-image: linear-gradient(to bottom, #1791ff, #005e94); - } } .head-place-holder{ diff --git a/Step/wwwroot/assets/styles/style.css b/Step/wwwroot/assets/styles/style.css index 775adfef..fca34264 100644 --- a/Step/wwwroot/assets/styles/style.css +++ b/Step/wwwroot/assets/styles/style.css @@ -6451,6 +6451,11 @@ footer .container button.big:before { font-size: 14px; line-height: 18px; } +.head-spindle .detailBoxOpened, +.head-production .detailBoxOpened, +.head-awj .detailBoxOpened { + background-color: rgba(23, 145, 255, 0.3); +} .head-spindle .tool-box, .head-production .tool-box, .head-awj .tool-box, @@ -6603,64 +6608,75 @@ footer .container button.big:before { border-color: #fff !important; color: #fff; } -.head-spindle .smooth-enter-active, -.head-production .smooth-enter-active, -.head-awj .smooth-enter-active, -.head-spindle .smooth-leave-active, -.head-production .smooth-leave-active, -.head-awj .smooth-leave-active { - height: 94px; - transition: height .5s; - overflow: hidden; -} -.head-spindle .smooth-enter-active-to, -.head-production .smooth-enter-active-to, -.head-awj .smooth-enter-active-to { - height: 94px; -} .head-spindle .detail-box, .head-production .detail-box, .head-awj .detail-box { - height: 94px; - border-top: 2px solid #979797; - width: 100%; + background-color: white; + height: 104px; + width: 416px; display: flex; + position: absolute; + right: 154px; } .head-spindle .detail-box span, .head-production .detail-box span, .head-awj .detail-box span { + width: 156px; font-size: 18px; line-height: 20px; font-weight: 600; } -.head-spindle .smooth-enter, -.head-production .smooth-enter, -.head-awj .smooth-enter, -.head-spindle .smooth-leave-to, -.head-production .smooth-leave-to, -.head-awj .smooth-leave-to { - height: 0; - transition: height .5s; +.head-spindle .detailBoxTransition-enter-active, +.head-production .detailBoxTransition-enter-active, +.head-awj .detailBoxTransition-enter-active, +.head-spindle .detailBoxTransition-leave-active, +.head-production .detailBoxTransition-leave-active, +.head-awj .detailBoxTransition-leave-active { + width: 416px; + transition: width .5s; + overflow: hidden; } -.head-spindle .row, -.head-production .row, -.head-awj .row { +.head-spindle .detailBoxTransition-enter-active-to, +.head-production .detailBoxTransition-enter-active-to, +.head-awj .detailBoxTransition-enter-active-to { + width: 416px; +} +.head-spindle .detailBoxTransition-enter, +.head-production .detailBoxTransition-enter, +.head-awj .detailBoxTransition-enter, +.head-spindle .detailBoxTransition-leave-to, +.head-production .detailBoxTransition-leave-to, +.head-awj .detailBoxTransition-leave-to { + width: 0; + transition: width .5s; +} +.head-spindle .column-left, +.head-production .column-left, +.head-awj .column-left { + display: flex; + flex-direction: column; + width: 247px; + border-right: 2px solid #979797; +} +.head-spindle .column-left .row, +.head-production .column-left .row, +.head-awj .column-left .row { display: flex; flex-direction: row; flex-wrap: wrap; - width: 100%; + width: 247px; justify-content: space-between; align-items: center; flex: 1; } -.head-spindle .row span, -.head-production .row span, -.head-awj .row span { +.head-spindle .column-left .row span, +.head-production .column-left .row span, +.head-awj .column-left .row span { margin-left: 5px; } -.head-spindle .row .number, -.head-production .row .number, -.head-awj .row .number { +.head-spindle .column-left .row .number, +.head-production .column-left .row .number, +.head-awj .column-left .row .number { width: 70px; height: 25px; border-radius: 2px; @@ -6672,57 +6688,47 @@ footer .container button.big:before { padding-right: 8px; font-size: 20px; } -.head-spindle .row:nth-child(odd) .number, -.head-production .row:nth-child(odd) .number, -.head-awj .row:nth-child(odd) .number { +.head-spindle .column-left .row:nth-child(odd) .number, +.head-production .column-left .row:nth-child(odd) .number, +.head-awj .column-left .row:nth-child(odd) .number { background-color: #f3f3f3; } -.head-spindle .row:nth-child(even) .number, -.head-production .row:nth-child(even) .number, -.head-awj .row:nth-child(even) .number { +.head-spindle .column-left .row:nth-child(even) .number, +.head-production .column-left .row:nth-child(even) .number, +.head-awj .column-left .row:nth-child(even) .number { background-color: rgba(23, 145, 255, 0.3); } -.head-spindle .column, -.head-production .column, -.head-awj .column { - flex: 1; - text-align: center; - width: 100%; -} -.head-spindle .column-left, -.head-production .column-left, -.head-awj .column-left { - display: flex; - flex-direction: column; - width: 70%; - border-right: 2px solid #979797; -} .head-spindle .column-right, .head-production .column-right, .head-awj .column-right { display: flex; - flex-direction: column; - width: 30%; + flex-direction: row; + width: 167px; + box-shadow: inset -7px 0 9px -7px rgba(0, 0, 0, 0.5); + justify-content: center; + align-items: center; } -.head-spindle .column-bottom-line, -.head-production .column-bottom-line, -.head-awj .column-bottom-line { - display: flex; - flex-direction: column; - flex-basis: 100%; +.head-spindle .column-right .column, +.head-production .column-right .column, +.head-awj .column-right .column { + font-size: 45px; flex: 1; + text-align: center; + flex-direction: column; + width: 100%; } -.head-spindle .toolError, -.head-production .toolError, -.head-awj .toolError { - background-image: linear-gradient(to bottom, #ff4d63, #a10518); - color: #f1f1f1; +.head-spindle .column-right .column img, +.head-production .column-right .column img, +.head-awj .column-right .column img { + opacity: 0.2; + width: 45px; + height: auto; } -.head-spindle .measured, -.head-production .measured, -.head-awj .measured { +.head-spindle .column-right .column .iconActive, +.head-production .column-right .column .iconActive, +.head-awj .column-right .column .iconActive { + opacity: 1; color: #f1f1f1; - background-image: linear-gradient(to bottom, #1791ff, #005e94); } .head-place-holder { width: 240px; diff --git a/Step/wwwroot/src/app_modules/production/components/head-production.vue b/Step/wwwroot/src/app_modules/production/components/head-production.vue index 516d6722..ab6fa0a9 100644 --- a/Step/wwwroot/src/app_modules/production/components/head-production.vue +++ b/Step/wwwroot/src/app_modules/production/components/head-production.vue @@ -45,7 +45,7 @@ {{vacuum.toFixed(2)}} {{'head_label_bar' | localize("bar")}}
-
+
{{tool}} @@ -56,7 +56,6 @@ {{'tooling_tool_abbreviation' | localize('DP%d', toolDuplo)}}
-
@@ -64,7 +63,7 @@ {{'head_label_gmin' | localize("g/min")}}
- +
@@ -72,7 +71,7 @@
{{toolData.residualLife}}
- {{'tooling_equipment_param_maxLoad' | localize("Max load")}}: + {{'tooling_family_param_maxLoad' | localize("Max load")}}:
{{toolData.maxLoad}}
@@ -81,9 +80,9 @@
- {{'tooling_equipment_param_disabled' | localize("Disabled")}} - {{'tooling_equipment_param_broken' | localize("Broken")}} - {{'tooling_equipment_param_measured' | localize("Measured")}} +
+
+
From 66c36eea9c6e3c9fffa0b0f4beb660e7ee298346 Mon Sep 17 00:00:00 2001 From: Lucio Maranta Date: Mon, 19 Aug 2019 16:36:16 +0200 Subject: [PATCH 5/5] Added new animation & arrow Added scroll bar to scada tab --- Step.Config/ServerConfigController.cs | 4 +- Step.NC/NcHandler.cs | 2 +- Step/Listeners/SignalR/SignalRListener.cs | 1 + Step/wwwroot/assets/styles/base/head.css | 723 ++++++++++++++++++ Step/wwwroot/assets/styles/base/head.less | 67 +- Step/wwwroot/assets/styles/base/scada.less | 11 + Step/wwwroot/assets/styles/style.css | 111 ++- .../production/components/head-production.vue | 38 +- 8 files changed, 879 insertions(+), 78 deletions(-) create mode 100644 Step/wwwroot/assets/styles/base/head.css diff --git a/Step.Config/ServerConfigController.cs b/Step.Config/ServerConfigController.cs index 4dc7d765..192b69a2 100644 --- a/Step.Config/ServerConfigController.cs +++ b/Step.Config/ServerConfigController.cs @@ -170,7 +170,7 @@ namespace Step.Config "Error while reading XML file \"" + actualFileName + "\" \n\n" + e.Message, true ); - } + } } public static bool CheckAreaStatus(string areaName) @@ -179,7 +179,7 @@ namespace Step.Config { case AREAS.PRODUCTION_KEY: return ProductionConfig.Enabled; - + case AREAS.TOOLING_KEY: return ToolingConfig.Enabled; diff --git a/Step.NC/NcHandler.cs b/Step.NC/NcHandler.cs index d4aafe81..77eb5508 100644 --- a/Step.NC/NcHandler.cs +++ b/Step.NC/NcHandler.cs @@ -5,7 +5,7 @@ using CMS_CORE_Library.Models; using CMS_CORE_Library.Osai; using CMS_CORE_Library.Siemens; using Step.Database.Controllers; -using Step.Model.DatabaseModels; +using Step.Model.DatabaseModels; using Step.Model.DTOModels; using Step.Model.DTOModels.AlarmModels; using Step.Model.DTOModels.MaintenanceModels; diff --git a/Step/Listeners/SignalR/SignalRListener.cs b/Step/Listeners/SignalR/SignalRListener.cs index e2cdece5..15e560fe 100644 --- a/Step/Listeners/SignalR/SignalRListener.cs +++ b/Step/Listeners/SignalR/SignalRListener.cs @@ -185,6 +185,7 @@ namespace Step.Listeners.SignalR Measured = ((DTONcToolModel)tool).Measured, MaxLoad = tool.Family.MaxLoad, MaxSpeed = tool.Family.MaxSpeed, + ResidualLife = tool.ResidualLife }; } } diff --git a/Step/wwwroot/assets/styles/base/head.css b/Step/wwwroot/assets/styles/base/head.css new file mode 100644 index 00000000..e97ffb15 --- /dev/null +++ b/Step/wwwroot/assets/styles/base/head.css @@ -0,0 +1,723 @@ +.text-success { + color: #002680; +} +.head-spindle, +.head-production, +.head-awj { + border-top: 0; + border-bottom: 0; + width: 512px; + min-height: 96px; + margin: 4px; + background-color: white; + border-radius: 2px; + box-shadow: 0px 1px 2px 0 rgba(0, 0, 0, 0.4); + display: flex; + flex-wrap: wrap; +} +.head-spindle > *, +.head-production > *, +.head-awj > *, +.head-spindle, +.head-production, +.head-awj { + box-sizing: border-box; +} +.head-spindle label, +.head-production label, +.head-awj label { + color: #4b4b4b; + font-size: 18px; + line-height: 20px; + font-weight: 600; + margin: 8px 0; + text-align: center; +} +.head-spindle header, +.head-production header, +.head-awj header { + width: 94px; + flex-shrink: 0; + height: 100%; + border-right: 2px solid #979797; + display: flex; + flex-flow: column; + justify-content: center; + align-items: center; + font-size: 20px; + font-weight: 600; + color: #002680; +} +.head-spindle header span.process, +.head-production header span.process, +.head-awj header span.process { + color: #002680; + width: 64px; + font-size: 14px; + height: 21px; + line-height: 21px; + flex-grow: 0; + text-transform: uppercase; + text-align: center; + border: 1px solid #002680; + margin: 8px; +} +.head-spindle section, +.head-production section, +.head-awj section { + width: 218px; + flex-shrink: 0; + display: flex; + flex-flow: column; + justify-content: space-between; +} +.head-spindle section div, +.head-production section div, +.head-awj section div { + padding: 10px 8px; + padding-top: 0; + display: flex; + flex-flow: row nowrap; + justify-content: space-between; +} +.head-spindle section div button, +.head-production section div button, +.head-awj section div button { + width: 48px; + height: 48px; + border: none; + background-image: linear-gradient(to bottom, #f1f1f1, #bbbcbc); + box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.5); + border-radius: 2px; +} +.head-spindle section div button i, +.head-production section div button i, +.head-awj section div button i { + color: #002680; + font-size: 22px; +} +.head-spindle section div button:active, +.head-production section div button:active, +.head-awj section div button:active { + background-image: linear-gradient(to bottom, #404040, #657178); + color: white; + box-shadow: inset 0px 0px 3px 0px rgba(0, 0, 0, 0.5); +} +.head-spindle section div button:disabled, +.head-production section div button:disabled, +.head-awj section div button:disabled { + background-color: #dddddd !important; + background-image: none !important; + box-shadow: none !important; +} +.head-spindle section div button:disabled i, +.head-production section div button:disabled i, +.head-awj section div button:disabled i { + color: #878787; +} +.head-spindle section div span, +.head-production section div span, +.head-awj section div span { + text-align: center; + color: #4b4b4b; + font-size: 14px; + display: flex; + flex-flow: column; + justify-content: center; +} +.head-spindle section div span h5, +.head-production section div span h5, +.head-awj section div span h5 { + margin: 0; + font-size: 18px; + font-weight: 600; +} +.head-spindle .tool-box, +.head-production .tool-box, +.head-awj .tool-box { + overflow: hidden; + width: 102px; +} +.head-spindle .tool-box .tool-name, +.head-production .tool-box .tool-name, +.head-awj .tool-box .tool-name { + white-space: pre; + line-height: 41px; +} +.head-spindle .tool-box .tool-duplo, +.head-production .tool-box .tool-duplo, +.head-awj .tool-box .tool-duplo { + font-size: 14px; + line-height: 18px; +} +.head-spindle .detailBoxOpened, +.head-production .detailBoxOpened, +.head-awj .detailBoxOpened { + background-color: rgba(23, 145, 255, 0.3); +} +.head-spindle .tool-box, +.head-production .tool-box, +.head-awj .tool-box, +.head-spindle .load-box, +.head-production .load-box, +.head-awj .load-box, +.head-spindle .abrasive, +.head-production .abrasive, +.head-awj .abrasive, +.head-spindle .vacuum, +.head-production .vacuum, +.head-awj .vacuum { + display: flex; + flex-flow: column; + align-items: center; + border-left: 2px solid #979797; + color: #4b4b4b; + position: relative; +} +.head-spindle .tool-box span, +.head-production .tool-box span, +.head-awj .tool-box span, +.head-spindle .load-box span, +.head-production .load-box span, +.head-awj .load-box span, +.head-spindle .abrasive span, +.head-production .abrasive span, +.head-awj .abrasive span, +.head-spindle .vacuum span, +.head-production .vacuum span, +.head-awj .vacuum span { + font-weight: 600; + font-size: 30px; + line-height: 30px; +} +.head-spindle .tool-box.disabled > label, +.head-production .tool-box.disabled > label, +.head-awj .tool-box.disabled > label, +.head-spindle .load-box.disabled > label, +.head-production .load-box.disabled > label, +.head-awj .load-box.disabled > label, +.head-spindle .abrasive.disabled > label, +.head-production .abrasive.disabled > label, +.head-awj .abrasive.disabled > label, +.head-spindle .vacuum.disabled > label, +.head-production .vacuum.disabled > label, +.head-awj .vacuum.disabled > label, +.head-spindle .tool-box.disabled > span, +.head-production .tool-box.disabled > span, +.head-awj .tool-box.disabled > span, +.head-spindle .load-box.disabled > span, +.head-production .load-box.disabled > span, +.head-awj .load-box.disabled > span, +.head-spindle .abrasive.disabled > span, +.head-production .abrasive.disabled > span, +.head-awj .abrasive.disabled > span, +.head-spindle .vacuum.disabled > span, +.head-production .vacuum.disabled > span, +.head-awj .vacuum.disabled > span, +.head-spindle .tool-box.disabled > small, +.head-production .tool-box.disabled > small, +.head-awj .tool-box.disabled > small, +.head-spindle .load-box.disabled > small, +.head-production .load-box.disabled > small, +.head-awj .load-box.disabled > small, +.head-spindle .abrasive.disabled > small, +.head-production .abrasive.disabled > small, +.head-awj .abrasive.disabled > small, +.head-spindle .vacuum.disabled > small, +.head-production .vacuum.disabled > small, +.head-awj .vacuum.disabled > small { + color: #4b4b4b !important; +} +.head-spindle .tool-box.disabled::after, +.head-production .tool-box.disabled::after, +.head-awj .tool-box.disabled::after, +.head-spindle .load-box.disabled::after, +.head-production .load-box.disabled::after, +.head-awj .load-box.disabled::after, +.head-spindle .abrasive.disabled::after, +.head-production .abrasive.disabled::after, +.head-awj .abrasive.disabled::after, +.head-spindle .vacuum.disabled::after, +.head-production .vacuum.disabled::after, +.head-awj .vacuum.disabled::after { + content: " "; + position: absolute; + display: block; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(216, 216, 216, 0.5); +} +.head-spindle .load-box span, +.head-production .load-box span, +.head-awj .load-box span { + color: #1791ff; +} +.head-spindle .load-box.danger span, +.head-production .load-box.danger span, +.head-awj .load-box.danger span { + color: #d0021b !important; +} +.head-spindle .load-box.warning span, +.head-production .load-box.warning span, +.head-awj .load-box.warning span { + color: #f5a623 !important; +} +.head-spindle .vacuum, +.head-production .vacuum, +.head-awj .vacuum { + width: 88px; + flex-shrink: 0; +} +.head-spindle .abrasive, +.head-production .abrasive, +.head-awj .abrasive { + width: 100%; +} +.head-spindle .load-box, +.head-production .load-box, +.head-awj .load-box { + width: 102px; +} +.head-spindle .tool-box, +.head-production .tool-box, +.head-awj .tool-box { + width: 116px; +} +.head-spindle.selected, +.head-production.selected, +.head-awj.selected { + box-shadow: inset 0px 0px 0px 2px #51adff; +} +.head-spindle.selected *, +.head-production.selected *, +.head-awj.selected * { + border-color: #51adff !important; +} +.head-spindle.selected header, +.head-production.selected header, +.head-awj.selected header { + background-color: #51adff; + color: #fff; +} +.head-spindle.selected header span.process, +.head-production.selected header span.process, +.head-awj.selected header span.process { + border-color: #fff !important; + color: #fff; +} +.head-spindle .detail-box, +.head-production .detail-box, +.head-awj .detail-box { + background-color: white; + height: 104px; + width: 416px; + display: flex; + position: absolute; + right: 154px; +} +.head-spindle .detail-box span, +.head-production .detail-box span, +.head-awj .detail-box span { + width: 156px; + font-size: 18px; + line-height: 20px; + font-weight: 600; +} +.head-spindle .detailBoxTransition-enter-active, +.head-production .detailBoxTransition-enter-active, +.head-awj .detailBoxTransition-enter-active, +.head-spindle .detailBoxTransition-leave-active, +.head-production .detailBoxTransition-leave-active, +.head-awj .detailBoxTransition-leave-active { + width: 416px; + transition: width .5s; + overflow: hidden; +} +.head-spindle .detailBoxTransition-enter-active .column-right, +.head-production .detailBoxTransition-enter-active .column-right, +.head-awj .detailBoxTransition-enter-active .column-right, +.head-spindle .detailBoxTransition-leave-active .column-right, +.head-production .detailBoxTransition-leave-active .column-right, +.head-awj .detailBoxTransition-leave-active .column-right { + box-shadow: inset -7px 0 9px -7px rgba(0, 0, 0, 0.5); +} +.head-spindle .detailBoxTransition-enter-active-to, +.head-production .detailBoxTransition-enter-active-to, +.head-awj .detailBoxTransition-enter-active-to { + width: 416px; +} +.head-spindle .detailBoxTransition-enter, +.head-production .detailBoxTransition-enter, +.head-awj .detailBoxTransition-enter, +.head-spindle .detailBoxTransition-leave-to, +.head-production .detailBoxTransition-leave-to, +.head-awj .detailBoxTransition-leave-to { + width: 0; + transition: width .5s; +} +.head-spindle .column-left, +.head-production .column-left, +.head-awj .column-left { + display: flex; + flex-direction: column; + width: 247px; + border-right: 2px solid #979797; +} +.head-spindle .column-left .row, +.head-production .column-left .row, +.head-awj .column-left .row { + display: flex; + flex-direction: row; + flex-wrap: wrap; + width: 247px; + justify-content: space-between; + align-items: center; + flex: 1; +} +.head-spindle .column-left .row span, +.head-production .column-left .row span, +.head-awj .column-left .row span { + margin-left: 5px; +} +.head-spindle .column-left .row .number, +.head-production .column-left .row .number, +.head-awj .column-left .row .number { + width: 70px; + height: 25px; + border-radius: 2px; + display: flex; + justify-content: flex-end; + align-items: center; + margin-right: 8px; + color: #4b4b4b; + padding-right: 8px; + font-size: 20px; +} +.head-spindle .column-left .row:nth-child(odd) .number, +.head-production .column-left .row:nth-child(odd) .number, +.head-awj .column-left .row:nth-child(odd) .number { + background-color: #f3f3f3; +} +.head-spindle .column-left .row:nth-child(even) .number, +.head-production .column-left .row:nth-child(even) .number, +.head-awj .column-left .row:nth-child(even) .number { + background-color: rgba(23, 145, 255, 0.3); +} +.head-spindle .column-right, +.head-production .column-right, +.head-awj .column-right { + display: flex; + flex-direction: row; + width: 167px; + justify-content: center; + align-items: center; +} +.head-spindle .column-right .column, +.head-production .column-right .column, +.head-awj .column-right .column { + width: 56px; + flex: 1; + text-align: center; + flex-direction: column; +} +.head-spindle .column-right .column img, +.head-production .column-right .column img, +.head-awj .column-right .column img { + opacity: 0.2; + width: 45px; + padding: 5px; + height: auto; +} +.head-spindle .column-right .column .iconActive, +.head-production .column-right .column .iconActive, +.head-awj .column-right .column .iconActive { + opacity: 1; + color: #f1f1f1; +} +.head-place-holder { + width: 240px; + height: 102px; + margin: 4px; + margin-bottom: 6px; + margin-top: 6px; + background-color: #4e585e; + border-radius: 2px; +} +.head-std { + width: 240px; + height: 102px; + margin: 4px; + margin-bottom: 6px; + margin-top: 6px; + background-color: white; + border-radius: 2px; + box-sizing: border-box; + box-shadow: 0px 1px 2px 0 rgba(0, 0, 0, 0.4); + display: flex; +} +.head-std > * { + box-sizing: border-box; +} +.head-std header { + display: flex; + font-size: 18px; + color: #002680; + padding: 0 4px; + height: 24px; + line-height: 24px; + flex-shrink: 0; + border-bottom: 1px solid #dfdfdf; + justify-content: space-between; + font-weight: 600; +} +.head-std header span.title { + font-size: 16px; + flex-grow: 1; + width: 100%; + overflow: hidden; + margin-right: 4px; + white-space: nowrap; +} +.head-std header span.process, +.head-std header span.isRunning { + color: #002680; + width: 32px; + font-size: 14px; + height: 20px; + flex-grow: 0; + line-height: 20px; + margin-top: 1px; + text-transform: uppercase; + text-align: center; + border: 1px solid #002680; +} +.head-std header span.process i, +.head-std header span.isRunning i { + line-height: 20px; +} +.head-std header span.isRunning { + margin-right: 4px; +} +.head-std section { + width: calc(100% - 56px); + display: flex; + flex-flow: column; + justify-content: space-between; + position: relative; +} +.head-std section div { + padding: 7px 8px; + display: flex; + flex-flow: row nowrap; + justify-content: space-between; +} +.head-std section div button { + width: 48px; + min-width: 48px; + height: 48px; + border: none; + background-image: linear-gradient(to bottom, #f1f1f1, #bbbcbc); + box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.5); + border-radius: 2px; +} +.head-std section div button i { + color: #002680; + font-size: 22px; +} +.head-std section div button:active { + background-image: linear-gradient(to bottom, #bbbcbc, #f1f1f1); + box-shadow: inset 0px 0px 3px 0px rgba(0, 0, 0, 0.5); +} +.head-std section div button:disabled { + background-color: #dddddd !important; + background-image: none !important; + box-shadow: none !important; +} +.head-std section div button:disabled i { + color: #878787; +} +.head-std section div span { + text-align: center; + color: #4b4b4b; + font-size: 14px; + display: flex; + flex-flow: column; + justify-content: center; + width: 70px; + overflow: hidden; +} +.head-std section div span h5 { + margin: 0; + font-size: 18px; + font-weight: 600; +} +.head-std section span.progress { + position: absolute; + font-size: 12px; + color: #1791ff; + bottom: 6px; + width: 100%; + text-align: center; + font-weight: 600; +} +.head-std section progress { + width: 100%; + height: 6px; + background-color: #fff; +} +.head-std section progress::-moz-progress-bar { + background-color: #fff; +} +.head-std section progress::-webkit-progress-value { + background-image: linear-gradient(to right, #1791ff, #33c4ff); + transition: width 0.3s; +} +.head-std aside { + width: 56px; + height: 100%; + display: flex; + flex-flow: column; +} +.head-std aside .tool-box { + overflow: hidden; +} +.head-std aside .tool-box .tool-name { + white-space: pre; + line-height: 20px; +} +.head-std aside .tool-box .tool-duplo { + font-size: 11px; + font-weight: normal; +} +.head-std aside .tool-box, +.head-std aside .load-box { + height: 50%; + display: flex; + flex-flow: column; + align-items: center; + justify-content: center; + border-left: 1px solid #dfdfdf; + overflow: hidden; + position: relative; +} +.head-std aside .tool-box label, +.head-std aside .load-box label { + color: #4b4b4b; + font-size: 14px; + line-height: 20px; + font-weight: normal; +} +.head-std aside .tool-box span, +.head-std aside .load-box span { + font-weight: 600; + font-size: 18px; + line-height: 14px; +} +.head-std aside .tool-box small, +.head-std aside .load-box small { + color: #4b4b4b; + font-size: 10px; +} +.head-std aside .tool-box.disabled > label, +.head-std aside .load-box.disabled > label, +.head-std aside .tool-box.disabled > span, +.head-std aside .load-box.disabled > span, +.head-std aside .tool-box.disabled > small, +.head-std aside .load-box.disabled > small { + color: #4b4b4b !important; +} +.head-std aside .tool-box.disabled::after, +.head-std aside .load-box.disabled::after { + content: " "; + position: absolute; + display: block; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(216, 216, 216, 0.5); +} +.head-std aside .load-box { + border-top: 1px solid #dfdfdf; +} +.head-std aside .load-box label, +.head-std aside .load-box span { + color: #1791ff; +} +.head-std aside .load-box.danger label, +.head-std aside .load-box.danger span { + color: #d0021b !important; +} +.head-std aside .load-box.warning label, +.head-std aside .load-box.warning span { + color: #f5a623 !important; +} +.head-std.selected header { + background-image: linear-gradient(to right, #1791ff, #33c4ff); + color: #fff; + border-right: none; +} +.head-std.selected header span.process { + border-color: #fff !important; + color: #fff; +} +.head-std.selected header span.isRunning { + border-color: #fff !important; + color: #fff; +} +.heads-container { + position: absolute; + top: -6px; + right: 4px; + display: flex; + flex-flow: row wrap; + width: 512px; + height: 230px; + overflow-x: hidden; +} +.mini { + width: 262px; +} +.heads-container-lt4 { + right: -12px; +} +.head-production { + max-width: 530px; + width: 530px; + min-height: 96px; +} +.width-small { + width: 512px; +} +.head-production header { + min-height: 96px; + justify-content: start; +} +.head-production header .title { + display: flex; + flex-flow: row; + font-size: 18px; + line-height: 20px; + font-weight: 600; + margin: 8px 0; + width: 100%; + text-align: center; +} +.head-production header > div { + display: flex; + flex-flow: row; + align-items: center; + justify-content: center; + margin-top: 3px; +} +.head-production header > div span.process { + width: 27px; + font-size: 16px; + height: 27px; + line-height: 27px; +} +.head-production.selected header { + min-height: 94px; +} diff --git a/Step/wwwroot/assets/styles/base/head.less b/Step/wwwroot/assets/styles/base/head.less index 9bf7d009..8437b557 100644 --- a/Step/wwwroot/assets/styles/base/head.less +++ b/Step/wwwroot/assets/styles/base/head.less @@ -1,4 +1,5 @@ // out: false, sourceMap: false, main: ../style.less +@import "colors.less"; .head-spindle, .head-production, @@ -104,25 +105,46 @@ } } } + .tool-box{ - overflow: hidden; - width: 102px; - .tool-name { - white-space: pre; - line-height: 41px; + display: flex; + width: 116px; + height: 104px; + border-left: 2px solid #979797; + + .tool-box-data{ + border: none; + overflow: hidden; + height: 104px; + width: 114px; + .tool-name { + white-space: pre; + line-height: 41px; + } + .tool-duplo{ + font-size: 14px; + line-height: 18px; + } } - .tool-duplo{ - font-size: 14px; - line-height: 18px; + + .arrow-box { + display: flex; + align-items: center; + width: 0px; + height: 114px; + font-size: 23px; + + i { + padding-left: 5px; + } } } .detailBoxOpened { background-color: @color-clear-blue-30; - } - .tool-box, + .tool-box-data, .load-box, .abrasive, .vacuum { @@ -176,9 +198,6 @@ .load-box { width: 102px; } - .tool-box{ - width: 116px; - } &.selected { box-shadow: inset 0px 0px 0px 2px #51adff; @@ -194,6 +213,7 @@ } } } + .detail-box { background-color: white; height: 104px; @@ -214,14 +234,14 @@ transition: width .5s; overflow: hidden; } - - .detailBoxTransition-enter-active-to { - width: 416px; - } .detailBoxTransition-enter, .detailBoxTransition-leave-to { width: 0; transition: width .5s; + + .column-right{ + box-shadow: none; + } } .column-left { @@ -271,20 +291,19 @@ display: flex; flex-direction: row; width: 167px; - box-shadow: inset -7px 0 9px -7px rgba(0,0,0,0.5); justify-content: center; - align-items: center; - + align-items: center; + box-shadow: inset -7px 0 9px -7px rgba(0,0,0,0.5); + .column { - font-size: 45px; + width: 56px; flex:1; text-align: center; flex-direction: column; - width: 100%; - img { opacity: 0.2; - width: 45px; + width: 45px; + padding: 5px; height: auto; } diff --git a/Step/wwwroot/assets/styles/base/scada.less b/Step/wwwroot/assets/styles/base/scada.less index e32c9487..051c20fa 100644 --- a/Step/wwwroot/assets/styles/base/scada.less +++ b/Step/wwwroot/assets/styles/base/scada.less @@ -103,6 +103,17 @@ display: flex; flex-direction: row; border: none !important; + overflow-x: auto; + overflow-y: hidden; + &::-webkit-scrollbar { + width: 5px; + height: 10px; + } + &::-webkit-scrollbar-thumb { + border-radius: 5px; + height: 1px; + background-color: rgba(0, 0, 0, 0.3); + } .tab { flex-grow: 0; flex-shrink: 0; diff --git a/Step/wwwroot/assets/styles/style.css b/Step/wwwroot/assets/styles/style.css index fca34264..29a98a89 100644 --- a/Step/wwwroot/assets/styles/style.css +++ b/Step/wwwroot/assets/styles/style.css @@ -6436,29 +6436,53 @@ footer .container button.big:before { .head-spindle .tool-box, .head-production .tool-box, .head-awj .tool-box { - overflow: hidden; - width: 102px; + display: flex; + width: 116px; + height: 104px; + border-left: 2px solid #979797; } -.head-spindle .tool-box .tool-name, -.head-production .tool-box .tool-name, -.head-awj .tool-box .tool-name { +.head-spindle .tool-box .tool-box-data, +.head-production .tool-box .tool-box-data, +.head-awj .tool-box .tool-box-data { + border: none; + overflow: hidden; + height: 104px; + width: 114px; +} +.head-spindle .tool-box .tool-box-data .tool-name, +.head-production .tool-box .tool-box-data .tool-name, +.head-awj .tool-box .tool-box-data .tool-name { white-space: pre; line-height: 41px; } -.head-spindle .tool-box .tool-duplo, -.head-production .tool-box .tool-duplo, -.head-awj .tool-box .tool-duplo { +.head-spindle .tool-box .tool-box-data .tool-duplo, +.head-production .tool-box .tool-box-data .tool-duplo, +.head-awj .tool-box .tool-box-data .tool-duplo { font-size: 14px; line-height: 18px; } +.head-spindle .tool-box .arrow-box, +.head-production .tool-box .arrow-box, +.head-awj .tool-box .arrow-box { + display: flex; + align-items: center; + width: 0px; + height: 114px; + font-size: 23px; +} +.head-spindle .tool-box .arrow-box i, +.head-production .tool-box .arrow-box i, +.head-awj .tool-box .arrow-box i { + padding-left: 5px; +} .head-spindle .detailBoxOpened, .head-production .detailBoxOpened, .head-awj .detailBoxOpened { background-color: rgba(23, 145, 255, 0.3); } -.head-spindle .tool-box, -.head-production .tool-box, -.head-awj .tool-box, +.head-spindle .tool-box-data, +.head-production .tool-box-data, +.head-awj .tool-box-data, .head-spindle .load-box, .head-production .load-box, .head-awj .load-box, @@ -6475,9 +6499,9 @@ footer .container button.big:before { color: #4b4b4b; position: relative; } -.head-spindle .tool-box span, -.head-production .tool-box span, -.head-awj .tool-box span, +.head-spindle .tool-box-data span, +.head-production .tool-box-data span, +.head-awj .tool-box-data span, .head-spindle .load-box span, .head-production .load-box span, .head-awj .load-box span, @@ -6491,9 +6515,9 @@ footer .container button.big:before { font-size: 30px; line-height: 30px; } -.head-spindle .tool-box.disabled > label, -.head-production .tool-box.disabled > label, -.head-awj .tool-box.disabled > label, +.head-spindle .tool-box-data.disabled > label, +.head-production .tool-box-data.disabled > label, +.head-awj .tool-box-data.disabled > label, .head-spindle .load-box.disabled > label, .head-production .load-box.disabled > label, .head-awj .load-box.disabled > label, @@ -6503,9 +6527,9 @@ footer .container button.big:before { .head-spindle .vacuum.disabled > label, .head-production .vacuum.disabled > label, .head-awj .vacuum.disabled > label, -.head-spindle .tool-box.disabled > span, -.head-production .tool-box.disabled > span, -.head-awj .tool-box.disabled > span, +.head-spindle .tool-box-data.disabled > span, +.head-production .tool-box-data.disabled > span, +.head-awj .tool-box-data.disabled > span, .head-spindle .load-box.disabled > span, .head-production .load-box.disabled > span, .head-awj .load-box.disabled > span, @@ -6515,9 +6539,9 @@ footer .container button.big:before { .head-spindle .vacuum.disabled > span, .head-production .vacuum.disabled > span, .head-awj .vacuum.disabled > span, -.head-spindle .tool-box.disabled > small, -.head-production .tool-box.disabled > small, -.head-awj .tool-box.disabled > small, +.head-spindle .tool-box-data.disabled > small, +.head-production .tool-box-data.disabled > small, +.head-awj .tool-box-data.disabled > small, .head-spindle .load-box.disabled > small, .head-production .load-box.disabled > small, .head-awj .load-box.disabled > small, @@ -6529,9 +6553,9 @@ footer .container button.big:before { .head-awj .vacuum.disabled > small { color: #4b4b4b !important; } -.head-spindle .tool-box.disabled::after, -.head-production .tool-box.disabled::after, -.head-awj .tool-box.disabled::after, +.head-spindle .tool-box-data.disabled::after, +.head-production .tool-box-data.disabled::after, +.head-awj .tool-box-data.disabled::after, .head-spindle .load-box.disabled::after, .head-production .load-box.disabled::after, .head-awj .load-box.disabled::after, @@ -6581,11 +6605,6 @@ footer .container button.big:before { .head-awj .load-box { width: 102px; } -.head-spindle .tool-box, -.head-production .tool-box, -.head-awj .tool-box { - width: 116px; -} .head-spindle.selected, .head-production.selected, .head-awj.selected { @@ -6636,11 +6655,6 @@ footer .container button.big:before { transition: width .5s; overflow: hidden; } -.head-spindle .detailBoxTransition-enter-active-to, -.head-production .detailBoxTransition-enter-active-to, -.head-awj .detailBoxTransition-enter-active-to { - width: 416px; -} .head-spindle .detailBoxTransition-enter, .head-production .detailBoxTransition-enter, .head-awj .detailBoxTransition-enter, @@ -6650,6 +6664,14 @@ footer .container button.big:before { width: 0; transition: width .5s; } +.head-spindle .detailBoxTransition-enter .column-right, +.head-production .detailBoxTransition-enter .column-right, +.head-awj .detailBoxTransition-enter .column-right, +.head-spindle .detailBoxTransition-leave-to .column-right, +.head-production .detailBoxTransition-leave-to .column-right, +.head-awj .detailBoxTransition-leave-to .column-right { + box-shadow: none; +} .head-spindle .column-left, .head-production .column-left, .head-awj .column-left { @@ -6704,24 +6726,24 @@ footer .container button.big:before { display: flex; flex-direction: row; width: 167px; - box-shadow: inset -7px 0 9px -7px rgba(0, 0, 0, 0.5); justify-content: center; align-items: center; + box-shadow: inset -7px 0 9px -7px rgba(0, 0, 0, 0.5); } .head-spindle .column-right .column, .head-production .column-right .column, .head-awj .column-right .column { - font-size: 45px; + width: 56px; flex: 1; text-align: center; flex-direction: column; - width: 100%; } .head-spindle .column-right .column img, .head-production .column-right .column img, .head-awj .column-right .column img { opacity: 0.2; width: 45px; + padding: 5px; height: auto; } .head-spindle .column-right .column .iconActive, @@ -19840,6 +19862,17 @@ footer .container button.big:before { display: flex; flex-direction: row; border: none !important; + overflow-x: auto; + overflow-y: hidden; +} +.scada-container .scada-box .scada-tab-box::-webkit-scrollbar { + width: 5px; + height: 10px; +} +.scada-container .scada-box .scada-tab-box::-webkit-scrollbar-thumb { + border-radius: 5px; + height: 1px; + background-color: rgba(0, 0, 0, 0.3); } .scada-container .scada-box .scada-tab-box .tab { flex-grow: 0; diff --git a/Step/wwwroot/src/app_modules/production/components/head-production.vue b/Step/wwwroot/src/app_modules/production/components/head-production.vue index ab6fa0a9..e6d61c2c 100644 --- a/Step/wwwroot/src/app_modules/production/components/head-production.vue +++ b/Step/wwwroot/src/app_modules/production/components/head-production.vue @@ -45,16 +45,24 @@ {{vacuum.toFixed(2)}} {{'head_label_bar' | localize("bar")}}
-
- - {{tool}} - - {{'tooling_family_abbreviation' | localize('DP%d', toolData.familyId)}} - - {{'tooling_shank_abbreviation' | localize('DP%d', toolData.shankId)}} - - {{toolName}} - {{'tooling_tool_abbreviation' | localize('DP%d', toolDuplo)}} + +
+
+ + +
+
+ + {{tool}} + + {{'tooling_family_abbreviation' | localize('DP%d', toolData.familyId)}} + - {{'tooling_shank_abbreviation' | localize('DP%d', toolData.shankId)}} + + {{toolName}} + {{'tooling_tool_abbreviation' | localize('DP%d', toolDuplo)}} +
+
@@ -64,7 +72,7 @@
-
+
{{'tooling_equipment_param_residualLife' | localize("Residual Life")}}: @@ -125,7 +133,7 @@ export default { // // }, data: function(){ return { - detailBox: false, + detailBoxOpened: false, } }, methods:{ @@ -168,8 +176,14 @@ export default { }, toggleDetail() { if(this.toolData) - this.detailBox = !this.detailBox + this.detailBoxOpened = !this.detailBoxOpened } + }, + watch:{ + toolData: function(n, o) { + if(this) + this.detailBoxOpened = false; + } } } \ No newline at end of file