@ -46,7 +46,7 @@
@if (hiddenName) {
< div class = "grid items-start gap-3 has-[.simpleMode]:grid-cols-2 xs:grid-cols-1" >
< ng-container * ngTemplateOutlet = "decimalsByDefaultField" > < / ng-container >
< ng-content select = ".simpleMod e" > < / ng-content >
< ng-container * ngTemplateOutlet = "simpleContentTemplat e" > < / ng-container >
< / div >
} @else {
< div class = "flex items-start gap-3 xs:flex-col xs:items-stretch" >
@ -74,93 +74,94 @@
< / mat-form-field >
< ng-container * ngTemplateOutlet = "decimalsByDefaultField" > < / ng-container >
< / div >
< ng-content select = ".simpleMod e" > < / ng-content >
< ng-container * ngTemplateOutlet = "simpleContentTemplat e" > < / ng-container >
}
}
< / div >
< div class = "tb-form-panel stroked" formGroupName = "strategy" >
< div class = "flex flex-row items-center justify-between gap-2" >
< div class = "tb-form-panel-title" tb-hint-tooltip-icon = "{{ 'calculated-fields.output-strategy.hint.strategy' | translate }}" >
{{ 'calculated-fields.output-strategy.strategy' | translate }}
< / div >
< tb-toggle-select formControlName = "type" selectMediaBreakpoint = "xs" disablePagination appearance = "fill" >
@for (outputStrategyType of OutputStrategyTypes; track outputStrategyType) {
< tb-toggle-option [ value ] = " outputStrategyType " > {{ OutputStrategyTypeTranslations.get(outputStrategyType) | translate }}< / tb-toggle-option >
< mat-expansion-panel class = "tb-settings" [ disabled ] = " outputForm . get ( ' strategy . type ' ) . value = == OutputStrategyType . RULE_CHAIN " >
< mat-expansion-panel-header class = "flex flex-row flex-wrap" >
< mat-panel-title >
< div class = "flex flex-1 flex-row items-center justify-between xs:flex-col xs:items-start xs:gap-3" >
< div class = "tb-form-panel-title" style = "color: var(--mat-expansion-header-text-color)" tb-hint-tooltip-icon = "{{ 'calculated-fields.output-strategy.hint.strategy' | translate }}" >
{{ 'calculated-fields.output-strategy.strategy' | translate }}
< / div >
< tb-toggle-select formControlName = "type" selectMediaBreakpoint = "xs" disablePagination appearance = "fill" ( click ) = " $ event . stopPropagation ( ) " >
@for (outputStrategyType of OutputStrategyTypes; track outputStrategyType) {
< tb-toggle-option [ value ] = " outputStrategyType " > {{ OutputStrategyTypeTranslations.get(outputStrategyType) | translate }}< / tb-toggle-option >
}
< / tb-toggle-select >
< / div >
< / mat-panel-title >
< / mat-expansion-panel-header >
@if (outputForm.get('strategy.type').value === OutputStrategyType.IMMEDIATE) {
@if (outputForm.get('type').value === OutputType.Timeseries) {
< div class = "tb-form-row flex-1" >
< mat-slide-toggle class = "mat-slide" formControlName = "saveTimeSeries" >
< div tb-hint-tooltip-icon = "{{ 'calculated-fields.output-strategy.save-time-series' | translate }}" >
< div translate tbTruncateWithTooltip > calculated-fields.output-strategy.save-time-series< / div >
< / div >
< / mat-slide-toggle >
< / div >
< div class = "tb-form-row flex-1" >
< mat-slide-toggle class = "mat-slide" formControlName = "saveLatest" >
< div tb-hint-tooltip-icon = "{{ 'calculated-fields.output-strategy.save-latest-values' | translate }}" >
< div translate tbTruncateWithTooltip > calculated-fields.output-strategy.save-latest-values< / div >
< / div >
< / mat-slide-toggle >
< / div >
} @else {
< div class = "tb-form-row flex-1" >
< mat-slide-toggle class = "mat-slide" formControlName = "saveAttribute" >
< div tb-hint-tooltip-icon = "{{ 'calculated-fields.output-strategy.save-database' | translate }}" >
< div translate tbTruncateWithTooltip > calculated-fields.output-strategy.save-database< / div >
< / div >
< / mat-slide-toggle >
< / div >
}
< / tb-toggle-select >
< / div >
@if (outputForm.get('strategy.type').value === OutputStrategyType.IMMEDIATE) {
< div class = "tb-form-panel stroked" >
< div class = "tb-form-panel-title tb-normal" tb-hint-tooltip-icon = "{{ 'calculated-fields.output-strategy.hint.processing-options' | translate }}" >
{{ 'calculated-fields.output-strategy.processing-options' | translate }}
< div class = "tb-form-row flex-1" >
< mat-slide-toggle class = "mat-slide" formControlName = "sendWsUpdate" >
< div tb-hint-tooltip-icon = "{{ 'calculated-fields.output-strategy.send-web-sockets' | translate }}" >
< div translate tbTruncateWithTooltip > calculated-fields.output-strategy.send-web-sockets< / div >
< / div >
< / mat-slide-toggle >
< / div >
< mat-chip-listbox multiple >
@if (outputForm.get('type').value === OutputType.Timeseries) {
< mat-chip-option
[selected]="outputForm.get('strategy.saveTimeSeries').value"
[disabled]="outputForm.get('strategy.saveTimeSeries').disabled"
(click)="toggleChip('saveTimeSeries')">
{{ 'calculated-fields.output-strategy.save-time-series' | translate }}
< / mat-chip-option >
< mat-chip-option
[selected]="outputForm.get('strategy.saveLatest').value"
[disabled]="outputForm.get('strategy.saveLatest').disabled"
(click)="toggleChip('saveLatest')">
{{ 'calculated-fields.output-strategy.save-latest-values' | translate }}
< / mat-chip-option >
} @else {
< mat-chip-option
[selected]="outputForm.get('strategy.saveAttribute').value"
[disabled]="outputForm.get('strategy.saveAttribute').disabled"
(click)="toggleChip('saveAttribute')">
{{ 'calculated-fields.output-strategy.save-database' | translate }}
< / mat-chip-option >
}
< mat-chip-option
[selected]="outputForm.get('strategy.sendWsUpdate').value"
[disabled]="outputForm.get('strategy.sendWsUpdate').disabled"
(click)="toggleChip('sendWsUpdate')">
{{ 'calculated-fields.output-strategy.send-web-sockets' | translate }}
< / mat-chip-option >
< mat-chip-option
[selected]="outputForm.get('strategy.processCfs').value"
[disabled]="outputForm.get('strategy.processCfs').disabled"
(click)="toggleChip('processCfs')">
{{ 'calculated-fields.output-strategy.save-calculated-fields' | translate }}
< / mat-chip-option >
< / mat-chip-listbox >
< / div >
@if (outputForm.get('type').value === OutputType.Attribute) {
< div class = "tb-form-row flex-1" >
< mat-slide-toggle class = "mat-slide" formControlName = "updateAttributesOnlyOnValueChange" >
< div tb-hint-tooltip-icon = "{{ ( outputForm . get ( ' strategy . updateAttributesOnlyOnValueChange ' ) . value
? 'calculated-fields.output-strategy.hint.update-attributes-only-on-value-change-enabled'
: 'calculated-fields.output-strategy.hint.update-attributes-only-on-value-change') | translate }}">
< div translate tbTruncateWithTooltip > calculated-fields.output-strategy.update-attributes-only-on-value-change< / div >
< mat-slide-toggle class = "mat-slide" formControlName = "processCfs" >
< div tb-hint-tooltip-icon = "{{ 'calculated-fields.output-strategy.save-calculated-fields' | translate }}" >
< div translate tbTruncateWithTooltip > calculated-fields.output-strategy.save-calculated-fields< / div >
< / div >
< / mat-slide-toggle >
< / div >
} @else {
< tb-time-unit-input
required
subscriptSizing="dynamic"
appearance="outline"
sameWidthInputs
labelText="{{ 'calculated-fields.output-strategy.ttl' | translate }}"
requiredText="{{ 'calculated-fields.output-strategy.ttl-required' | translate }}"
minErrorText="{{ 'calculated-fields.output-strategy.ttl-min' | translate }}"
formControlName="ttl">
< mat-icon class = "help-icon mr-2 cursor-pointer"
aria-hidden="false"
aria-label="help-icon"
color="primary"
matSuffix
matTooltip="{{ 'calculated-fields.output-strategy.hint.ttl' | translate }}">
help_outline
< / mat-icon >
< / tb-time-unit-input >
@if (outputForm.get('type').value === OutputType.Attribute) {
< div class = "tb-form-row flex-1" >
< mat-slide-toggle class = "mat-slide" formControlName = "updateAttributesOnlyOnValueChange" >
< div tb-hint-tooltip-icon = "{{ ( outputForm . get ( ' strategy . updateAttributesOnlyOnValueChange ' ) . value
? 'calculated-fields.output-strategy.hint.update-attributes-only-on-value-change-enabled'
: 'calculated-fields.output-strategy.hint.update-attributes-only-on-value-change') | translate }}">
< div translate tbTruncateWithTooltip > calculated-fields.output-strategy.update-attributes-only-on-value-change< / div >
< / div >
< / mat-slide-toggle >
< / div >
} @else {
< div class = "tb-form-row space-between column-xs" >
< mat-slide-toggle class = "mat-slide" formControlName = "useCustomTtl" >
< div tb-hint-tooltip-icon = "{{ 'calculated-fields.output-strategy.hint.ttl' | translate }}" >
< div translate tbTruncateWithTooltip > calculated-fields.output-strategy.ttl< / div >
< / div >
< / mat-slide-toggle >
< tb-time-unit-input
required
inlineField
class="medium-width"
requiredText="{{ 'calculated-fields.output-strategy.ttl-required' | translate }}"
minErrorText="{{ 'calculated-fields.output-strategy.ttl-min' | translate }}"
formControlName="ttl">
< / tb-time-unit-input >
< / div >
}
}
}
< / mat-expansion-panel >
< / div >
< / div >
< ng-template # decimalsByDefaultField >
@ -172,3 +173,6 @@
}
< / mat-form-field >
< / ng-template >
< ng-template # simpleContentTemplate >
< ng-content select = ".simpleMode" > < / ng-content >
< / ng-template >