Skip to content

Commit b193117

Browse files
committed
fix: #225 apply filter
1 parent d6d349b commit b193117

File tree

5 files changed

+60
-64
lines changed

5 files changed

+60
-64
lines changed

src/app/modules/shared/components/details-fields/details-fields.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,11 @@
125125
<label for="NotesTextarea">Description</label>
126126
<textarea formControlName="description" class="form-control" id="NotesTextarea" rows="3"></textarea>
127127
</div>
128-
<div [ngClass]="{ hidden: formType !== 'entries' }" class="modal-footer">
128+
<div class="modal-footer">
129+
<button type="submit" class="btn btn-primary">Save</button>
129130
<button #closeModal type="button" class="btn btn-secondary" data-dismiss="modal">
130131
Close
131132
</button>
132-
<button type="submit" class="btn btn-primary">Save changes</button>
133133
</div>
134134
</form>
135135
</div>

src/app/modules/shared/pipes/substract-date/substract-date.pipe.spec.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,22 @@ describe('SubstractDatePipe', () => {
1414

1515
expect(diff).toBe('02:20');
1616
});
17+
18+
it('returns --:-- if fromDate is null', () => {
19+
const fromDate = null;
20+
const substractDate = new Date('2011-04-11T08:00:30Z');
21+
22+
const diff = new SubstractDatePipe().transform(fromDate, substractDate);
23+
24+
expect(diff).toBe('--:--');
25+
});
26+
27+
it('returns --:-- if substractDate is null', () => {
28+
const substractDate = null;
29+
const fromDate = new Date('2011-04-11T08:00:30Z');
30+
31+
const diff = new SubstractDatePipe().transform(fromDate, substractDate);
32+
33+
expect(diff).toBe('--:--');
34+
});
1735
});

src/app/modules/shared/pipes/substract-date/substract-date.pipe.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
import { Pipe, PipeTransform } from '@angular/core';
2-
2+
import * as moment from 'moment';
33
@Pipe({
44
name: 'substractDate'
55
})
66
export class SubstractDatePipe implements PipeTransform {
77

88
transform(fromDate: Date, substractDate: Date): string {
9-
const difference = fromDate.valueOf() - substractDate.valueOf();
109

11-
const minutes = Math.floor((difference / (1000 * 60)) % 60);
12-
const hours = Math.floor(difference / (1000 * 60 * 60) % 24);
10+
if (fromDate === null || substractDate === null ) {
11+
return '--:--';
12+
}
1313

14-
return `${this.formatTime(hours)}:${this.formatTime(minutes)}`;
14+
const startDate = moment(substractDate, 'YYYY-MM-DD HH:mm:ss');
15+
const endDate = moment(fromDate, 'YYYY-MM-DD HH:mm:ss');
16+
const duration: any = moment.duration(endDate.diff(startDate));
17+
return `${this.formatTime(duration._data.hours)}:${this.formatTime(duration._data.minutes)}`;
1518
}
1619

1720
formatTime(time: number): string {

src/app/modules/time-entries/pages/time-entries.component.html

Lines changed: 31 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -8,71 +8,54 @@
88
data-target="#editRecordsByDate"
99
class="btn btn-primary"
1010
>
11-
<i class="fa fa-plus-square"></i> New Entry
11+
Add new entry
1212
</button>
1313
</div>
1414
</div>
15-
<div class="card">
15+
<div style="height: 15px;"></div>
1616
<app-month-picker (monthSelected)="getMonth($event)"></app-month-picker>
17-
<div class="row m-0 header-entries">
18-
<div class="col">Project</div>
19-
<div class="col">Duration</div>
20-
<div class="col">Date</div>
21-
<div class="col-2">Actions</div>
22-
</div>
23-
<!--Accordion wrapper-->
24-
<div
25-
*ngIf="dataByMonth.length > 0; else emptyState"
26-
class="accordion accordion-container"
27-
role="tablist"
28-
aria-multiselectable="true"
29-
>
30-
<div class="card" *ngFor="let entry of dataByMonth | groupByDate; let rowIndex = index">
17+
<div style="height: 15px;"></div>
3118

32-
<!-- Card body -->
33-
<div
34-
*ngFor="let item of entry.details"
35-
[id]="'entry' + rowIndex"
36-
class="collapse show"
37-
role="tabpanel"
38-
aria-labelledby="heading10"
19+
<table class="table table-sm table-striped mb-0">
20+
<thead class="thead-orange">
21+
<tr class="d-flex">
22+
<th class="col">Date</th>
23+
<th class="col">Duration</th>
24+
<th class="col">Ticket</th>
25+
<th class="col"></th>
26+
</tr>
27+
</thead>
28+
<tbody>
29+
<tr
30+
class="d-flex"
31+
*ngFor="let entry of dataByMonth"
3932
>
40-
<div class="row m-0 entries">
41-
<div class="col">
42-
{{ item.id }}
43-
</div>
44-
<div class="col">
45-
{{ item.time }}
46-
</div>
47-
<div class="col">
48-
{{ item.start_date | date: 'dd/MM/yyyy' }}
49-
</div>
50-
<div class="col-2">
51-
<button
52-
class="btn btn-sm btn-small"
33+
<td class="col"> {{ entry.start_date | date: 'dd/MM/yyyy' }} </td>
34+
<td class="col"> {{ entry.end_date | substractDate: entry.start_date }} </td>
35+
<td class="col"> {{ entry.uri }} </td>
36+
<td class="col">
37+
<button
38+
class="btn btn-sm btn-secondary"
5339
data-toggle="modal"
5440
data-target="#editRecordsByDate"
55-
(click)="editEntry(item.id)"
41+
(click)="editEntry(entry.id)"
5642
>
5743
<i class="fa fa-edit"></i>
5844
</button>
5945
<button
60-
class="btn btn-sm btn-small"
46+
class="btn btn-sm btn-danger ml-2"
6147
data-toggle="modal"
6248
data-target="#deleteModal"
63-
(click)="openModal(item)"
49+
(click)="openModal(entry)"
6450
>
6551
<i class="fa fa-trash"></i>
6652
</button>
67-
</div>
68-
</div>
69-
</div>
70-
</div>
71-
</div>
72-
<ng-template #emptyState>
73-
<app-empty-state></app-empty-state>
74-
</ng-template>
75-
</div>
53+
</td>
54+
55+
</tr>
56+
</tbody>
57+
</table>
58+
7659
</div>
7760
<div class="modal fade" id="editRecordsByDate" tabindex="-1" role="dialog" aria-hidden="true">
7861
<div class="modal-dialog modal-dialog-centered" role="document">

src/app/modules/time-entries/pages/time-entries.component.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { Component, OnInit } from '@angular/core';
2-
import * as moment from 'moment';
32
import { Entry } from '../../shared/models';
43
import { EntryState } from '../../time-clock/store/entry.reducer';
54
import { allEntries } from '../../time-clock/store/entry.selectors';
@@ -28,14 +27,7 @@ export class TimeEntriesComponent implements OnInit {
2827
this.entryList = response;
2928
this.dataByMonth = this.entryList.reduce((acc: any, entry: any) => {
3029
if (new Date(entry.start_date).getMonth() === new Date().getMonth()) {
31-
let time: any = '-';
32-
if (entry.start_date && entry.end_date) {
33-
const startDate = moment(entry.start_date, 'YYYY-MM-DD HH:mm:ss');
34-
const endDate = moment(entry.end_date, 'YYYY-MM-DD HH:mm:ss');
35-
const duration: any = moment.duration(endDate.diff(startDate));
36-
time = `${duration._data.hours} hh : ${duration._data.minutes} mm`;
37-
}
38-
const item = { ...entry, time };
30+
const item = { ...entry };
3931
return [...acc, item];
4032
}
4133
return [];

0 commit comments

Comments
 (0)