|
25 | 25 | [value]="plannedStartOfShift1" |
26 | 26 | > |
27 | 27 | <ngx-material-timepicker #plannedPicker |
| 28 | + (closed)="calculatePlanHours()" |
28 | 29 | [format]="24" |
29 | 30 | [defaultTime]="plannedStartOfShift1" |
30 | 31 | [minutesGap]="5"></ngx-material-timepicker> |
|
43 | 44 | [value]="plannedBreakOfShift1" |
44 | 45 | > |
45 | 46 | <ngx-material-timepicker #plannedPause1Picker |
| 47 | + (closed)="calculatePlanHours()" |
46 | 48 | [format]="24" |
47 | 49 | [defaultTime]="plannedBreakOfShift1" |
48 | 50 | [minutesGap]="5"></ngx-material-timepicker> |
|
60 | 62 | [max]="plannedStartOfShift2 === '00:00' ? '23:55' : plannedStartOfShift2" |
61 | 63 | [value]="plannedEndOfShift1"> |
62 | 64 | <ngx-material-timepicker #plannedPicker2 |
| 65 | + (closed)="calculatePlanHours()" |
63 | 66 | [format]="24" |
64 | 67 | [defaultTime]="plannedEndOfShift1" |
65 | 68 | [minutesGap]="5"></ngx-material-timepicker> |
|
79 | 82 | [max]="plannedEndOfShift2 === '00:00' ? '23:55' : plannedEndOfShift2" |
80 | 83 | [value]="plannedStartOfShift2"> |
81 | 84 | <ngx-material-timepicker #plannedPicker3 |
| 85 | + (closed)="calculatePlanHours()" |
82 | 86 | [format]="24" |
83 | 87 | [defaultTime]="plannedStartOfShift2" |
84 | 88 | [minutesGap]="5"></ngx-material-timepicker> |
|
97 | 101 | [value]="plannedBreakOfShift2" |
98 | 102 | > |
99 | 103 | <ngx-material-timepicker #plannedPause2Picker |
| 104 | + (closed)="calculatePlanHours()" |
100 | 105 | [format]="24" |
101 | 106 | [defaultTime]="plannedBreakOfShift2" |
102 | 107 | [minutesGap]="5"></ngx-material-timepicker> |
|
114 | 119 | [min]="plannedStartOfShift2 === '00:00' ? plannedEndOfShift1 : plannedStartOfShift2" |
115 | 120 | [value]="plannedEndOfShift2 === '00:00' ? '' : plannedEndOfShift2"> |
116 | 121 | <ngx-material-timepicker #plannedPicker4 |
| 122 | + (closed)="calculatePlanHours()" |
117 | 123 | [format]="24" |
118 | 124 | [defaultTime]="plannedEndOfShift2 === '00:00' ? '' : plannedEndOfShift2" |
119 | 125 | [minutesGap]="5"></ngx-material-timepicker> |
|
137 | 143 | [value]="start1StartedAt" |
138 | 144 | > |
139 | 145 | <ngx-material-timepicker #picker |
| 146 | + (closed)="calculatePlanHours()" |
140 | 147 | [format]="24" |
141 | 148 | [defaultTime]="start1StartedAt" |
142 | 149 | [minutesGap]="5" |
|
156 | 163 | [value]="pause1Id" |
157 | 164 | > |
158 | 165 | <ngx-material-timepicker #pause1IdPicker |
| 166 | + (closed)="calculatePlanHours()" |
159 | 167 | [format]="24" |
160 | 168 | [defaultTime]="pause1Id" |
161 | 169 | [minutesGap]="5"></ngx-material-timepicker> |
|
174 | 182 | [max]="start2StartedAt" |
175 | 183 | [value]="stop1StoppedAt"> |
176 | 184 | <ngx-material-timepicker #picker2 |
| 185 | + (closed)="calculatePlanHours()" |
177 | 186 | [format]="24" |
178 | 187 | [defaultTime]="stop1StoppedAt" |
179 | 188 | [minutesGap]="5"></ngx-material-timepicker> |
|
193 | 202 | [max]="stop2StoppedAt" |
194 | 203 | [value]="start2StartedAt"> |
195 | 204 | <ngx-material-timepicker #picker3 |
| 205 | + (closed)="calculatePlanHours()" |
196 | 206 | [format]="24" |
197 | 207 | [defaultTime]="start2StartedAt" |
198 | 208 | [minutesGap]="5"></ngx-material-timepicker> |
|
211 | 221 | [value]="pause2Id" |
212 | 222 | > |
213 | 223 | <ngx-material-timepicker #pause2IdPicker |
| 224 | + (closed)="calculatePlanHours()" |
214 | 225 | [format]="24" |
215 | 226 | [defaultTime]="pause2Id" |
216 | 227 | [minutesGap]="5"></ngx-material-timepicker> |
|
228 | 239 | [min]="start2StartedAt" |
229 | 240 | [value]="stop2StoppedAt"> |
230 | 241 | <ngx-material-timepicker #picker4 |
| 242 | + (closed)="calculatePlanHours()" |
231 | 243 | [format]="24" |
232 | 244 | [defaultTime]="stop2StoppedAt" |
233 | 245 | [minutesGap]="5"></ngx-material-timepicker> |
|
236 | 248 | </ng-template> |
237 | 249 |
|
238 | 250 | <!-- <p><strong>{{ 'Plan text' | translate }}:</strong> {{ data.planText }}</p>--> |
239 | | - <br> |
240 | | - <mat-form-field class="pr-2"> |
| 251 | +<!-- <br>--> |
| 252 | +<!-- <mat-form-field class="pr-2">--> |
| 253 | +<!-- <mat-label>{{ 'Flex balance at start of day' | translate }}</mat-label>--> |
| 254 | +<!-- <input--> |
| 255 | +<!-- type="text"--> |
| 256 | +<!-- matInput--> |
| 257 | +<!-- id="flexToDate"--> |
| 258 | +<!-- name="flexToDate"--> |
| 259 | +<!-- readonly="readonly"--> |
| 260 | +<!-- disabled--> |
| 261 | +<!-- [value]="convertHoursToTime(data.sumFlexStart)"--> |
| 262 | +<!-- >--> |
| 263 | +<!-- </mat-form-field>--> |
| 264 | + <br><mat-form-field class="pr-2"> |
241 | 265 | <mat-label>{{ 'Plan hours' | translate }}</mat-label> |
242 | 266 | <input |
243 | 267 | type="number" |
244 | 268 | matInput |
245 | 269 | id="planHours" |
246 | 270 | name="planHours" |
| 271 | + [disabled]="isInTheFuture || data.message === null" |
247 | 272 | [(ngModel)]="data.planHours" |
248 | 273 | > |
249 | 274 | </mat-form-field> |
250 | 275 | <br> |
| 276 | + <mat-form-field class="pr-2"> |
| 277 | + <mat-label>{{ 'NettoHours' | translate }}</mat-label> |
| 278 | + <input |
| 279 | + type="text" |
| 280 | + matInput |
| 281 | + id="nettoHours" |
| 282 | + name="nettoHours" |
| 283 | + readonly="readonly" |
| 284 | + disabled |
| 285 | + [value]="convertHoursToTime(data.actualHours)" |
| 286 | + > |
| 287 | + </mat-form-field> |
| 288 | + <br> |
| 289 | + <mat-form-field class="pr-2"> |
| 290 | + <mat-label>{{ 'Flex' | translate }}</mat-label> |
| 291 | + <input |
| 292 | + type="text" |
| 293 | + matInput |
| 294 | + id="todaysFlex" |
| 295 | + name="todaysFlex" |
| 296 | + readonly="readonly" |
| 297 | + disabled |
| 298 | + [value]="convertHoursToTime(todaysFlex)" |
| 299 | + > |
| 300 | + </mat-form-field> |
| 301 | + <br> |
| 302 | + <mat-form-field class="pr-2"> |
| 303 | + <mat-label>{{ 'PaidOutFlex' | translate }}</mat-label> |
| 304 | + <input |
| 305 | + type="number" |
| 306 | + matInput |
| 307 | + id="paidOutFlex" |
| 308 | + name="paidOutFlex" |
| 309 | + (change)="calculatePlanHours()" |
| 310 | + [(ngModel)]="data.paidOutFlex" |
| 311 | + > |
| 312 | + </mat-form-field> |
| 313 | + <br> |
| 314 | + <mat-form-field class="pr-2"> |
| 315 | + <mat-label>{{ 'SumFlex' | translate }}</mat-label> |
| 316 | + <input |
| 317 | + type="text" |
| 318 | + matInput |
| 319 | + id="flexIncludingToday" |
| 320 | + name="flexIncludingToday" |
| 321 | + readonly="readonly" |
| 322 | + disabled |
| 323 | + [value]="convertHoursToTime(data.sumFlexEnd)" |
| 324 | + > |
| 325 | + </mat-form-field> |
| 326 | + <br> |
| 327 | + <br> |
251 | 328 | <p *ngIf="data.workerComment"><strong>{{ 'CommentWorker' | translate }}:</strong> {{ data.workerComment }}</p> |
252 | 329 | <ng-container *ngFor="let key of enumKeys"> |
253 | 330 | <ng-container *ngIf="key !== 'Blank' && key !== 'Care'"> |
|
257 | 334 | </ng-container> |
258 | 335 | </ng-container> |
259 | 336 | <br> |
| 337 | + <br> |
260 | 338 | <mat-form-field class="pr-2"> |
261 | 339 | <mat-label>{{ 'CommentOffice' | translate }}</mat-label> |
262 | 340 | <input |
|
0 commit comments