@datarailsshared/datarailsshared 1.2.3 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/datarailsshared-datarailsshared.umd.js +1260 -0
- package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -0
- package/datarailsshared-datarailsshared-1.3.0.tgz +0 -0
- package/datarailsshared-datarailsshared.d.ts +5 -0
- package/datarailsshared-datarailsshared.metadata.json +1 -0
- package/esm2015/datarailsshared-datarailsshared.js +6 -0
- package/esm2015/lib/DateTags/dateTag.component.js +70 -0
- package/esm2015/lib/DateTags/dateTag.module.js +50 -0
- package/esm2015/lib/DateTags/dayTag/dayTag.component.js +79 -0
- package/esm2015/lib/DateTags/forecastTag/forecastTag.component.js +143 -0
- package/esm2015/lib/DateTags/monthTag/monthTag.component.js +86 -0
- package/esm2015/lib/DateTags/quarterTag/quarterTag.component.js +101 -0
- package/esm2015/lib/DateTags/weekTag/weekTag.component.js +124 -0
- package/esm2015/lib/DateTags/yearTag/yearTag.component.js +92 -0
- package/esm2015/lib/DrTags/drTag.component.js +54 -0
- package/esm2015/lib/DrTags/drTag.module.js +22 -0
- package/esm2015/lib/ListTags/listTag.component.js +41 -0
- package/esm2015/lib/ListTags/listTag.module.js +29 -0
- package/esm2015/lib/models/serverTags.js +2 -0
- package/esm2015/public-api.js +16 -0
- package/fesm2015/datarailsshared-datarailsshared.js +849 -0
- package/fesm2015/datarailsshared-datarailsshared.js.map +1 -0
- package/{DateTags → lib/DateTags}/dateTag.component.d.ts +0 -0
- package/lib/DateTags/dateTag.module.d.ts +4 -0
- package/{DateTags → lib/DateTags}/dayTag/dayTag.component.d.ts +0 -0
- package/{DateTags → lib/DateTags}/forecastTag/forecastTag.component.d.ts +0 -0
- package/{DateTags → lib/DateTags}/monthTag/monthTag.component.d.ts +0 -0
- package/{DateTags → lib/DateTags}/quarterTag/quarterTag.component.d.ts +0 -0
- package/{DateTags → lib/DateTags}/weekTag/weekTag.component.d.ts +0 -0
- package/{DateTags → lib/DateTags}/yearTag/yearTag.component.d.ts +0 -0
- package/{DrTags → lib/DrTags}/drTag.component.d.ts +0 -0
- package/{DrTags → lib/DrTags}/drTag.module.d.ts +0 -0
- package/{ListTags → lib/ListTags}/listTag.component.d.ts +0 -0
- package/{ListTags → lib/ListTags}/listTag.module.d.ts +0 -0
- package/{models → lib/models}/serverTags.d.ts +0 -0
- package/package.json +11 -11
- package/public-api.d.ts +13 -0
- package/DateTags/dateTag.module.d.ts +0 -2
- package/bundles/ng-datarails.umd.js +0 -1206
- package/bundles/ng-datarails.umd.js.map +0 -1
- package/datarailsshared-datarailsshared-1.2.3.tgz +0 -0
- package/esm2015/DateTags/dateTag.component.js +0 -69
- package/esm2015/DateTags/dateTag.module.js +0 -54
- package/esm2015/DateTags/dayTag/dayTag.component.js +0 -79
- package/esm2015/DateTags/forecastTag/forecastTag.component.js +0 -143
- package/esm2015/DateTags/monthTag/monthTag.component.js +0 -86
- package/esm2015/DateTags/quarterTag/quarterTag.component.js +0 -101
- package/esm2015/DateTags/weekTag/weekTag.component.js +0 -124
- package/esm2015/DateTags/yearTag/yearTag.component.js +0 -92
- package/esm2015/DrTags/drTag.component.js +0 -54
- package/esm2015/DrTags/drTag.module.js +0 -26
- package/esm2015/ListTags/listTag.component.js +0 -41
- package/esm2015/ListTags/listTag.module.js +0 -33
- package/esm2015/index.js +0 -5
- package/esm2015/models/serverTags.js +0 -2
- package/esm2015/ng-datarails.js +0 -14
- package/fesm2015/ng-datarails.js +0 -854
- package/fesm2015/ng-datarails.js.map +0 -1
- package/index.d.ts +0 -4
- package/ng-datarails.d.ts +0 -13
- package/ng-datarails.metadata.json +0 -1
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Component, Input } from "@angular/core";
|
|
2
|
+
import { AnyTagComponent } from "../dateTag.component";
|
|
3
|
+
import { FormControl } from "@angular/forms";
|
|
4
|
+
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from "@angular/material/core";
|
|
5
|
+
import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from "@angular/material-moment-adapter";
|
|
6
|
+
// @ts-ignore
|
|
7
|
+
const moment = require("moment");
|
|
8
|
+
const MONTH_FORMATS = {
|
|
9
|
+
parse: {
|
|
10
|
+
dateInput: "DD-MM-YYYY",
|
|
11
|
+
},
|
|
12
|
+
display: {
|
|
13
|
+
dateInput: "MMMM YYYY",
|
|
14
|
+
monthYearLabel: "MMMM YYYY",
|
|
15
|
+
dateA11yLabel: "LL",
|
|
16
|
+
monthYearA11yLabel: "MMMM YYYY"
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
const ɵ0 = MONTH_FORMATS;
|
|
20
|
+
export class MonthTagComponent extends AnyTagComponent {
|
|
21
|
+
constructor() {
|
|
22
|
+
super();
|
|
23
|
+
this.lockedDate = [];
|
|
24
|
+
this.date = new FormControl(moment());
|
|
25
|
+
this.dateFilter = (date) => {
|
|
26
|
+
const calendarDate = moment(date);
|
|
27
|
+
let status = true;
|
|
28
|
+
this.lockedDate.forEach(timestamp => {
|
|
29
|
+
const lockDate = moment.unix(timestamp);
|
|
30
|
+
return status = !(lockDate.year() === calendarDate.year() && lockDate.month() === calendarDate.month());
|
|
31
|
+
});
|
|
32
|
+
return status;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
initDate() {
|
|
36
|
+
if (this.defaultValue) {
|
|
37
|
+
this.dateObj.date = moment(new Date(this.defaultValue * 1000)).utc().format("YYYY-MM");
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.dateObj.date = moment(new Date()).format("YYYY-MM");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
initName() {
|
|
44
|
+
if (!this.name) {
|
|
45
|
+
this.name = "Month and Year";
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
chosenTagHandler(value) {
|
|
49
|
+
const resultDate = moment.utc(value);
|
|
50
|
+
resultDate.hour(12);
|
|
51
|
+
const resultTag = {
|
|
52
|
+
name: this.name,
|
|
53
|
+
value: parseInt(resultDate.format("X"), 10),
|
|
54
|
+
label: resultDate.format("MMMM YYYY"),
|
|
55
|
+
locked: !this.dateFilter(value)
|
|
56
|
+
};
|
|
57
|
+
console.log(resultTag, value);
|
|
58
|
+
this.dateChange.emit(resultTag);
|
|
59
|
+
}
|
|
60
|
+
chosenMonthHandler(normalizedMonth, datepicker) {
|
|
61
|
+
this.date.setValue(normalizedMonth);
|
|
62
|
+
this.dateObj.date = this.date.value;
|
|
63
|
+
this.chosenTagHandler(this.date.value);
|
|
64
|
+
datepicker.close();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
MonthTagComponent.decorators = [
|
|
68
|
+
{ type: Component, args: [{
|
|
69
|
+
template: "<div>\n <mat-form-field class=\"date-select-box\">\n <input\n matInput\n placeholder=\"{{name}}\"\n name=\"Month\"\n [formControl]=\"date\"\n [matDatepickerFilter]=\"dateFilter\"\n [matDatepicker]=\"datepicker\">\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\n <mat-datepicker\n #datepicker\n startView=\"year\"\n (monthSelected)=\"chosenMonthHandler($event, datepicker)\"\n ></mat-datepicker>\n </mat-form-field>\n</div>\n",
|
|
70
|
+
selector: "month-tag",
|
|
71
|
+
providers: [
|
|
72
|
+
{
|
|
73
|
+
provide: DateAdapter,
|
|
74
|
+
useClass: MomentDateAdapter,
|
|
75
|
+
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
76
|
+
},
|
|
77
|
+
{ provide: MAT_DATE_FORMATS, useValue: ɵ0 },
|
|
78
|
+
]
|
|
79
|
+
},] }
|
|
80
|
+
];
|
|
81
|
+
MonthTagComponent.ctorParameters = () => [];
|
|
82
|
+
MonthTagComponent.propDecorators = {
|
|
83
|
+
lockedDate: [{ type: Input }]
|
|
84
|
+
};
|
|
85
|
+
export { ɵ0 };
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhUYWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvRGF0ZVRhZ3MvbW9udGhUYWcvbW9udGhUYWcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFnQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBR2hHLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RixPQUFPLEVBQUMsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRyxhQUFhO0FBQ2IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRWpDLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLEtBQUssRUFBRTtRQUNMLFNBQVMsRUFBRSxZQUFZO0tBQ3hCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsU0FBUyxFQUFFLFdBQVc7UUFDdEIsY0FBYyxFQUFFLFdBQVc7UUFDM0IsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsV0FBVztLQUNoQztDQUNGLENBQUM7V0FXMEMsYUFBYTtBQUl6RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQUtsRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBTEgsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQUVoQyxTQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQTBDakMsZUFBVSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztZQUVsQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDbEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFeEMsT0FBTyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFHLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFBO0lBakRELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3hGO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQUs7UUFDbEIsTUFBTSxVQUFVLEdBQVcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sU0FBUyxHQUFhO1lBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEtBQUssRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDM0MsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQ3JDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1NBQ2xDLENBQUM7UUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsZUFBdUIsRUFBRSxVQUFpQztRQUN6RSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUVwQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2QyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsQ0FBQzs7O1lBeERKLFNBQVMsU0FBQztnQkFDUCwybEJBQXNDO2dCQUN0QyxRQUFRLEVBQUUsV0FBVztnQkFDckIsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxXQUFXO3dCQUNwQixRQUFRLEVBQUUsaUJBQWlCO3dCQUMzQixJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsK0JBQStCLENBQUM7cUJBQ3pEO29CQUNELEVBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsSUFBZSxFQUFDO2lCQUNyRDthQUNKOzs7O3lCQUdJLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtNb21lbnR9IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7SURhdGVUYWd9IGZyb20gXCIuLi8uLi9tb2RlbHMvc2VydmVyVGFnc1wiO1xuaW1wb3J0IHtBbnlUYWdDb21wb25lbnR9IGZyb20gXCIuLi9kYXRlVGFnLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtNYXREYXRlcGlja2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlclwiO1xuaW1wb3J0IHtGb3JtQ29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge0RhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTLCBNQVRfREFURV9MT0NBTEV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XG5pbXBvcnQge01BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlMsIE1vbWVudERhdGVBZGFwdGVyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXJcIjtcbi8vIEB0cy1pZ25vcmVcbmNvbnN0IG1vbWVudCA9IHJlcXVpcmUoXCJtb21lbnRcIik7XG5cbmNvbnN0IE1PTlRIX0ZPUk1BVFMgPSB7XG4gIHBhcnNlOiB7XG4gICAgZGF0ZUlucHV0OiBcIkRELU1NLVlZWVlcIixcbiAgfSxcbiAgZGlzcGxheToge1xuICAgIGRhdGVJbnB1dDogXCJNTU1NIFlZWVlcIixcbiAgICBtb250aFllYXJMYWJlbDogXCJNTU1NIFlZWVlcIixcbiAgICBkYXRlQTExeUxhYmVsOiBcIkxMXCIsXG4gICAgbW9udGhZZWFyQTExeUxhYmVsOiBcIk1NTU0gWVlZWVwiXG4gIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogXCJtb250aFRhZy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHNlbGVjdG9yOiBcIm1vbnRoLXRhZ1wiLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAge1xuICAgICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcbiAgICAgICAgdXNlQ2xhc3M6IE1vbWVudERhdGVBZGFwdGVyLFxuICAgICAgICBkZXBzOiBbTUFUX0RBVEVfTE9DQUxFLCBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TXSxcbiAgICAgIH0sXG4gICAgICB7cHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IE1PTlRIX0ZPUk1BVFN9LFxuICAgIF0sXG59KVxuXG5leHBvcnQgY2xhc3MgTW9udGhUYWdDb21wb25lbnQgZXh0ZW5kcyBBbnlUYWdDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGxvY2tlZERhdGU6IGFueVtdID0gW107XG5cbiAgICBkYXRlID0gbmV3IEZvcm1Db250cm9sKG1vbWVudCgpKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGluaXREYXRlKCkge1xuICAgICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gbW9tZW50KG5ldyBEYXRlKHRoaXMuZGVmYXVsdFZhbHVlICogMTAwMCkpLnV0YygpLmZvcm1hdChcIllZWVktTU1cIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGVPYmouZGF0ZSA9IG1vbWVudChuZXcgRGF0ZSgpKS5mb3JtYXQoXCJZWVlZLU1NXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGluaXROYW1lKCkge1xuICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gXCJNb250aCBhbmQgWWVhclwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNob3NlblRhZ0hhbmRsZXIodmFsdWUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0RGF0ZTogTW9tZW50ID0gbW9tZW50LnV0Yyh2YWx1ZSk7XG4gICAgICAgIHJlc3VsdERhdGUuaG91cigxMik7XG4gICAgICAgIGNvbnN0IHJlc3VsdFRhZzogSURhdGVUYWcgPSB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQocmVzdWx0RGF0ZS5mb3JtYXQoXCJYXCIpLCAxMCksXG4gICAgICAgICAgICBsYWJlbDogcmVzdWx0RGF0ZS5mb3JtYXQoXCJNTU1NIFlZWVlcIiksXG4gICAgICAgICAgICBsb2NrZWQ6ICF0aGlzLmRhdGVGaWx0ZXIodmFsdWUpXG4gICAgICAgIH07XG4gICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdFRhZywgdmFsdWUpO1xuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChyZXN1bHRUYWcpO1xuICAgIH1cblxuICAgIGNob3Nlbk1vbnRoSGFuZGxlcihub3JtYWxpemVkTW9udGg6IE1vbWVudCwgZGF0ZXBpY2tlcjogTWF0RGF0ZXBpY2tlcjxNb21lbnQ+KSB7XG4gICAgICAgIHRoaXMuZGF0ZS5zZXRWYWx1ZShub3JtYWxpemVkTW9udGgpO1xuICAgICAgICB0aGlzLmRhdGVPYmouZGF0ZSA9IHRoaXMuZGF0ZS52YWx1ZTtcblxuICAgICAgICB0aGlzLmNob3NlblRhZ0hhbmRsZXIodGhpcy5kYXRlLnZhbHVlKTtcblxuICAgICAgICBkYXRlcGlja2VyLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgZGF0ZUZpbHRlciA9IChkYXRlKSA9PiB7XG4gICAgICBjb25zdCBjYWxlbmRhckRhdGUgPSBtb21lbnQoZGF0ZSk7XG4gICAgICBsZXQgc3RhdHVzID0gdHJ1ZTtcblxuICAgICAgdGhpcy5sb2NrZWREYXRlLmZvckVhY2godGltZXN0YW1wID0+IHtcbiAgICAgICAgY29uc3QgbG9ja0RhdGUgPSBtb21lbnQudW5peCh0aW1lc3RhbXApO1xuXG4gICAgICAgIHJldHVybiBzdGF0dXMgPSAhKGxvY2tEYXRlLnllYXIoKSA9PT0gY2FsZW5kYXJEYXRlLnllYXIoKSAmJiBsb2NrRGF0ZS5tb250aCgpID09PSBjYWxlbmRhckRhdGUubW9udGgoKSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Component, Input } from "@angular/core";
|
|
2
|
+
import { AnyTagComponent } from "../dateTag.component";
|
|
3
|
+
// @ts-ignore
|
|
4
|
+
const moment = require("moment");
|
|
5
|
+
export class QuarterTagComponent extends AnyTagComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.lockedDate = [];
|
|
9
|
+
this.selectedValue = 0;
|
|
10
|
+
this.quarters = [];
|
|
11
|
+
this.dateFilter = (date) => {
|
|
12
|
+
let status = true;
|
|
13
|
+
this.lockedDate.forEach(timestamp => {
|
|
14
|
+
const lockDate = moment.unix(timestamp);
|
|
15
|
+
const quarterDate = moment.unix(date.value);
|
|
16
|
+
if (lockDate.year() === quarterDate.year() && lockDate.month() === quarterDate.month()) {
|
|
17
|
+
date.disable = true;
|
|
18
|
+
status = false;
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
return status;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
this.initName();
|
|
26
|
+
this.quarters = this.getQuarterOptions();
|
|
27
|
+
for (const quarter of this.quarters) {
|
|
28
|
+
quarter.disable = false;
|
|
29
|
+
if (quarter.isSelected) {
|
|
30
|
+
this.selectedValue = quarter.value;
|
|
31
|
+
this.chosenTagHandler(quarter.value);
|
|
32
|
+
}
|
|
33
|
+
this.dateFilter(quarter);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
initName() {
|
|
37
|
+
if (!this.name) {
|
|
38
|
+
this.name = "Quarter";
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
changeSelectHandler(event) {
|
|
42
|
+
this.chosenTagHandler(event.value);
|
|
43
|
+
}
|
|
44
|
+
chosenTagHandler(value) {
|
|
45
|
+
const date = new Date(value * 1000);
|
|
46
|
+
const resultDate = moment.utc(date);
|
|
47
|
+
const resultTag = {
|
|
48
|
+
name: this.name,
|
|
49
|
+
value: parseInt(resultDate.format("X"), 10),
|
|
50
|
+
label: this.getQuarterLabel(resultDate.toString()),
|
|
51
|
+
locked: !this.dateFilter(value)
|
|
52
|
+
};
|
|
53
|
+
this.dateChange.emit(resultTag);
|
|
54
|
+
}
|
|
55
|
+
getQuarterOptions() {
|
|
56
|
+
const quartersBeforeToday = 8;
|
|
57
|
+
const quartersAfterToday = 8;
|
|
58
|
+
const dateNow = new Date();
|
|
59
|
+
const dateNowUnix = this.getUTCTimestamp(dateNow);
|
|
60
|
+
let defaultValue = dateNowUnix;
|
|
61
|
+
let tempDate = new Date();
|
|
62
|
+
if (this.defaultValue) {
|
|
63
|
+
defaultValue = this.defaultValue * 1000;
|
|
64
|
+
}
|
|
65
|
+
let afterDefault = Math.round(Math.abs(dateNowUnix - defaultValue) / 7776000000) + quartersAfterToday;
|
|
66
|
+
afterDefault = Math.min(afterDefault, 100);
|
|
67
|
+
let i, tempValue;
|
|
68
|
+
const to_return = [];
|
|
69
|
+
for (i = 0 - quartersBeforeToday; i <= afterDefault; i++) {
|
|
70
|
+
tempDate = new Date(defaultValue);
|
|
71
|
+
tempDate.setDate(15);
|
|
72
|
+
tempDate.setMonth(tempDate.getMonth() + 3 * i);
|
|
73
|
+
tempValue = this.getUTCTimestamp(tempDate);
|
|
74
|
+
to_return.push({
|
|
75
|
+
value: tempValue / 1000,
|
|
76
|
+
label: this.getQuarterLabel(tempValue),
|
|
77
|
+
isSelected: (i === 0),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return to_return;
|
|
81
|
+
}
|
|
82
|
+
getQuarterLabel(timeValue) {
|
|
83
|
+
const date = new Date(timeValue);
|
|
84
|
+
return "Q" + Math.floor((date.getMonth() / 3) + 1) + " " + date.getFullYear();
|
|
85
|
+
}
|
|
86
|
+
getUTCTimestamp(date) {
|
|
87
|
+
const month = Math.floor(date.getMonth() / 3) * 3;
|
|
88
|
+
return Date.UTC(date.getFullYear(), month, 1, 12, 0, 0, 0);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
QuarterTagComponent.decorators = [
|
|
92
|
+
{ type: Component, args: [{
|
|
93
|
+
template: "<div>\n <mat-form-field>\n <mat-select placeholder=\"{{name}}\" (selectionChange)=\"changeSelectHandler($event)\" [(value)]=\"selectedValue\">\n <mat-option *ngFor=\"let quarter of quarters\" [value]=\"quarter.value\" [disabled]=\"quarter.disable\">{{quarter.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n",
|
|
94
|
+
selector: "quarter-tag"
|
|
95
|
+
},] }
|
|
96
|
+
];
|
|
97
|
+
QuarterTagComponent.ctorParameters = () => [];
|
|
98
|
+
QuarterTagComponent.propDecorators = {
|
|
99
|
+
lockedDate: [{ type: Input }]
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhcnRlclRhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9EYXRlVGFncy9xdWFydGVyVGFnL3F1YXJ0ZXJUYWcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBR3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxhQUFhO0FBQ2IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBTWpDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxlQUFlO0lBS3BEO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFMSCxlQUFVLEdBQVUsRUFBRSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLGFBQVEsR0FBVSxFQUFFLENBQUM7UUFtRnZCLGVBQVUsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztZQUVsQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDbEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRTVDLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUN0RixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDcEIsTUFBTSxHQUFHLEtBQUssQ0FBQztp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dXQsIE9uSW5pdH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7SURhdGVUYWd9IGZyb20gXCIuLi8uLi9tb2RlbHMvc2VydmVyVGFnc1wiO1xuaW1wb3J0IHtNb21lbnR9IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7QW55VGFnQ29tcG9uZW50fSBmcm9tIFwiLi4vZGF0ZVRhZy5jb21wb25lbnRcIjtcbmltcG9ydCB7TWF0U2VsZWN0Q2hhbmdlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XG4vLyBAdHMtaWdub3JlXG5jb25zdCBtb21lbnQgPSByZXF1aXJlKFwibW9tZW50XCIpO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogXCJxdWFydGVyVGFnLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc2VsZWN0b3I6IFwicXVhcnRlci10YWdcIixcbn0pXG5leHBvcnQgY2xhc3MgUXVhcnRlclRhZ0NvbXBvbmVudCBleHRlbmRzIEFueVRhZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgbG9ja2VkRGF0ZTogYW55W10gPSBbXTtcbiAgICBzZWxlY3RlZFZhbHVlID0gMDtcbiAgICBxdWFydGVyczogYW55W10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgdGhpcy5pbml0TmFtZSgpO1xuICAgICAgdGhpcy5xdWFydGVycyA9IHRoaXMuZ2V0UXVhcnRlck9wdGlvbnMoKTtcblxuICAgICAgZm9yIChjb25zdCBxdWFydGVyIG9mIHRoaXMucXVhcnRlcnMpIHtcbiAgICAgICAgICBxdWFydGVyLmRpc2FibGUgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChxdWFydGVyLmlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gcXVhcnRlci52YWx1ZTtcbiAgICAgICAgICAgICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKHF1YXJ0ZXIudmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZGF0ZUZpbHRlcihxdWFydGVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0TmFtZSgpIHtcbiAgICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiUXVhcnRlclwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZVNlbGVjdEhhbmRsZXIoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSkge1xuICAgICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKGV2ZW50LnZhbHVlKTtcbiAgICB9XG5cbiAgICBjaG9zZW5UYWdIYW5kbGVyKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSAqIDEwMDApO1xuICAgICAgICBjb25zdCByZXN1bHREYXRlOiBNb21lbnQgPSBtb21lbnQudXRjKGRhdGUpO1xuICAgICAgICBjb25zdCByZXN1bHRUYWc6IElEYXRlVGFnID0ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgdmFsdWU6IHBhcnNlSW50KHJlc3VsdERhdGUuZm9ybWF0KFwiWFwiKSwgMTApLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0UXVhcnRlckxhYmVsKHJlc3VsdERhdGUudG9TdHJpbmcoKSksXG4gICAgICAgICAgICBsb2NrZWQ6ICF0aGlzLmRhdGVGaWx0ZXIodmFsdWUpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHJlc3VsdFRhZyk7XG4gICAgfVxuXG4gICAgZ2V0UXVhcnRlck9wdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHF1YXJ0ZXJzQmVmb3JlVG9kYXkgPSA4O1xuICAgICAgICBjb25zdCBxdWFydGVyc0FmdGVyVG9kYXkgPSA4O1xuICAgICAgICBjb25zdCBkYXRlTm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgZGF0ZU5vd1VuaXggPSB0aGlzLmdldFVUQ1RpbWVzdGFtcChkYXRlTm93KTtcbiAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IGRhdGVOb3dVbml4O1xuICAgICAgICBsZXQgdGVtcERhdGUgPSAgbmV3IERhdGUoKTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5kZWZhdWx0VmFsdWUgKiAxMDAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGFmdGVyRGVmYXVsdCA9IE1hdGgucm91bmQoTWF0aC5hYnMoZGF0ZU5vd1VuaXggLSBkZWZhdWx0VmFsdWUpIC8gNzc3NjAwMDAwMCkgKyBxdWFydGVyc0FmdGVyVG9kYXk7XG4gICAgICAgIGFmdGVyRGVmYXVsdCA9IE1hdGgubWluKGFmdGVyRGVmYXVsdCwgMTAwKTtcbiAgICAgICAgbGV0IGksIHRlbXBWYWx1ZTtcbiAgICAgICAgY29uc3QgdG9fcmV0dXJuOiBhbnlbXSA9IFtdO1xuICAgICAgICBmb3IgKGkgPSAwIC0gcXVhcnRlcnNCZWZvcmVUb2RheTsgaSA8PSBhZnRlckRlZmF1bHQ7IGkrKykge1xuICAgICAgICAgICAgdGVtcERhdGUgPSBuZXcgRGF0ZShkZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgdGVtcERhdGUuc2V0RGF0ZSgxNSk7XG4gICAgICAgICAgICB0ZW1wRGF0ZS5zZXRNb250aCh0ZW1wRGF0ZS5nZXRNb250aCgpICsgMyAqIGkpO1xuICAgICAgICAgICAgdGVtcFZhbHVlID0gdGhpcy5nZXRVVENUaW1lc3RhbXAodGVtcERhdGUpO1xuICAgICAgICAgICAgdG9fcmV0dXJuLnB1c2goe1xuICAgICAgICAgICAgICAgIHZhbHVlOiB0ZW1wVmFsdWUgLyAxMDAwLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldFF1YXJ0ZXJMYWJlbCh0ZW1wVmFsdWUpLFxuICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ6IChpID09PSAwKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b19yZXR1cm47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRRdWFydGVyTGFiZWwodGltZVZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lVmFsdWUpO1xuICAgICAgICByZXR1cm4gXCJRXCIgKyBNYXRoLmZsb29yKChkYXRlLmdldE1vbnRoKCkgLyAzKSArIDEpICsgXCIgXCIgKyBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVVENUaW1lc3RhbXAoZGF0ZSkge1xuICAgICAgICBjb25zdCBtb250aCA9IE1hdGguZmxvb3IoZGF0ZS5nZXRNb250aCgpIC8gMykgKiAzO1xuICAgICAgICByZXR1cm4gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aCwgMSwgMTIsIDAsIDAsIDApO1xuICAgIH1cblxuICBkYXRlRmlsdGVyID0gKGRhdGUpID0+IHtcbiAgICBsZXQgc3RhdHVzID0gdHJ1ZTtcblxuICAgIHRoaXMubG9ja2VkRGF0ZS5mb3JFYWNoKHRpbWVzdGFtcCA9PiB7XG4gICAgICBjb25zdCBsb2NrRGF0ZSA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG4gICAgICBjb25zdCBxdWFydGVyRGF0ZSA9IG1vbWVudC51bml4KGRhdGUudmFsdWUpO1xuXG4gICAgICBpZiAobG9ja0RhdGUueWVhcigpID09PSBxdWFydGVyRGF0ZS55ZWFyKCkgJiYgbG9ja0RhdGUubW9udGgoKSA9PT0gcXVhcnRlckRhdGUubW9udGgoKSkge1xuICAgICAgICBkYXRlLmRpc2FibGUgPSB0cnVlO1xuICAgICAgICBzdGF0dXMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzdGF0dXM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { Component, Input } from "@angular/core";
|
|
2
|
+
import { AnyTagComponent } from "../dateTag.component";
|
|
3
|
+
import { FormControl } from "@angular/forms";
|
|
4
|
+
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from "@angular/material/core";
|
|
5
|
+
import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from "@angular/material-moment-adapter";
|
|
6
|
+
// @ts-ignore
|
|
7
|
+
const moment = require("moment");
|
|
8
|
+
const WEEK_FORMATS = {
|
|
9
|
+
parse: {
|
|
10
|
+
dateInput: "WW-YYYY",
|
|
11
|
+
},
|
|
12
|
+
display: {
|
|
13
|
+
dateInput: "[Week] WW, YYYY",
|
|
14
|
+
monthYearLabel: "MMMM YYYY",
|
|
15
|
+
dateA11yLabel: "LL",
|
|
16
|
+
monthYearA11yLabel: "MMMM YYYY"
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
const ɵ0 = WEEK_FORMATS;
|
|
20
|
+
export class WeekTagComponent extends AnyTagComponent {
|
|
21
|
+
constructor() {
|
|
22
|
+
super();
|
|
23
|
+
this.lockedDate = [];
|
|
24
|
+
this.date = new FormControl(moment());
|
|
25
|
+
this.selectedValue = "";
|
|
26
|
+
this.dateFilter = (date) => {
|
|
27
|
+
const calendarDate = moment(date);
|
|
28
|
+
let status = true;
|
|
29
|
+
this.lockedDate.forEach(timestamp => {
|
|
30
|
+
const lockDate = moment.unix(timestamp);
|
|
31
|
+
return status = !(lockDate.week() === calendarDate.week() && lockDate.year() === calendarDate.year());
|
|
32
|
+
});
|
|
33
|
+
return status;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
this.initName();
|
|
38
|
+
const now = new Date();
|
|
39
|
+
now.setHours(0, 0, 0, 0);
|
|
40
|
+
const dateUnix = this.getUTCTimestamp(this.getMonday(now));
|
|
41
|
+
let default_value_time = dateUnix;
|
|
42
|
+
const one_day_in_seconds = 86400;
|
|
43
|
+
if (this.defaultValue) {
|
|
44
|
+
default_value_time = (this.defaultValue + one_day_in_seconds) * 1000;
|
|
45
|
+
}
|
|
46
|
+
const default_date = new Date(default_value_time);
|
|
47
|
+
const weekNumber = this.getWeekNumberByDate(default_date);
|
|
48
|
+
const yearNumber = default_date.getFullYear();
|
|
49
|
+
const dateStr = `${yearNumber}-W${weekNumber}`;
|
|
50
|
+
this.dateObj.date = dateStr;
|
|
51
|
+
this.selectedValue = dateStr;
|
|
52
|
+
this.chosenTagHandler(default_date);
|
|
53
|
+
}
|
|
54
|
+
initName() {
|
|
55
|
+
if (!this.name) {
|
|
56
|
+
this.name = "Week";
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
chosenDateHandler(normalizedDay) {
|
|
60
|
+
const date = moment(normalizedDay).unix();
|
|
61
|
+
this.chosenTagHandler(date);
|
|
62
|
+
}
|
|
63
|
+
chosenTagHandler(value) {
|
|
64
|
+
let date;
|
|
65
|
+
console.log("chosenTag", value);
|
|
66
|
+
if (value > 1000000000000) {
|
|
67
|
+
date = new Date(value);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
date = new Date(value * 1000);
|
|
71
|
+
}
|
|
72
|
+
const resultDate = moment(date);
|
|
73
|
+
const resultTag = {
|
|
74
|
+
name: this.name,
|
|
75
|
+
value: parseInt(resultDate.format("X"), 10),
|
|
76
|
+
label: this.getWeekLabel(date),
|
|
77
|
+
locked: !this.dateFilter(value)
|
|
78
|
+
};
|
|
79
|
+
console.log("resultTag", resultTag);
|
|
80
|
+
this.dateChange.emit(resultTag);
|
|
81
|
+
}
|
|
82
|
+
getWeekLabel(date) {
|
|
83
|
+
return "W" + this.pad(moment(date).isoWeek(), 2) +
|
|
84
|
+
" " + moment(date).year();
|
|
85
|
+
}
|
|
86
|
+
getUTCTimestamp(date) {
|
|
87
|
+
return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), 12, 0, 0, 0);
|
|
88
|
+
}
|
|
89
|
+
getMonday(date) {
|
|
90
|
+
const day = date.getDay() || 7;
|
|
91
|
+
if (day !== 1) {
|
|
92
|
+
date.setHours(-24 * (day - 1));
|
|
93
|
+
}
|
|
94
|
+
return date;
|
|
95
|
+
}
|
|
96
|
+
getWeekNumberByDate(date) {
|
|
97
|
+
return this.pad(moment(date).isoWeek(), 2);
|
|
98
|
+
}
|
|
99
|
+
pad(n, width, z = "0") {
|
|
100
|
+
z = z || "0";
|
|
101
|
+
n = n + "";
|
|
102
|
+
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
WeekTagComponent.decorators = [
|
|
106
|
+
{ type: Component, args: [{
|
|
107
|
+
template: "<div>\n <mat-form-field class=\"date-select-box\">\n <input\n matInput\n placeholder=\"{{name}}\"\n name=\"week\"\n [formControl]=\"date\"\n [matDatepicker]=\"datepicker\"\n [matDatepickerFilter]=\"dateFilter\"\n (ngModelChange)=\"chosenDateHandler($event)\">\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\n <mat-datepicker\n #datepicker\n startView=\"month\"\n ></mat-datepicker>\n </mat-form-field>\n</div>\n",
|
|
108
|
+
selector: "week-tag",
|
|
109
|
+
providers: [
|
|
110
|
+
{
|
|
111
|
+
provide: DateAdapter,
|
|
112
|
+
useClass: MomentDateAdapter,
|
|
113
|
+
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
114
|
+
},
|
|
115
|
+
{ provide: MAT_DATE_FORMATS, useValue: ɵ0 },
|
|
116
|
+
]
|
|
117
|
+
},] }
|
|
118
|
+
];
|
|
119
|
+
WeekTagComponent.ctorParameters = () => [];
|
|
120
|
+
WeekTagComponent.propDecorators = {
|
|
121
|
+
lockedDate: [{ type: Input }]
|
|
122
|
+
};
|
|
123
|
+
export { ɵ0 };
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vla1RhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9EYXRlVGFncy93ZWVrVGFnL3dlZWtUYWcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBR3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RixPQUFPLEVBQUMsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRyxhQUFhO0FBQ2IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRWpDLE1BQU0sWUFBWSxHQUFHO0lBQ25CLEtBQUssRUFBRTtRQUNMLFNBQVMsRUFBRSxTQUFTO0tBQ3JCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsU0FBUyxFQUFFLGlCQUFpQjtRQUM1QixjQUFjLEVBQUUsV0FBVztRQUMzQixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxXQUFXO0tBQ2hDO0NBQ0YsQ0FBQztXQVcwQyxZQUFZO0FBR3hELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxlQUFlO0lBTWpEO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFOSCxlQUFVLEdBQVUsRUFBRSxDQUFDO1FBRWhDLFNBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBdUNuQixlQUFVLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNwQixNQUFN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QUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEdBQUc7UUFDM0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDYixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNYLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3RSxDQUFDOzs7WUFqSEosU0FBUyxTQUFDO2dCQUNQLDhrQkFBcUM7Z0JBQ3JDLFFBQVEsRUFBRSxVQUFVO2dCQUNwQixTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLFdBQVc7d0JBQ3BCLFFBQVEsRUFBRSxpQkFBaUI7d0JBQzNCLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSwrQkFBK0IsQ0FBQztxQkFDekQ7b0JBQ0QsRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxJQUFjLEVBQUM7aUJBQ3BEO2FBQ0o7Ozs7eUJBRUksS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtJRGF0ZVRhZ30gZnJvbSBcIi4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzXCI7XG5pbXBvcnQge01vbWVudH0gZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHtBbnlUYWdDb21wb25lbnR9IGZyb20gXCIuLi9kYXRlVGFnLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtGb3JtQ29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge0RhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTLCBNQVRfREFURV9MT0NBTEV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XG5pbXBvcnQge01BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlMsIE1vbWVudERhdGVBZGFwdGVyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXJcIjtcbi8vIEB0cy1pZ25vcmVcbmNvbnN0IG1vbWVudCA9IHJlcXVpcmUoXCJtb21lbnRcIik7XG5cbmNvbnN0IFdFRUtfRk9STUFUUyA9IHtcbiAgcGFyc2U6IHtcbiAgICBkYXRlSW5wdXQ6IFwiV1ctWVlZWVwiLFxuICB9LFxuICBkaXNwbGF5OiB7XG4gICAgZGF0ZUlucHV0OiBcIltXZWVrXSBXVywgWVlZWVwiLFxuICAgIG1vbnRoWWVhckxhYmVsOiBcIk1NTU0gWVlZWVwiLFxuICAgIGRhdGVBMTF5TGFiZWw6IFwiTExcIixcbiAgICBtb250aFllYXJBMTF5TGFiZWw6IFwiTU1NTSBZWVlZXCJcbiAgfSxcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiBcIndlZWtUYWcuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzZWxlY3RvcjogXCJ3ZWVrLXRhZ1wiLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAge1xuICAgICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcbiAgICAgICAgdXNlQ2xhc3M6IE1vbWVudERhdGVBZGFwdGVyLFxuICAgICAgICBkZXBzOiBbTUFUX0RBVEVfTE9DQUxFLCBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TXSxcbiAgICAgIH0sXG4gICAgICB7cHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IFdFRUtfRk9STUFUU30sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV2Vla1RhZ0NvbXBvbmVudCBleHRlbmRzIEFueVRhZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgbG9ja2VkRGF0ZTogYW55W10gPSBbXTtcblxuICAgIGRhdGUgPSBuZXcgRm9ybUNvbnRyb2wobW9tZW50KCkpO1xuICAgIHNlbGVjdGVkVmFsdWUgPSBcIlwiO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICB0aGlzLmluaXROYW1lKCk7XG5cbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICBub3cuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cbiAgICAgIGNvbnN0IGRhdGVVbml4ID0gdGhpcy5nZXRVVENUaW1lc3RhbXAodGhpcy5nZXRNb25kYXkobm93KSk7XG4gICAgICBsZXQgZGVmYXVsdF92YWx1ZV90aW1lID0gZGF0ZVVuaXg7XG4gICAgICBjb25zdCBvbmVfZGF5X2luX3NlY29uZHMgPSA4NjQwMDtcbiAgICAgIGlmICh0aGlzLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgICBkZWZhdWx0X3ZhbHVlX3RpbWUgPSAodGhpcy5kZWZhdWx0VmFsdWUgKyBvbmVfZGF5X2luX3NlY29uZHMpICogMTAwMDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVmYXVsdF9kYXRlID0gbmV3IERhdGUoZGVmYXVsdF92YWx1ZV90aW1lKTtcbiAgICAgIGNvbnN0IHdlZWtOdW1iZXIgPSB0aGlzLmdldFdlZWtOdW1iZXJCeURhdGUoZGVmYXVsdF9kYXRlKTtcbiAgICAgIGNvbnN0IHllYXJOdW1iZXIgPSBkZWZhdWx0X2RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSBgJHt5ZWFyTnVtYmVyfS1XJHt3ZWVrTnVtYmVyfWA7XG4gICAgICB0aGlzLmRhdGVPYmouZGF0ZSA9IGRhdGVTdHI7XG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBkYXRlU3RyO1xuICAgICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKGRlZmF1bHRfZGF0ZSk7XG4gICAgfVxuXG4gICAgaW5pdE5hbWUoKSB7XG4gICAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgICB0aGlzLm5hbWUgPSBcIldlZWtcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjaG9zZW5EYXRlSGFuZGxlcihub3JtYWxpemVkRGF5KSB7XG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KG5vcm1hbGl6ZWREYXkpLnVuaXgoKTtcbiAgICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcihkYXRlKTtcbiAgICB9XG5cbiAgICBkYXRlRmlsdGVyID0gKGRhdGUpID0+IHtcbiAgICAgIGNvbnN0IGNhbGVuZGFyRGF0ZSA9IG1vbWVudChkYXRlKTtcbiAgICAgIGxldCBzdGF0dXMgPSB0cnVlO1xuXG4gICAgICB0aGlzLmxvY2tlZERhdGUuZm9yRWFjaCh0aW1lc3RhbXAgPT4ge1xuICAgICAgICBjb25zdCBsb2NrRGF0ZSA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG5cbiAgICAgICAgcmV0dXJuIHN0YXR1cyA9ICEobG9ja0RhdGUud2VlaygpID09PSBjYWxlbmRhckRhdGUud2VlaygpICYmIGxvY2tEYXRlLnllYXIoKSA9PT0gY2FsZW5kYXJEYXRlLnllYXIoKSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBjaG9zZW5UYWdIYW5kbGVyKHZhbHVlKSB7XG4gICAgICAgIGxldCBkYXRlO1xuICAgICAgICBjb25zb2xlLmxvZyhcImNob3NlblRhZ1wiLCB2YWx1ZSk7XG4gICAgICAgIGlmICh2YWx1ZSA+IDEwMDAwMDAwMDAwMDApIHtcbiAgICAgICAgICBkYXRlID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSAqIDEwMDApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0RGF0ZTogTW9tZW50ID0gbW9tZW50KGRhdGUpO1xuICAgICAgICBjb25zdCByZXN1bHRUYWc6IElEYXRlVGFnID0ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgdmFsdWU6IHBhcnNlSW50KHJlc3VsdERhdGUuZm9ybWF0KFwiWFwiKSwgMTApLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0V2Vla0xhYmVsKGRhdGUpLFxuICAgICAgICAgICAgbG9ja2VkOiAhdGhpcy5kYXRlRmlsdGVyKHZhbHVlKVxuICAgICAgICB9O1xuICAgICAgICBjb25zb2xlLmxvZyhcInJlc3VsdFRhZ1wiLCByZXN1bHRUYWcpO1xuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChyZXN1bHRUYWcpO1xuICAgICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRXZWVrTGFiZWwoZGF0ZSkge1xuICAgICAgcmV0dXJuIFwiV1wiICsgdGhpcy5wYWQoIG1vbWVudChkYXRlKS5pc29XZWVrKCksIDIpICtcbiAgICAgICAgXCIgXCIgKyBtb21lbnQoZGF0ZSkueWVhcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VVRDVGltZXN0YW1wKGRhdGUpIHtcbiAgICAgICAgcmV0dXJuIERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSwgMTIsIDAsIDAsIDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TW9uZGF5KGRhdGUpIHtcbiAgICAgICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXkoKSB8fCA3O1xuICAgICAgICBpZiAoZGF5ICE9PSAxKSB7XG4gICAgICAgICAgICBkYXRlLnNldEhvdXJzKC0yNCAqIChkYXkgLSAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRXZWVrTnVtYmVyQnlEYXRlKGRhdGU6IERhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhZChtb21lbnQoZGF0ZSkuaXNvV2VlaygpLCAyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhZChuLCB3aWR0aCwgeiA9IFwiMFwiKSB7XG4gICAgICB6ID0geiB8fCBcIjBcIjtcbiAgICAgIG4gPSBuICsgXCJcIjtcbiAgICAgIHJldHVybiBuLmxlbmd0aCA+PSB3aWR0aCA/IG4gOiBuZXcgQXJyYXkod2lkdGggLSBuLmxlbmd0aCArIDEpLmpvaW4oeikgKyBuO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Component, Input } from "@angular/core";
|
|
2
|
+
import { FormControl } from "@angular/forms";
|
|
3
|
+
import { AnyTagComponent } from "../dateTag.component";
|
|
4
|
+
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from "@angular/material/core";
|
|
5
|
+
import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from "@angular/material-moment-adapter";
|
|
6
|
+
// @ts-ignore
|
|
7
|
+
const moment = require("moment");
|
|
8
|
+
const YEAR_FORMATS = {
|
|
9
|
+
parse: {
|
|
10
|
+
dateInput: "YYYY",
|
|
11
|
+
},
|
|
12
|
+
display: {
|
|
13
|
+
dateInput: "YYYY",
|
|
14
|
+
monthYearLabel: "MMMM YYYY",
|
|
15
|
+
dateA11yLabel: "LL",
|
|
16
|
+
monthYearA11yLabel: "MMMM YYYY"
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
const ɵ0 = YEAR_FORMATS;
|
|
20
|
+
export class YearTagComponent extends AnyTagComponent {
|
|
21
|
+
constructor() {
|
|
22
|
+
super();
|
|
23
|
+
this.lockedDate = [];
|
|
24
|
+
this.date = new FormControl(moment());
|
|
25
|
+
this.dateFilter = (date) => {
|
|
26
|
+
const calendarDateYear = moment(date).year();
|
|
27
|
+
let status = true;
|
|
28
|
+
this.lockedDate.forEach(timestamp => {
|
|
29
|
+
const lockDate = moment.unix(timestamp);
|
|
30
|
+
return status = !(lockDate.year() === calendarDateYear);
|
|
31
|
+
});
|
|
32
|
+
return status;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
initDate() {
|
|
36
|
+
if (this.defaultValue) {
|
|
37
|
+
this.dateObj.date = moment(new Date(this.defaultValue * 1000)).utc().format("YYYY");
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.dateObj.date = moment(new Date()).format("YYYY");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
initName() {
|
|
44
|
+
if (!this.name) {
|
|
45
|
+
this.name = "Year";
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
chosenTagHandler(value) {
|
|
49
|
+
const date = new Date();
|
|
50
|
+
const year = moment(value).year();
|
|
51
|
+
date.setTime(0);
|
|
52
|
+
date.setFullYear(year, 0, 1);
|
|
53
|
+
const resultDate = moment.utc(date);
|
|
54
|
+
resultDate.hour(12);
|
|
55
|
+
const resultTag = {
|
|
56
|
+
name: this.name,
|
|
57
|
+
value: parseInt(resultDate.format("X"), 10),
|
|
58
|
+
label: resultDate.format("YYYY"),
|
|
59
|
+
locked: !this.dateFilter(value)
|
|
60
|
+
};
|
|
61
|
+
console.log("resultTag", resultTag);
|
|
62
|
+
this.dateChange.emit(resultTag);
|
|
63
|
+
}
|
|
64
|
+
chosenYearHandler(normalizedYear, datepicker) {
|
|
65
|
+
const ctrlValue = this.date.value;
|
|
66
|
+
ctrlValue.year(normalizedYear.year());
|
|
67
|
+
this.date.setValue(ctrlValue);
|
|
68
|
+
this.dateObj.date = this.date.value;
|
|
69
|
+
this.chosenTagHandler(this.date.value);
|
|
70
|
+
datepicker.close();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
YearTagComponent.decorators = [
|
|
74
|
+
{ type: Component, args: [{
|
|
75
|
+
template: "<div>\n <mat-form-field class=\"date-select-box\">\n <input\n matInput\n placeholder=\"{{name}}\"\n name=\"Year\"\n [formControl]=\"date\"\n [matDatepicker]=\"datepicker\"\n [matDatepickerFilter]=\"dateFilter\">\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\n <mat-datepicker\n #datepicker\n startView=\"multi-year\"\n (yearSelected)=\"chosenYearHandler($event, datepicker)\"\n panelClass=\"date-month-picker\"\n ></mat-datepicker>\n </mat-form-field>\n</div>\n",
|
|
76
|
+
selector: "year-tag",
|
|
77
|
+
providers: [
|
|
78
|
+
{
|
|
79
|
+
provide: DateAdapter,
|
|
80
|
+
useClass: MomentDateAdapter,
|
|
81
|
+
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
82
|
+
},
|
|
83
|
+
{ provide: MAT_DATE_FORMATS, useValue: ɵ0 },
|
|
84
|
+
]
|
|
85
|
+
},] }
|
|
86
|
+
];
|
|
87
|
+
YearTagComponent.ctorParameters = () => [];
|
|
88
|
+
YearTagComponent.propDecorators = {
|
|
89
|
+
lockedDate: [{ type: Input }]
|
|
90
|
+
};
|
|
91
|
+
export { ɵ0 };
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhclRhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9EYXRlVGFncy95ZWFyVGFnL3llYXJUYWcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUkzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RixPQUFPLEVBQUMsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRyxhQUFhO0FBQ2IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRWpDLE1BQU0sWUFBWSxHQUFHO0lBQ25CLEtBQUssRUFBRTtRQUNMLFNBQVMsRUFBRSxNQUFNO0tBQ2xCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsU0FBUyxFQUFFLE1BQU07UUFDakIsY0FBYyxFQUFFLFdBQVc7UUFDM0IsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsV0FBVztLQUNoQztDQUNGLENBQUM7V0FXMEMsWUFBWTtBQUl4RCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZUFBZTtJQUtuRDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBTEQsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQUVoQyxTQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQWdEakMsZUFBVSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxD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QUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLFdBQVc7d0JBQ3BCLFFBQVEsRUFBRSxpQkFBaUI7d0JBQzNCLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSwrQkFBK0IsQ0FBQztxQkFDekQ7b0JBQ0QsRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxJQUFjLEVBQUM7aUJBQ3BEO2FBQ0o7Ozs7eUJBR0UsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtGb3JtQ29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge01hdERhdGVwaWNrZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyXCI7XG5pbXBvcnQge01vbWVudH0gZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHtJRGF0ZVRhZ30gZnJvbSBcIi4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzXCI7XG5pbXBvcnQge0FueVRhZ0NvbXBvbmVudH0gZnJvbSBcIi4uL2RhdGVUYWcuY29tcG9uZW50XCI7XG5pbXBvcnQge0RhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTLCBNQVRfREFURV9MT0NBTEV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XG5pbXBvcnQge01BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlMsIE1vbWVudERhdGVBZGFwdGVyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXJcIjtcbi8vIEB0cy1pZ25vcmVcbmNvbnN0IG1vbWVudCA9IHJlcXVpcmUoXCJtb21lbnRcIik7XG5cbmNvbnN0IFlFQVJfRk9STUFUUyA9IHtcbiAgcGFyc2U6IHtcbiAgICBkYXRlSW5wdXQ6IFwiWVlZWVwiLFxuICB9LFxuICBkaXNwbGF5OiB7XG4gICAgZGF0ZUlucHV0OiBcIllZWVlcIixcbiAgICBtb250aFllYXJMYWJlbDogXCJNTU1NIFlZWVlcIixcbiAgICBkYXRlQTExeUxhYmVsOiBcIkxMXCIsXG4gICAgbW9udGhZZWFyQTExeUxhYmVsOiBcIk1NTU0gWVlZWVwiXG4gIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogXCJ5ZWFyVGFnLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc2VsZWN0b3I6IFwieWVhci10YWdcIixcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXG4gICAgICAgIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlcixcbiAgICAgICAgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU10sXG4gICAgICB9LFxuICAgICAge3Byb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBZRUFSX0ZPUk1BVFN9LFxuICAgIF0sXG59KVxuXG5leHBvcnQgY2xhc3MgWWVhclRhZ0NvbXBvbmVudCBleHRlbmRzIEFueVRhZ0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGxvY2tlZERhdGU6IGFueVtdID0gW107XG5cbiAgZGF0ZSA9IG5ldyBGb3JtQ29udHJvbChtb21lbnQoKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGluaXREYXRlKCkge1xuICAgIGlmICh0aGlzLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgdGhpcy5kYXRlT2JqLmRhdGUgPSBtb21lbnQobmV3IERhdGUodGhpcy5kZWZhdWx0VmFsdWUgKiAxMDAwKSkudXRjKCkuZm9ybWF0KFwiWVlZWVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRlT2JqLmRhdGUgPSBtb21lbnQobmV3IERhdGUoKSkuZm9ybWF0KFwiWVlZWVwiKTtcbiAgICB9XG4gIH1cblxuICBpbml0TmFtZSgpIHtcbiAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgdGhpcy5uYW1lID0gXCJZZWFyXCI7XG4gICAgfVxuICB9XG5cbiAgY2hvc2VuVGFnSGFuZGxlcih2YWx1ZSkge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICBjb25zdCB5ZWFyID0gbW9tZW50KHZhbHVlKS55ZWFyKCk7XG4gICAgICBkYXRlLnNldFRpbWUoMCk7XG4gICAgICBkYXRlLnNldEZ1bGxZZWFyKHllYXIsIDAsIDEpO1xuICAgICAgY29uc3QgcmVzdWx0RGF0ZTogTW9tZW50ID0gbW9tZW50LnV0YyhkYXRlKTtcbiAgICAgIHJlc3VsdERhdGUuaG91cigxMik7XG4gICAgICBjb25zdCByZXN1bHRUYWc6IElEYXRlVGFnID0ge1xuICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQocmVzdWx0RGF0ZS5mb3JtYXQoXCJYXCIpLCAxMCksXG4gICAgICAgICAgbGFiZWw6IHJlc3VsdERhdGUuZm9ybWF0KFwiWVlZWVwiKSxcbiAgICAgICAgICBsb2NrZWQ6ICF0aGlzLmRhdGVGaWx0ZXIodmFsdWUpXG4gICAgICB9O1xuICAgICAgY29uc29sZS5sb2coXCJyZXN1bHRUYWdcIiwgcmVzdWx0VGFnKTtcbiAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHJlc3VsdFRhZyk7XG4gIH1cblxuICBjaG9zZW5ZZWFySGFuZGxlcihub3JtYWxpemVkWWVhcjogTW9tZW50LCBkYXRlcGlja2VyOiBNYXREYXRlcGlja2VyPE1vbWVudD4pIHtcbiAgICBjb25zdCBjdHJsVmFsdWUgPSB0aGlzLmRhdGUudmFsdWU7XG4gICAgY3RybFZhbHVlLnllYXIobm9ybWFsaXplZFllYXIueWVhcigpKTtcblxuICAgIHRoaXMuZGF0ZS5zZXRWYWx1ZShjdHJsVmFsdWUpO1xuICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gdGhpcy5kYXRlLnZhbHVlO1xuICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcih0aGlzLmRhdGUudmFsdWUpO1xuXG4gICAgZGF0ZXBpY2tlci5jbG9zZSgpO1xuICB9XG5cbiAgZGF0ZUZpbHRlciA9IChkYXRlKSA9PiB7XG4gICAgY29uc3QgY2FsZW5kYXJEYXRlWWVhciA9IG1vbWVudChkYXRlKS55ZWFyKCk7XG4gICAgbGV0IHN0YXR1cyA9IHRydWU7XG5cbiAgICB0aGlzLmxvY2tlZERhdGUuZm9yRWFjaCh0aW1lc3RhbXAgPT4ge1xuICAgICAgY29uc3QgbG9ja0RhdGUgPSBtb21lbnQudW5peCh0aW1lc3RhbXApO1xuXG4gICAgICByZXR1cm4gc3RhdHVzID0gIShsb2NrRGF0ZS55ZWFyKCkgPT09IGNhbGVuZGFyRGF0ZVllYXIpXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3RhdHVzO1xuICB9XG59XG4iXX0=
|