/
live.component.html
158 lines (124 loc) · 7.56 KB
/
live.component.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<header></header>
<ion-content>
<ion-grid [hidden]="!edge.subscribeChannelsSuccessful" *ngIf="edge && edge.isOnline">
<ion-row class="ion-justify-content-center" *ngIf="widgets">
<!-- Energymonitor -->
<ng-container *ngFor="let clazz of widgets.classes" [ngSwitch]="clazz">
<ion-col *ngSwitchCase="'Energymonitor'" size="12" size-md="8" size-lg="3" class="ion-no-padding">
<energymonitor></energymonitor>
</ion-col>
</ng-container>
<!-- Widgets -->
<ion-col size="12" size-md="8" size-lg="6" class="ion-no-padding">
<ion-grid class="ion-no-padding">
<ion-row>
<!-- Regular Widgets -->
<ng-container *ngFor="let clazz of widgets.classes" [ngSwitch]="clazz">
<ion-col *ngSwitchCase="'Common_Autarchy'" size="12" size-lg="6" class="ion-no-padding">
<Common_Autarchy></Common_Autarchy>
</ion-col>
<ion-col *ngSwitchCase="'Common_Selfconsumption'" size="12" size-lg="6" class="ion-no-padding">
<Common_Selfconsumption></Common_Selfconsumption>
</ion-col>
<ion-col *ngSwitchCase="'Storage'" size="12" size-lg="6" class="ion-no-padding">
<storage></storage>
</ion-col>
<ion-col *ngSwitchCase="'Grid'" size="12" size-lg="6" class="ion-no-padding">
<grid></grid>
</ion-col>
<ion-col *ngSwitchCase="'Common_Production'" size="12" size-lg="6" class="ion-no-padding">
<Common_Production></Common_Production>
</ion-col>
<ion-col *ngSwitchCase="'Consumption'" size="12" size-lg="6" class="ion-no-padding">
<consumption></consumption>
</ion-col>
</ng-container>
<!-- Widgets depending on the configuration of the OpenEMS Edge -->
<ng-container *ngFor="let widget of widgets.list" [ngSwitch]="widget.name">
<!-- Widgets that are likely to be configured frequently -->
<ng-container *ngIf="config.components[widget.componentId].factoryId as factoryId">
<ng-container
*ngIf="factoryId !== 'Evcs.Cluster.PeakShaving' && factoryId !== 'Evcs.Cluster.SelfConsumption'">
<ion-col *ngSwitchCase="'io.openems.edge.evcs.api.Evcs'" size="12" size-lg="6" class="ion-no-padding">
<Controller_Evcs [componentId]="widget.componentId"></Controller_Evcs>
</ion-col>
</ng-container>
</ng-container>
<ion-col *ngSwitchCase="'Evcs.Cluster.SelfConsumption'" size="12" size-lg="6" class="ion-no-padding">
<Evcs_Api_Cluster [componentId]="widget.componentId"></Evcs_Api_Cluster>
</ion-col>
<ion-col *ngSwitchCase="'Evcs.Cluster.PeakShaving'" size="12" size-lg="6" class="ion-no-padding">
<Evcs_Api_Cluster [componentId]="widget.componentId"></Evcs_Api_Cluster>
</ion-col>
<ion-col *ngSwitchCase="'Controller.ChannelThreshold'" size="12" size-lg="6" class="ion-no-padding">
<Controller_Channelthreshold [componentId]="widget.componentId"></Controller_Channelthreshold>
</ion-col>
<ion-col *ngSwitchCase="'io.openems.impl.controller.channelthreshold.ChannelThresholdController'"
size="12" size-lg="6" class="ion-no-padding">
<Controller_Channelthreshold [componentId]="widget.componentId"></Controller_Channelthreshold>
</ion-col>
<ion-col *ngSwitchCase="'Controller.Io.FixDigitalOutput'" size="12" size-lg="6" class="ion-no-padding">
<Controller_Io_FixDigitalOutput [componentId]="widget.componentId"></Controller_Io_FixDigitalOutput>
</ion-col>
<!-- Widgets that are likely to be configured seldomly -->
<ion-col *ngSwitchCase="'Controller.CHP.SoC'" size="12" size-lg="6" class="ion-no-padding">
<Controller_ChpSocComponent [componentId]="widget.componentId"></Controller_ChpSocComponent>
</ion-col>
<ion-col *ngSwitchCase="'Controller.IO.HeatingElement'" size="12" size-lg="6" class="ion-no-padding">
<Controller_Io_HeatingElement [componentId]="widget.componentId"></Controller_Io_HeatingElement>
</ion-col>
<ion-col *ngSwitchCase="'Controller.Io.HeatPump.SgReady'" size="12" size-lg="6" class="ion-no-padding">
<Controller_Io_Heatpump [componentId]="widget.componentId"></Controller_Io_Heatpump>
</ion-col>
<ion-col *ngSwitchCase="'Controller.Symmetric.PeakShaving'" size="12" size-lg="6" class="ion-no-padding">
<Controller_Symmetric_PeakShaving [componentId]="widget.componentId"></Controller_Symmetric_PeakShaving>
</ion-col>
<ion-col *ngSwitchCase="'Controller.Asymmetric.PeakShaving'" size="12" size-lg="6" class="ion-no-padding">
<Controller_Asymmetric_PeakShaving [componentId]="widget.componentId">
</Controller_Asymmetric_PeakShaving>
</ion-col>
<ion-col *ngSwitchCase="'Controller.TimeslotPeakshaving'" size="12" size-lg="6" class="ion-no-padding">
<Controller_Symmetric_TimeSlot_PeakShaving [componentId]="widget.componentId">
</Controller_Symmetric_TimeSlot_PeakShaving>
</ion-col>
<ion-col *ngSwitchCase="'Controller.Ess.DelayedSellToGrid'" size="12" size-lg="6" class="ion-no-padding">
<delayedselltogrid [componentId]="widget.componentId"></delayedselltogrid>
</ion-col>
<ion-col *ngSwitchCase="'Controller.IO.ChannelSingleThreshold'" size="12" size-lg="6"
class="ion-no-padding">
<Controller_Io_ChannelSingleThresholdComponent [componentId]="widget.componentId">
</Controller_Io_ChannelSingleThresholdComponent>
</ion-col>
<ion-col *ngSwitchCase="'Controller.Ess.Time-Of-Use-Tariff'" size="12" size-lg="6" class="ion-no-padding">
<Controller_Ess_TimeOfUseTariff [componentId]="widget.componentId">
</Controller_Ess_TimeOfUseTariff>
</ion-col>
<ion-col *ngSwitchCase="'io.openems.edge.io.api.DigitalInput'" size="12" size-lg="6"
class="ion-no-padding">
<Io_Api_DigitalInput></Io_Api_DigitalInput>
</ion-col>
<ion-col size="12" *ngSwitchCase="'Controller.Ess.FixActivePower'" size-lg="6" class="ion-no-padding">
<Controller_Ess_FixActivePower [componentId]="widget.componentId"></Controller_Ess_FixActivePower>
</ion-col>
<ion-col size="12" *ngSwitchCase="'Controller.Ess.GridOptimizedCharge'" size-lg="6"
class="ion-no-padding">
<Controller_Ess_GridOptimizedCharge [componentId]="widget.componentId">
</Controller_Ess_GridOptimizedCharge>
</ion-col>
</ng-container>
</ion-row>
</ion-grid>
</ion-col>
</ion-row>
</ion-grid>
<ion-grid *ngIf="edge && edge.isOnline && !edge.subscribeChannelsSuccessful">
<ion-progress-bar type="indeterminate"></ion-progress-bar>
</ion-grid>
<ion-grid *ngIf="edge && !edge.isOnline">
<ion-row class="ion-justify-content-center">
<ion-col size-xl="8" size-lg="10" size-md="11" size-sm="12">
<offline></offline>
</ion-col>
</ion-row>
</ion-grid>
</ion-content>