@frxjs/ngx-timeline 1.0.5 → 1.1.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/README.md +136 -136
- package/bundles/frxjs-ngx-timeline.umd.js +658 -653
- package/bundles/frxjs-ngx-timeline.umd.js.map +1 -1
- package/esm2015/frxjs-ngx-timeline.js +7 -7
- package/esm2015/lib/components/index.js +3 -3
- package/esm2015/lib/components/ngx-timeline-event/ngx-timeline-event.component.js +55 -55
- package/esm2015/lib/components/ngx-timeline.component.js +146 -147
- package/esm2015/lib/models/NgxConfigObj.js +93 -93
- package/esm2015/lib/models/NgxTimelineEvent.js +5 -5
- package/esm2015/lib/models/index.js +3 -3
- package/esm2015/lib/ngx-timeline.module.js +22 -22
- package/esm2015/lib/pipes/index.js +2 -2
- package/esm2015/lib/pipes/ngx-date-pipe.js +27 -27
- package/esm2015/public-api.js +7 -7
- package/fesm2015/frxjs-ngx-timeline.js +323 -324
- package/fesm2015/frxjs-ngx-timeline.js.map +1 -1
- package/frxjs-ngx-timeline.d.ts +7 -7
- package/frxjs-ngx-timeline.metadata.json +1 -1
- package/lib/components/index.d.ts +2 -2
- package/lib/components/ngx-timeline-event/ngx-timeline-event.component.d.ts +35 -35
- package/lib/components/ngx-timeline.component.d.ts +76 -76
- package/lib/models/NgxConfigObj.d.ts +59 -59
- package/lib/models/NgxTimelineEvent.d.ts +29 -29
- package/lib/models/index.d.ts +2 -2
- package/lib/ngx-timeline.module.d.ts +2 -2
- package/lib/pipes/index.d.ts +1 -1
- package/lib/pipes/ngx-date-pipe.d.ts +7 -7
- package/package.json +3 -3
- package/public-api.d.ts +4 -4
- package/bundles/frxjs-ngx-timeline.umd.min.js +0 -2
- package/bundles/frxjs-ngx-timeline.umd.min.js.map +0 -1
|
@@ -6,344 +6,343 @@ import localeFr from '@angular/common/locales/fr';
|
|
|
6
6
|
import localeDe from '@angular/common/locales/de';
|
|
7
7
|
import localeEs from '@angular/common/locales/es';
|
|
8
8
|
|
|
9
|
-
let supportedLanguageCodes = ['en', 'it', 'fr', 'de', 'es'];
|
|
10
|
-
let dateConfigMap = {
|
|
11
|
-
en: {
|
|
12
|
-
code: 'en-US',
|
|
13
|
-
fullDate: 'MM/dd/yyyy h:mm a',
|
|
14
|
-
dayMonthYear: 'dd MMMM yyyy',
|
|
15
|
-
monthYear: 'MMMM yyyy',
|
|
16
|
-
year: 'yyyy',
|
|
17
|
-
hoursMinutes: 'hh:mm a'
|
|
18
|
-
},
|
|
19
|
-
it: {
|
|
20
|
-
code: 'it-IT',
|
|
21
|
-
fullDate: 'dd/MM/yyyy H:mm',
|
|
22
|
-
dayMonthYear: 'dd MMMM yyyy',
|
|
23
|
-
monthYear: 'MMMM yyyy',
|
|
24
|
-
year: 'yyyy',
|
|
25
|
-
hoursMinutes: 'HH:mm'
|
|
26
|
-
},
|
|
27
|
-
fr: {
|
|
28
|
-
code: 'fr-FR',
|
|
29
|
-
fullDate: 'dd/MM/yyyy H:mm',
|
|
30
|
-
dayMonthYear: 'dd MMMM yyyy',
|
|
31
|
-
monthYear: 'MMMM yyyy',
|
|
32
|
-
year: 'yyyy',
|
|
33
|
-
hoursMinutes: 'HH:mm'
|
|
34
|
-
},
|
|
35
|
-
de: {
|
|
36
|
-
code: 'de',
|
|
37
|
-
fullDate: 'dd/MM/yyyy H:mm',
|
|
38
|
-
dayMonthYear: 'dd MMMM yyyy',
|
|
39
|
-
monthYear: 'MMMM yyyy',
|
|
40
|
-
year: 'yyyy',
|
|
41
|
-
hoursMinutes: 'HH:mm'
|
|
42
|
-
},
|
|
43
|
-
es: {
|
|
44
|
-
code: 'es',
|
|
45
|
-
fullDate: 'dd/MM/yyyy H:mm',
|
|
46
|
-
dayMonthYear: 'dd MMMM yyyy',
|
|
47
|
-
monthYear: 'MMMM yyyy',
|
|
48
|
-
year: 'yyyy',
|
|
49
|
-
hoursMinutes: 'HH:mm'
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
var NgxDateFormat;
|
|
53
|
-
(function (NgxDateFormat) {
|
|
54
|
-
NgxDateFormat["DAY_MONTH_YEAR"] = "DAY_MONTH_YEAR";
|
|
55
|
-
NgxDateFormat["FULL_DATE"] = "FULL_DATE";
|
|
56
|
-
NgxDateFormat["MONTH_YEAR"] = "MONTH_YEAR";
|
|
57
|
-
NgxDateFormat["HOURS_MINUTES"] = "HOURS_MINUTES";
|
|
58
|
-
NgxDateFormat["YEAR"] = "YEAR";
|
|
59
|
-
})(NgxDateFormat || (NgxDateFormat = {}));
|
|
60
|
-
let fieldConfigDate = {
|
|
61
|
-
MONTH_YEAR: 'monthYear',
|
|
62
|
-
YEAR: 'year',
|
|
63
|
-
HOURS_MINUTES: 'hoursMinutes',
|
|
64
|
-
FULL_DATE: 'fullDate',
|
|
65
|
-
DAY_MONTH_YEAR: 'dayMonthYear'
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* Enum used to set the group event logic
|
|
69
|
-
*/
|
|
70
|
-
var NgxTimelineEventGroup;
|
|
71
|
-
(function (NgxTimelineEventGroup) {
|
|
72
|
-
NgxTimelineEventGroup["YEAR"] = "YEAR";
|
|
73
|
-
NgxTimelineEventGroup["MONTH_YEAR"] = "MONTH_YEAR";
|
|
74
|
-
NgxTimelineEventGroup["DAY_MONTH_YEAR"] = "DAY_MONTH_YEAR";
|
|
75
|
-
})(NgxTimelineEventGroup || (NgxTimelineEventGroup = {}));
|
|
76
|
-
let fieldsToAddEventGroup = {
|
|
77
|
-
YEAR: ['getFullYear'],
|
|
78
|
-
MONTH_YEAR: ['getFullYear', 'getMonth'],
|
|
79
|
-
DAY_MONTH_YEAR: ['getFullYear', 'getMonth', 'getDate']
|
|
80
|
-
};
|
|
81
|
-
let periodKeyDateFormat = {
|
|
82
|
-
YEAR: NgxDateFormat.YEAR,
|
|
83
|
-
MONTH_YEAR: NgxDateFormat.MONTH_YEAR,
|
|
84
|
-
DAY_MONTH_YEAR: NgxDateFormat.DAY_MONTH_YEAR,
|
|
85
|
-
};
|
|
86
|
-
/**
|
|
87
|
-
* Enum used to set the change side event logic
|
|
88
|
-
*/
|
|
89
|
-
var NgxTimelineEventChangeSideInGroup;
|
|
90
|
-
(function (NgxTimelineEventChangeSideInGroup) {
|
|
91
|
-
NgxTimelineEventChangeSideInGroup["ALL"] = "ALL";
|
|
92
|
-
NgxTimelineEventChangeSideInGroup["ON_DIFFERENT_HMS"] = "ON_DIFFERENT_HMS";
|
|
93
|
-
NgxTimelineEventChangeSideInGroup["ON_DIFFERENT_DAY"] = "ON_DIFFERENT_DAY";
|
|
94
|
-
NgxTimelineEventChangeSideInGroup["ON_DIFFERENT_MONTH"] = "ON_DIFFERENT_MONTH";
|
|
95
|
-
})(NgxTimelineEventChangeSideInGroup || (NgxTimelineEventChangeSideInGroup = {}));
|
|
96
|
-
let fieldsToCheckEventChangeSideInGroup = {
|
|
97
|
-
ON_DIFFERENT_MONTH: ['getFullYear', 'getMonth'],
|
|
98
|
-
ON_DIFFERENT_DAY: ['getFullYear', 'getMonth', 'getDate'],
|
|
99
|
-
ON_DIFFERENT_HMS: ['getFullYear', 'getMonth', 'getDate', 'getHours', 'getMinutes', 'getSeconds']
|
|
9
|
+
let supportedLanguageCodes = ['en', 'it', 'fr', 'de', 'es'];
|
|
10
|
+
let dateConfigMap = {
|
|
11
|
+
en: {
|
|
12
|
+
code: 'en-US',
|
|
13
|
+
fullDate: 'MM/dd/yyyy h:mm a',
|
|
14
|
+
dayMonthYear: 'dd MMMM yyyy',
|
|
15
|
+
monthYear: 'MMMM yyyy',
|
|
16
|
+
year: 'yyyy',
|
|
17
|
+
hoursMinutes: 'hh:mm a'
|
|
18
|
+
},
|
|
19
|
+
it: {
|
|
20
|
+
code: 'it-IT',
|
|
21
|
+
fullDate: 'dd/MM/yyyy H:mm',
|
|
22
|
+
dayMonthYear: 'dd MMMM yyyy',
|
|
23
|
+
monthYear: 'MMMM yyyy',
|
|
24
|
+
year: 'yyyy',
|
|
25
|
+
hoursMinutes: 'HH:mm'
|
|
26
|
+
},
|
|
27
|
+
fr: {
|
|
28
|
+
code: 'fr-FR',
|
|
29
|
+
fullDate: 'dd/MM/yyyy H:mm',
|
|
30
|
+
dayMonthYear: 'dd MMMM yyyy',
|
|
31
|
+
monthYear: 'MMMM yyyy',
|
|
32
|
+
year: 'yyyy',
|
|
33
|
+
hoursMinutes: 'HH:mm'
|
|
34
|
+
},
|
|
35
|
+
de: {
|
|
36
|
+
code: 'de',
|
|
37
|
+
fullDate: 'dd/MM/yyyy H:mm',
|
|
38
|
+
dayMonthYear: 'dd MMMM yyyy',
|
|
39
|
+
monthYear: 'MMMM yyyy',
|
|
40
|
+
year: 'yyyy',
|
|
41
|
+
hoursMinutes: 'HH:mm'
|
|
42
|
+
},
|
|
43
|
+
es: {
|
|
44
|
+
code: 'es',
|
|
45
|
+
fullDate: 'dd/MM/yyyy H:mm',
|
|
46
|
+
dayMonthYear: 'dd MMMM yyyy',
|
|
47
|
+
monthYear: 'MMMM yyyy',
|
|
48
|
+
year: 'yyyy',
|
|
49
|
+
hoursMinutes: 'HH:mm'
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
var NgxDateFormat;
|
|
53
|
+
(function (NgxDateFormat) {
|
|
54
|
+
NgxDateFormat["DAY_MONTH_YEAR"] = "DAY_MONTH_YEAR";
|
|
55
|
+
NgxDateFormat["FULL_DATE"] = "FULL_DATE";
|
|
56
|
+
NgxDateFormat["MONTH_YEAR"] = "MONTH_YEAR";
|
|
57
|
+
NgxDateFormat["HOURS_MINUTES"] = "HOURS_MINUTES";
|
|
58
|
+
NgxDateFormat["YEAR"] = "YEAR";
|
|
59
|
+
})(NgxDateFormat || (NgxDateFormat = {}));
|
|
60
|
+
let fieldConfigDate = {
|
|
61
|
+
MONTH_YEAR: 'monthYear',
|
|
62
|
+
YEAR: 'year',
|
|
63
|
+
HOURS_MINUTES: 'hoursMinutes',
|
|
64
|
+
FULL_DATE: 'fullDate',
|
|
65
|
+
DAY_MONTH_YEAR: 'dayMonthYear'
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Enum used to set the group event logic
|
|
69
|
+
*/
|
|
70
|
+
var NgxTimelineEventGroup;
|
|
71
|
+
(function (NgxTimelineEventGroup) {
|
|
72
|
+
NgxTimelineEventGroup["YEAR"] = "YEAR";
|
|
73
|
+
NgxTimelineEventGroup["MONTH_YEAR"] = "MONTH_YEAR";
|
|
74
|
+
NgxTimelineEventGroup["DAY_MONTH_YEAR"] = "DAY_MONTH_YEAR";
|
|
75
|
+
})(NgxTimelineEventGroup || (NgxTimelineEventGroup = {}));
|
|
76
|
+
let fieldsToAddEventGroup = {
|
|
77
|
+
YEAR: ['getFullYear'],
|
|
78
|
+
MONTH_YEAR: ['getFullYear', 'getMonth'],
|
|
79
|
+
DAY_MONTH_YEAR: ['getFullYear', 'getMonth', 'getDate']
|
|
80
|
+
};
|
|
81
|
+
let periodKeyDateFormat = {
|
|
82
|
+
YEAR: NgxDateFormat.YEAR,
|
|
83
|
+
MONTH_YEAR: NgxDateFormat.MONTH_YEAR,
|
|
84
|
+
DAY_MONTH_YEAR: NgxDateFormat.DAY_MONTH_YEAR,
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Enum used to set the change side event logic
|
|
88
|
+
*/
|
|
89
|
+
var NgxTimelineEventChangeSideInGroup;
|
|
90
|
+
(function (NgxTimelineEventChangeSideInGroup) {
|
|
91
|
+
NgxTimelineEventChangeSideInGroup["ALL"] = "ALL";
|
|
92
|
+
NgxTimelineEventChangeSideInGroup["ON_DIFFERENT_HMS"] = "ON_DIFFERENT_HMS";
|
|
93
|
+
NgxTimelineEventChangeSideInGroup["ON_DIFFERENT_DAY"] = "ON_DIFFERENT_DAY";
|
|
94
|
+
NgxTimelineEventChangeSideInGroup["ON_DIFFERENT_MONTH"] = "ON_DIFFERENT_MONTH";
|
|
95
|
+
})(NgxTimelineEventChangeSideInGroup || (NgxTimelineEventChangeSideInGroup = {}));
|
|
96
|
+
let fieldsToCheckEventChangeSideInGroup = {
|
|
97
|
+
ON_DIFFERENT_MONTH: ['getFullYear', 'getMonth'],
|
|
98
|
+
ON_DIFFERENT_DAY: ['getFullYear', 'getMonth', 'getDate'],
|
|
99
|
+
ON_DIFFERENT_HMS: ['getFullYear', 'getMonth', 'getDate', 'getHours', 'getMinutes', 'getSeconds']
|
|
100
100
|
};
|
|
101
101
|
|
|
102
|
-
var NgxTimelineItemPosition;
|
|
103
|
-
(function (NgxTimelineItemPosition) {
|
|
104
|
-
NgxTimelineItemPosition["ON_LEFT"] = "ON_LEFT";
|
|
105
|
-
NgxTimelineItemPosition["ON_RIGHT"] = "ON_RIGHT";
|
|
102
|
+
var NgxTimelineItemPosition;
|
|
103
|
+
(function (NgxTimelineItemPosition) {
|
|
104
|
+
NgxTimelineItemPosition["ON_LEFT"] = "ON_LEFT";
|
|
105
|
+
NgxTimelineItemPosition["ON_RIGHT"] = "ON_RIGHT";
|
|
106
106
|
})(NgxTimelineItemPosition || (NgxTimelineItemPosition = {}));
|
|
107
107
|
|
|
108
|
-
class NgxTimelineComponent {
|
|
109
|
-
constructor() {
|
|
110
|
-
/**
|
|
111
|
-
* Boolean used to enable or disable the animations
|
|
112
|
-
*/
|
|
113
|
-
this.enableAnimation = true;
|
|
114
|
-
/**
|
|
115
|
-
* Logic to be applied in order to group events
|
|
116
|
-
*/
|
|
117
|
-
this.groupEvent = NgxTimelineEventGroup.MONTH_YEAR;
|
|
118
|
-
/**
|
|
119
|
-
* Logic to be applied in order to put evetns on LEFT or RIGHT
|
|
120
|
-
*/
|
|
121
|
-
this.changeSideInGroup = NgxTimelineEventChangeSideInGroup.ON_DIFFERENT_DAY;
|
|
122
|
-
/**
|
|
123
|
-
* Output click event emitter
|
|
124
|
-
*/
|
|
125
|
-
this.clickEmitter = new BehaviorSubject(null);
|
|
126
|
-
this.groups = {};
|
|
127
|
-
this.periods = [];
|
|
128
|
-
this.items = [];
|
|
129
|
-
this.ngxTimelineItemPosition = NgxTimelineItemPosition;
|
|
130
|
-
this.ngxDateFormat = NgxDateFormat;
|
|
131
|
-
this.separator = '/';
|
|
132
|
-
}
|
|
133
|
-
ngOnInit() {
|
|
134
|
-
this.groupEvents(this.events);
|
|
135
|
-
}
|
|
136
|
-
ngOnChanges(changes) {
|
|
137
|
-
this.groupEvents(this.events);
|
|
138
|
-
}
|
|
139
|
-
getPeriodKeyDateFormat() {
|
|
140
|
-
return periodKeyDateFormat[this.groupEvent];
|
|
141
|
-
}
|
|
142
|
-
clear() {
|
|
143
|
-
this.groups = {};
|
|
144
|
-
this.periods = [];
|
|
145
|
-
this.items = [];
|
|
146
|
-
}
|
|
147
|
-
groupEvents(events) {
|
|
148
|
-
if (events) {
|
|
149
|
-
this.clear();
|
|
150
|
-
this.sortEvents(events);
|
|
151
|
-
this.setGroups(events);
|
|
152
|
-
this.setPeriods();
|
|
153
|
-
this.setItems();
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
sortEvents(events) {
|
|
157
|
-
events.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
|
|
158
|
-
}
|
|
159
|
-
setGroups(events) {
|
|
160
|
-
events.forEach((event) => {
|
|
161
|
-
// conversion from string to actual Date
|
|
162
|
-
event.timestamp = new Date(event.timestamp);
|
|
163
|
-
const periodKey = this.getPeriodKeyFromEvent(event);
|
|
164
|
-
if (!this.groups[periodKey]) {
|
|
165
|
-
this.groups[periodKey] = [];
|
|
166
|
-
}
|
|
167
|
-
this.groups[periodKey].push(event);
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
setItems() {
|
|
171
|
-
this.periods.forEach((p) => {
|
|
172
|
-
// insert first the period
|
|
173
|
-
this.items.push(p);
|
|
174
|
-
// in each period putting items on left
|
|
175
|
-
const onLeft = true;
|
|
176
|
-
const periodInfo = p.periodInfo;
|
|
177
|
-
// insert then all the events in this period
|
|
178
|
-
this.addPeriodEvents(periodInfo, onLeft);
|
|
179
|
-
// onLeft = this.addEventItemsAndGetIfOnLeft(periodInfo, onLeft);
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
addPeriodEvents(periodInfo, onLeft) {
|
|
183
|
-
this.groups[periodInfo.periodKey].forEach((event, index) => {
|
|
184
|
-
const prevEvent = this.groups[periodInfo.periodKey][index - 1];
|
|
185
|
-
if (index > 0 && this.compareEvents(prevEvent, event)) {
|
|
186
|
-
onLeft = !onLeft;
|
|
187
|
-
}
|
|
188
|
-
this.pushEventOnItems(event, onLeft);
|
|
189
|
-
});
|
|
190
|
-
// return onLeft;
|
|
191
|
-
}
|
|
192
|
-
pushEventOnItems(event, onLeft) {
|
|
193
|
-
this.items.push({
|
|
194
|
-
eventInfo: Object.assign({}, event),
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
periodKey,
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
];
|
|
237
|
-
NgxTimelineComponent.
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
clickEmitter: [{ type: Output }]
|
|
108
|
+
class NgxTimelineComponent {
|
|
109
|
+
constructor() {
|
|
110
|
+
/**
|
|
111
|
+
* Boolean used to enable or disable the animations
|
|
112
|
+
*/
|
|
113
|
+
this.enableAnimation = true;
|
|
114
|
+
/**
|
|
115
|
+
* Logic to be applied in order to group events
|
|
116
|
+
*/
|
|
117
|
+
this.groupEvent = NgxTimelineEventGroup.MONTH_YEAR;
|
|
118
|
+
/**
|
|
119
|
+
* Logic to be applied in order to put evetns on LEFT or RIGHT
|
|
120
|
+
*/
|
|
121
|
+
this.changeSideInGroup = NgxTimelineEventChangeSideInGroup.ON_DIFFERENT_DAY;
|
|
122
|
+
/**
|
|
123
|
+
* Output click event emitter
|
|
124
|
+
*/
|
|
125
|
+
this.clickEmitter = new BehaviorSubject(null);
|
|
126
|
+
this.groups = {};
|
|
127
|
+
this.periods = [];
|
|
128
|
+
this.items = [];
|
|
129
|
+
this.ngxTimelineItemPosition = NgxTimelineItemPosition;
|
|
130
|
+
this.ngxDateFormat = NgxDateFormat;
|
|
131
|
+
this.separator = '/';
|
|
132
|
+
}
|
|
133
|
+
ngOnInit() {
|
|
134
|
+
this.groupEvents(this.events);
|
|
135
|
+
}
|
|
136
|
+
ngOnChanges(changes) {
|
|
137
|
+
this.groupEvents(this.events);
|
|
138
|
+
}
|
|
139
|
+
getPeriodKeyDateFormat() {
|
|
140
|
+
return periodKeyDateFormat[this.groupEvent];
|
|
141
|
+
}
|
|
142
|
+
clear() {
|
|
143
|
+
this.groups = {};
|
|
144
|
+
this.periods = [];
|
|
145
|
+
this.items = [];
|
|
146
|
+
}
|
|
147
|
+
groupEvents(events) {
|
|
148
|
+
if (events) {
|
|
149
|
+
this.clear();
|
|
150
|
+
this.sortEvents(events);
|
|
151
|
+
this.setGroups(events);
|
|
152
|
+
this.setPeriods();
|
|
153
|
+
this.setItems();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
sortEvents(events) {
|
|
157
|
+
events.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
|
|
158
|
+
}
|
|
159
|
+
setGroups(events) {
|
|
160
|
+
events.forEach((event) => {
|
|
161
|
+
// conversion from string to actual Date
|
|
162
|
+
event.timestamp = new Date(event.timestamp);
|
|
163
|
+
const periodKey = this.getPeriodKeyFromEvent(event);
|
|
164
|
+
if (!this.groups[periodKey]) {
|
|
165
|
+
this.groups[periodKey] = [];
|
|
166
|
+
}
|
|
167
|
+
this.groups[periodKey].push(event);
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
setItems() {
|
|
171
|
+
this.periods.forEach((p) => {
|
|
172
|
+
// insert first the period
|
|
173
|
+
this.items.push(p);
|
|
174
|
+
// in each period putting items on left
|
|
175
|
+
const onLeft = true;
|
|
176
|
+
const periodInfo = p.periodInfo;
|
|
177
|
+
// insert then all the events in this period
|
|
178
|
+
this.addPeriodEvents(periodInfo, onLeft);
|
|
179
|
+
// onLeft = this.addEventItemsAndGetIfOnLeft(periodInfo, onLeft);
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
addPeriodEvents(periodInfo, onLeft) {
|
|
183
|
+
this.groups[periodInfo.periodKey].forEach((event, index) => {
|
|
184
|
+
const prevEvent = this.groups[periodInfo.periodKey][index - 1];
|
|
185
|
+
if (index > 0 && this.compareEvents(prevEvent, event)) {
|
|
186
|
+
onLeft = !onLeft;
|
|
187
|
+
}
|
|
188
|
+
this.pushEventOnItems(event, onLeft);
|
|
189
|
+
});
|
|
190
|
+
// return onLeft;
|
|
191
|
+
}
|
|
192
|
+
pushEventOnItems(event, onLeft) {
|
|
193
|
+
this.items.push({
|
|
194
|
+
eventInfo: Object.assign({}, event), position: onLeft ?
|
|
195
|
+
this.ngxTimelineItemPosition.ON_LEFT : this.ngxTimelineItemPosition.ON_RIGHT
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Compare the events inside the same group
|
|
200
|
+
*/
|
|
201
|
+
compareEvents(prevEvent, event) {
|
|
202
|
+
return this.changeSideInGroup === NgxTimelineEventChangeSideInGroup.ALL ||
|
|
203
|
+
this.compareEventsField(prevEvent, event, ...fieldsToCheckEventChangeSideInGroup[this.changeSideInGroup]);
|
|
204
|
+
}
|
|
205
|
+
compareEventsField(prevEvent, event, ...fields) {
|
|
206
|
+
return fields.reduce((res, field) => res = res || prevEvent.timestamp[field]() !== event.timestamp[field](), !!false);
|
|
207
|
+
}
|
|
208
|
+
setPeriods() {
|
|
209
|
+
this.periods = Object.keys(this.groups).map((periodKey) => {
|
|
210
|
+
const split = periodKey.split(this.separator);
|
|
211
|
+
return this.getPeriodInfo(split, periodKey);
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
getPeriodInfo(split, periodKey) {
|
|
215
|
+
return {
|
|
216
|
+
periodInfo: {
|
|
217
|
+
year: Number(split[0]),
|
|
218
|
+
month: Number(split[1]),
|
|
219
|
+
day: Number(split[2]),
|
|
220
|
+
periodKey,
|
|
221
|
+
firstDate: this.groups[periodKey][0].timestamp,
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
getPeriodKeyFromEvent(event) {
|
|
226
|
+
return fieldsToAddEventGroup[this.groupEvent].map(field => event.timestamp[field]()).join(this.separator);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
NgxTimelineComponent.decorators = [
|
|
230
|
+
{ type: Component, args: [{
|
|
231
|
+
selector: 'ngx-timeline',
|
|
232
|
+
template: "<div class=\"main-container\">\r\n <div class=\"items-container\">\r\n <div *ngFor=\"let item of items; let index = index;\" class=\"row\">\r\n <!-- DESKTOP -->\r\n <div class=\"col col-left desktop\" [ngClass]=\"item.periodInfo ? 'col-period' : 'col-event'\">\r\n <div class=\"event-outer-container\" *ngIf=\"item.eventInfo && item.position === ngxTimelineItemPosition.ON_LEFT\">\r\n <ng-container *ngTemplateOutlet=\"eventCustomTemplate || eventTemplate; context: {event: item, colSidePosition: ngxTimelineItemPosition.ON_LEFT}\"></ng-container>\r\n </div>\r\n <div class=\"hour left\" *ngIf=\"item.eventInfo && item.position === ngxTimelineItemPosition.ON_RIGHT\">\r\n <ng-container *ngTemplateOutlet=\"dateInstantCustomTemplate || dateInstantTemplate; context: {item: item.eventInfo}\" ></ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col col-center desktop\" [ngClass]=\"item.periodInfo ? 'col-period' : 'col-event'\">\r\n <div class=\"center-inner\" *ngIf=\"item.periodInfo\">\r\n <ng-container *ngTemplateOutlet=\"periodCustomTemplate || periodTemplate; context: {period: item.periodInfo, index: index}\"></ng-container>\r\n </div>\r\n <div class=\"center-inner no-period-key\" *ngIf=\"!item.periodInfo\">\r\n <ng-container *ngTemplateOutlet=\"centerLinesIconTemplate; context: {index: index}\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col col-right desktop\" [ngClass]=\"item.periodInfo ? 'col-period' : 'col-event'\">\r\n <div class=\"event-outer-container\" *ngIf=\"item.eventInfo && item.position === ngxTimelineItemPosition.ON_RIGHT\">\r\n <ng-container *ngTemplateOutlet=\"eventCustomTemplate || eventTemplate; context: {event: item, colSidePosition: ngxTimelineItemPosition.ON_RIGHT}\"></ng-container>\r\n </div>\r\n <div class=\"hour right\" *ngIf=\"item.eventInfo && item.position === ngxTimelineItemPosition.ON_LEFT\">\r\n <ng-container *ngTemplateOutlet=\"dateInstantCustomTemplate || dateInstantTemplate; context: {item: item.eventInfo}\" ></ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- MOBILE -->\r\n <div class=\"col col-left mobile\" [ngClass]=\"item.periodInfo ? 'col-period' : 'col-event'\">\r\n <div class=\"hour left\" *ngIf=\"item.eventInfo\">\r\n <div class=\"hour-inner-container\">\r\n <ng-container *ngTemplateOutlet=\"dateInstantCustomTemplate || dateInstantTemplate; context: {item: item.eventInfo}\" ></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col col-center mobile\" [ngClass]=\"item.periodInfo ? 'col-period' : 'col-event'\">\r\n <div class=\"center-inner\" *ngIf=\"item.periodInfo;\">\r\n <ng-container *ngTemplateOutlet=\"periodCustomTemplate || periodTemplate; context: {period: item.periodInfo, index: index}\"></ng-container>\r\n </div>\r\n <div class=\"center-inner no-period-key\" *ngIf=\"!item.periodInfo;\">\r\n <ng-container *ngTemplateOutlet=\"centerLinesIconTemplate;context: {index: index}\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col col-right mobile\" [ngClass]=\"item.periodInfo ? 'col-period' : 'col-event'\">\r\n <div class=\"event-outer-container\" *ngIf=\"item.eventInfo\">\r\n <ng-container *ngTemplateOutlet=\"eventCustomTemplate || eventTemplate; context: {event: item, colSidePosition: ngxTimelineItemPosition.ON_RIGHT}\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #centerLinesIconTemplate let-index=index>\r\n <div class=\"line\"></div>\r\n <ng-container *ngTemplateOutlet=\"centerIconCustomTemplate || centerIconTemplate\"></ng-container>\r\n <div [ngClass]=\"{'transparent last-line': index === items.length - 1}\" class=\"line\"></div>\r\n</ng-template>\r\n\r\n<ng-template #centerIconTemplate>\r\n <div class=\"center-icon-container\">\r\n <div class=\"icon\"></div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dateInstantTemplate let-item=item>\r\n <span>\r\n {{item?.timestamp | ngxdate : ngxDateFormat.HOURS_MINUTES : langCode}}\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #periodTemplate let-period=period let-index=index>\r\n <div [ngClass]=\"{'transparent first-line': !index}\" class=\"line\"></div>\r\n <div class=\"period-container\">\r\n <div class=\"period-inner-container\">\r\n <span>{{period?.firstDate | ngxdate : getPeriodKeyDateFormat() : langCode}}</span>\r\n </div>\r\n </div>\r\n <div class=\"line\"></div>\r\n</ng-template>\r\n\r\n<ng-template #eventTemplate let-event=event let-colSidePosition=colSidePosition>\r\n <ngx-timeline-event\r\n [event]=\"event\"\r\n [langCode]=\"langCode\"\r\n [enableAnimation]=\"enableAnimation\"\r\n [innerEventCustomTemplate]=\"innerEventCustomTemplate\"\r\n [colSidePosition]=\"colSidePosition\"\r\n (clickEmitter)=\"clickEmitter.next($event)\">\r\n </ngx-timeline-event>\r\n</ng-template>\r\n\r\n",
|
|
233
|
+
styles: [".main-container{display:flex;justify-content:center;width:100%}.items-container{padding:1rem 0;min-width:max(20rem,100%)}.row{display:flex;flex-wrap:wrap}.row>[class*=col-]{display:flex;flex-direction:column;justify-content:center}.col-left{align-items:flex-end;padding:0;flex:49 49 0}.col-right{align-items:flex-start;padding:0;flex:49 49 0}.col-center{min-height:6rem;padding:0;flex:2 2 0}.center-inner{width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%}.center-inner .line{min-height:50%;max-height:50%;height:50%;background:#464646;width:.1rem}.center-inner .line.transparent{background:transparent}.period-container{background:orange;color:#fff;margin:0;padding:.2rem .5rem}.period-container .period-inner-container{width:max-content;padding:.2rem .5rem;z-index:10}.center-icon-container{padding:.8rem 0;display:flex;justify-content:center;align-items:center;position:absolute;height:10px;width:10px;background:white}.center-icon-container .icon{height:1rem;width:1rem;border-radius:50%;background:orange;margin:0;position:absolute}.event-outer-container{margin:0 .5rem;width:100%}.hour{padding:.5rem;background:none;display:flex;justify-content:center;align-items:center}.hour.right{justify-content:flex-start}.hour.left{justify-content:flex-end}.hour .hour-inner-container{margin:0}.desktop{display:flex!important}.mobile{display:none!important}@media (max-width: 900px){.desktop{display:none!important}.mobile{display:flex!important}.event-outer-container{margin:.5rem .3rem}.col-left{align-items:flex-start}.col-left .hour{font-size:12px;padding:0;margin-right:.3rem}.col-left.col-period{flex:18 18 0}.col-left.col-event{flex:18 18 0;padding:0;align-items:flex-end}.col-right{align-items:flex-start}.col-right.col-period{flex:77 77 0}.col-right.col-event{flex:77 77 0;padding:0}.col-center{min-height:6rem;justify-content:center;margin:0}.col-center.col-period{flex:5 5 0;min-height:3rem}.col-center.col-event{flex:5 5 0}.center-inner{align-items:center}.period-container{min-height:20%;height:20%;max-height:20%;background:transparent;display:flex;justify-content:center;align-items:center;border-radius:6px}.period-container .period-inner-container{position:absolute;background:orange;color:#fff;width:max-content;padding:.2rem .5rem;z-index:10}.center-icon-container{align-items:center;justify-content:center}.center-icon-container .icon{height:1rem;width:1rem;position:absolute}}\n"]
|
|
234
|
+
},] }
|
|
235
|
+
];
|
|
236
|
+
NgxTimelineComponent.ctorParameters = () => [];
|
|
237
|
+
NgxTimelineComponent.propDecorators = {
|
|
238
|
+
events: [{ type: Input }],
|
|
239
|
+
langCode: [{ type: Input }],
|
|
240
|
+
enableAnimation: [{ type: Input }],
|
|
241
|
+
groupEvent: [{ type: Input }],
|
|
242
|
+
changeSideInGroup: [{ type: Input }],
|
|
243
|
+
periodCustomTemplate: [{ type: Input }],
|
|
244
|
+
eventCustomTemplate: [{ type: Input }],
|
|
245
|
+
centerIconCustomTemplate: [{ type: Input }],
|
|
246
|
+
dateInstantCustomTemplate: [{ type: Input }],
|
|
247
|
+
innerEventCustomTemplate: [{ type: Input }],
|
|
248
|
+
clickEmitter: [{ type: Output }]
|
|
250
249
|
};
|
|
251
250
|
|
|
252
|
-
class NgxTimelineEventComponent {
|
|
253
|
-
constructor() {
|
|
254
|
-
/**
|
|
255
|
-
* Boolean used to enable or disable the animations
|
|
256
|
-
*/
|
|
257
|
-
this.enableAnimation = true;
|
|
258
|
-
/**
|
|
259
|
-
* Output click event emitter
|
|
260
|
-
*/
|
|
261
|
-
this.clickEmitter = new BehaviorSubject(null);
|
|
262
|
-
this.ngxTimelineItemPosition = NgxTimelineItemPosition;
|
|
263
|
-
this.monthAbbr = 'MMM';
|
|
264
|
-
this.dayFormat = 'dd';
|
|
265
|
-
}
|
|
266
|
-
getDateObj() {
|
|
267
|
-
var _a, _b;
|
|
268
|
-
let day;
|
|
269
|
-
let month;
|
|
270
|
-
let year;
|
|
271
|
-
const dateTimestamp = (_b = (_a = this.event) === null || _a === void 0 ? void 0 : _a.eventInfo) === null || _b === void 0 ? void 0 : _b.timestamp;
|
|
272
|
-
if (dateTimestamp) {
|
|
273
|
-
const timestamp = new Date(dateTimestamp);
|
|
274
|
-
const langCode = this.getLangCode();
|
|
275
|
-
month = new DatePipe(langCode).transform(timestamp, this.monthAbbr);
|
|
276
|
-
day = new DatePipe(langCode).transform(timestamp, this.dayFormat);
|
|
277
|
-
year = timestamp.getFullYear();
|
|
278
|
-
}
|
|
279
|
-
return { day, month, year };
|
|
280
|
-
}
|
|
281
|
-
getLangCode() {
|
|
282
|
-
return this.langCode && supportedLanguageCodes.includes(this.langCode) ? this.langCode : supportedLanguageCodes[0];
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
NgxTimelineEventComponent.decorators = [
|
|
286
|
-
{ type: Component, args: [{
|
|
287
|
-
selector: 'ngx-timeline-event',
|
|
288
|
-
template: "<div class=\"event-wrapper-container\" (click)=\"clickEmitter.next(event)\">\n <div *ngIf=\"colSidePosition===ngxTimelineItemPosition.ON_RIGHT\" class=\"arrow left\"></div>\n <div class=\"event\" [ngClass]=\"{'enableAnimation': enableAnimation}\">\n <ng-container *ngTemplateOutlet=\"innerEventCustomTemplate || innerEventContainer; context: {event: event}\">\n </ng-container>\n </div>\n <div *ngIf=\"colSidePosition===ngxTimelineItemPosition.ON_LEFT\" class=\"arrow right\"></div>\n</div>\n\n<ng-template #innerEventContainer let-event=event>\n <div class=\"event-container\" [ngClass]=\"{'reverse': colSidePosition === ngxTimelineItemPosition.ON_LEFT}\">\n <div class=\"event-info-container\">\n <div class=\"event-info-header\">\n <div class=\"title-container\">{{event?.eventInfo?.title | titlecase}}</div>\n </div>\n <div class=\"event-info-body\">\n <p class=\"event-info-description\">{{event?.eventInfo?.description}}</p>\n </div>\n </div>\n\n <div class=\"event-divider-container\">\n <hr/>\n </div>\n\n <div class=\"event-date-container\" *ngIf=\"getDateObj() as dateObj\">\n <div>\n <p>{{dateObj?.month}}</p>\n </div>\n <div>\n <p class=\"day\">{{dateObj?.day}}</p>\n </div>\n <div>\n <p>{{dateObj?.year}}</p>\n </div>\n </div>\n </div>\n</ng-template>\n",
|
|
289
|
-
styles: [".event-wrapper-container{display:flex;justify-content:center;align-items:center;cursor:pointer}.arrow{width:0;height:0;border-top:.5rem solid transparent;border-bottom:.5rem solid transparent;border-radius:6px;z-index:10}.arrow.right{filter:drop-shadow(2px
|
|
290
|
-
},] }
|
|
291
|
-
];
|
|
292
|
-
NgxTimelineEventComponent.ctorParameters = () => [];
|
|
293
|
-
NgxTimelineEventComponent.propDecorators = {
|
|
294
|
-
event: [{ type: Input }],
|
|
295
|
-
colSidePosition: [{ type: Input }],
|
|
296
|
-
langCode: [{ type: Input }],
|
|
297
|
-
innerEventCustomTemplate: [{ type: Input }],
|
|
298
|
-
enableAnimation: [{ type: Input }],
|
|
299
|
-
clickEmitter: [{ type: Output }]
|
|
251
|
+
class NgxTimelineEventComponent {
|
|
252
|
+
constructor() {
|
|
253
|
+
/**
|
|
254
|
+
* Boolean used to enable or disable the animations
|
|
255
|
+
*/
|
|
256
|
+
this.enableAnimation = true;
|
|
257
|
+
/**
|
|
258
|
+
* Output click event emitter
|
|
259
|
+
*/
|
|
260
|
+
this.clickEmitter = new BehaviorSubject(null);
|
|
261
|
+
this.ngxTimelineItemPosition = NgxTimelineItemPosition;
|
|
262
|
+
this.monthAbbr = 'MMM';
|
|
263
|
+
this.dayFormat = 'dd';
|
|
264
|
+
}
|
|
265
|
+
getDateObj() {
|
|
266
|
+
var _a, _b;
|
|
267
|
+
let day;
|
|
268
|
+
let month;
|
|
269
|
+
let year;
|
|
270
|
+
const dateTimestamp = (_b = (_a = this.event) === null || _a === void 0 ? void 0 : _a.eventInfo) === null || _b === void 0 ? void 0 : _b.timestamp;
|
|
271
|
+
if (dateTimestamp) {
|
|
272
|
+
const timestamp = new Date(dateTimestamp);
|
|
273
|
+
const langCode = this.getLangCode();
|
|
274
|
+
month = new DatePipe(langCode).transform(timestamp, this.monthAbbr);
|
|
275
|
+
day = new DatePipe(langCode).transform(timestamp, this.dayFormat);
|
|
276
|
+
year = timestamp.getFullYear();
|
|
277
|
+
}
|
|
278
|
+
return { day, month, year };
|
|
279
|
+
}
|
|
280
|
+
getLangCode() {
|
|
281
|
+
return this.langCode && supportedLanguageCodes.includes(this.langCode) ? this.langCode : supportedLanguageCodes[0];
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
NgxTimelineEventComponent.decorators = [
|
|
285
|
+
{ type: Component, args: [{
|
|
286
|
+
selector: 'ngx-timeline-event',
|
|
287
|
+
template: "<div class=\"event-wrapper-container\" (click)=\"clickEmitter.next(event)\">\n <div *ngIf=\"colSidePosition===ngxTimelineItemPosition.ON_RIGHT\" class=\"arrow left\"></div>\n <div class=\"event\" [ngClass]=\"{'enableAnimation': enableAnimation}\">\n <ng-container *ngTemplateOutlet=\"innerEventCustomTemplate || innerEventContainer; context: {event: event}\">\n </ng-container>\n </div>\n <div *ngIf=\"colSidePosition===ngxTimelineItemPosition.ON_LEFT\" class=\"arrow right\"></div>\n</div>\n\n<ng-template #innerEventContainer let-event=event>\n <div class=\"event-container\" [ngClass]=\"{'reverse': colSidePosition === ngxTimelineItemPosition.ON_LEFT}\">\n <div class=\"event-info-container\">\n <div class=\"event-info-header\">\n <div class=\"title-container\">{{event?.eventInfo?.title | titlecase}}</div>\n </div>\n <div class=\"event-info-body\">\n <p class=\"event-info-description\">{{event?.eventInfo?.description}}</p>\n </div>\n </div>\n\n <div class=\"event-divider-container\">\n <hr/>\n </div>\n\n <div class=\"event-date-container\" *ngIf=\"getDateObj() as dateObj\">\n <div>\n <p>{{dateObj?.month}}</p>\n </div>\n <div>\n <p class=\"day\">{{dateObj?.day}}</p>\n </div>\n <div>\n <p>{{dateObj?.year}}</p>\n </div>\n </div>\n </div>\n</ng-template>\n",
|
|
288
|
+
styles: [".event-wrapper-container{display:flex;justify-content:center;align-items:center;cursor:pointer}.arrow{width:0;height:0;border-top:.5rem solid transparent;border-bottom:.5rem solid transparent;border-radius:6px;z-index:10}.arrow.right{filter:drop-shadow(2px 0px 0px #244a6e22);border-left:.5rem solid white}.arrow.left{filter:drop-shadow(-1px 0px 0px #244a6e22);border-right:.5rem solid white}.event{background:white;border-radius:.8rem;padding:1rem;width:100%;margin:1rem 0}.event.enableAnimation:hover{padding:2rem;transition:all .5s ease-in-out}.event.enableAnimation:not(:hover){padding:1rem;transition:all .5s ease-in-out}.event:not(.hour){background:#ffffff 0% 0% no-repeat padding-box;box-shadow:0 3px 6px #244a6e52}.event.hour{padding:.5rem;background:none;display:flex;justify-content:center;align-items:center}.event.hour.right{justify-content:flex-start}.event.hour.left{justify-content:flex-end}.event .hour-inner-container{margin:0}.event-container{display:flex}.event-container.reverse{flex-direction:row-reverse}.event-container .event-info-container{display:flex;flex-direction:column;align-items:flex-start;padding:.1rem;flex:88 88 0}.event-container .event-info-container .event-info-header{display:flex;align-items:center;width:100%}.event-container .event-info-container .event-info-header .icon-container{margin-right:.3rem}.event-container .event-info-container .event-info-header .icon-container nb-icon{color:orange;width:1.5rem;height:1.5rem;margin-bottom:.1rem}.event-container .event-info-container .event-info-header .title-container{font-weight:bold;font-size:15px}.event-container .event-info-container .event-info-body{padding:.5rem 0;display:flex;flex-direction:column;justify-content:flex-start;overflow-wrap:anywhere}.event-container .event-info-container .event-info-body .event-info-description{margin-bottom:.5rem;font-size:13px}.event-container .event-info-container .event-info-body .expiration-container,.event-container .event-info-container .event-info-body .category-container{display:flex;font-size:13px;justify-content:flex-start;align-items:center}.event-container .event-info-container .event-info-body .expiration-container p,.event-container .event-info-container .event-info-body .category-container p{font-size:13px;margin:0}.event-container .event-info-container .event-info-body .expiration-container .expiration-label,.event-container .event-info-container .event-info-body .expiration-container .category-label,.event-container .event-info-container .event-info-body .category-container .expiration-label,.event-container .event-info-container .event-info-body .category-container .category-label{margin-right:.5rem}.event-container .event-info-container .event-info-body .expiration-container .expiration-value,.event-container .event-info-container .event-info-body .expiration-container .category-value,.event-container .event-info-container .event-info-body .category-container .expiration-value,.event-container .event-info-container .event-info-body .category-container .category-value{font-weight:bold}.event-container .event-info-container .event-info-footer{font-size:15px;cursor:pointer;padding-top:1rem}.event-container .event-info-container .event-info-footer .footer-inner-container{display:flex;justify-content:flex-start;align-items:flex-end}.event-container .event-info-container .event-info-footer .footer-inner-container nb-icon{color:#006cb4;width:1rem;height:1rem;margin-bottom:.1rem}.event-container .event-info-container .event-info-footer p{margin:0;color:#006cb4}.event-container .event-divider-container{display:flex;justify-content:center;align-items:center;padding:.1rem;flex:5 5 0}.event-container .event-divider-container hr{height:100%;width:1px;background:#e9e9e9}.event-container .event-date-container{display:flex;justify-content:center;align-items:center;flex-direction:column;padding:.1rem;flex:15 15 0}.event-container .event-date-container p{margin:0;text-align:center}.event-container .event-date-container p.day{font-size:32px;font-weight:bold;padding:.5rem 0}\n"]
|
|
289
|
+
},] }
|
|
290
|
+
];
|
|
291
|
+
NgxTimelineEventComponent.ctorParameters = () => [];
|
|
292
|
+
NgxTimelineEventComponent.propDecorators = {
|
|
293
|
+
event: [{ type: Input }],
|
|
294
|
+
colSidePosition: [{ type: Input }],
|
|
295
|
+
langCode: [{ type: Input }],
|
|
296
|
+
innerEventCustomTemplate: [{ type: Input }],
|
|
297
|
+
enableAnimation: [{ type: Input }],
|
|
298
|
+
clickEmitter: [{ type: Output }]
|
|
300
299
|
};
|
|
301
300
|
|
|
302
|
-
class NgxDatePipe {
|
|
303
|
-
constructor() {
|
|
304
|
-
}
|
|
305
|
-
transform(date, dateFormat, langCode) {
|
|
306
|
-
let transformedDate = null;
|
|
307
|
-
if (date) {
|
|
308
|
-
const objDate = this.getDateConfig(langCode);
|
|
309
|
-
transformedDate = new DatePipe(objDate.code).transform(new Date(date), this.dateFormat(dateFormat, objDate));
|
|
310
|
-
}
|
|
311
|
-
return transformedDate;
|
|
312
|
-
}
|
|
313
|
-
dateFormat(dateFormat, configDate) {
|
|
314
|
-
return configDate[fieldConfigDate[dateFormat]];
|
|
315
|
-
}
|
|
316
|
-
getDateConfig(langCode) {
|
|
317
|
-
const code = langCode || supportedLanguageCodes[0];
|
|
318
|
-
const configDate = dateConfigMap[code] || dateConfigMap[supportedLanguageCodes[0]];
|
|
319
|
-
return configDate;
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
NgxDatePipe.decorators = [
|
|
323
|
-
{ type: Pipe, args: [{ name: 'ngxdate', pure: false },] }
|
|
324
|
-
];
|
|
301
|
+
class NgxDatePipe {
|
|
302
|
+
constructor() {
|
|
303
|
+
}
|
|
304
|
+
transform(date, dateFormat, langCode) {
|
|
305
|
+
let transformedDate = null;
|
|
306
|
+
if (date) {
|
|
307
|
+
const objDate = this.getDateConfig(langCode);
|
|
308
|
+
transformedDate = new DatePipe(objDate.code).transform(new Date(date), this.dateFormat(dateFormat, objDate));
|
|
309
|
+
}
|
|
310
|
+
return transformedDate;
|
|
311
|
+
}
|
|
312
|
+
dateFormat(dateFormat, configDate) {
|
|
313
|
+
return configDate[fieldConfigDate[dateFormat]];
|
|
314
|
+
}
|
|
315
|
+
getDateConfig(langCode) {
|
|
316
|
+
const code = langCode || supportedLanguageCodes[0];
|
|
317
|
+
const configDate = dateConfigMap[code] || dateConfigMap[supportedLanguageCodes[0]];
|
|
318
|
+
return configDate;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
NgxDatePipe.decorators = [
|
|
322
|
+
{ type: Pipe, args: [{ name: 'ngxdate', pure: false },] }
|
|
323
|
+
];
|
|
325
324
|
NgxDatePipe.ctorParameters = () => [];
|
|
326
325
|
|
|
327
|
-
registerLocaleData(localeIt);
|
|
328
|
-
registerLocaleData(localeFr);
|
|
329
|
-
registerLocaleData(localeDe);
|
|
330
|
-
registerLocaleData(localeEs);
|
|
331
|
-
class NgxTimelineModule {
|
|
332
|
-
}
|
|
333
|
-
NgxTimelineModule.decorators = [
|
|
334
|
-
{ type: NgModule, args: [{
|
|
335
|
-
declarations: [NgxTimelineComponent, NgxTimelineEventComponent, NgxDatePipe],
|
|
336
|
-
imports: [CommonModule],
|
|
337
|
-
exports: [NgxTimelineComponent, NgxDatePipe]
|
|
338
|
-
},] }
|
|
326
|
+
registerLocaleData(localeIt);
|
|
327
|
+
registerLocaleData(localeFr);
|
|
328
|
+
registerLocaleData(localeDe);
|
|
329
|
+
registerLocaleData(localeEs);
|
|
330
|
+
class NgxTimelineModule {
|
|
331
|
+
}
|
|
332
|
+
NgxTimelineModule.decorators = [
|
|
333
|
+
{ type: NgModule, args: [{
|
|
334
|
+
declarations: [NgxTimelineComponent, NgxTimelineEventComponent, NgxDatePipe],
|
|
335
|
+
imports: [CommonModule],
|
|
336
|
+
exports: [NgxTimelineComponent, NgxDatePipe]
|
|
337
|
+
},] }
|
|
339
338
|
];
|
|
340
339
|
|
|
341
|
-
/*
|
|
342
|
-
* Public API Surface of ngx-timeline
|
|
340
|
+
/*
|
|
341
|
+
* Public API Surface of ngx-timeline
|
|
343
342
|
*/
|
|
344
343
|
|
|
345
|
-
/**
|
|
346
|
-
* Generated bundle index. Do not edit.
|
|
344
|
+
/**
|
|
345
|
+
* Generated bundle index. Do not edit.
|
|
347
346
|
*/
|
|
348
347
|
|
|
349
348
|
export { NgxDateFormat, NgxDatePipe, NgxTimelineComponent, NgxTimelineEventChangeSideInGroup, NgxTimelineEventComponent, NgxTimelineEventGroup, NgxTimelineItemPosition, NgxTimelineModule, dateConfigMap, fieldConfigDate, fieldsToAddEventGroup, fieldsToCheckEventChangeSideInGroup, periodKeyDateFormat, supportedLanguageCodes, NgxTimelineComponent as ɵa, NgxTimelineEventComponent as ɵb, NgxDatePipe as ɵc };
|