Skip to content

Commit 1629b26

Browse files
authored
Merge pull request #1049 from masudul-tikweb/master
added actual shifts to 5 and fix disabled logics for both actual and …
2 parents 2c0ba37 + e2a76c2 commit 1629b26

File tree

4 files changed

+442
-60
lines changed

4 files changed

+442
-60
lines changed

eform-client/cypress/e2e/plugins/time-planning-pn/d/dashboard-edit-a.spec.cy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ describe('Dashboard edit values', () => {
6060
afterEach(() => {
6161
cy.get('#cell0_0').click();
6262

63-
['#plannedStartOfShift1', '#plannedEndOfShift1', '#start1StartedAt', '#stop1StoppedAt'].forEach(
63+
['#plannedStartOfShift1', '#start1StartedAt'].forEach(
6464
(selector) => {
6565
cy.get(selector)
6666
.closest('.flex-row')

eform-client/cypress/e2e/plugins/time-planning-pn/f/dashboard-edit-a.spec.cy.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ describe('Dashboard edit values', () => {
1414
cy.get('.ng-option').contains('ac ad').click();
1515
cy.get('#cell0_0').click();
1616

17-
['#plannedStartOfShift1', '#plannedEndOfShift1', '#start1StartedAt', '#stop1StoppedAt'].forEach(
17+
['#plannedStartOfShift1', '#start1StartedAt'].forEach(
1818
(selector) => {
1919
cy.get(selector)
2020
.closest('.flex-row')
@@ -41,7 +41,7 @@ describe('Dashboard edit values', () => {
4141

4242
// Get error message for a given input path
4343
const assertInputError = (errorTestId: string, expectedMessage: string) => {
44-
cy.wait(3000);
44+
cy.wait(1000);
4545
cy.get(`[data-testid="${errorTestId}"]`)
4646
.should('be.visible')
4747
.and('contain', expectedMessage);

eform-client/src/app/plugins/modules/time-planning-pn/components/plannings/time-planning-actions/workday-entity/workday-entity-dialog.component.html

Lines changed: 269 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,274 @@
197197
</mat-error>
198198
</div>
199199
</ng-container>
200+
201+
<!-- SHIFT 3 -->
202+
<ng-container *ngIf="row['shiftId'] === '3'" [formGroupName]="'planned'">
203+
<div [formGroupName]="'shift3'">
204+
<mat-error *ngFor="let error of getInputErrors('planned.shift3')">
205+
<small>{{ error }}</small>
206+
</mat-error>
207+
<div class="flex-row">
208+
<mat-form-field>
209+
<mat-label>{{ 'Start' | translate }}</mat-label>
210+
<input
211+
matInput
212+
readonly
213+
[ngxTimepicker]="plannedPicker5"
214+
[format]="24"
215+
formControlName="start"
216+
id="plannedStartOfShift3"/>
217+
<ngx-material-timepicker
218+
#plannedPicker5
219+
[format]="24"
220+
[defaultTime]="workdayForm.get('planned.shift3.start')?.value"
221+
[minutesGap]="5"
222+
(closed)="calculatePlanHours()">
223+
</ngx-material-timepicker>
224+
</mat-form-field>
225+
<button mat-icon-button color="warn" (click)="resetPlannedTimes(7)">
226+
<mat-icon>delete</mat-icon>
227+
</button>
228+
</div>
229+
<mat-error data-testid="plannedStartOfShift3-Error" *ngFor="let error of getInputErrors('planned.shift3.start')">
230+
<small>{{ error }}</small>
231+
</mat-error>
232+
233+
<div class="flex-row">
234+
<mat-form-field>
235+
<mat-label>{{ 'Pause' | translate }}</mat-label>
236+
<input
237+
matInput
238+
readonly
239+
[ngxTimepicker]="plannedPause3Picker"
240+
[format]="24"
241+
formControlName="break"
242+
[min]="'00:00'"
243+
[max]="getMaxDifference(workdayForm.get('planned.shift3.start')?.value, workdayForm.get('planned.shift3.stop')?.value)"
244+
id="plannedBreakOfShift3"/>
245+
<ngx-material-timepicker
246+
#plannedPause3Picker
247+
[format]="24"
248+
[defaultTime]="workdayForm.get('planned.shift3.break')?.value"
249+
[minutesGap]="5"
250+
(closed)="calculatePlanHours()">
251+
</ngx-material-timepicker>
252+
</mat-form-field>
253+
<button mat-icon-button color="warn" (click)="resetPlannedTimes(8)">
254+
<mat-icon>delete</mat-icon>
255+
</button>
256+
</div>
257+
<mat-error data-testid="plannedBreakOfShift3-Error" *ngFor="let error of getInputErrors('planned.shift3.break')">
258+
<small>{{ error }}</small>
259+
</mat-error>
260+
261+
<div class="flex-row">
262+
<mat-form-field>
263+
<mat-label>{{ 'Stop' | translate }}</mat-label>
264+
<input
265+
matInput
266+
readonly
267+
[ngxTimepicker]="plannedPicker6"
268+
[format]="24"
269+
formControlName="stop"
270+
[value]="workdayForm.get('planned.shift3.stop')?.value === '00:00' ? '' : workdayForm.get('planned.shift3.stop')?.value"
271+
id="plannedEndOfShift3"/>
272+
<ngx-material-timepicker
273+
#plannedPicker6
274+
[format]="24"
275+
[defaultTime]="workdayForm.get('planned.shift3.stop')?.value === '00:00' ? '' : workdayForm.get('planned.shift3.stop')?.value"
276+
[minutesGap]="5"
277+
(closed)="calculatePlanHours()">
278+
</ngx-material-timepicker>
279+
</mat-form-field>
280+
<button mat-icon-button color="warn" (click)="resetPlannedTimes(9)">
281+
<mat-icon>delete</mat-icon>
282+
</button>
283+
</div>
284+
<mat-error data-testid="plannedEndOfShift3-Error" *ngFor="let error of getInputErrors('planned.shift3.stop')">
285+
<small>{{ error }}</small>
286+
</mat-error>
287+
</div>
288+
</ng-container>
289+
290+
<!-- SHIFT 4 -->
291+
<ng-container *ngIf="row['shiftId'] === '4'" [formGroupName]="'planned'">
292+
<div [formGroupName]="'shift4'">
293+
<mat-error *ngFor="let error of getInputErrors('planned.shift4')">
294+
<small>{{ error }}</small>
295+
</mat-error>
296+
<div class="flex-row">
297+
<mat-form-field>
298+
<mat-label>{{ 'Start' | translate }}</mat-label>
299+
<input
300+
matInput
301+
readonly
302+
[ngxTimepicker]="plannedPicker7"
303+
[format]="24"
304+
formControlName="start"
305+
id="plannedStartOfShift4"/>
306+
<ngx-material-timepicker
307+
#plannedPicker7
308+
[format]="24"
309+
[defaultTime]="workdayForm.get('planned.shift4.start')?.value"
310+
[minutesGap]="5"
311+
(closed)="calculatePlanHours()">
312+
</ngx-material-timepicker>
313+
</mat-form-field>
314+
<button mat-icon-button color="warn" (click)="resetPlannedTimes(10)">
315+
<mat-icon>delete</mat-icon>
316+
</button>
317+
</div>
318+
<mat-error data-testid="plannedStartOfShift2-Error" *ngFor="let error of getInputErrors('planned.shift4.start')">
319+
<small>{{ error }}</small>
320+
</mat-error>
321+
322+
<div class="flex-row">
323+
<mat-form-field>
324+
<mat-label>{{ 'Pause' | translate }}</mat-label>
325+
<input
326+
matInput
327+
readonly
328+
[ngxTimepicker]="plannedPause4Picker"
329+
[format]="24"
330+
formControlName="break"
331+
[min]="'00:00'"
332+
[max]="getMaxDifference(workdayForm.get('planned.shift4.start')?.value, workdayForm.get('planned.shift2.stop')?.value)"
333+
id="plannedBreakOfShift4"/>
334+
<ngx-material-timepicker
335+
#plannedPause4Picker
336+
[format]="24"
337+
[defaultTime]="workdayForm.get('planned.shift4.break')?.value"
338+
[minutesGap]="5"
339+
(closed)="calculatePlanHours()">
340+
</ngx-material-timepicker>
341+
</mat-form-field>
342+
<button mat-icon-button color="warn" (click)="resetPlannedTimes(11)">
343+
<mat-icon>delete</mat-icon>
344+
</button>
345+
</div>
346+
<mat-error data-testid="plannedBreakOfShift4-Error" *ngFor="let error of getInputErrors('planned.shift4.break')">
347+
<small>{{ error }}</small>
348+
</mat-error>
349+
350+
<div class="flex-row">
351+
<mat-form-field>
352+
<mat-label>{{ 'Stop' | translate }}</mat-label>
353+
<input
354+
matInput
355+
readonly
356+
[ngxTimepicker]="plannedPicker8"
357+
[format]="24"
358+
formControlName="stop"
359+
[value]="workdayForm.get('planned.shift4.stop')?.value === '00:00' ? '' : workdayForm.get('planned.shift4.stop')?.value"
360+
id="plannedEndOfShift4"/>
361+
<ngx-material-timepicker
362+
#plannedPicker8
363+
[format]="24"
364+
[defaultTime]="workdayForm.get('planned.shift4.stop')?.value === '00:00' ? '' : workdayForm.get('planned.shift4.stop')?.value"
365+
[minutesGap]="5"
366+
(closed)="calculatePlanHours()">
367+
</ngx-material-timepicker>
368+
</mat-form-field>
369+
<button mat-icon-button color="warn" (click)="resetPlannedTimes(12)">
370+
<mat-icon>delete</mat-icon>
371+
</button>
372+
</div>
373+
<mat-error data-testid="plannedEndOfShift4-Error" *ngFor="let error of getInputErrors('planned.shift4.stop')">
374+
<small>{{ error }}</small>
375+
</mat-error>
376+
</div>
377+
</ng-container>
378+
379+
<!-- SHIFT 5 -->
380+
<ng-container *ngIf="row['shiftId'] === '5'" [formGroupName]="'planned'">
381+
<div [formGroupName]="'shift5'">
382+
<mat-error *ngFor="let error of getInputErrors('planned.shift5')">
383+
<small>{{ error }}</small>
384+
</mat-error>
385+
<div class="flex-row">
386+
<mat-form-field>
387+
<mat-label>{{ 'Start' | translate }}</mat-label>
388+
<input
389+
matInput
390+
readonly
391+
[ngxTimepicker]="plannedPicker9"
392+
[format]="24"
393+
formControlName="start"
394+
id="plannedStartOfShift5"/>
395+
<ngx-material-timepicker
396+
#plannedPicker9
397+
[format]="24"
398+
[defaultTime]="workdayForm.get('planned.shift5.start')?.value"
399+
[minutesGap]="5"
400+
(closed)="calculatePlanHours()">
401+
</ngx-material-timepicker>
402+
</mat-form-field>
403+
<button mat-icon-button color="warn" (click)="resetPlannedTimes(13)">
404+
<mat-icon>delete</mat-icon>
405+
</button>
406+
</div>
407+
<mat-error data-testid="plannedStartOfShift5-Error" *ngFor="let error of getInputErrors('planned.shift5.start')">
408+
<small>{{ error }}</small>
409+
</mat-error>
410+
411+
<div class="flex-row">
412+
<mat-form-field>
413+
<mat-label>{{ 'Pause' | translate }}</mat-label>
414+
<input
415+
matInput
416+
readonly
417+
[ngxTimepicker]="plannedPause5Picker"
418+
[format]="24"
419+
formControlName="break"
420+
[min]="'00:00'"
421+
[max]="getMaxDifference(workdayForm.get('planned.shift5.start')?.value, workdayForm.get('planned.shift5.stop')?.value)"
422+
id="plannedBreakOfShift5"/>
423+
<ngx-material-timepicker
424+
#plannedPause5Picker
425+
[format]="24"
426+
[defaultTime]="workdayForm.get('planned.shift5.break')?.value"
427+
[minutesGap]="5"
428+
(closed)="calculatePlanHours()">
429+
</ngx-material-timepicker>
430+
</mat-form-field>
431+
<button mat-icon-button color="warn" (click)="resetPlannedTimes(14)">
432+
<mat-icon>delete</mat-icon>
433+
</button>
434+
</div>
435+
<mat-error data-testid="plannedBreakOfShift5-Error" *ngFor="let error of getInputErrors('planned.shift5.break')">
436+
<small>{{ error }}</small>
437+
</mat-error>
438+
439+
<div class="flex-row">
440+
<mat-form-field>
441+
<mat-label>{{ 'Stop' | translate }}</mat-label>
442+
<input
443+
matInput
444+
readonly
445+
[ngxTimepicker]="plannedPicker10"
446+
[format]="24"
447+
formControlName="stop"
448+
[value]="workdayForm.get('planned.shift5.stop')?.value === '00:00' ? '' : workdayForm.get('planned.shift5.stop')?.value"
449+
id="plannedEndOfShift2"/>
450+
<ngx-material-timepicker
451+
#plannedPicker10
452+
[format]="24"
453+
[defaultTime]="workdayForm.get('planned.shift5.stop')?.value === '00:00' ? '' : workdayForm.get('planned.shift5.stop')?.value"
454+
[minutesGap]="5"
455+
(closed)="calculatePlanHours()">
456+
</ngx-material-timepicker>
457+
</mat-form-field>
458+
<button mat-icon-button color="warn" (click)="resetPlannedTimes(15)">
459+
<mat-icon>delete</mat-icon>
460+
</button>
461+
</div>
462+
<mat-error data-testid="plannedEndOfShift5-Error" *ngFor="let error of getInputErrors('planned.shift5.stop')">
463+
<small>{{ error }}</small>
464+
</mat-error>
465+
</div>
466+
</ng-container>
467+
200468
</ng-template>
201469

202470
<!-- ACTUAL COLUMN TEMPLATE -->
@@ -656,8 +924,7 @@
656924
matInput
657925
type="number"
658926
id="planHours"
659-
formControlName="planHours"
660-
(change)="calculatePlanHours()"/>
927+
formControlName="planHours"/>
661928
<mat-error data-testid="planHours-Error" *ngIf="workdayForm.hasError('tooManyHours')">
662929
Total planned hours cannot exceed 24
663930
</mat-error>

0 commit comments

Comments
 (0)