@colijnit/sharedcomponents 1.0.27 → 1.0.29

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.
Files changed (134) hide show
  1. package/bundles/colijnit-sharedcomponents.umd.js +2714 -73
  2. package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
  3. package/colijnit-sharedcomponents.d.ts +24 -0
  4. package/colijnit-sharedcomponents.metadata.json +1 -1
  5. package/esm2015/colijnit-sharedcomponents.js +25 -1
  6. package/esm2015/lib/components/circular-gauge/co-circular-gauge.component.js +6 -5
  7. package/esm2015/lib/components/date-planning/component/agenda/agenda-base-view.component.js +61 -0
  8. package/esm2015/lib/components/date-planning/component/agenda/agenda-day-view.component.js +32 -0
  9. package/esm2015/lib/components/date-planning/component/agenda/agenda-event.component.js +54 -0
  10. package/esm2015/lib/components/date-planning/component/agenda/agenda-events.component.js +43 -0
  11. package/esm2015/lib/components/date-planning/component/agenda/agenda-half-hour-cell.component.js +68 -0
  12. package/esm2015/lib/components/date-planning/component/agenda/agenda-header.component.js +232 -0
  13. package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-cell.component.js +36 -0
  14. package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-view-labels.component.js +50 -0
  15. package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-view.component.js +46 -0
  16. package/esm2015/lib/components/date-planning/component/agenda/agenda-month-view.component.js +61 -0
  17. package/esm2015/lib/components/date-planning/component/agenda/agenda-select-event.component.js +39 -0
  18. package/esm2015/lib/components/date-planning/component/agenda/agenda-view.component.js +35 -0
  19. package/esm2015/lib/components/date-planning/component/agenda/agenda-week-select-view.component.js +64 -0
  20. package/esm2015/lib/components/date-planning/component/agenda/agenda-week-view.component.js +48 -0
  21. package/esm2015/lib/components/date-planning/component/agenda/view-select.component.js +42 -0
  22. package/esm2015/lib/components/date-planning/component/calendar/calendar-all-months.component.js +34 -0
  23. package/esm2015/lib/components/date-planning/component/calendar/calendar-all-years.component.js +48 -0
  24. package/esm2015/lib/components/date-planning/component/calendar/calendar-header.component.js +107 -0
  25. package/esm2015/lib/components/date-planning/component/calendar/calendar-view.component.js +178 -0
  26. package/esm2015/lib/components/date-planning/component/calendar/calendar.component.js +34 -0
  27. package/esm2015/lib/components/date-planning/date-planning.component.js +106 -0
  28. package/esm2015/lib/components/date-planning/date-planning.module.js +63 -0
  29. package/esm2015/lib/components/send-method-dialog/send-method-dialog.component.js +83 -54
  30. package/esm2015/lib/components/send-method-dialog/send-method-dialog.module.js +6 -3
  31. package/esm2015/lib/components/send-method-dialog/send-method-params.interface.js +2 -0
  32. package/esm2015/lib/components/statusbar/statusbar.component.js +4 -2
  33. package/esm2015/lib/components/stock/stock-information-grid/stock-information-grid.component.js +7 -4
  34. package/esm2015/lib/enum/calendar-view.enum.js +8 -0
  35. package/esm2015/lib/enum/icon.enum.js +6 -1
  36. package/esm2015/lib/enum/month.enum.js +17 -0
  37. package/esm2015/lib/enum/thumb-three-way-state.js +19 -0
  38. package/esm2015/lib/enum/time-period.enum.js +11 -0
  39. package/esm2015/lib/model/agenda-event-per-day.model.js +6 -0
  40. package/esm2015/lib/model/agenda-event.model.js +8 -0
  41. package/esm2015/lib/model/agenda-null-objects.js +11 -0
  42. package/esm2015/lib/model/constant/all-months.js +17 -0
  43. package/esm2015/lib/model/date-range.js +5 -0
  44. package/esm2015/lib/model/day.model.js +7 -0
  45. package/esm2015/lib/model/icon-svg.js +6 -1
  46. package/esm2015/lib/model/month.model.js +11 -0
  47. package/esm2015/lib/model/time-window.bo.js +26 -0
  48. package/esm2015/lib/model/week.model.js +6 -0
  49. package/esm2015/lib/model/weekday.model.js +10 -0
  50. package/esm2015/lib/pipe/array-number.pipe.js +15 -0
  51. package/esm2015/lib/pipe/master-pipes.js +7 -0
  52. package/esm2015/lib/pipe/ucfirst.pipe.js +16 -0
  53. package/esm2015/lib/service/shared-connector.service.js +49 -1
  54. package/esm2015/lib/service/stock.service.js +16 -5
  55. package/esm2015/lib/utils/array-utils.js +24 -5
  56. package/esm2015/lib/utils/calendar.utils.js +69 -0
  57. package/esm2015/lib/utils/check-precision-and-scale-result.js +2 -0
  58. package/esm2015/lib/utils/check-within-stepped-bounds-result.js +2 -0
  59. package/esm2015/lib/utils/date-utils.js +264 -0
  60. package/esm2015/lib/utils/function/not-nill.function.js +5 -0
  61. package/esm2015/lib/utils/map-utils.js +41 -0
  62. package/esm2015/lib/utils/number-utils.js +390 -0
  63. package/esm2015/lib/utils/object-utils.js +278 -0
  64. package/esm2015/public-api.js +3 -1
  65. package/fesm2015/colijnit-sharedcomponents.js +2794 -99
  66. package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
  67. package/lib/components/circular-gauge/style/_layout.scss +3 -6
  68. package/lib/components/date-planning/component/agenda/agenda-base-view.component.d.ts +21 -0
  69. package/lib/components/date-planning/component/agenda/agenda-day-view.component.d.ts +6 -0
  70. package/lib/components/date-planning/component/agenda/agenda-event.component.d.ts +17 -0
  71. package/lib/components/date-planning/component/agenda/agenda-events.component.d.ts +12 -0
  72. package/lib/components/date-planning/component/agenda/agenda-half-hour-cell.component.d.ts +18 -0
  73. package/lib/components/date-planning/component/agenda/agenda-header.component.d.ts +47 -0
  74. package/lib/components/date-planning/component/agenda/agenda-hour-cell.component.d.ts +9 -0
  75. package/lib/components/date-planning/component/agenda/agenda-hour-view-labels.component.d.ts +8 -0
  76. package/lib/components/date-planning/component/agenda/agenda-hour-view.component.d.ts +7 -0
  77. package/lib/components/date-planning/component/agenda/agenda-month-view.component.d.ts +10 -0
  78. package/lib/components/date-planning/component/agenda/agenda-select-event.component.d.ts +12 -0
  79. package/lib/components/date-planning/component/agenda/agenda-view.component.d.ts +11 -0
  80. package/lib/components/date-planning/component/agenda/agenda-week-select-view.component.d.ts +10 -0
  81. package/lib/components/date-planning/component/agenda/agenda-week-view.component.d.ts +8 -0
  82. package/lib/components/date-planning/component/agenda/view-select.component.d.ts +11 -0
  83. package/lib/components/date-planning/component/calendar/calendar-all-months.component.d.ts +9 -0
  84. package/lib/components/date-planning/component/calendar/calendar-all-years.component.d.ts +9 -0
  85. package/lib/components/date-planning/component/calendar/calendar-header.component.d.ts +23 -0
  86. package/lib/components/date-planning/component/calendar/calendar-view.component.d.ts +31 -0
  87. package/lib/components/date-planning/component/calendar/calendar.component.d.ts +10 -0
  88. package/lib/components/date-planning/date-planning.component.d.ts +25 -0
  89. package/lib/components/date-planning/date-planning.module.d.ts +2 -0
  90. package/lib/components/send-method-dialog/send-method-dialog.component.d.ts +24 -7
  91. package/lib/components/send-method-dialog/send-method-params.interface.d.ts +13 -0
  92. package/lib/components/send-method-dialog/style/_layout.scss +5 -0
  93. package/lib/components/statusbar/statusbar.component.d.ts +2 -0
  94. package/lib/components/statusbar/style/_layout.scss +11 -0
  95. package/lib/components/tags/component/style/_layout.scss +67 -0
  96. package/lib/components/tags/component/style/_material-definition.scss +1 -0
  97. package/lib/components/tags/component/style/_theme.scss +8 -0
  98. package/lib/components/tags/component/style/material.scss +3 -0
  99. package/lib/components/tags/component/tag-join-label/style/_layout.scss +97 -0
  100. package/lib/components/tags/component/tag-join-label/style/_material-definition.scss +4 -0
  101. package/lib/components/tags/component/tag-join-label/style/_theme.scss +8 -0
  102. package/lib/components/tags/component/tag-join-label/style/material.scss +3 -0
  103. package/lib/enum/calendar-view.enum.d.ts +6 -0
  104. package/lib/enum/icon.enum.d.ts +5 -0
  105. package/lib/enum/month.enum.d.ts +14 -0
  106. package/lib/enum/thumb-three-way-state.d.ts +6 -0
  107. package/lib/enum/time-period.enum.d.ts +8 -0
  108. package/lib/model/agenda-event-per-day.model.d.ts +5 -0
  109. package/lib/model/agenda-event.model.d.ts +16 -0
  110. package/lib/model/agenda-null-objects.d.ts +10 -0
  111. package/lib/model/constant/all-months.d.ts +2 -0
  112. package/lib/model/date-range.d.ts +7 -0
  113. package/lib/model/day.model.d.ts +8 -0
  114. package/lib/model/month.model.d.ts +5 -0
  115. package/lib/model/time-window.bo.d.ts +13 -0
  116. package/lib/model/week.model.d.ts +4 -0
  117. package/lib/model/weekday.model.d.ts +16 -0
  118. package/lib/pipe/array-number.pipe.d.ts +4 -0
  119. package/lib/pipe/master-pipes.d.ts +1 -0
  120. package/lib/pipe/ucfirst.pipe.d.ts +4 -0
  121. package/lib/service/shared-connector.service.d.ts +4 -0
  122. package/lib/service/stock.service.d.ts +6 -2
  123. package/lib/style/_mixin.scss +5 -0
  124. package/lib/utils/array-utils.d.ts +6 -0
  125. package/lib/utils/calendar.utils.d.ts +10 -0
  126. package/lib/utils/check-precision-and-scale-result.d.ts +4 -0
  127. package/lib/utils/check-within-stepped-bounds-result.d.ts +8 -0
  128. package/lib/utils/date-utils.d.ts +44 -0
  129. package/lib/utils/function/not-nill.function.d.ts +1 -0
  130. package/lib/utils/map-utils.d.ts +16 -0
  131. package/lib/utils/number-utils.d.ts +125 -0
  132. package/lib/utils/object-utils.d.ts +40 -0
  133. package/package.json +1 -1
  134. package/public-api.d.ts +2 -0
@@ -0,0 +1,64 @@
1
+ import { Component, Input, ViewEncapsulation } from "@angular/core";
2
+ import { AgendaBaseViewComponent } from "./agenda-base-view.component";
3
+ import { NULL_WEEK } from "../../../../model/agenda-null-objects";
4
+ import { CalendarUtils } from "../../../../utils/calendar.utils";
5
+ import { Icon } from "../../../../enum/icon.enum";
6
+ import { CalendarView } from "../../../../enum/calendar-view.enum";
7
+ export class AgendaWeekSelectViewComponent extends AgendaBaseViewComponent {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.view = CalendarView.WeekSelectView;
11
+ this.week = NULL_WEEK;
12
+ this.icons = Icon;
13
+ }
14
+ prepareViewData() {
15
+ if (this.selectedDate) {
16
+ // get the events
17
+ const week = CalendarUtils.GetDaysOfWeek(this.selectedDate);
18
+ const len = week.weekDays.length;
19
+ for (let i = 0; i < len; i++) {
20
+ week.weekDays[i].events = this.getEventsFromDate(week.weekDays[i].date);
21
+ }
22
+ this.week = week;
23
+ }
24
+ }
25
+ }
26
+ AgendaWeekSelectViewComponent.decorators = [
27
+ { type: Component, args: [{
28
+ selector: "agenda-week-select-view",
29
+ template: `
30
+ <div class="view-wrapper week-select-view">
31
+ <div class="week-day" *ngFor="let weekDay of week.weekDays">
32
+ <div class="week-select-container" *ngIf="weekDay.weekdaySelected">
33
+ <div class="week-select-left">
34
+ <h3 [textContent]="'AGENDA_CHOOSE_DELIVERY_PERIOD'"></h3>
35
+ <div class="week-select-list mini-scrollbar">
36
+ <agenda-events
37
+ [halfHourHeight]="40"
38
+ [events]="weekDay.events"
39
+ (eventChecked)="eventChecked.emit($event)"
40
+ [view]="view"
41
+ ></agenda-events>
42
+ <div class="no-events-banner" *ngIf="weekDay.events.length === 0">
43
+ <p [textContent]="'AGENDA_NO_PERIODS_AVAILABLE'"></p>
44
+ </div>
45
+ </div>
46
+ </div>
47
+ <div class="week-select-right">
48
+ <h3 [textContent]="'AGENDA_FOR_EVERY_PERIOD'"></h3>
49
+ <ul>
50
+ <li><co-icon [iconData]="iconCacheService.getIcon(icons.CheckRound)" class="small action-color moment-icon"></co-icon><span [textContent]="'AGENDA_FOR_EVERY_PERIOD_REASON1'"></span></li>
51
+ <li><co-icon [iconData]="iconCacheService.getIcon(icons.CheckRound)" class="small action-color moment-icon"></co-icon><span [textContent]="'AGENDA_FOR_EVERY_PERIOD_REASON2'"></span></li>
52
+ </ul>
53
+ </div>
54
+ </div>
55
+ </div>
56
+ </div>
57
+ `,
58
+ encapsulation: ViewEncapsulation.None
59
+ },] }
60
+ ];
61
+ AgendaWeekSelectViewComponent.propDecorators = {
62
+ view: [{ type: Input }]
63
+ };
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLXdlZWstc2VsZWN0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZS1wbGFubmluZy9jb21wb25lbnQvYWdlbmRhL2FnZW5kYS13ZWVrLXNlbGVjdC12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFvQ2pFLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSx1QkFBdUI7SUFqQzFFOztRQW9DVyxTQUFJLEdBQWlCLFlBQVksQ0FBQyxjQUFjLENBQUM7UUFFakQsU0FBSSxHQUFTLFNBQVMsQ0FBQztRQUVkLFVBQUssR0FBZ0IsSUFBSSxDQUFDO0lBYzlDLENBQUM7SUFaYSxlQUFlO1FBQ3JCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixpQkFBaUI7WUFDakIsTUFBTSxJQUFJLEdBQVMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEUsTUFBTSxHQUFHLEdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDekMsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDM0U7WUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNwQjtJQUNMLENBQUM7OztZQXBESixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBNEJUO2dCQUNILGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7bUJBR0ksS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QWdlbmRhQmFzZVZpZXdDb21wb25lbnR9IGZyb20gXCIuL2FnZW5kYS1iYXNlLXZpZXcuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7TlVMTF9XRUVLfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWwvYWdlbmRhLW51bGwtb2JqZWN0c1wiO1xyXG5pbXBvcnQge0NhbGVuZGFyVXRpbHN9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9jYWxlbmRhci51dGlsc1wiO1xyXG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL2ljb24uZW51bVwiO1xyXG5pbXBvcnQge0NhbGVuZGFyVmlld30gZnJvbSBcIi4uLy4uLy4uLy4uL2VudW0vY2FsZW5kYXItdmlldy5lbnVtXCI7XHJcbmltcG9ydCB7V2Vla30gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsL3dlZWsubW9kZWxcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiYWdlbmRhLXdlZWstc2VsZWN0LXZpZXdcIixcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZpZXctd3JhcHBlciB3ZWVrLXNlbGVjdC12aWV3XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLWRheVwiICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIHdlZWsud2Vla0RheXNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLXNlbGVjdC1jb250YWluZXJcIiAqbmdJZj1cIndlZWtEYXkud2Vla2RheVNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstc2VsZWN0LWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIFt0ZXh0Q29udGVudF09XCInQUdFTkRBX0NIT09TRV9ERUxJVkVSWV9QRVJJT0QnXCI+PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstc2VsZWN0LWxpc3QgbWluaS1zY3JvbGxiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhZ2VuZGEtZXZlbnRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYWxmSG91ckhlaWdodF09XCI0MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtldmVudHNdPVwid2Vla0RheS5ldmVudHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnRDaGVja2VkKT1cImV2ZW50Q2hlY2tlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlld109XCJ2aWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2FnZW5kYS1ldmVudHM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm8tZXZlbnRzLWJhbm5lclwiICpuZ0lmPVwid2Vla0RheS5ldmVudHMubGVuZ3RoID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgW3RleHRDb250ZW50XT1cIidBR0VOREFfTk9fUEVSSU9EU19BVkFJTEFCTEUnXCI+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLXNlbGVjdC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgW3RleHRDb250ZW50XT1cIidBR0VOREFfRk9SX0VWRVJZX1BFUklPRCdcIj48L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGNvLWljb24gW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DaGVja1JvdW5kKVwiIGNsYXNzPVwic21hbGwgYWN0aW9uLWNvbG9yIG1vbWVudC1pY29uXCI+PC9jby1pY29uPjxzcGFuIFt0ZXh0Q29udGVudF09XCInQUdFTkRBX0ZPUl9FVkVSWV9QRVJJT0RfUkVBU09OMSdcIj48L3NwYW4+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNoZWNrUm91bmQpXCIgY2xhc3M9XCJzbWFsbCBhY3Rpb24tY29sb3IgbW9tZW50LWljb25cIj48L2NvLWljb24+PHNwYW4gW3RleHRDb250ZW50XT1cIidBR0VOREFfRk9SX0VWRVJZX1BFUklPRF9SRUFTT04yJ1wiPjwvc3Bhbj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZ2VuZGFXZWVrU2VsZWN0Vmlld0NvbXBvbmVudCBleHRlbmRzIEFnZW5kYUJhc2VWaWV3Q29tcG9uZW50IHtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHZpZXc6IENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldy5XZWVrU2VsZWN0VmlldztcclxuXHJcbiAgICBwdWJsaWMgd2VlazogV2VlayA9IE5VTExfV0VFSztcclxuXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcHJlcGFyZVZpZXdEYXRhKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICAgICAgICAvLyBnZXQgdGhlIGV2ZW50c1xyXG4gICAgICAgICAgICBjb25zdCB3ZWVrOiBXZWVrID0gQ2FsZW5kYXJVdGlscy5HZXREYXlzT2ZXZWVrKHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgICAgICAgICAgY29uc3QgbGVuOiBudW1iZXIgPSB3ZWVrLndlZWtEYXlzLmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB3ZWVrLndlZWtEYXlzW2ldLmV2ZW50cyA9IHRoaXMuZ2V0RXZlbnRzRnJvbURhdGUod2Vlay53ZWVrRGF5c1tpXS5kYXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLndlZWsgPSB3ZWVrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,48 @@
1
+ import { Component, Input, ViewEncapsulation } from "@angular/core";
2
+ import { NULL_WEEK } from "../../../../model/agenda-null-objects";
3
+ import { CalendarUtils } from "../../../../utils/calendar.utils";
4
+ import { CalendarView } from "../../../../enum/calendar-view.enum";
5
+ import { AgendaBaseViewComponent } from "./agenda-base-view.component";
6
+ export class AgendaWeekViewComponent extends AgendaBaseViewComponent /*implements OnInit, OnDestroy*/ {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.view = CalendarView.WeekView;
10
+ this.week = NULL_WEEK;
11
+ }
12
+ prepareViewData() {
13
+ if (this.selectedDate) {
14
+ // get the events
15
+ const week = CalendarUtils.GetDaysOfWeek(this.selectedDate);
16
+ const len = week.weekDays.length;
17
+ for (let i = 0; i < len; i++) {
18
+ week.weekDays[i].events = this.getEventsFromDate(week.weekDays[i].date);
19
+ }
20
+ this.week = week;
21
+ }
22
+ }
23
+ }
24
+ AgendaWeekViewComponent.decorators = [
25
+ { type: Component, args: [{
26
+ selector: "agenda-week-view",
27
+ template: `
28
+ <div class="view-wrapper">
29
+ <agenda-hour-view-labels [date]="selectedDate"></agenda-hour-view-labels>
30
+ <div class="week-day" *ngFor="let weekDay of week.weekDays">
31
+ <agenda-hour-view [date]="weekDay.date">
32
+ <agenda-events
33
+ [halfHourHeight]="40"
34
+ [events]="weekDay.events"
35
+ (eventChecked)="eventChecked.emit($event)"
36
+ [view]="view"
37
+ ></agenda-events>
38
+ </agenda-hour-view>
39
+ </div>
40
+ </div>
41
+ `,
42
+ encapsulation: ViewEncapsulation.None
43
+ },] }
44
+ ];
45
+ AgendaWeekViewComponent.propDecorators = {
46
+ view: [{ type: Input }]
47
+ };
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbmRhLXdlZWstdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBsYW5uaW5nL2NvbXBvbmVudC9hZ2VuZGEvYWdlbmRhLXdlZWstdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFakUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFzQnJFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSx1QkFBdUIsQ0FBQyxnQ0FBZ0M7SUFuQnJHOztRQXNCVyxTQUFJLEdBQWlCLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFFM0MsU0FBSSxHQUFTLFNBQVMsQ0FBQztJQWFsQyxDQUFDO0lBWGEsZUFBZTtRQUNyQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsaUJBQWlCO1lBQ2pCLE1BQU0sSUFBSSxHQUFTLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzNFO1lBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7U0FDcEI7SUFDTCxDQUFDOzs7WUFwQ0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7S0FjVDtnQkFDSCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O21CQUdJLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge05VTExfV0VFS30gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsL2FnZW5kYS1udWxsLW9iamVjdHNcIjtcclxuaW1wb3J0IHtDYWxlbmRhclV0aWxzfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvY2FsZW5kYXIudXRpbHNcIjtcclxuaW1wb3J0IHtDYWxlbmRhclZpZXd9IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL2NhbGVuZGFyLXZpZXcuZW51bVwiO1xyXG5pbXBvcnQge1dlZWt9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbC93ZWVrLm1vZGVsXCI7XHJcbmltcG9ydCB7QWdlbmRhQmFzZVZpZXdDb21wb25lbnR9IGZyb20gXCIuL2FnZW5kYS1iYXNlLXZpZXcuY29tcG9uZW50XCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJhZ2VuZGEtd2Vlay12aWV3XCIsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2aWV3LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGFnZW5kYS1ob3VyLXZpZXctbGFiZWxzIFtkYXRlXT1cInNlbGVjdGVkRGF0ZVwiPjwvYWdlbmRhLWhvdXItdmlldy1sYWJlbHM+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLWRheVwiICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIHdlZWsud2Vla0RheXNcIj5cclxuICAgICAgICAgICAgICAgIDxhZ2VuZGEtaG91ci12aWV3IFtkYXRlXT1cIndlZWtEYXkuZGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhZ2VuZGEtZXZlbnRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoYWxmSG91ckhlaWdodF09XCI0MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldmVudHNdPVwid2Vla0RheS5ldmVudHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnRDaGVja2VkKT1cImV2ZW50Q2hlY2tlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmlld109XCJ2aWV3XCJcclxuICAgICAgICAgICAgICAgID48L2FnZW5kYS1ldmVudHM+XHJcbiAgICAgICAgICAgICAgICA8L2FnZW5kYS1ob3VyLXZpZXc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZ2VuZGFXZWVrVmlld0NvbXBvbmVudCBleHRlbmRzIEFnZW5kYUJhc2VWaWV3Q29tcG9uZW50IC8qaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSovIHtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHZpZXc6IENhbGVuZGFyVmlldyA9IENhbGVuZGFyVmlldy5XZWVrVmlldztcclxuXHJcbiAgICBwdWJsaWMgd2VlazogV2VlayA9IE5VTExfV0VFSztcclxuXHJcbiAgICBwcm90ZWN0ZWQgcHJlcGFyZVZpZXdEYXRhKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICAgICAgICAvLyBnZXQgdGhlIGV2ZW50c1xyXG4gICAgICAgICAgICBjb25zdCB3ZWVrOiBXZWVrID0gQ2FsZW5kYXJVdGlscy5HZXREYXlzT2ZXZWVrKHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgICAgICAgICAgY29uc3QgbGVuOiBudW1iZXIgPSB3ZWVrLndlZWtEYXlzLmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB3ZWVrLndlZWtEYXlzW2ldLmV2ZW50cyA9IHRoaXMuZ2V0RXZlbnRzRnJvbURhdGUod2Vlay53ZWVrRGF5c1tpXS5kYXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLndlZWsgPSB3ZWVrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,42 @@
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation } from "@angular/core";
2
+ import { CalendarView } from "../../../../enum/calendar-view.enum";
3
+ import { ThumbThreeWayState } from "../../../../enum/thumb-three-way-state";
4
+ import { MapUtils } from "../../../../utils/map-utils";
5
+ export class ViewSelectComponent {
6
+ constructor() {
7
+ this._viewsToThumb = new Map([
8
+ [CalendarView.DayView, ThumbThreeWayState.Left],
9
+ [CalendarView.WeekView, ThumbThreeWayState.Middle],
10
+ [CalendarView.MonthView, ThumbThreeWayState.Right]
11
+ ]);
12
+ this.selectedView = CalendarView.WeekView;
13
+ this.selectedViewChange = new EventEmitter();
14
+ }
15
+ get modelAsThumbState() {
16
+ return this._viewsToThumb.get(this.selectedView);
17
+ }
18
+ onThumbStateChange(thumbState) {
19
+ this.selectedView = MapUtils.FindKeyByValue(this._viewsToThumb, (value) => {
20
+ return (value === thumbState);
21
+ });
22
+ this.selectedViewChange.emit(this.selectedView);
23
+ }
24
+ }
25
+ ViewSelectComponent.decorators = [
26
+ { type: Component, args: [{
27
+ selector: "view-select",
28
+ template: `
29
+ <div class="select-wrapper">
30
+ <div [textContent]="'DAY'" class="label"></div>
31
+ <div [textContent]="'MONTH'" class="label"></div>
32
+ </div>
33
+ `,
34
+ encapsulation: ViewEncapsulation.None
35
+ },] }
36
+ ];
37
+ ViewSelectComponent.ctorParameters = () => [];
38
+ ViewSelectComponent.propDecorators = {
39
+ selectedView: [{ type: Input }],
40
+ selectedViewChange: [{ type: Output }]
41
+ };
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZS1wbGFubmluZy9jb21wb25lbnQvYWdlbmRhL3ZpZXctc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFZckQsTUFBTSxPQUFPLG1CQUFtQjtJQWtCNUI7UUFoQmlCLGtCQUFhLEdBQTBDLElBQUksR0FBRyxDQUFtQztZQUM5RyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDO1lBQy9DLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7WUFDbEQsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQztTQUNyRCxDQUFDLENBQUM7UUFHSSxpQkFBWSxHQUFpQixZQUFZLENBQUMsUUFBUSxDQUFDO1FBR25ELHVCQUFrQixHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztJQU96RixDQUFDO0lBTEQsSUFBVyxpQkFBaUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUtNLGtCQUFrQixDQUFDLFVBQThCO1FBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBbUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQXlCLEVBQUUsRUFBRTtZQUM1SCxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7O1lBcENKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsUUFBUSxFQUFFOzs7OztLQUtUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3hDOzs7OzJCQVNJLEtBQUs7aUNBR0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NhbGVuZGFyVmlld30gZnJvbSBcIi4uLy4uLy4uLy4uL2VudW0vY2FsZW5kYXItdmlldy5lbnVtXCI7XHJcbmltcG9ydCB7VGh1bWJUaHJlZVdheVN0YXRlfSBmcm9tIFwiLi4vLi4vLi4vLi4vZW51bS90aHVtYi10aHJlZS13YXktc3RhdGVcIjtcclxuaW1wb3J0IHtNYXBVdGlsc30gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL21hcC11dGlsc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJ2aWV3LXNlbGVjdFwiLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBbdGV4dENvbnRlbnRdPVwiJ0RBWSdcIiBjbGFzcz1cImxhYmVsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgW3RleHRDb250ZW50XT1cIidNT05USCdcIiBjbGFzcz1cImxhYmVsXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBgLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmlld1NlbGVjdENvbXBvbmVudCB7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmlld3NUb1RodW1iOiBNYXA8Q2FsZW5kYXJWaWV3LCBUaHVtYlRocmVlV2F5U3RhdGU+ID0gbmV3IE1hcDxDYWxlbmRhclZpZXcsIFRodW1iVGhyZWVXYXlTdGF0ZT4oW1xyXG4gICAgICAgIFtDYWxlbmRhclZpZXcuRGF5VmlldywgVGh1bWJUaHJlZVdheVN0YXRlLkxlZnRdLFxyXG4gICAgICAgIFtDYWxlbmRhclZpZXcuV2Vla1ZpZXcsIFRodW1iVGhyZWVXYXlTdGF0ZS5NaWRkbGVdLFxyXG4gICAgICAgIFtDYWxlbmRhclZpZXcuTW9udGhWaWV3LCBUaHVtYlRocmVlV2F5U3RhdGUuUmlnaHRdXHJcbiAgICBdKTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGVkVmlldzogQ2FsZW5kYXJWaWV3ID0gQ2FsZW5kYXJWaWV3LldlZWtWaWV3O1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGVkVmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPENhbGVuZGFyVmlldz4gPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyVmlldz4oKTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0IG1vZGVsQXNUaHVtYlN0YXRlKCk6IFRodW1iVGhyZWVXYXlTdGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZpZXdzVG9UaHVtYi5nZXQodGhpcy5zZWxlY3RlZFZpZXcpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblRodW1iU3RhdGVDaGFuZ2UodGh1bWJTdGF0ZTogVGh1bWJUaHJlZVdheVN0YXRlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBNYXBVdGlscy5GaW5kS2V5QnlWYWx1ZTxDYWxlbmRhclZpZXcsIFRodW1iVGhyZWVXYXlTdGF0ZT4odGhpcy5fdmlld3NUb1RodW1iLCAodmFsdWU6IFRodW1iVGhyZWVXYXlTdGF0ZSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlID09PSB0aHVtYlN0YXRlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmlld0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRWaWV3KTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,34 @@
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation } from "@angular/core";
2
+ import { ALL_MONTHS } from "../../../../model/constant/all-months";
3
+ export class CalendarAllMonthsComponent {
4
+ constructor() {
5
+ this.shortDescriptions = false;
6
+ this.monthChange = new EventEmitter();
7
+ this.months = [];
8
+ }
9
+ ngOnInit() {
10
+ this.months.length = 0;
11
+ this.months = ALL_MONTHS;
12
+ }
13
+ }
14
+ CalendarAllMonthsComponent.decorators = [
15
+ { type: Component, args: [{
16
+ selector: "calendar-all-months",
17
+ template: `
18
+ <div *ngFor="let currentMonth of months; let index = index"
19
+ [class.selected-month]="month === index"
20
+ [textContent]="currentMonth"
21
+ class="pointer-hover"
22
+ (click)="month = index; monthChange.emit(month)"
23
+ ></div>
24
+ `,
25
+ encapsulation: ViewEncapsulation.None
26
+ },] }
27
+ ];
28
+ CalendarAllMonthsComponent.ctorParameters = () => [];
29
+ CalendarAllMonthsComponent.propDecorators = {
30
+ month: [{ type: Input }],
31
+ shortDescriptions: [{ type: Input }],
32
+ monthChange: [{ type: Output }]
33
+ };
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYWxsLW1vbnRocy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBsYW5uaW5nL2NvbXBvbmVudC9jYWxlbmRhci9jYWxlbmRhci1hbGwtbW9udGhzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQWVqRSxNQUFNLE9BQU8sMEJBQTBCO0lBYXJDO1FBUE8sc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBR25DLGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFL0QsV0FBTSxHQUFhLEVBQUUsQ0FBQztJQUc3QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztJQUMzQixDQUFDOzs7WUFoQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLFFBQVEsRUFBRTs7Ozs7OztLQU9QO2dCQUNILGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7O29CQUlFLEtBQUs7Z0NBR0wsS0FBSzswQkFHTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtBTExfTU9OVEhTfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWwvY29uc3RhbnQvYWxsLW1vbnRoc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY2FsZW5kYXItYWxsLW1vbnRoc1wiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY3VycmVudE1vbnRoIG9mIG1vbnRoczsgbGV0IGluZGV4ID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkLW1vbnRoXT1cIm1vbnRoID09PSBpbmRleFwiXHJcbiAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiY3VycmVudE1vbnRoXCJcclxuICAgICAgICAgICAgIGNsYXNzPVwicG9pbnRlci1ob3ZlclwiXHJcbiAgICAgICAgICAgICAoY2xpY2spPVwibW9udGggPSBpbmRleDsgbW9udGhDaGFuZ2UuZW1pdChtb250aClcIlxyXG4gICAgICAgID48L2Rpdj5cclxuICAgIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQWxsTW9udGhzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbW9udGg6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvcnREZXNjcmlwdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG1vbnRoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBwdWJsaWMgbW9udGhzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tb250aHMubGVuZ3RoID0gMDtcclxuICAgIHRoaXMubW9udGhzID0gQUxMX01PTlRIUztcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,48 @@
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation } from "@angular/core";
2
+ export class CalendarAllYearsComponent {
3
+ constructor() {
4
+ this.yearChange = new EventEmitter();
5
+ this.years = [];
6
+ }
7
+ ngOnInit() {
8
+ this.years.length = 0;
9
+ let start = this._determineStart();
10
+ const end = start + 11;
11
+ while (start < end) {
12
+ this.years.push(start);
13
+ start++;
14
+ }
15
+ }
16
+ _determineStart() {
17
+ if (this.year > 0) {
18
+ let thisYear = this.year;
19
+ let thisYearLastDigit = parseInt(thisYear.toString().split("").pop());
20
+ while (thisYearLastDigit > 0) {
21
+ thisYear--;
22
+ thisYearLastDigit = parseInt(thisYear.toString().split("").pop());
23
+ }
24
+ return thisYear;
25
+ }
26
+ return 0;
27
+ }
28
+ }
29
+ CalendarAllYearsComponent.decorators = [
30
+ { type: Component, args: [{
31
+ selector: "calendar-all-years",
32
+ template: `
33
+ <div *ngFor="let currentYear of years"
34
+ [textContent]="currentYear"
35
+ [class.selected-year]="currentYear === year"
36
+ class="pointer-hover"
37
+ (click)="year = currentYear; yearChange.emit(year)"
38
+ ></div>
39
+ `,
40
+ encapsulation: ViewEncapsulation.None
41
+ },] }
42
+ ];
43
+ CalendarAllYearsComponent.ctorParameters = () => [];
44
+ CalendarAllYearsComponent.propDecorators = {
45
+ year: [{ type: Input }],
46
+ yearChange: [{ type: Output }]
47
+ };
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYWxsLXllYXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGxhbm5pbmcvY29tcG9uZW50L2NhbGVuZGFyL2NhbGVuZGFyLWFsbC15ZWFycy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQWVoRyxNQUFNLE9BQU8seUJBQXlCO0lBVXBDO1FBSmdCLGVBQVUsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV2RSxVQUFLLEdBQWEsRUFBRSxDQUFDO0lBRzVCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksS0FBSyxHQUFXLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQyxNQUFNLEdBQUcsR0FBVyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQy9CLE9BQU8sS0FBSyxHQUFHLEdBQUcsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixLQUFLLEVBQUUsQ0FBQztTQUNUO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRTtZQUNqQixJQUFJLFFBQVEsR0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQUksaUJBQWlCLEdBQVcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM5RSxPQUFPLGlCQUFpQixHQUFHLENBQUMsRUFBRTtnQkFDNUIsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQzthQUNuRTtZQUNELE9BQU8sUUFBUSxDQUFDO1NBQ2pCO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDOzs7WUEvQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLFFBQVEsRUFBRTs7Ozs7OztLQU9QO2dCQUNILGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7O21CQUlFLEtBQUs7eUJBR0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjYWxlbmRhci1hbGwteWVhcnNcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGN1cnJlbnRZZWFyIG9mIHllYXJzXCJcclxuICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJjdXJyZW50WWVhclwiXHJcbiAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWQteWVhcl09XCJjdXJyZW50WWVhciA9PT0geWVhclwiXHJcbiAgICAgICAgICAgICBjbGFzcz1cInBvaW50ZXItaG92ZXJcIlxyXG4gICAgICAgICAgICAgKGNsaWNrKT1cInllYXIgPSBjdXJyZW50WWVhcjsgeWVhckNoYW5nZS5lbWl0KHllYXIpXCJcclxuICAgICAgICA+PC9kaXY+XHJcbiAgICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckFsbFllYXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgeWVhcjogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgeWVhckNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgcHVibGljIHllYXJzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy55ZWFycy5sZW5ndGggPSAwO1xyXG4gICAgbGV0IHN0YXJ0OiBudW1iZXIgPSB0aGlzLl9kZXRlcm1pbmVTdGFydCgpO1xyXG4gICAgY29uc3QgZW5kOiBudW1iZXIgPSBzdGFydCArIDExO1xyXG4gICAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7XHJcbiAgICAgIHRoaXMueWVhcnMucHVzaChzdGFydCk7XHJcbiAgICAgIHN0YXJ0Kys7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kZXRlcm1pbmVTdGFydCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMueWVhciA+IDApIHtcclxuICAgICAgbGV0IHRoaXNZZWFyOiBudW1iZXIgPSB0aGlzLnllYXI7XHJcbiAgICAgIGxldCB0aGlzWWVhckxhc3REaWdpdDogbnVtYmVyID0gcGFyc2VJbnQodGhpc1llYXIudG9TdHJpbmcoKS5zcGxpdChcIlwiKS5wb3AoKSk7XHJcbiAgICAgIHdoaWxlICh0aGlzWWVhckxhc3REaWdpdCA+IDApIHtcclxuICAgICAgICB0aGlzWWVhci0tO1xyXG4gICAgICAgIHRoaXNZZWFyTGFzdERpZ2l0ID0gcGFyc2VJbnQodGhpc1llYXIudG9TdHJpbmcoKS5zcGxpdChcIlwiKS5wb3AoKSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXNZZWFyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,107 @@
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation } from "@angular/core";
2
+ import { animate, state, style, transition, trigger } from "@angular/animations";
3
+ import { ALL_MONTHS } from "../../../../model/constant/all-months";
4
+ import { Icon } from "../../../../enum/icon.enum";
5
+ import { IconCacheService } from "../../../../service/icon-cache.service";
6
+ export class CalendarHeaderComponent {
7
+ constructor(iconCacheService) {
8
+ this.iconCacheService = iconCacheService;
9
+ this.selectedDate = new Date();
10
+ this.selectedDateChange = new EventEmitter();
11
+ this.icons = Icon;
12
+ this.showMonthYearSelect = false;
13
+ this.expanded = false;
14
+ }
15
+ ngDoCheck() {
16
+ if (this.selectedDate) {
17
+ this.currentMonth = ALL_MONTHS[this.selectedDate.getMonth()];
18
+ this.currentYear = this.selectedDate.getFullYear();
19
+ }
20
+ }
21
+ subMonth() {
22
+ const newDate = new Date(this.selectedDate);
23
+ newDate.setMonth(newDate.getMonth() - 1);
24
+ this.selectedDate = newDate;
25
+ this.selectedDateChange.emit(this.selectedDate);
26
+ }
27
+ addMonth() {
28
+ const newDate = new Date(this.selectedDate);
29
+ newDate.setMonth(newDate.getMonth() + 1);
30
+ this.selectedDate = newDate;
31
+ this.selectedDateChange.emit(this.selectedDate);
32
+ }
33
+ hideMonthYearSelection() {
34
+ this.expanded = false;
35
+ this.showMonthYearSelect = false;
36
+ }
37
+ setNewMonth(month) {
38
+ this.selectedMonth = month;
39
+ }
40
+ setNewYear(year) {
41
+ this.selectedYear = year;
42
+ }
43
+ changeMonthYear() {
44
+ this.hideMonthYearSelection();
45
+ const newDate = new Date(this.selectedDate);
46
+ newDate.setMonth(this.selectedMonth);
47
+ newDate.setFullYear(this.selectedYear);
48
+ this.selectedDate = newDate;
49
+ this.selectedDateChange.emit(this.selectedDate);
50
+ }
51
+ }
52
+ CalendarHeaderComponent.decorators = [
53
+ { type: Component, args: [{
54
+ selector: "calendar-header",
55
+ template: `
56
+ <div #monthYearSelect class="calendar-header-row">
57
+ <co-icon class="pointer-hover" [iconData]="iconCacheService.getIcon(icons.ArrowPointLeft)" (click)="subMonth()"></co-icon>
58
+ <div (click)="showMonthYearSelect = true">
59
+ <div class="month" [textContent]="currentMonth"></div>
60
+ <div class="year" [textContent]="currentYear"></div>
61
+ </div>
62
+ <co-icon class="pointer-hover" [iconData]="iconCacheService.getIcon(icons.ArrowPointRight)" (click)="addMonth()"></co-icon>
63
+ </div>
64
+ <ng-template #template>
65
+ <div *ngIf="showMonthYearSelect"
66
+ (clickOutside)="hideMonthYearSelection()"
67
+ class="select-month-year-window" [class.expanded]="expanded" @showMonthYearSelect
68
+ >
69
+ <div>
70
+ <calendar-all-months [month]="currentMonth" (monthChange)="setNewMonth($event)" shortDescriptions></calendar-all-months>
71
+ <div class="vertical-divider"></div>
72
+ <calendar-all-years [year]="currentYear" (yearChange)="setNewYear($event)"></calendar-all-years>
73
+ </div>
74
+ <!-- <default-ok-cancel-buttons-->
75
+ <!-- (okClick)="changeMonthYear()"-->
76
+ <!-- (cancelClick)="showMonthYearSelect = false"-->
77
+ <!-- >-->
78
+ <!-- </default-ok-cancel-buttons>-->
79
+ </div>
80
+ </ng-template>
81
+ `,
82
+ encapsulation: ViewEncapsulation.None,
83
+ animations: [
84
+ trigger("showMonthYearSelect", [
85
+ state("void", style({
86
+ "transform-origin": "top center",
87
+ transform: "scaleY(0)"
88
+ })),
89
+ state("*", style({
90
+ "transform-origin": "top center",
91
+ transform: "scaleY(1)"
92
+ })),
93
+ transition(":enter, :leave", [
94
+ animate("200ms ease-in-out")
95
+ ])
96
+ ])
97
+ ]
98
+ },] }
99
+ ];
100
+ CalendarHeaderComponent.ctorParameters = () => [
101
+ { type: IconCacheService }
102
+ ];
103
+ CalendarHeaderComponent.propDecorators = {
104
+ selectedDate: [{ type: Input }],
105
+ selectedDateChange: [{ type: Output }]
106
+ };
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGxhbm5pbmcvY29tcG9uZW50L2NhbGVuZGFyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBVyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFpRHhFLE1BQU0sT0FBTyx1QkFBdUI7SUFzQmxDLFlBQ1MsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFwQnBDLGlCQUFZLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUd2Qix1QkFBa0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVsRSxVQUFLLEdBQWdCLElBQUksQ0FBQztRQUVuQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFFckMsYUFBUSxHQUFZLEtBQUssQ0FBQztJQWFqQyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztJQUVNLFFBQVE7UUFDYixNQUFNLE9BQU8sR0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLFFBQVE7UUFDYixNQUFNLE9BQU8sR0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLHNCQUFzQjtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRU0sVUFBVSxDQUFDLElBQVk7UUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xELE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xELENBQUM7OztZQW5IRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTBCUDtnQkFDSCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsVUFBVSxFQUFFO29CQUNWLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRTt3QkFDN0IsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7NEJBQ2xCLGtCQUFrQixFQUFFLFlBQVk7NEJBQ2hDLFNBQVMsRUFBRSxXQUFXO3lCQUN2QixDQUFDLENBQUM7d0JBQ0gsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7NEJBQ2Ysa0JBQWtCLEVBQUUsWUFBWTs0QkFDaEMsU0FBUyxFQUFFLFdBQVc7eUJBQ3ZCLENBQUMsQ0FBQzt3QkFDSCxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7NEJBQzNCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQzt5QkFDN0IsQ0FBQztxQkFDSCxDQUFDO2lCQUNIO2FBQ0Y7OztZQS9DTyxnQkFBZ0I7OzsyQkFtRHJCLEtBQUs7aUNBR0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBEb0NoZWNrLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcclxuaW1wb3J0IHtBTExfTU9OVEhTfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWwvY29uc3RhbnQvYWxsLW1vbnRoc1wiO1xyXG5pbXBvcnQge0ljb259IGZyb20gXCIuLi8uLi8uLi8uLi9lbnVtL2ljb24uZW51bVwiO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY2FsZW5kYXItaGVhZGVyXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8ZGl2ICNtb250aFllYXJTZWxlY3QgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwicG9pbnRlci1ob3ZlclwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dQb2ludExlZnQpXCIgKGNsaWNrKT1cInN1Yk1vbnRoKClcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNob3dNb250aFllYXJTZWxlY3QgPSB0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGhcIiBbdGV4dENvbnRlbnRdPVwiY3VycmVudE1vbnRoXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwieWVhclwiIFt0ZXh0Q29udGVudF09XCJjdXJyZW50WWVhclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJwb2ludGVyLWhvdmVyXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5BcnJvd1BvaW50UmlnaHQpXCIgKGNsaWNrKT1cImFkZE1vbnRoKClcIj48L2NvLWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dNb250aFllYXJTZWxlY3RcIlxyXG4gICAgICAgICAgICAgICAgIChjbGlja091dHNpZGUpPVwiaGlkZU1vbnRoWWVhclNlbGVjdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1tb250aC15ZWFyLXdpbmRvd1wiIFtjbGFzcy5leHBhbmRlZF09XCJleHBhbmRlZFwiIEBzaG93TW9udGhZZWFyU2VsZWN0XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNhbGVuZGFyLWFsbC1tb250aHMgW21vbnRoXT1cImN1cnJlbnRNb250aFwiIChtb250aENoYW5nZSk9XCJzZXROZXdNb250aCgkZXZlbnQpXCIgc2hvcnREZXNjcmlwdGlvbnM+PC9jYWxlbmRhci1hbGwtbW9udGhzPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1kaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNhbGVuZGFyLWFsbC15ZWFycyBbeWVhcl09XCJjdXJyZW50WWVhclwiICh5ZWFyQ2hhbmdlKT1cInNldE5ld1llYXIoJGV2ZW50KVwiPjwvY2FsZW5kYXItYWxsLXllYXJzPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbjwhLS0gICAgICAgICAgICAgICAgPGRlZmF1bHQtb2stY2FuY2VsLWJ1dHRvbnMtLT5cclxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIChva0NsaWNrKT1cImNoYW5nZU1vbnRoWWVhcigpXCItLT5cclxuPCEtLSAgICAgICAgICAgICAgICAgICAgICAgIChjYW5jZWxDbGljayk9XCJzaG93TW9udGhZZWFyU2VsZWN0ID0gZmFsc2VcIi0tPlxyXG48IS0tICAgICAgICAgICAgICAgID4tLT5cclxuPCEtLSAgICAgICAgICAgICAgICA8L2RlZmF1bHQtb2stY2FuY2VsLWJ1dHRvbnM+LS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcihcInNob3dNb250aFllYXJTZWxlY3RcIiwgW1xyXG4gICAgICBzdGF0ZShcInZvaWRcIiwgc3R5bGUoe1xyXG4gICAgICAgIFwidHJhbnNmb3JtLW9yaWdpblwiOiBcInRvcCBjZW50ZXJcIixcclxuICAgICAgICB0cmFuc2Zvcm06IFwic2NhbGVZKDApXCJcclxuICAgICAgfSkpLFxyXG4gICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe1xyXG4gICAgICAgIFwidHJhbnNmb3JtLW9yaWdpblwiOiBcInRvcCBjZW50ZXJcIixcclxuICAgICAgICB0cmFuc2Zvcm06IFwic2NhbGVZKDEpXCJcclxuICAgICAgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKFwiOmVudGVyLCA6bGVhdmVcIiwgW1xyXG4gICAgICAgIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluLW91dFwiKVxyXG4gICAgICBdKVxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrIHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2VsZWN0ZWREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgcHVibGljIHNob3dNb250aFllYXJTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50TW9udGg6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGN1cnJlbnRZZWFyOiBudW1iZXI7XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RlZE1vbnRoOiBudW1iZXI7XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RlZFllYXI6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gQUxMX01PTlRIU1t0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpXTtcclxuICAgICAgdGhpcy5jdXJyZW50WWVhciA9IHRoaXMuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3ViTW9udGgoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdEYXRlOiBEYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgbmV3RGF0ZS5zZXRNb250aChuZXdEYXRlLmdldE1vbnRoKCkgLSAxKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3RGF0ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZE1vbnRoKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgIG5ld0RhdGUuc2V0TW9udGgobmV3RGF0ZS5nZXRNb250aCgpICsgMSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ld0RhdGU7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoaWRlTW9udGhZZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93TW9udGhZZWFyU2VsZWN0ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0TmV3TW9udGgobW9udGg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gbW9udGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0TmV3WWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRZZWFyID0geWVhcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VNb250aFllYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmhpZGVNb250aFllYXJTZWxlY3Rpb24oKTtcclxuICAgIGNvbnN0IG5ld0RhdGU6IERhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XHJcbiAgICBuZXdEYXRlLnNldE1vbnRoKHRoaXMuc2VsZWN0ZWRNb250aCk7XHJcbiAgICBuZXdEYXRlLnNldEZ1bGxZZWFyKHRoaXMuc2VsZWN0ZWRZZWFyKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3RGF0ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,178 @@
1
+ import { Component, EventEmitter, Inject, Input, LOCALE_ID, Output, ViewEncapsulation } from "@angular/core";
2
+ import { ArrayNumberPipe } from "../../../../pipe/array-number.pipe";
3
+ import { DatePipe } from "@angular/common";
4
+ import { DateUtils } from "../../../../utils/date-utils";
5
+ import { CalendarView } from "../../../../enum/calendar-view.enum";
6
+ import { LanguageCode } from "../../../../enum/language-code.enum";
7
+ //fixme we don't have a todayDayStamp field but our template references it
8
+ export class CalendarViewComponent {
9
+ constructor(_locale) {
10
+ this._locale = _locale;
11
+ this.selectedDateChange = new EventEmitter();
12
+ this.trackByStamp = (index, stamp) => {
13
+ return stamp && stamp.timestamp || index;
14
+ };
15
+ this.trackByWeek = (index, week) => {
16
+ return week && week[0].week || index;
17
+ };
18
+ this.weekDayLabel = [];
19
+ this.weeks = [];
20
+ this._selectedDate = new Date();
21
+ this._view = CalendarView.WeekView;
22
+ this.selectedDate.setHours(0, 0, 0, 0);
23
+ this._setLabels();
24
+ }
25
+ set view(value) {
26
+ this._view = value;
27
+ this._selectDays();
28
+ }
29
+ get view() {
30
+ return this._view;
31
+ }
32
+ set selectedDate(value) {
33
+ this._selectedDate = value;
34
+ this._selectedDate.setHours(0, 0, 0, 0);
35
+ this._prepareWeeks();
36
+ }
37
+ get selectedDate() {
38
+ return this._selectedDate;
39
+ }
40
+ onDateClick(date) {
41
+ this.selectedDate = new Date(date.timestamp);
42
+ this.selectedDateChange.emit(this.selectedDate);
43
+ this._selectDays();
44
+ }
45
+ _setLabels() {
46
+ const datePipe = new DatePipe(this._locale);
47
+ const currentDay = this.selectedDate.getDay();
48
+ const startWeekDate = new Date(this.selectedDate.getTime());
49
+ startWeekDate.setDate(startWeekDate.getDate() - currentDay - 1);
50
+ this.weekDayLabel = new ArrayNumberPipe().transform(7).map(() => {
51
+ startWeekDate.setDate(startWeekDate.getDate() + 1);
52
+ return datePipe.transform(startWeekDate, "E");
53
+ });
54
+ this.weekDayLabel.push(this.weekDayLabel.shift());
55
+ }
56
+ _prepareWeeks() {
57
+ this.weeks.length = 0;
58
+ const date = new Date(this.selectedDate.getTime());
59
+ date.setHours(0, 0, 0, 0);
60
+ // go to last day of month
61
+ date.setMonth(date.getMonth() + 1);
62
+ date.setDate(0);
63
+ const monthEndDay = date.getDay();
64
+ const monthEndDate = date.getDate();
65
+ // days after end of month
66
+ const daysAfter = !monthEndDay ? 0 : 7 - monthEndDay;
67
+ // go to first day of month
68
+ date.setDate(1);
69
+ const monthBeginDay = date.getDay();
70
+ // days before start of month
71
+ const daysBefore = !monthBeginDay ? 6 : monthBeginDay - 1;
72
+ // go to start of calendar view
73
+ date.setDate(-daysBefore + 1);
74
+ // amount of weeks to display
75
+ const weekCount = Math.ceil((daysBefore + daysAfter + monthEndDate) / 7);
76
+ const weekStart = DateUtils.GetWeekNumber(date);
77
+ const weekEnd = weekStart + weekCount - 1;
78
+ // iterate over week count
79
+ for (let i = weekStart; i <= weekEnd; i++) {
80
+ let week = i;
81
+ // only recalculate week when it's necessary
82
+ if (weekStart > 50) {
83
+ week = DateUtils.GetWeekNumber(date);
84
+ }
85
+ const days = [];
86
+ // iterate over 7 days
87
+ for (let ii = 1; ii <= 7; ii++) {
88
+ // check if we are in the current month
89
+ let inMonth = true;
90
+ if (i === weekStart) {
91
+ inMonth = ii > daysBefore;
92
+ }
93
+ else if (i === weekEnd) {
94
+ inMonth = ii <= 7 - daysAfter;
95
+ }
96
+ const timestamp = date.getTime();
97
+ // add dateStamp to date array
98
+ days.push({
99
+ week: week,
100
+ inMonth: inMonth,
101
+ day: date.getDate(),
102
+ timestamp: timestamp,
103
+ selected: this.selectedDate.getTime() === timestamp
104
+ });
105
+ // go one day further
106
+ date.setDate(date.getDate() + 1);
107
+ }
108
+ this.weeks.push(days);
109
+ }
110
+ this._selectDays();
111
+ }
112
+ _selectDays() {
113
+ this._resetSelection();
114
+ if (!this.selectedDate) {
115
+ return;
116
+ }
117
+ const weekNumber = DateUtils.GetWeekNumber(this.selectedDate);
118
+ const len = this.weeks.length;
119
+ for (let i = 0; i < len; i++) {
120
+ const leni = this.weeks[i].length;
121
+ for (let ii = 0; ii < leni; ii++) {
122
+ if (this.weeks[i][ii].inMonth && this.view === CalendarView.MonthView) {
123
+ this.weeks[i][ii].selected = true;
124
+ }
125
+ else if (this.weeks[i][ii].week === weekNumber && this.view === CalendarView.WeekView) {
126
+ this.weeks[i][ii].selected = true;
127
+ }
128
+ else if (this.weeks[i][ii].timestamp === this.selectedDate.getTime() && this.view === CalendarView.WeekSelectView) {
129
+ this.weeks[i][ii].selected = true;
130
+ }
131
+ else if (this.weeks[i][ii].timestamp === this.selectedDate.getTime() && this.view === CalendarView.DayView) {
132
+ this.weeks[i][ii].selected = true;
133
+ }
134
+ }
135
+ }
136
+ }
137
+ _resetSelection() {
138
+ const len = this.weeks.length;
139
+ for (let i = 0; i < len; i++) {
140
+ const leni = this.weeks[i].length;
141
+ for (let ii = 0; ii < leni; ii++) {
142
+ this.weeks[i][ii].selected = false;
143
+ }
144
+ }
145
+ }
146
+ }
147
+ CalendarViewComponent.decorators = [
148
+ { type: Component, args: [{
149
+ selector: "calendar-view",
150
+ template: `
151
+ <div class="calendar-content">
152
+ <div>
153
+ <div class="week-day-header week-row">
154
+ <div class="week-acronym"></div>
155
+ <div *ngFor="let weekDay of weekDayLabel" [textContent]="weekDay | ucfirst"
156
+ class="week-day-label"></div>
157
+ </div>
158
+ <div class="week-row" *ngFor="let week of weeks;trackBy:trackByWeek">
159
+ <div [textContent]="week[0].week" class="week-number"></div>
160
+ <div *ngFor="let date of week;trackBy:trackByStamp" class="week-day"
161
+ (click)="onDateClick(date)" [textContent]="date.day">
162
+ </div>
163
+ </div>
164
+ </div>
165
+ </div>
166
+ `,
167
+ encapsulation: ViewEncapsulation.None
168
+ },] }
169
+ ];
170
+ CalendarViewComponent.ctorParameters = () => [
171
+ { type: LanguageCode, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }
172
+ ];
173
+ CalendarViewComponent.propDecorators = {
174
+ view: [{ type: Input }],
175
+ selectedDate: [{ type: Input }],
176
+ selectedDateChange: [{ type: Output }]
177
+ };
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBsYW5uaW5nL2NvbXBvbmVudC9jYWxlbmRhci9jYWxlbmRhci12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQXlCakUsMEVBQTBFO0FBQzFFLE1BQU0sT0FBTyxxQkFBcUI7SUEwQ2hDLFlBQ3NDLE9BQXFCO1FBQXJCLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFuQnBELHVCQUFrQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxFLGlCQUFZLEdBQWEsQ0FBQyxLQUFhLEVBQUUsS0FBZ0IsRUFBVSxFQUFFO1lBQzFFLE9BQU8sS0FBSyxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO1FBQzNDLENBQUMsQ0FBQTtRQUVNLGdCQUFXLEdBQWEsQ0FBQyxLQUFhLEVBQUUsSUFBaUIsRUFBVSxFQUFFO1lBQzFFLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDO1FB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QUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsT0FBTyxFQUFFO29CQUM1RyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7aUJBQ25DO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFTyxlQUFlO1FBQ3JCLE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3RDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEMsTUFBTSxJQUFJLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDMUMsS0FBSyxJQUFJLEVBQUUsR0FBVyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2FBQ3BDO1NBQ0Y7SUFDSCxDQUFDOzs7WUE3TEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7S0FnQlA7Z0JBQ0gsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXhCTyxZQUFZLHVCQXFFZixNQUFNLFNBQUMsU0FBUzs7O21CQXpDbEIsS0FBSzsyQkFVTCxLQUFLO2lDQVdMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBMT0NBTEVfSUQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QXJyYXlOdW1iZXJQaXBlfSBmcm9tIFwiLi4vLi4vLi4vLi4vcGlwZS9hcnJheS1udW1iZXIucGlwZVwiO1xyXG5pbXBvcnQge0RhdGVQaXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7RGF0ZVV0aWxzfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvZGF0ZS11dGlsc1wiO1xyXG5pbXBvcnQge0NhbGVuZGFyVmlld30gZnJvbSBcIi4uLy4uLy4uLy4uL2VudW0vY2FsZW5kYXItdmlldy5lbnVtXCI7XHJcbmltcG9ydCB7TGFuZ3VhZ2VDb2RlfSBmcm9tIFwiLi4vLi4vLi4vLi4vZW51bS9sYW5ndWFnZS1jb2RlLmVudW1cIjtcclxuXHJcbnR5cGUgRGF0ZVN0YW1wID0geyBkYXk6IG51bWJlciwgaW5Nb250aDogYm9vbGVhbiwgdGltZXN0YW1wOiBudW1iZXIsIHdlZWs6IG51bWJlciwgc2VsZWN0ZWQ6IGJvb2xlYW4gfTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNhbGVuZGFyLXZpZXdcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay1kYXktaGVhZGVyIHdlZWstcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstYWNyb255bVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheUxhYmVsXCIgW3RleHRDb250ZW50XT1cIndlZWtEYXkgfCB1Y2ZpcnN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2Vlay1kYXktbGFiZWxcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstcm93XCIgKm5nRm9yPVwibGV0IHdlZWsgb2Ygd2Vla3M7dHJhY2tCeTp0cmFja0J5V2Vla1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW3RleHRDb250ZW50XT1cIndlZWtbMF0ud2Vla1wiIGNsYXNzPVwid2Vlay1udW1iZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRlIG9mIHdlZWs7dHJhY2tCeTp0cmFja0J5U3RhbXBcIiBjbGFzcz1cIndlZWstZGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRhdGVDbGljayhkYXRlKVwiIFt0ZXh0Q29udGVudF09XCJkYXRlLmRheVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbi8vZml4bWUgd2UgZG9uJ3QgaGF2ZSBhIHRvZGF5RGF5U3RhbXAgZmllbGQgYnV0IG91ciB0ZW1wbGF0ZSByZWZlcmVuY2VzIGl0XHJcbmV4cG9ydCBjbGFzcyBDYWxlbmRhclZpZXdDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgdmlldyh2YWx1ZTogQ2FsZW5kYXJWaWV3KSB7XHJcbiAgICB0aGlzLl92aWV3ID0gdmFsdWU7XHJcbiAgICB0aGlzLl9zZWxlY3REYXlzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHZpZXcoKTogQ2FsZW5kYXJWaWV3IHtcclxuICAgIHJldHVybiB0aGlzLl92aWV3O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNlbGVjdGVkRGF0ZSh2YWx1ZTogRGF0ZSkge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gdmFsdWU7XHJcbiAgICB0aGlzLl9zZWxlY3RlZERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XHJcbiAgICB0aGlzLl9wcmVwYXJlV2Vla3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWREYXRlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF0ZTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzZWxlY3RlZERhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuXHJcbiAgcHVibGljIHRyYWNrQnlTdGFtcDogRnVuY3Rpb24gPSAoaW5kZXg6IG51bWJlciwgc3RhbXA6IERhdGVTdGFtcCk6IG51bWJlciA9PiB7XHJcbiAgICByZXR1cm4gc3RhbXAgJiYgc3RhbXAudGltZXN0YW1wIHx8IGluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYWNrQnlXZWVrOiBGdW5jdGlvbiA9IChpbmRleDogbnVtYmVyLCB3ZWVrOiBEYXRlU3RhbXBbXSk6IG51bWJlciA9PiB7XHJcbiAgICByZXR1cm4gd2VlayAmJiB3ZWVrWzBdLndlZWsgfHwgaW5kZXg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgd2Vla0RheUxhYmVsOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgd2Vla3M6IERhdGVTdGFtcFtdW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfdmlldzogQ2FsZW5kYXJWaWV3ID0gQ2FsZW5kYXJWaWV3LldlZWtWaWV3O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIHJlYWRvbmx5IF9sb2NhbGU6IExhbmd1YWdlQ29kZSxcclxuICApIHtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG4gICAgdGhpcy5fc2V0TGFiZWxzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25EYXRlQ2xpY2soZGF0ZTogRGF0ZVN0YW1wKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKGRhdGUudGltZXN0YW1wKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgdGhpcy5fc2VsZWN0RGF5cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0TGFiZWxzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0ZVBpcGU6IERhdGVQaXBlID0gbmV3IERhdGVQaXBlKHRoaXMuX2xvY2FsZSk7XHJcblxyXG4gICAgY29uc3QgY3VycmVudERheTogbnVtYmVyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF5KCk7XHJcbiAgICBjb25zdCBzdGFydFdlZWtEYXRlOiBEYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0VGltZSgpKTtcclxuICAgIHN0YXJ0V2Vla0RhdGUuc2V0RGF0ZShzdGFydFdlZWtEYXRlLmdldERhdGUoKSAtIGN1cnJlbnREYXkgLSAxKTtcclxuXHJcbiAgICB0aGlzLndlZWtEYXlMYWJlbCA9IG5ldyBBcnJheU51bWJlclBpcGUoKS50cmFuc2Zvcm0oNykubWFwKCgpID0+IHtcclxuICAgICAgc3RhcnRXZWVrRGF0ZS5zZXREYXRlKHN0YXJ0V2Vla0RhdGUuZ2V0RGF0ZSgpICsgMSk7XHJcbiAgICAgIHJldHVybiBkYXRlUGlwZS50cmFuc2Zvcm0oc3RhcnRXZWVrRGF0ZSwgXCJFXCIpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLndlZWtEYXlMYWJlbC5wdXNoKHRoaXMud2Vla0RheUxhYmVsLnNoaWZ0KCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcHJlcGFyZVdlZWtzKCk6IHZvaWQge1xyXG4gICAgdGhpcy53ZWVrcy5sZW5ndGggPSAwO1xyXG5cclxuICAgIGNvbnN0IGRhdGU6IERhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkpO1xyXG4gICAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuXHJcbiAgICAvLyBnbyB0byBsYXN0IGRheSBvZiBtb250aFxyXG4gICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyAxKTtcclxuICAgIGRhdGUuc2V0RGF0ZSgwKTtcclxuICAgIGNvbnN0IG1vbnRoRW5kRGF5OiBudW1iZXIgPSBkYXRlLmdldERheSgpO1xyXG4gICAgY29uc3QgbW9udGhFbmREYXRlOiBudW1iZXIgPSBkYXRlLmdldERhdGUoKTtcclxuXHJcbiAgICAvLyBkYXlzIGFmdGVyIGVuZCBvZiBtb250aFxyXG4gICAgY29uc3QgZGF5c0FmdGVyOiBudW1iZXIgPSAhbW9udGhFbmREYXkgPyAwIDogNyAtIG1vbnRoRW5kRGF5O1xyXG5cclxuICAgIC8vIGdvIHRvIGZpcnN0IGRheSBvZiBtb250aFxyXG4gICAgZGF0ZS5zZXREYXRlKDEpO1xyXG4gICAgY29uc3QgbW9udGhCZWdpbkRheTogbnVtYmVyID0gZGF0ZS5nZXREYXkoKTtcclxuXHJcbiAgICAvLyBkYXlzIGJlZm9yZSBzdGFydCBvZiBtb250aFxyXG4gICAgY29uc3QgZGF5c0JlZm9yZTogbnVtYmVyID0gIW1vbnRoQmVnaW5EYXkgPyA2IDogbW9udGhCZWdpbkRheSAtIDE7XHJcblxyXG4gICAgLy8gZ28gdG8gc3RhcnQgb2YgY2FsZW5kYXIgdmlld1xyXG4gICAgZGF0ZS5zZXREYXRlKC1kYXlzQmVmb3JlICsgMSk7XHJcblxyXG4gICAgLy8gYW1vdW50IG9mIHdlZWtzIHRvIGRpc3BsYXlcclxuICAgIGNvbnN0IHdlZWtDb3VudDogbnVtYmVyID0gTWF0aC5jZWlsKChkYXlzQmVmb3JlICsgZGF5c0FmdGVyICsgbW9udGhFbmREYXRlKSAvIDcpO1xyXG4gICAgY29uc3Qgd2Vla1N0YXJ0OiBudW1iZXIgPSBEYXRlVXRpbHMuR2V0V2Vla051bWJlcihkYXRlKTtcclxuICAgIGNvbnN0IHdlZWtFbmQ6IG51bWJlciA9IHdlZWtTdGFydCArIHdlZWtDb3VudCAtIDE7XHJcblxyXG4gICAgLy8gaXRlcmF0ZSBvdmVyIHdlZWsgY291bnRcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IHdlZWtTdGFydDsgaSA8PSB3ZWVrRW5kOyBpKyspIHtcclxuICAgICAgbGV0IHdlZWs6IG51bWJlciA9IGk7XHJcblxyXG4gICAgICAvLyBvbmx5IHJlY2FsY3VsYXRlIHdlZWsgd2hlbiBpdCdzIG5lY2Vzc2FyeVxyXG4gICAgICBpZiAod2Vla1N0YXJ0ID4gNTApIHtcclxuICAgICAgICB3ZWVrID0gRGF0ZVV0aWxzLkdldFdlZWtOdW1iZXIoZGF0ZSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZGF5czogRGF0ZVN0YW1wW10gPSBbXTtcclxuXHJcbiAgICAgIC8vIGl0ZXJhdGUgb3ZlciA3IGRheXNcclxuICAgICAgZm9yIChsZXQgaWk6IG51bWJlciA9IDE7IGlpIDw9IDc7IGlpKyspIHtcclxuICAgICAgICAvLyBjaGVjayBpZiB3ZSBhcmUgaW4gdGhlIGN1cnJlbnQgbW9udGhcclxuICAgICAgICBsZXQgaW5Nb250aDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgICAgaWYgKGkgPT09IHdlZWtTdGFydCkge1xyXG4gICAgICAgICAgaW5Nb250aCA9IGlpID4gZGF5c0JlZm9yZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IHdlZWtFbmQpIHtcclxuICAgICAgICAgIGluTW9udGggPSBpaSA8PSA3IC0gZGF5c0FmdGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wOiBudW1iZXIgPSBkYXRlLmdldFRpbWUoKTtcclxuICAgICAgICAvLyBhZGQgZGF0ZVN0YW1wIHRvIGRhdGUgYXJyYXlcclxuICAgICAgICBkYXlzLnB1c2goe1xyXG4gICAgICAgICAgd2Vlazogd2VlayxcclxuICAgICAgICAgIGluTW9udGg6IGluTW9udGgsXHJcbiAgICAgICAgICBkYXk6IGRhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICAgICAgdGltZXN0YW1wOiB0aW1lc3RhbXAsXHJcbiAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZERhdGUuZ2V0VGltZSgpID09PSB0aW1lc3RhbXBcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBnbyBvbmUgZGF5IGZ1cnRoZXJcclxuICAgICAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyAxKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLndlZWtzLnB1c2goZGF5cyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zZWxlY3REYXlzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZWxlY3REYXlzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVzZXRTZWxlY3Rpb24oKTtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZERhdGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgd2Vla051bWJlcjogbnVtYmVyID0gRGF0ZVV0aWxzLkdldFdlZWtOdW1iZXIodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgY29uc3QgbGVuOiBudW1iZXIgPSB0aGlzLndlZWtzLmxlbmd0aDtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBjb25zdCBsZW5pOiBudW1iZXIgPSB0aGlzLndlZWtzW2ldLmxlbmd0aDtcclxuICAgICAgZm9yIChsZXQgaWk6IG51bWJlciA9IDA7IGlpIDwgbGVuaTsgaWkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLndlZWtzW2ldW2lpXS5pbk1vbnRoICYmIHRoaXMudmlldyA9PT0gQ2FsZW5kYXJWaWV3Lk1vbnRoVmlldykge1xyXG4gICAgICAgICAgdGhpcy53ZWVrc1tpXVtpaV0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy53ZWVrc1tpXVtpaV0ud2VlayA9PT0gd2Vla051bWJlciAmJiB0aGlzLnZpZXcgPT09IENhbGVuZGFyVmlldy5XZWVrVmlldykge1xyXG4gICAgICAgICAgdGhpcy53ZWVrc1tpXVtpaV0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy53ZWVrc1tpXVtpaV0udGltZXN0YW1wID09PSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkgJiYgdGhpcy52aWV3ID09PSBDYWxlbmRhclZpZXcuV2Vla1NlbGVjdFZpZXcpIHtcclxuICAgICAgICAgIHRoaXMud2Vla3NbaV1baWldLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMud2Vla3NbaV1baWldLnRpbWVzdGFtcCA9PT0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0VGltZSgpICYmIHRoaXMudmlldyA9PT0gQ2FsZW5kYXJWaWV3LkRheVZpZXcpIHtcclxuICAgICAgICAgIHRoaXMud2Vla3NbaV1baWldLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Jlc2V0U2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbGVuOiBudW1iZXIgPSB0aGlzLndlZWtzLmxlbmd0aDtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBjb25zdCBsZW5pOiBudW1iZXIgPSB0aGlzLndlZWtzW2ldLmxlbmd0aDtcclxuICAgICAgZm9yIChsZXQgaWk6IG51bWJlciA9IDA7IGlpIDwgbGVuaTsgaWkrKykge1xyXG4gICAgICAgIHRoaXMud2Vla3NbaV1baWldLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19