vc-create-dashboard 3.0.88 → 3.0.89

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.
@@ -81,6 +81,8 @@ export declare class CreateDashboardComponent implements OnInit, OnChanges {
81
81
  };
82
82
  programListUrl: any;
83
83
  private readonly datePickerBaseConfig;
84
+ /** organization/?mode=users timezone; JWT timezone is the fallback. */
85
+ private userTimeZone;
84
86
  fromDatePickerConfig: IDatePickerConfig;
85
87
  toDatePickerConfig: IDatePickerConfig;
86
88
  isSmiley: boolean;
@@ -123,6 +125,8 @@ export declare class CreateDashboardComponent implements OnInit, OnChanges {
123
125
  animateImage(): void;
124
126
  saveFrequency(eventValues: any): void;
125
127
  getCurrentDate(): string;
128
+ /** Disables dates before today in the VComply user timezone. */
129
+ private applyFromDateMin;
126
130
  setToDate(data: string): string;
127
131
  getFromDate(data: string): string;
128
132
  /**
@@ -55,6 +55,10 @@ export declare class CreateDashboardService {
55
55
  fetchCustomDashboardById(id: string | number): import("rxjs").Observable<ArrayBuffer>;
56
56
  getUserInformation(): import("rxjs").Observable<ArrayBuffer>;
57
57
  _ID(): any;
58
+ /**
59
+ * JWT timezone used until organization/?mode=users timezone is loaded.
60
+ */
61
+ getTokenTimezone(): string;
58
62
  checkDuplicateDashboardName(payload: any): import("rxjs").Observable<ArrayBuffer>;
59
63
  createDashboard(payload: any): import("rxjs").Observable<ArrayBuffer>;
60
64
  updateDashboard(payload: any, id: any): import("rxjs").Observable<ArrayBuffer>;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Calendar day `DD-MM-YYYY` for an instant in an IANA timezone.
3
+ * Used as the date-picker min so past days follow the VComply user timezone.
4
+ * Falls back to the device calendar day only when timezone is missing or invalid.
5
+ */
6
+ export declare function formatCalendarDateInTimeZone(date: Date, timeZone?: string | null): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vc-create-dashboard",
3
- "version": "3.0.88",
3
+ "version": "3.0.89",
4
4
  "peerDependencies": {
5
5
  "@angular/common": " 12.x || 13.x || 14.x || 15.x || 16.x || 17.x || 18.x || 19.x ",
6
6
  "@angular/core": " 12.x || 13.x || 14.x || 15.x || 16.x || 17.x || 18.x || 19.x "
@@ -1,88 +0,0 @@
1
- const TIMEFRAME_DATE_TIME = /^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2}):(\d{2})/;
2
- function pad(value) {
3
- return String(value).padStart(2, '0');
4
- }
5
- function formatLocalDateTime(date) {
6
- return (`${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ` +
7
- `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`);
8
- }
9
- /**
10
- * API timeframe values are UTC `YYYY-MM-DD HH:mm:ss` without a zone suffix.
11
- * Convert to the browser/system timezone and keep the same format.
12
- * Date-only values are left unchanged so legacy `YYYY-MM-DD` fields do not shift.
13
- */
14
- export function utcTimeframeToLocal(value) {
15
- if (value == null || value === '') {
16
- return value ?? null;
17
- }
18
- const raw = String(value).trim();
19
- const match = raw.match(TIMEFRAME_DATE_TIME);
20
- if (!match) {
21
- return raw;
22
- }
23
- const utcDate = new Date(Date.UTC(Number(match[1]), Number(match[2]) - 1, Number(match[3]), Number(match[4]), Number(match[5]), Number(match[6])));
24
- if (isNaN(utcDate.getTime())) {
25
- return raw;
26
- }
27
- return formatLocalDateTime(utcDate);
28
- }
29
- export function toLocalDashboardTimeframe(timeframe) {
30
- if (!timeframe || typeof timeframe !== 'object') {
31
- return timeframe;
32
- }
33
- const source = timeframe;
34
- const converted = { ...source };
35
- ['from', 'to', 'start_date', 'end_date'].forEach((key) => {
36
- if (converted[key] != null && converted[key] !== '') {
37
- converted[key] = utcTimeframeToLocal(String(converted[key]));
38
- }
39
- });
40
- return converted;
41
- }
42
- /** Converts `timeframe` (and nested `dashboard.timeframe`) on a dashboard API item. */
43
- export function applyLocalTimeframeToDashboard(dashboard) {
44
- if (!dashboard || typeof dashboard !== 'object') {
45
- return dashboard;
46
- }
47
- const item = dashboard;
48
- const next = { ...item };
49
- if (item['timeframe']) {
50
- next['timeframe'] = toLocalDashboardTimeframe(item['timeframe']);
51
- }
52
- if (item['time_frame_from'] != null) {
53
- next['time_frame_from'] = utcTimeframeToLocal(item['time_frame_from']);
54
- }
55
- if (item['time_frame_to'] != null) {
56
- next['time_frame_to'] = utcTimeframeToLocal(item['time_frame_to']);
57
- }
58
- const nested = item['dashboard'];
59
- if (nested && typeof nested === 'object' && nested !== dashboard) {
60
- next['dashboard'] = applyLocalTimeframeToDashboard(nested);
61
- }
62
- return next;
63
- }
64
- /** Walks getCustomDashboards / customDashboard envelopes and localizes timeframe. */
65
- export function applyLocalTimeframeToDashboardResponse(res) {
66
- if (!res || typeof res !== 'object') {
67
- return res;
68
- }
69
- if (Array.isArray(res)) {
70
- return res.map((item) => applyLocalTimeframeToDashboard(item));
71
- }
72
- const body = res;
73
- let next = { ...body };
74
- if (body['timeframe'] || body['time_frame_from'] || body['time_frame_to']) {
75
- next = applyLocalTimeframeToDashboard(next);
76
- }
77
- if (Array.isArray(body['dashboards'])) {
78
- next['dashboards'] = body['dashboards'].map((item) => applyLocalTimeframeToDashboard(item));
79
- }
80
- if (body['dashboard'] && typeof body['dashboard'] === 'object') {
81
- next['dashboard'] = applyLocalTimeframeToDashboard(body['dashboard']);
82
- }
83
- if (body['data'] && typeof body['data'] === 'object') {
84
- next['data'] = applyLocalTimeframeToDashboardResponse(body['data']);
85
- }
86
- return next;
87
- }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXRpbWVmcmFtZS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JlYXRlLWRhc2hib2FyZC9zcmMvbGliL2NyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyL3V0aWxzL2Rhc2hib2FyZC10aW1lZnJhbWUudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLG1CQUFtQixHQUFHLHFEQUFxRCxDQUFDO0FBRWxGLFNBQVMsR0FBRyxDQUFDLEtBQWE7SUFDeEIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxJQUFVO0lBQ3JDLE9BQU8sQ0FDTCxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRztRQUMzRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQzlFLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsS0FBZ0M7SUFFaEMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7UUFDakMsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDO0tBQ3RCO0lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxL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RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsc0NBQXNDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDckU7SUFFRCxPQUFPLElBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVElNRUZSQU1FX0RBVEVfVElNRSA9IC9eKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSlbIFRdKFxcZHsyfSk6KFxcZHsyfSk6KFxcZHsyfSkvO1xyXG5cclxuZnVuY3Rpb24gcGFkKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gIHJldHVybiBTdHJpbmcodmFsdWUpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZvcm1hdExvY2FsRGF0ZVRpbWUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIChcclxuICAgIGAke2RhdGUuZ2V0RnVsbFllYXIoKX0tJHtwYWQoZGF0ZS5nZXRNb250aCgpICsgMSl9LSR7cGFkKGRhdGUuZ2V0RGF0ZSgpKX0gYCArXHJcbiAgICBgJHtwYWQoZGF0ZS5nZXRIb3VycygpKX06JHtwYWQoZGF0ZS5nZXRNaW51dGVzKCkpfToke3BhZChkYXRlLmdldFNlY29uZHMoKSl9YFxyXG4gICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBUEkgdGltZWZyYW1lIHZhbHVlcyBhcmUgVVRDIGBZWVlZLU1NLUREIEhIOm1tOnNzYCB3aXRob3V0IGEgem9uZSBzdWZmaXguXHJcbiAqIENvbnZlcnQgdG8gdGhlIGJyb3dzZXIvc3lzdGVtIHRpbWV6b25lIGFuZCBrZWVwIHRoZSBzYW1lIGZvcm1hdC5cclxuICogRGF0ZS1vbmx5IHZhbHVlcyBhcmUgbGVmdCB1bmNoYW5nZWQgc28gbGVnYWN5IGBZWVlZLU1NLUREYCBmaWVsZHMgZG8gbm90IHNoaWZ0LlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHV0Y1RpbWVmcmFtZVRvTG9jYWwoXHJcbiAgdmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcclxuKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09ICcnKSB7XHJcbiAgICByZXR1cm4gdmFsdWUgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIGNvbnN0IHJhdyA9IFN0cmluZyh2YWx1ZSkudHJpbSgpO1xyXG4gIGNvbnN0IG1hdGNoID0gcmF3Lm1hdGNoKFRJTUVGUkFNRV9EQVRFX1RJTUUpO1xyXG4gIGlmICghbWF0Y2gpIHtcclxuICAgIHJldHVybiByYXc7XHJcbiAgfVxyXG5cclxuICBjb25zdCB1dGNEYXRlID0gbmV3IERhdGUoXHJcbiAgICBEYXRlLlVUQyhcclxuICAgICAgTnVtYmVyKG1hdGNoWzFdKSxcclxuICAgICAgTnVtYmVyKG1hdGNoWzJdKSAtIDEsXHJcbiAgICAgIE51bWJlcihtYXRjaFszXSksXHJcbiAgICAgIE51bWJlcihtYXRjaFs0XSksXHJcbiAgICAgIE51bWJlcihtYXRjaFs1XSksXHJcbiAgICAgIE51bWJlcihtYXRjaFs2XSlcclxuICAgIClcclxuICApO1xyXG4gIGlmIChpc05hTih1dGNEYXRlLmdldFRpbWUoKSkpIHtcclxuICAgIHJldHVybiByYXc7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZm9ybWF0TG9jYWxEYXRlVGltZSh1dGNEYXRlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRvTG9jYWxEYXNoYm9hcmRUaW1lZnJhbWU8VD4odGltZWZyYW1lOiBUKTogVCB7XHJcbiAgaWYgKCF0aW1lZnJhbWUgfHwgdHlwZW9mIHRpbWVmcmFtZSAhPT0gJ29iamVjdCcpIHtcclxuICAgIHJldHVybiB0aW1lZnJhbWU7XHJcbiAgfVxyXG5cclxuICBjb25zdCBzb3VyY2UgPSB0aW1lZnJhbWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcbiAgY29uc3QgY29udmVydGVkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgLi4uc291cmNlIH07XHJcbiAgWydmcm9tJywgJ3RvJywgJ3N0YXJ0X2RhdGUnLCAnZW5kX2RhdGUnXS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgIGlmIChjb252ZXJ0ZWRba2V5XSAhPSBudWxsICYmIGNvbnZlcnRlZFtrZXldICE9PSAnJykge1xyXG4gICAgICBjb252ZXJ0ZWRba2V5XSA9IHV0Y1RpbWVmcmFtZVRvTG9jYWwoU3RyaW5nKGNvbnZlcnRlZFtrZXldKSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGNvbnZlcnRlZCBhcyBUO1xyXG59XHJcblxyXG4vKiogQ29udmVydHMgYHRpbWVmcmFtZWAgKGFuZCBuZXN0ZWQgYGRhc2hib2FyZC50aW1lZnJhbWVgKSBvbiBhIGRhc2hib2FyZCBBUEkgaXRlbS4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5TG9jYWxUaW1lZnJhbWVUb0Rhc2hib2FyZDxUPihkYXNoYm9hcmQ6IFQpOiBUIHtcclxuICBpZiAoIWRhc2hib2FyZCB8fCB0eXBlb2YgZGFzaGJvYXJkICE9PSAnb2JqZWN0Jykge1xyXG4gICAgcmV0dXJuIGRhc2hib2FyZDtcclxuICB9XHJcblxyXG4gIGNvbnN0IGl0ZW0gPSBkYXNoYm9hcmQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcbiAgY29uc3QgbmV4dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IC4uLml0ZW0gfTtcclxuXHJcbiAgaWYgKGl0ZW1bJ3RpbWVmcmFtZSddKSB7XHJcbiAgICBuZXh0Wyd0aW1lZnJhbWUnXSA9IHRvTG9jYWxEYXNoYm9hcmRUaW1lZnJhbWUoaXRlbVsndGltZWZyYW1lJ10pO1xyXG4gIH1cclxuICBpZiAoaXRlbVsndGltZV9mcmFtZV9mcm9tJ10gIT0gbnVsbCkge1xyXG4gICAgbmV4dFsndGltZV9mcmFtZV9mcm9tJ10gPSB1dGNUaW1lZnJhbWVUb0xvY2FsKFxyXG4gICAgICBpdGVtWyd0aW1lX2ZyYW1lX2Zyb20nXSBhcyBzdHJpbmdcclxuICAgICk7XHJcbiAgfVxyXG4gIGlmIChpdGVtWyd0aW1lX2ZyYW1lX3RvJ10gIT0gbnVsbCkge1xyXG4gICAgbmV4dFsndGltZV9mcmFtZV90byddID0gdXRjVGltZWZyYW1lVG9Mb2NhbChpdGVtWyd0aW1lX2ZyYW1lX3RvJ10gYXMgc3RyaW5nKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IG5lc3RlZCA9IGl0ZW1bJ2Rhc2hib2FyZCddO1xyXG4gIGlmIChuZXN0ZWQgJiYgdHlwZW9mIG5lc3RlZCA9PT0gJ29iamVjdCcgJiYgbmVzdGVkICE9PSBkYXNoYm9hcmQpIHtcclxuICAgIG5leHRbJ2Rhc2hib2FyZCddID0gYXBwbHlMb2NhbFRpbWVmcmFtZVRvRGFzaGJvYXJkKG5lc3RlZCk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbmV4dCBhcyBUO1xyXG59XHJcblxyXG4vKiogV2Fsa3MgZ2V0Q3VzdG9tRGFzaGJvYXJkcyAvIGN1c3RvbURhc2hib2FyZCBlbnZlbG9wZXMgYW5kIGxvY2FsaXplcyB0aW1lZnJhbWUuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhcHBseUxvY2FsVGltZWZyYW1lVG9EYXNoYm9hcmRSZXNwb25zZTxUPihyZXM6IFQpOiBUIHtcclxuICBpZiAoIXJlcyB8fCB0eXBlb2YgcmVzICE9PSAnb2JqZWN0Jykge1xyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcblxyXG4gIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcclxuICAgIHJldHVybiByZXMubWFwKChpdGVtKSA9PiBhcHBseUxvY2FsVGltZWZyYW1lVG9EYXNoYm9hcmQoaXRlbSkpIGFzIFQ7XHJcbiAgfVxyXG5cclxuICBjb25zdCBib2R5ID0gcmVzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xyXG4gIGxldCBuZXh0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgLi4uYm9keSB9O1xyXG5cclxuICBpZiAoYm9keVsndGltZWZyYW1lJ10gfHwgYm9keVsndGltZV9mcmFtZV9mcm9tJ10gfHwgYm9keVsndGltZV9mcmFtZV90byddKSB7XHJcbiAgICBuZXh0ID0gYXBwbHlMb2NhbFRpbWVmcmFtZVRvRGFzaGJvYXJkKG5leHQpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xyXG4gIH1cclxuICBpZiAoQXJyYXkuaXNBcnJheShib2R5WydkYXNoYm9hcmRzJ10pKSB7XHJcbiAgICBuZXh0WydkYXNoYm9hcmRzJ10gPSAoYm9keVsnZGFzaGJvYXJkcyddIGFzIHVua25vd25bXSkubWFwKChpdGVtKSA9PlxyXG4gICAgICBhcHBseUxvY2FsVGltZWZyYW1lVG9EYXNoYm9hcmQoaXRlbSlcclxuICAgICk7XHJcbiAgfVxyXG4gIGlmIChib2R5WydkYXNoYm9hcmQnXSAmJiB0eXBlb2YgYm9keVsnZGFzaGJvYXJkJ10gPT09ICdvYmplY3QnKSB7XHJcbiAgICBuZXh0WydkYXNoYm9hcmQnXSA9IGFwcGx5TG9jYWxUaW1lZnJhbWVUb0Rhc2hib2FyZChib2R5WydkYXNoYm9hcmQnXSk7XHJcbiAgfVxyXG4gIGlmIChib2R5WydkYXRhJ10gJiYgdHlwZW9mIGJvZHlbJ2RhdGEnXSA9PT0gJ29iamVjdCcpIHtcclxuICAgIG5leHRbJ2RhdGEnXSA9IGFwcGx5TG9jYWxUaW1lZnJhbWVUb0Rhc2hib2FyZFJlc3BvbnNlKGJvZHlbJ2RhdGEnXSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbmV4dCBhcyBUO1xyXG59XHJcbiJdfQ==
@@ -1,11 +0,0 @@
1
- /**
2
- * API timeframe values are UTC `YYYY-MM-DD HH:mm:ss` without a zone suffix.
3
- * Convert to the browser/system timezone and keep the same format.
4
- * Date-only values are left unchanged so legacy `YYYY-MM-DD` fields do not shift.
5
- */
6
- export declare function utcTimeframeToLocal(value: string | null | undefined): string | null;
7
- export declare function toLocalDashboardTimeframe<T>(timeframe: T): T;
8
- /** Converts `timeframe` (and nested `dashboard.timeframe`) on a dashboard API item. */
9
- export declare function applyLocalTimeframeToDashboard<T>(dashboard: T): T;
10
- /** Walks getCustomDashboards / customDashboard envelopes and localizes timeframe. */
11
- export declare function applyLocalTimeframeToDashboardResponse<T>(res: T): T;