Added minimal functionality for Robot teaching

- Added minimal HMI
- Added possibility to open and close all chamber doors
This commit is contained in:
2026-01-17 09:20:39 +01:00
parent 9f058db2a3
commit 2d11c43579
2274 changed files with 912690 additions and 162 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

View File

@@ -0,0 +1,8 @@
{
"$schema": "../../../TwinCAT-HMI-Common/JsonSchemas/Language.Schema.json",
"locale": "de",
"localizedText": {
"Tooltip_LessThanMin_Text": "Der aktuelle Wert ist kleiner als das Minimum: {0}",
"Tooltip_GreaterThanMax_Text": "Der aktuelle Wert ist größer als das Maximum: {0}"
}
}

View File

@@ -0,0 +1,8 @@
{
"$schema": "../../../TwinCAT-HMI-Common/JsonSchemas/Language.Schema.json",
"locale": "en",
"localizedText": {
"Tooltip_LessThanMin_Text": "The current value is less than the minimum: {0}",
"Tooltip_GreaterThanMax_Text": "The current value is greater than the maximum: {0}"
}
}

View File

@@ -0,0 +1,42 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"definitions": {
"LinearGaugeLabelPosition": {
"$ref": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.TcHmiLinearGauge.LabelPosition"
},
"LinearGaugeOrientation": {
"$ref": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.TcHmiLinearGauge.Orientation"
},
"LinearGaugeUnitOrientation": {
"$ref": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.TcHmiLinearGauge.UnitOrientation"
},
"TcHmi.Controls.Beckhoff.TcHmiLinearGauge": {
"$schema": "http://json-schema.org/draft-04/schema",
"type": "object",
"frameworkInstanceOf": "TcHmi.Controls.System.TcHmiControl",
"frameworkControlType": "TcHmiLinearGauge",
"frameworkControlNamespace": "TcHmi.Controls.Beckhoff"
},
"TcHmi.Controls.Beckhoff.TcHmiLinearGauge.LabelPosition": {
"title": "LabelPosition",
"type": "string",
"enum": ["Top", "Bottom", "Left", "Right"],
"default": "Top"
},
"TcHmi.Controls.Beckhoff.TcHmiLinearGauge.Orientation": {
"title": "LinearGaugeOrientation",
"type": "string",
"enum": ["Horizontal", "Vertical", "HorizontalInverted", "VerticalInverted"],
"default": "Horizontal"
},
"TcHmi.Controls.Beckhoff.TcHmiLinearGauge.UnitOrientation": {
"title": "LinearGaugeUnitOrientation",
"type": "string",
"enum": ["Theme", "Horizontal", "Vertical"],
"default": "Theme"
},
"TcHmiLinearGauge": {
"$ref": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.TcHmiLinearGauge"
}
}
}

View File

@@ -0,0 +1,456 @@
/** Styles for all themes */
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge,
.tchmi-linear-gauge {
padding: 8px 25px;
/* Prevent overflow if the border radius is huge */
overflow: hidden;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template,
.tchmi-linear-gauge-template {
height: 100%;
display: flex;
flex-direction: column;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-labels,
.tchmi-linear-gauge-template-labels {
position: relative;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-labels span,
.tchmi-linear-gauge-template-labels span {
position: absolute;
transform: translateX(-50%);
cursor: default;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-labels span.hidden,
.tchmi-linear-gauge-template-labels span.hidden {
visibility: hidden;
position: relative;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-labels span.first,
.tchmi-linear-gauge-template-labels span.first {
transform: translateX(calc(-50% + 1px));
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-labels span.last,
.tchmi-linear-gauge-template-labels span.last {
transform: translateX(calc(-50% - 1px));
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-ticks,
.tchmi-linear-gauge-template-ticks {
flex-basis: 10px;
flex-shrink: 0;
margin: 2px 0;
position: relative;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick,
.tchmi-linear-gauge-template-tick {
width: 2px;
position: absolute;
transform: translateX(-50%);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick.major,
.tchmi-linear-gauge-template-tick.major {
height: 100%;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick.minor,
.tchmi-linear-gauge-template-tick.minor {
height: 60%;
top: 40%;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick.first,
.tchmi-linear-gauge-template-tick.first {
transform: translateX(0);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick.last,
.tchmi-linear-gauge-template-tick.last {
transform: translateX(-100%);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-track,
.tchmi-linear-gauge-template-track {
flex-grow: 1;
flex-shrink: 0;
flex-basis: 5px;
position: relative;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-filler,
.tchmi-linear-gauge-template-filler {
position: absolute;
height: 100%;
transform-origin: left;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-filler.inverted,
.tchmi-linear-gauge-template-filler.inverted {
position: absolute;
height: 100%;
right: 0;
transform-origin: right;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-knob,
.tchmi-linear-gauge-template-knob {
position: absolute;
top: 50%;
overflow: visible;
background: transparent;
z-index: 2;
display: none;
cursor: ew-resize;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-range,
.tchmi-linear-gauge-template-range {
flex-basis: 5px;
flex-shrink: 0;
margin: 2px 0;
position: relative;
overflow: hidden;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-rangechild,
.tchmi-linear-gauge-template-rangechild {
height: 100%;
position: absolute;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-description,
.tchmi-linear-gauge-template-description {
margin: 2px 0 3px 0;
color: #4993da;
font-size: 14px;
font-weight: 600;
display: flex;
justify-content: space-between;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-value .content,
.tchmi-linear-gauge-template-value .content {
text-align: right;
cursor: default;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-value .hidden,
.tchmi-linear-gauge-template-value .hidden {
visibility: hidden;
display: none;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-unit .content,
.tchmi-linear-gauge-template-unit .content {
width: 16px;
white-space: nowrap;
cursor: default;
}
/* Overrides for reverse flex */
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template.flex-reverse,
.tchmi-linear-gauge-template.flex-reverse {
flex-direction: column-reverse;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template.flex-reverse
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick.minor,
.tchmi-linear-gauge-template.flex-reverse .tchmi-linear-gauge-template-tick.minor {
top: auto;
}
/* Overrides for vertical orientation*/
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical,
.tchmi-linear-gauge.vertical {
padding: 20px 10px;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template {
flex-direction: row;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .flex-reverse,
.tchmi-linear-gauge.vertical .flex-reverse {
flex-direction: row-reverse;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-labels,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-labels {
display: flex;
flex-direction: column;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-labels span,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-labels span {
transform: translateY(50%);
right: 0;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-labels span.first,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-labels span.first {
transform: translateY(calc(50% - 1px));
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-labels span.last,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-labels span.last {
transform: translateY(calc(50% + 1px));
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical
.flex-reverse
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-labels
span,
.tchmi-linear-gauge.vertical .flex-reverse .tchmi-linear-gauge-template-labels span {
right: auto;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-ticks,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-ticks {
margin: 0 2px;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-tick {
height: 2px;
transform: translateY(50%);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick.major,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-tick.major {
width: 100%;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick.minor,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-tick.minor {
width: 60%;
left: 40%;
top: auto;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical
.flex-reverse
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick.minor,
.tchmi-linear-gauge.vertical .flex-reverse .tchmi-linear-gauge-template-tick.minor {
left: auto;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick.first,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-tick.first {
transform: translateY(0);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick.last,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-tick.last {
transform: translateY(100%);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-filler,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-filler {
width: 100%;
height: 0;
bottom: 0;
transform-origin: bottom;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-filler.inverted,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-filler.inverted {
width: 100%;
height: 0;
top: 0;
transform-origin: top;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-knob,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-knob {
left: 50%;
top: auto;
bottom: 0;
cursor: ns-resize;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-range,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-range {
margin: 0 2px;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-rangechild,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-rangechild {
width: 100%;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-description,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-description {
margin: 0 3px 0 2px;
flex-direction: column-reverse;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-value,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-value {
display: flex;
flex-direction: column-reverse;
position: relative;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-value .content,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-value .content {
position: absolute;
top: 0;
width: 100%;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-value .hidden,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-value .hidden {
display: block;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical
.flex-reverse
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-unit,
.tchmi-linear-gauge.vertical .flex-reverse .tchmi-linear-gauge-template-unit {
text-align: right;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-unit
.content:not(.horizontal),
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-unit .content.vertical,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-unit .content:not(.horizontal),
.tchmi-linear-gauge-template-unit .content.vertical {
display: inline-block;
transform: rotateZ(-90deg);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge:not(.vertical)
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-unit
.content.vertical,
.tchmi-linear-gauge:not(.vertical) .tchmi-linear-gauge-template-unit .content.vertical {
width: auto !important;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge:not(.vertical)
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-unit
.content.vertical::after,
.tchmi-linear-gauge:not(.vertical) .tchmi-linear-gauge-template-unit .content.vertical::after {
content: '';
display: block;
padding: 50% 0;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.TcHmi_Controls_System_TcHmiControl-operate-disallowed
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-knob,
.tchmi-linear-gauge.TcHmi_Controls_System_TcHmiControl-operate-disallowed .tchmi-linear-gauge-template-knob {
cursor: not-allowed;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-invalid-notification {
position: absolute;
width: 30px; /* is used for internal calc*/
height: 30px; /* is used for internal calc*/
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge .container-markers-label {
display: flex;
flex-direction: row;
position: relative;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .container-markers-label {
justify-content: right;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge .container-single-marker-label {
display: flex;
flex-direction: column;
position: absolute;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .container-single-marker-label {
flex-direction: row;
height: 20px;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge .marker-label {
text-align: center;
white-space: nowrap;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge .marker-triangle {
position: relative;
width: 0;
height: 0;
align-self: center;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-bottom: 10px solid;
transform: rotate(0deg);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge .marker-triangle.reverse {
transform: rotate(180deg);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .marker-triangle {
transform: rotate(90deg);
margin-right: 3px;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .marker-triangle.reverse {
transform: rotate(270deg);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge .container-marker-lines {
height: 100%;
width: 100%;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge .marker-line {
width: 2px;
height: 100%;
position: absolute;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .marker-line {
height: 2px;
width: 100%;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge .marker-line.first {
transform: translateX(0);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge .marker-line.last {
transform: translateX(-100%);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .marker-line.first {
transform: translateY(0);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .marker-line.last {
transform: translateY(100%);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge .container-single-marker-label.first {
transform: translateX(calc(-50% + 1px));
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge .container-single-marker-label.last {
transform: translateX(calc(-50% - 1px));
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .container-single-marker-label.first {
transform: translateY(calc(50% - 1px));
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .container-single-marker-label.last {
transform: translateY(calc(50% + 1px));
}

View File

@@ -0,0 +1,19 @@
<div class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template tchmi-linear-gauge-template tchmi-box">
<div class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-labels tchmi-linear-gauge-template-labels"></div>
<div class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-ticks tchmi-linear-gauge-template-ticks"></div>
<div class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-track tchmi-linear-gauge-template-track">
<div class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-filler tchmi-linear-gauge-template-filler"></div>
<div class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-knob tchmi-linear-gauge-template-knob"></div>
</div>
<div class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-range tchmi-linear-gauge-template-range"></div>
<div class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-description tchmi-linear-gauge-template-description">
<div class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-unit tchmi-linear-gauge-template-unit">
<span class="content"></span>
</div>
<div class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-value tchmi-linear-gauge-template-value">
<span class="hidden max"></span>
<span class="hidden min"></span>
<span class="content"></span>
</div>
</div>
</div>

View File

@@ -0,0 +1,31 @@
{
"$schema": "../../../../TcHmiFramework/Schema/ThemeDescription.Schema.json",
"controlTypeValues": {
"TcHmi.Controls.Beckhoff.TcHmiLinearGauge": {
"attributes": {
"KnobColor": {
"color": "#2775be"
},
"KnobArrowsColor": {
"color": "#FFFFFF"
}
},
"themedResources": {
"KnobConfigHorizontal": {
"imagePath": "KnobHorizontal.svg",
"width": 40,
"height": 40,
"offsetX": 20,
"offsetY": 20
},
"KnobConfigVertical": {
"imagePath": "KnobVertical.svg",
"width": 40,
"height": 40,
"offsetX": 20,
"offsetY": 20
}
}
}
}
}

View File

@@ -0,0 +1 @@
<svg id="Inhalt" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80"><defs><style>.cls-2{fill:#fff;}</style></defs><title>icons_error_normal</title><path class="cls-2" d="M40,54.54a2.45,2.45,0,0,1-2.46-2.42,2.44,2.44,0,1,1,4.88,0A2.46,2.46,0,0,1,40,54.54ZM41.42,46c-.06.55-.17.52-.61.52H39.16c-.43,0-.55,0-.61-.52l-.64-11.27c0-.49,0-.53,0-.7a.48.48,0,0,1,.52-.5H41.5a.54.54,0,0,1,.58.52c0,.17,0,.13,0,.62Z"/></svg>

After

Width:  |  Height:  |  Size: 418 B

View File

@@ -0,0 +1,10 @@
<svg class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-knob-svg" version="1.1" xmlns="http://www.w3.org/2000/svg"
width="40" height="40">
<defs>{KnobColorGradientDefinition}</defs>
<circle r="18px" cx="20px" cy="20px"
style="stroke-width:2px;{KnobColorFill}{KnobArrowsColorStroke}"></circle>
<path d="M 18 11 L 16 11 L 7 20 L 16 29 L 18 29 L 18 27 L 11 20 L 18 13 Z"
style="stroke:none;{KnobArrowsColorFill}"></path>
<path d="M 22 11 L 24 11 L 33 20 L 24 29 L 22 29 L 22 27 L 29 20 L 22 13 Z"
style="stroke:none;{KnobArrowsColorFill}"></path>
</svg>

After

Width:  |  Height:  |  Size: 581 B

View File

@@ -0,0 +1,11 @@
<svg class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-knob-svg" version="1.1" xmlns="http://www.w3.org/2000/svg"
width="40" height="40"
style="transform: rotate(90deg);transform-origin: center;">
<defs>{KnobColorGradientDefinition}</defs>
<circle r="18px" cx="20px" cy="20px"
style="stroke-width:2px;{KnobColorFill}{KnobArrowsColorStroke}"></circle>
<path d="M 18 11 L 16 11 L 7 20 L 16 29 L 18 29 L 18 27 L 11 20 L 18 13 Z"
style="stroke:none;{KnobArrowsColorFill}"></path>
<path d="M 22 11 L 24 11 L 33 20 L 24 29 L 22 29 L 22 27 L 29 20 L 22 13 Z"
style="stroke:none;{KnobArrowsColorFill}"></path>
</svg>

After

Width:  |  Height:  |  Size: 644 B

View File

@@ -0,0 +1,81 @@
/** Styles for the theme: Base-Dark */
/* Style for the main element */
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge,
.tchmi-linear-gauge {
--tchmi-background: var(--tchmi-background-color-1);
--tchmi-label-color: var(--tchmi-foreground-color-1);
--tchmi-description-color: var(--tchmi-foreground-color-1);
--tchmi-tick-background: var(--tchmi-foreground-color-1);
--tchmi-filler-background: var(--tchmi-highlight-color-1);
--tchmi-track-background: var(--tchmi-background-color-4);
--tchmi-set-point: var(--tchmi-foreground-color-2);
background-color: var(--tchmi-background);
box-shadow: var(--tchmi-card-shadow);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-labels,
.tchmi-linear-gauge-template-labels {
color: var(--tchmi-label-color);
font-size: 14px;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick,
.tchmi-linear-gauge-template-tick {
background-color: var(--tchmi-tick-background);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-track,
.tchmi-linear-gauge-template-track {
background-color: var(--tchmi-track-background);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-filler,
.tchmi-linear-gauge-template-filler {
background-color: var(--tchmi-filler-background);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-description,
.tchmi-linear-gauge-template-description {
color: var(--tchmi-description-color);
font-size: 14px;
}
/* Overrides for vertical orientation*/
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-filler,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-filler {
background-color: var(--tchmi-filler-background);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-set-point {
position: absolute;
background: var(--tchmi-set-point);
height: calc(100% + 32px);
top: -16px;
width: 2px;
transform: translate(-1px, 0);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-set-point.vertical-setpoint {
position: absolute;
width: calc(100% + 32px);
top: auto;
left: -16px;
height: 2px;
transform: translate(0, 1px);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-set-point.inverted-setpoint {
transform: translate(1px, 0);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-set-point.vertical-setpoint.inverted-setpoint {
transform: translate(0, -1px);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-invalid-notification {
background-image: url('Images/invalid-notification.svg');
background-size: 200% 200%;
background-color: var(--tchmi-error-color);
background-position: 50% 50%;
}

View File

@@ -0,0 +1,31 @@
{
"$schema": "../../../../TcHmiFramework/Schema/ThemeDescription.Schema.json",
"controlTypeValues": {
"TcHmi.Controls.Beckhoff.TcHmiLinearGauge": {
"attributes": {
"KnobColor": {
"color": "#4994DA"
},
"KnobArrowsColor": {
"color": "#FFFFFF"
}
},
"themedResources": {
"KnobConfigHorizontal": {
"imagePath": "KnobHorizontal.svg",
"width": 40,
"height": 40,
"offsetX": 20,
"offsetY": 20
},
"KnobConfigVertical": {
"imagePath": "KnobVertical.svg",
"width": 40,
"height": 40,
"offsetX": 20,
"offsetY": 20
}
}
}
}
}

View File

@@ -0,0 +1 @@
<svg id="Inhalt" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80"><defs><style>.cls-2{fill:#fff;}</style></defs><title>icons_error_normal</title><path class="cls-2" d="M 40 49.5 C 38.7 49.5 37.6 48.5 37.5 47.1 C 37.5 45.8 38.6 44.7 40 44.7 C 41.3 44.7 42.4 45.8 42.4 47.1 C 42.4 48.4 41.3 49.5 40 49.5 Z M 41.4 41 c -0.1 0.5 -0.2 0.5 -0.6 0.5 H 39.2 c -0.4 0 -0.5 0 -0.6 -0.5 l -0.6 -11.3 c 0 -0.5 0 -0.5 0 -0.7 C 37.9 28.9 38 28.8 38.1 28.7 C 38.2 28.6 38.3 28.5 38.4 28.5 H 41.5 C 41.6 28.5 41.8 28.6 41.9 28.7 C 42 28.8 42.1 28.9 42.1 29.1 c 0 0.2 0 0.1 0 0.6 Z"/></svg>

After

Width:  |  Height:  |  Size: 580 B

View File

@@ -0,0 +1,10 @@
<svg class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-knob-svg" version="1.1" xmlns="http://www.w3.org/2000/svg"
width="40" height="40">
<defs>{KnobColorGradientDefinition}</defs>
<circle r="18px" cx="20px" cy="20px"
style="stroke-width:3px;{KnobColorFill}{KnobArrowsColorStroke}"></circle>
<path d="M 18 11 L 16 11 L 7 20 L 16 29 L 18 29 L 18 27 L 11 20 L 18 13 Z"
style="stroke:none;{KnobArrowsColorFill}"></path>
<path d="M 22 11 L 24 11 L 33 20 L 24 29 L 22 29 L 22 27 L 29 20 L 22 13 Z"
style="stroke:none;{KnobArrowsColorFill}"></path>
</svg>

After

Width:  |  Height:  |  Size: 581 B

View File

@@ -0,0 +1,11 @@
<svg class="TcHmi_Controls_Beckhoff_TcHmiLinearGauge-knob-svg" version="1.1" xmlns="http://www.w3.org/2000/svg"
width="40" height="40"
style="transform: rotate(90deg);transform-origin: center;">
<defs>{KnobColorGradientDefinition}</defs>
<circle r="18px" cx="20px" cy="20px"
style="stroke-width:3px;{KnobColorFill}{KnobArrowsColorStroke}"></circle>
<path d="M 18 11 L 16 11 L 7 20 L 16 29 L 18 29 L 18 27 L 11 20 L 18 13 Z"
style="stroke:none;{KnobArrowsColorFill}"></path>
<path d="M 22 11 L 24 11 L 33 20 L 24 29 L 22 29 L 22 27 L 29 20 L 22 13 Z"
style="stroke:none;{KnobArrowsColorFill}"></path>
</svg>

After

Width:  |  Height:  |  Size: 644 B

View File

@@ -0,0 +1,82 @@
/** Styles for the theme: Base */
/* Style for the main element */
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge,
.tchmi-linear-gauge {
--tchmi-background: var(--tchmi-background-color-1);
--tchmi-label-color: var(--tchmi-highlight-color-1);
--tchmi-description-color: var(--tchmi-highlight-color-1);
--tchmi-tick-background: var(--tchmi-highlight-color-1);
--tchmi-filler-background: var(--tchmi-highlight-color-1);
--tchmi-track-background: var(--tchmi-background-color-4);
--tchmi-set-point: var(--tchmi-foreground-color-1);
background-color: var(--tchmi-background);
box-shadow: var(--tchmi-card-shadow);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-labels,
.tchmi-linear-gauge-template-labels {
color: var(--tchmi-label-color);
font-size: 14px;
font-weight: 600;
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-tick,
.tchmi-linear-gauge-template-tick {
background-color: var(--tchmi-tick-background);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-track,
.tchmi-linear-gauge-template-track {
background-color: var(--tchmi-track-background);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-filler,
.tchmi-linear-gauge-template-filler {
background-color: var(--tchmi-filler-background);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-description,
.tchmi-linear-gauge-template-description {
color: var(--tchmi-description-color);
font-size: 14px;
}
/* Overrides for vertical orientation*/
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge.vertical .TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-filler,
.tchmi-linear-gauge.vertical .tchmi-linear-gauge-template-filler {
background-color: var(--tchmi-filler-background);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-set-point {
position: absolute;
background: var(--tchmi-set-point);
height: calc(100% + 32px);
top: -16px;
width: 2px;
transform: translate(-1px, 0);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-set-point.vertical-setpoint {
position: absolute;
width: calc(100% + 32px);
top: auto;
left: -16px;
height: 2px;
transform: translate(0, 1px);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-set-point.inverted-setpoint {
transform: translate(1px, 0);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-template-set-point.vertical-setpoint.inverted-setpoint {
transform: translate(0, -1px);
}
.TcHmi_Controls_Beckhoff_TcHmiLinearGauge-invalid-notification {
background-image: url('Images/invalid-notification.svg');
background-size: 200% 200%;
background-color: var(--tchmi-error-color);
background-position: 50% 50%;
}