• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

atinc / ngx-tethys / #96

12 Aug 2025 06:20AM UTC coverage: 90.341% (+0.02%) from 90.324%
#96

push

web-flow
refactor(date-picker): migrate to signal for date-picker #TINFR-1463 (#3513)

* refactor(date-picker): migrate to signal for calendar header

* refactor(date-picker): migrate to signal for calendar footer

* refactor(date-picker): migrate to signal for calendar table

* refactor(date-picker): migrate to signal for date table cell

* refactor(date-picker): migrate to signal for date carousel

* refactor(date-picker): migrate to signal for inner-popup and date-popup

* refactor(date-picker): migrate to signal for pickers

5531 of 6813 branches covered (81.18%)

Branch coverage included in aggregate %.

342 of 367 new or added lines in 20 files covered. (93.19%)

66 existing lines in 11 files now uncovered.

13969 of 14772 relevant lines covered (94.56%)

904.1 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

72.58
/src/date-picker/picker.pipes.ts
1
import { Pipe, PipeTransform, inject } from '@angular/core';
2
import { ThyI18nService } from 'ngx-tethys/i18n';
3
import { TinyDate } from 'ngx-tethys/util';
4
import { DateHelperService } from './date-helper.service';
5
import { QUARTER_FORMAT } from './date-picker.config';
6
import { ThyDatePickerConfigService } from './date-picker.service';
7
import { AdvancedSelectableCell } from './inner-types';
8
import { getFlexibleAdvancedReadableValue, transformDateValue } from './picker.util';
9
import { ThyCompatibleDate, DateEntry, ThyDateGranularity, ThyDateRangeEntry } from './standard-types';
10

11
/**
12
 * @private
1✔
13
 */
14
@Pipe({
28✔
15
    name: 'thyDatePickerFormat'
28✔
16
})
28✔
17
export class ThyDatePickerFormatPipe implements PipeTransform {
18
    private dateHelper = inject(DateHelperService);
19
    private datePickerConfigService = inject(ThyDatePickerConfigService);
55✔
20
    private i18n = inject(ThyI18nService);
55✔
21

46!
22
    transform(originalValue: ThyCompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: string, separator?: string): string {
23
        const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);
55✔
24

55!
25
        if (!formatStr) {
55✔
26
            formatStr = withTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';
27
        }
28
        const currentSeparator = ` ${(separator ?? this.datePickerConfigService.separator)?.trim()} `;
×
29
        if (!Array.isArray(value)) {
×
30
            return this.dateHelper.format(value, formatStr);
×
31
        } else {
32
            if (flexibleDateGranularity && flexibleDateGranularity !== 'day') {
33
                const tinyDates = [new TinyDate(value[0]), new TinyDate(value[1])];
×
34
                return getFlexibleAdvancedReadableValue(tinyDates, flexibleDateGranularity, currentSeparator, this.i18n.getLocale());
35
            } else {
36
                return value.map(date => this.dateHelper.format(date, formatStr)).join(currentSeparator);
37
            }
38
        }
1✔
39
    }
40
}
41

42
@Pipe({
43
    name: 'thyQuarterPickerFormat'
44
})
1✔
45
export class ThyQuarterPickerFormatPipe implements PipeTransform {
46
    constructor(private datePickerConfigService: ThyDatePickerConfigService) {}
2✔
47

48
    transform(originalValue: ThyCompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: string, separator?: string): string {
49
        const { value } = transformDateValue(originalValue);
2✔
50

2!
51
        if (!formatStr) {
2✔
52
            formatStr = `yyyy-${QUARTER_FORMAT}`;
53
        }
2!
54

×
55
        if (!value) {
56
            return;
2✔
57
        }
1✔
58

1✔
59
        if (!Array.isArray(value)) {
60
            const _value = new TinyDate(value);
61
            return _value.format(formatStr);
1✔
62
        } else {
63
            return value
2✔
64
                .map(date => {
2✔
65
                    const _date = new TinyDate(date);
66
                    return _date.format(formatStr);
2✔
67
                })
68
                .join(` ${(separator ?? this.datePickerConfigService.separator)?.trim()} `);
69
        }
1✔
70
    }
71
}
72

73
/**
1✔
74
 * @private
75
 */
76
@Pipe({
77
    name: 'thyDatePickerFormatString'
78
})
79
export class ThyDatePickerFormatStringPipe implements PipeTransform {
80
    transform(originalValue: ThyCompatibleDate | DateEntry | ThyDateRangeEntry): string {
81
        const { withTime } = transformDateValue(originalValue);
82

83
        return withTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';
1✔
84
    }
UNCOV
85
}
×
86

×
87
/**
88
 * @private
89
 */
1✔
90
@Pipe({
91
    name: 'showYearTip'
92
})
93
export class DatePickerAdvancedShowYearTipPipe implements PipeTransform {
94
    constructor() {}
95
    transform(value: AdvancedSelectableCell, type: ThyDateGranularity): boolean {
96
        return type !== 'year' && value.startValue.isSameDay(value.startValue.startOfYear());
97
    }
98
}
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc