vc-create-dashboard 3.0.87 → 3.0.88
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/esm2022/lib/create-dashboard-container/services/create-dashboard.service.mjs +9 -4
- package/esm2022/lib/create-dashboard-container/utils/dashboard-timeframe.util.mjs +88 -0
- package/fesm2022/vc-create-dashboard.mjs +95 -3
- package/fesm2022/vc-create-dashboard.mjs.map +1 -1
- package/lib/create-dashboard-container/utils/dashboard-timeframe.util.d.ts +11 -0
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@ import { Injectable, Optional } from '@angular/core';
|
|
|
3
3
|
import { JwtHelperService } from '@auth0/angular-jwt';
|
|
4
4
|
import { of } from 'rxjs';
|
|
5
5
|
import { catchError, map, retry } from 'rxjs/operators';
|
|
6
|
+
import { applyLocalTimeframeToDashboardResponse } from '../utils/dashboard-timeframe.util';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@angular/common/http";
|
|
8
9
|
import * as i2 from "../../configurations";
|
|
@@ -159,7 +160,7 @@ export class CreateDashboardService {
|
|
|
159
160
|
fetchCustomDashboardById(id) {
|
|
160
161
|
return this.http
|
|
161
162
|
.get(`${this.env.dashboard}customDashboard/${id}`, this.httpOptions)
|
|
162
|
-
.pipe(retry(2));
|
|
163
|
+
.pipe(map((res) => applyLocalTimeframeToDashboardResponse(res)), retry(2));
|
|
163
164
|
}
|
|
164
165
|
getUserInformation() {
|
|
165
166
|
return this.http
|
|
@@ -182,10 +183,14 @@ export class CreateDashboardService {
|
|
|
182
183
|
.pipe(retry(2));
|
|
183
184
|
}
|
|
184
185
|
createDashboard(payload) {
|
|
185
|
-
return this.http
|
|
186
|
+
return this.http
|
|
187
|
+
.post(this.env.dashboard + 'customDashboard', payload, this.httpOptions)
|
|
188
|
+
.pipe(map((res) => applyLocalTimeframeToDashboardResponse(res)));
|
|
186
189
|
}
|
|
187
190
|
updateDashboard(payload, id) {
|
|
188
|
-
return this.http
|
|
191
|
+
return this.http
|
|
192
|
+
.put(this.env.dashboard + 'customDashboard/' + id, payload, this.httpOptions)
|
|
193
|
+
.pipe(map((res) => applyLocalTimeframeToDashboardResponse(res)));
|
|
189
194
|
}
|
|
190
195
|
saveWidgetDetails(payload) {
|
|
191
196
|
return this.http.post(this.env.dashboard + 'createWidgets/creator', payload, this.httpOptions);
|
|
@@ -219,4 +224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
219
224
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.Configurations, decorators: [{
|
|
220
225
|
type: Optional
|
|
221
226
|
}] }]; } });
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRhc2hib2FyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JlYXRlLWRhc2hib2FyZC9zcmMvbGliL2NyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyL3NlcnZpY2VzL2NyZWF0ZS1kYXNoYm9hcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU14RCxNQUFNLE9BQU8sc0JBQXNCO0lBS3ZCO0lBSkgsR0FBRyxDQUFPO0lBRWpCLFdBQVcsQ0FBTTtJQUNqQixZQUNVLElBQWdCLEVBQ1osTUFBdUI7UUFEM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUd4QixJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUM3QjtRQUVELElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO2dCQUN2QixjQUFjLEVBQUUsa0JBQWtCO2FBQ25DLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsR0FBUztRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUNGLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZTtZQUN2Qiw0Q0FBNEM7WUFDNUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxD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TyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUN4QyxJQUFJLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVO29CQUNsQyxFQUFFLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRO2lCQUMvQixDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQ1Q7U0FDRixDQUFBO0lBQ0gsQ0FBQzt3R0FuU1Usc0JBQXNCOzRHQUF0QixzQkFBc0IsY0FGckIsTUFBTTs7NEZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBT0ksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCByZXRyeSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9ucyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlRGFzaGJvYXJkU2VydmljZSB7XHJcbiAgcHVibGljIGVudiE6IGFueTtcclxuXHJcbiAgaHR0cE9wdGlvbnM6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXHJcbiAgKSB7XHJcbiAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmh0dHBPcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgIH0pLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogRmV0Y2hlcyB0aGUgT3JnYW5pemF0aW9uIFVzZXJzIExpc3QgYnkgbWFraW5nIGFuIEFQSSBjYWxsXHJcbiAgICovXHJcbiAgZ2V0T3JnYW5pemF0aW9uVXNlcnModXJsPzogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoXHJcbiAgICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArXHJcbiAgICAgICAgICAnb3JnYW5pc2F0aW9uVXNlcnNMaXN0JnBhZ2luYXRpb25UeXBlPXNtYWxsJyArXHJcbiAgICAgICAgICAodXJsLnAgPyAnJnA9JyArIHVybC5wIDogJycpICtcclxuICAgICAgICAgICh1cmwudHlwZSA/ICcmdHlwZT0nICsgdXJsLnR5cGUgOiAnJykgK1xyXG4gICAgICAgICAgKHVybC5xID8gJyZxPScgKyB1cmwucSA6ICcnKSxcclxuICAgICAgICB0aGlzLmh0dHBPcHRpb25zXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9KSxcclxuICAgICAgICByZXRyeSgyKSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IG9mKGVycikpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBPcmdhbml6YXRpb25Vc2VycyBkZXRhaWxzIG9mIHVzZXJzIExpc3QgdG8gc2V0IHBhZ2luYXRpb24gZGV0YWlscyBpbmNsdWRpbmcgbnVtYmVyIG9mXHJcbiAgICogcGFnZXMgYW5kIHJlY29yZHMgbGltaXQgcGVyIHBhZ2UsXHJcbiAgICogQHBhcmFtIHVybCAgY29udGFpbnMgaW5mbyBhYm91dCB0eXBlICYgc2VhcmNoIHF1ZXJ5XHJcbiAgICovXHJcbiAgZ2V0T3JnYW5pemF0aW9uVXNlcnNDb3VudCh1cmw/OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChcclxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICtcclxuICAgICAgICAgICdvcmdhbmlzYXRpb25Vc2Vyc0NvdW50JnBhZ2luYXRpb25UeXBlPXNtYWxsJyArXHJcbiAgICAgICAgICAodXJsLnR5cGUgPyAnJnR5cGU9JyArIHVybC50eXBlIDogJycpICtcclxuICAgICAgICAgICh1cmwucSA/ICcmcT0nICsgdXJsLnEgOiAnJyksXHJcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gb2YoZXJyKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGdldENhdGVnb3J5TGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/LnJpc2tHZXQgKyAnY2F0ZWdvcnkvbGlzdCcpXHJcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYWxsIHVzZXJzIGJ5IG1ha2luZyBhbiBBUEkgY2FsbFxyXG4gICAqL1xyXG4gIGdldEFsbFVzZXJzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KFxyXG4gICAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgKyAnc2VsZWN0QWxsVXNlcnMmdHlwZT1hbGwnLFxyXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnNcclxuICAgICAgKVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiAgRmV0Y2hlcyBhbGwgZ3JvdXBzIGJ5IG1ha2luZyBhbiBBUEkgY2FsbFxyXG4gICAqICovXHJcbiAgZ2V0QWxsR3JvdXBzKHBhcmFtcz86IEh0dHBQYXJhbXMpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChcclxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICtcclxuICAgICAgICAgICdncm91cHNMaXN0JnBlcm1UeXBlPWRhc2hib2FyZCZtZW1iZXJFeGlzdHM9MScsXHJcbiAgICAgICAgeyBwYXJhbXMgfVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCBieSBtYWtpbmcgYW4gQVBJIGNhbGxcclxuICAgKi9cclxuICBnZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgKyAncmVzcG9uc2liaWxpdHlDZW50ZXJUcmVlJylcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcGxpYW5jZUNhdGVnb3JpZXNMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0PGFueVtdPihcclxuICAgICAgICB0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ2NvbXBsaWFuY2VDYXRlZ29yeS9DYXRlZ29yeUxpc3RUcmVlJ1xyXG4gICAgICApXHJcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIGdldENvbXBsaWFuY2VDYXRlZ29yaWVzTGlzdEZyb21HbG9iYWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQ8YW55W10+KFxyXG4gICAgICAgIHRoaXMuZW52Py5jb21wbGlhbmNlR2V0ICtcclxuICAgICAgICAgICdjb21wbGlhbmNlQ2F0ZWdvcnkvQ2F0ZWdvcnlMaXN0VHJlZSZwcm9ncmFtPTEmaXNEYXNoYm9hcmQ9dHJ1ZSdcclxuICAgICAgKVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXREYXNoYm9hcmQocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KHRoaXMuZW52LmRhc2hib2FyZCArICdDcmVhdGVEYXNoYm9hcmQnLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBEYXNoYm9hcmQgZGV0YWlscyBmb3IgZGF0YSBwb3B1bGF0aW9uIHRvIEVkaXQgdGhlIGRhc2hib2FyZFxyXG4gICAqIEBwYXJhbSBpZFxyXG4gICAqL1xyXG4gIC8qKiBAZGVwcmVjYXRlZCBMZWdhY3kgR2xvYmFsLURhc2hib2FyZCBlZGl0IGZldGNoOyBjdXN0b20gZGFzaGJvYXJkcyB1c2UgZmV0Y2hDdXN0b21EYXNoYm9hcmRCeUlkICsgZ2V0V2lkZ2V0cy4gKi9cclxuICBmZXRjaERhc2hib2FyZChpZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5lbnYuZGFzaGJvYXJkICsgaWQgKyAnP21vZGU9ZWRpdCcsIHRoaXMuaHR0cE9wdGlvbnMpXHJcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVkaXQgbW9kZSBvbmx5IOKAlCBHRVQgR2xvYmFsLURhc2hib2FyZC9nZXRXaWRnZXRzP2Rhc2hib2FyZElkPXtjZGlkfVxyXG4gICAqIEBwYXJhbSBjZGlkIEN1c3RvbSBkYXNoYm9hcmQgaWQgKGUuZy4gNDM4RjhLU0syMiksIG5vdCBudW1lcmljIHJlY29yZCBpZFxyXG4gICAqL1xyXG4gIGZldGNoQ3VzdG9tRGFzaGJvYXJkV2lkZ2V0RGV0YWlscyhjZGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChcclxuICAgICAgICBgJHt0aGlzLmVudi5kYXNoYm9hcmR9Z2V0V2lkZ2V0cz9kYXNoYm9hcmRJZD0ke2VuY29kZVVSSUNvbXBvbmVudChjZGlkKX1gLFxyXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnNcclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiB0aGlzLm5vcm1hbGl6ZVdpZGdldERldGFpbHNSZXNwb25zZShyZXMpKSxcclxuICAgICAgICByZXRyeSgyKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgbm9ybWFsaXplV2lkZ2V0RGV0YWlsc1Jlc3BvbnNlKHJlczogYW55KToge1xyXG4gICAgd2lkZ2V0QXJyOiBhbnlbXTtcclxuICAgIGFsbFdpZGdldHNBcnJheTogYW55W107XHJcbiAgICBhY3RpdmVXaWRnZXRBcnI6IGFueVtdO1xyXG4gIH0ge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHJlcz8uZGF0YSA/PyByZXM7XHJcbiAgICBjb25zdCBjb2xsZWN0ID0gKC4uLmNhbmRpZGF0ZXM6IGFueVtdKTogYW55W10gPT4ge1xyXG4gICAgICBjb25zdCBjb2xsZWN0ZWQ6IGFueVtdID0gW107XHJcbiAgICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgICAgY2FuZGlkYXRlcy5mb3JFYWNoKChjYW5kaWRhdGUpID0+IHtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2FuZGlkYXRlKSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYW5kaWRhdGUuZm9yRWFjaCgod2lkZ2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNvZGUgPSB3aWRnZXQ/LndpZGdldF9jb2RlID8/IHdpZGdldD8ud2lkZ2V0Q29kZTtcclxuICAgICAgICAgIGNvbnN0IGtleSA9IGNvZGUgIT0gbnVsbCA/IFN0cmluZyhjb2RlKSA6IEpTT04uc3RyaW5naWZ5KHdpZGdldCk7XHJcbiAgICAgICAgICBpZiAoc2Vlbi5oYXMoa2V5KSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzZWVuLmFkZChrZXkpO1xyXG4gICAgICAgICAgY29sbGVjdGVkLnB1c2god2lkZ2V0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBjb2xsZWN0ZWQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHdpZGdldEFyciA9IGNvbGxlY3QoXHJcbiAgICAgIHBheWxvYWQ/LndpZGdldEFycixcclxuICAgICAgcmVzPy53aWRnZXRBcnIsXHJcbiAgICAgIHBheWxvYWQ/LndpZGdldF9kZXRhaWxzLFxyXG4gICAgICBBcnJheS5pc0FycmF5KHBheWxvYWQpID8gcGF5bG9hZCA6IG51bGwsXHJcbiAgICAgIEFycmF5LmlzQXJyYXkocmVzPy5kYXRhKSA/IHJlcy5kYXRhIDogbnVsbFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGFsbFdpZGdldHNBcnJheSA9IGNvbGxlY3QoXHJcbiAgICAgIHBheWxvYWQ/LmFsbFdpZGdldHNBcnJheSxcclxuICAgICAgcGF5bG9hZD8uYWxsX3dpZGdldHMsXHJcbiAgICAgIHBheWxvYWQ/LmFsbFdpZGdldHMsXHJcbiAgICAgIHBheWxvYWQ/LmFsbFdpZGdldEFycmF5LFxyXG4gICAgICBwYXlsb2FkPy53aWRnZXRzLFxyXG4gICAgICByZXM/LmFsbFdpZGdldHNBcnJheSxcclxuICAgICAgcmVzPy5hbGxfd2lkZ2V0cyxcclxuICAgICAgcmVzPy5hbGxXaWRnZXRzLFxyXG4gICAgICByZXM/LndpZGdldHMsXHJcbiAgICAgIHdpZGdldEFyclxyXG4gICAgKTtcclxuICAgIGNvbnN0IGFjdGl2ZVdpZGdldEFyciA9IGNvbGxlY3QoXHJcbiAgICAgIHBheWxvYWQ/LmFjdGl2ZVdpZGdldEFycixcclxuICAgICAgcmVzPy5hY3RpdmVXaWRnZXRBcnIsXHJcbiAgICAgIHdpZGdldEFyclxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB3aWRnZXRBcnIsXHJcbiAgICAgIGFsbFdpZGdldHNBcnJheTogYWxsV2lkZ2V0c0FycmF5Lmxlbmd0aCA/IGFsbFdpZGdldHNBcnJheSA6IHdpZGdldEFycixcclxuICAgICAgYWN0aXZlV2lkZ2V0QXJyOiBhY3RpdmVXaWRnZXRBcnIubGVuZ3RoID8gYWN0aXZlV2lkZ2V0QXJyIDogd2lkZ2V0QXJyLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldFNhaWxzUHJvZ3JhbUxpc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5lbnYuY29tcGxpYW5jZUdldCArICdzYWlsc1Byb2dyYW1MaXN0JywgdGhpcy5odHRwT3B0aW9ucylcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvZ3JhbUNhdGVnb3JpZXMocHJvZ3JhbUlkOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChcclxuICAgICAgICBgJHt0aGlzLmVudi5jb21wbGlhbmNlR2V0fXNhaWxzUHJvZ3JhbUNhdGVnb3JpZXMmaWQ9JHtwcm9ncmFtSWR9YCxcclxuICAgICAgICB0aGlzLmh0dHBPcHRpb25zXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEZ1bGwgY3VzdG9tIGRhc2hib2FyZCBwYXlsb2FkIChpbmNsdWRlcyByZXNwb25zaWJpbGl0eUNlbnRlcklkLCBwcm9ncmFtSWQsIGV0Yy4pLiAqL1xyXG4gIGZldGNoQ3VzdG9tRGFzaGJvYXJkQnlJZChpZDogc3RyaW5nIHwgbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoYCR7dGhpcy5lbnYuZGFzaGJvYXJkfWN1c3RvbURhc2hib2FyZC8ke2lkfWAsIHRoaXMuaHR0cE9wdGlvbnMpXHJcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0VXNlckluZm9ybWF0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KFxyXG4gICAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgKyAndXNlcnMmaWQ9JyArIHRoaXM/Ll9JRCgpLFxyXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnNcclxuICAgICAgKVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG4gIF9JRCgpIHtcclxuICAgIGNvbnN0IGhlbHBlciA9IG5ldyBKd3RIZWxwZXJTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCBteVJhd1Rva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbnRVc2VyJykgfHwgJ3t9JztcclxuICAgIGNvbnN0IGlzRXhwaXJlZCA9IGhlbHBlcj8uaXNUb2tlbkV4cGlyZWQobXlSYXdUb2tlbik7XHJcbiAgICBpZiAoaXNFeHBpcmVkID09PSBmYWxzZSkge1xyXG4gICAgICBjb25zdCB0b2tlbkluZm8gPSBoZWxwZXI/LmRlY29kZVRva2VuKG15UmF3VG9rZW4pO1xyXG4gICAgICByZXR1cm4gdG9rZW5JbmZvLl9pZDtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGNoZWNrRHVwbGljYXRlRGFzaGJvYXJkTmFtZShwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QoXHJcbiAgICAgICAgdGhpcy5lbnYuZGFzaGJvYXJkICsgJ0R1cGxpY2F0ZURhc2hib2FyZCcsXHJcbiAgICAgICAgcGF5bG9hZCxcclxuICAgICAgICB0aGlzLmh0dHBPcHRpb25zXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuY3JlYXRlRGFzaGJvYXJkKHBheWxvYWQ6IGFueSkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmVudi5kYXNoYm9hcmQgKyAnY3VzdG9tRGFzaGJvYXJkJywgcGF5bG9hZCwgdGhpcy5odHRwT3B0aW9ucylcclxufVxyXG5cclxudXBkYXRlRGFzaGJvYXJkKHBheWxvYWQ6IGFueSwgaWQ6IGFueSkge1xyXG4gIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuZW52LmRhc2hib2FyZCArICdjdXN0b21EYXNoYm9hcmQvJyArIGlkLCBwYXlsb2FkLCB0aGlzLmh0dHBPcHRpb25zKVxyXG59XHJcblxyXG5zYXZlV2lkZ2V0RGV0YWlscyhwYXlsb2FkOiBhbnkpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbnYuZGFzaGJvYXJkICsgJ2NyZWF0ZVdpZGdldHMvY3JlYXRvcicsIHBheWxvYWQsIHRoaXMuaHR0cE9wdGlvbnMpXHJcbn1cclxuICBidWlsZFBheWxvYWQocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkYXNoYm9hcmQ6IHtcclxuICAgICAgICBuYW1lOiBwYXlsb2FkLmRhc2hib2FyZF9uYW1lLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBwYXlsb2FkLmRlc2NyaXB0aW9uWzBdLmNvbnRlbnQsXHJcbiAgICAgICAgdmlld2VyOiB7XHJcbiAgICAgICAgICB1c2VySWQ6IHBheWxvYWQudmlzaWJsZV90b191c2VycyxcclxuICAgICAgICAgIHVzZXJHcm91cElkOiBwYXlsb2FkLnZpc2libGVfdG9fZ3JvdXBzLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJJZDogcGF5bG9hZC5yZXNwb25zaWJpbGl0eV9jZW50ZXIsXHJcbiAgICAgICAgcHJvZ3JhbUlkOiBwYXlsb2FkLnByb2dyYW0uYWxsX3Byb2dyYW1zLm1hcCgocHJvZ3JhbTogYW55KSA9PiBwcm9ncmFtLmlkKSxcclxuICAgICAgICB0aW1lZnJhbWU6IHBheWxvYWQudGltZWZyYW1lLnN0YXJ0X2RhdGUgPyB7XHJcbiAgICAgICAgICBmcm9tOiBwYXlsb2FkLnRpbWVmcmFtZS5zdGFydF9kYXRlLFxyXG4gICAgICAgICAgdG86IHBheWxvYWQudGltZWZyYW1lLmVuZF9kYXRlLFxyXG4gICAgICAgIH0gOiBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRhc2hib2FyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JlYXRlLWRhc2hib2FyZC9zcmMvbGliL2NyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyL3NlcnZpY2VzL2NyZWF0ZS1kYXNoYm9hcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7OztBQUszRixNQUFNLE9BQU8sc0JBQXNCO0lBS3ZCO0lBSkgsR0FBRyxDQUFPO0lBRWpCLFdBQVcsQ0FBTTtJQUNqQixZQUNVLElBQWdCLEVBQ1osTUFBdUI7UUFEM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUd4QixJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUM3QjtRQUVELElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO2dCQUN2QixjQUFjLEVBQUUsa0JBQWtCO2FBQ25DLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsR0FBUztRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUNGLElBQUksQ0FBQyxHQUFHLEVBQUUs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V0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU87Z0JBQzNDLE1BQU0sRUFBRTtvQkFDTixNQUFNLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtvQkFDaEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUI7aUJBQ3ZDO2dCQUNELHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxxQkFBcUI7Z0JBQ3JELFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3pFLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ3hDLElBQUksRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVU7b0JBQ2xDLEVBQUUsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVE7aUJBQy9CLENBQUMsQ0FBQyxDQUFDLElBQUk7YUFDVDtTQUNGLENBQUE7SUFDSCxDQUFDO3dHQTFTVSxzQkFBc0I7NEdBQXRCLHNCQUFzQixjQUZyQixNQUFNOzs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFPSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEp3dEhlbHBlclNlcnZpY2UgfSBmcm9tICdAYXV0aDAvYW5ndWxhci1qd3QnO1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb25zJztcclxuaW1wb3J0IHsgYXBwbHlMb2NhbFRpbWVmcmFtZVRvRGFzaGJvYXJkUmVzcG9uc2UgfSBmcm9tICcuLi91dGlscy9kYXNoYm9hcmQtdGltZWZyYW1lLnV0aWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZURhc2hib2FyZFNlcnZpY2Uge1xyXG4gIHB1YmxpYyBlbnYhOiBhbnk7XHJcblxyXG4gIGh0dHBPcHRpb25zOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9uc1xyXG4gICkge1xyXG4gICAgaWYgKGNvbmZpZykge1xyXG4gICAgICB0aGlzLmVudiA9IGNvbmZpZy5lbnZDb25maWc7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5odHRwT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICB9KSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIEZldGNoZXMgdGhlIE9yZ2FuaXphdGlvbiBVc2VycyBMaXN0IGJ5IG1ha2luZyBhbiBBUEkgY2FsbFxyXG4gICAqL1xyXG4gIGdldE9yZ2FuaXphdGlvblVzZXJzKHVybD86IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KFxyXG4gICAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgK1xyXG4gICAgICAgICAgJ29yZ2FuaXNhdGlvblVzZXJzTGlzdCZwYWdpbmF0aW9uVHlwZT1zbWFsbCcgK1xyXG4gICAgICAgICAgKHVybC5wID8gJyZwPScgKyB1cmwucCA6ICcnKSArXHJcbiAgICAgICAgICAodXJsLnR5cGUgPyAnJnR5cGU9JyArIHVybC50eXBlIDogJycpICtcclxuICAgICAgICAgICh1cmwucSA/ICcmcT0nICsgdXJsLnEgOiAnJyksXHJcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgcmV0cnkoMiksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiBvZihlcnIpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgT3JnYW5pemF0aW9uVXNlcnMgZGV0YWlscyBvZiB1c2VycyBMaXN0IHRvIHNldCBwYWdpbmF0aW9uIGRldGFpbHMgaW5jbHVkaW5nIG51bWJlciBvZlxyXG4gICAqIHBhZ2VzIGFuZCByZWNvcmRzIGxpbWl0IHBlciBwYWdlLFxyXG4gICAqIEBwYXJhbSB1cmwgIGNvbnRhaW5zIGluZm8gYWJvdXQgdHlwZSAmIHNlYXJjaCBxdWVyeVxyXG4gICAqL1xyXG4gIGdldE9yZ2FuaXphdGlvblVzZXJzQ291bnQodXJsPzogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoXHJcbiAgICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArXHJcbiAgICAgICAgICAnb3JnYW5pc2F0aW9uVXNlcnNDb3VudCZwYWdpbmF0aW9uVHlwZT1zbWFsbCcgK1xyXG4gICAgICAgICAgKHVybC50eXBlID8gJyZ0eXBlPScgKyB1cmwudHlwZSA6ICcnKSArXHJcbiAgICAgICAgICAodXJsLnEgPyAnJnE9JyArIHVybC5xIDogJycpLFxyXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnNcclxuICAgICAgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlcykgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IG9mKGVycikpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Py5yaXNrR2V0ICsgJ2NhdGVnb3J5L2xpc3QnKVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGFsbCB1c2VycyBieSBtYWtpbmcgYW4gQVBJIGNhbGxcclxuICAgKi9cclxuICBnZXRBbGxVc2VycygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChcclxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICsgJ3NlbGVjdEFsbFVzZXJzJnR5cGU9YWxsJyxcclxuICAgICAgICB0aGlzLmh0dHBPcHRpb25zXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogIEZldGNoZXMgYWxsIGdyb3VwcyBieSBtYWtpbmcgYW4gQVBJIGNhbGxcclxuICAgKiAqL1xyXG4gIGdldEFsbEdyb3VwcyhwYXJhbXM/OiBIdHRwUGFyYW1zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoXHJcbiAgICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArXHJcbiAgICAgICAgICAnZ3JvdXBzTGlzdCZwZXJtVHlwZT1kYXNoYm9hcmQmbWVtYmVyRXhpc3RzPTEnLFxyXG4gICAgICAgIHsgcGFyYW1zIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QgYnkgbWFraW5nIGFuIEFQSSBjYWxsXHJcbiAgICovXHJcbiAgZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICsgJ3Jlc3BvbnNpYmlsaXR5Q2VudGVyVHJlZScpXHJcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIGdldENvbXBsaWFuY2VDYXRlZ29yaWVzTGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldDxhbnlbXT4oXHJcbiAgICAgICAgdGhpcy5lbnYuY29tcGxpYW5jZUdldCArICdjb21wbGlhbmNlQ2F0ZWdvcnkvQ2F0ZWdvcnlMaXN0VHJlZSdcclxuICAgICAgKVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb21wbGlhbmNlQ2F0ZWdvcmllc0xpc3RGcm9tR2xvYmFsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0PGFueVtdPihcclxuICAgICAgICB0aGlzLmVudj8uY29tcGxpYW5jZUdldCArXHJcbiAgICAgICAgICAnY29tcGxpYW5jZUNhdGVnb3J5L0NhdGVnb3J5TGlzdFRyZWUmcHJvZ3JhbT0xJmlzRGFzaGJvYXJkPXRydWUnXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0RGFzaGJvYXJkKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdCh0aGlzLmVudi5kYXNoYm9hcmQgKyAnQ3JlYXRlRGFzaGJvYXJkJywgcGF5bG9hZClcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgRGFzaGJvYXJkIGRldGFpbHMgZm9yIGRhdGEgcG9wdWxhdGlvbiB0byBFZGl0IHRoZSBkYXNoYm9hcmRcclxuICAgKiBAcGFyYW0gaWRcclxuICAgKi9cclxuICAvKiogQGRlcHJlY2F0ZWQgTGVnYWN5IEdsb2JhbC1EYXNoYm9hcmQgZWRpdCBmZXRjaDsgY3VzdG9tIGRhc2hib2FyZHMgdXNlIGZldGNoQ3VzdG9tRGFzaGJvYXJkQnlJZCArIGdldFdpZGdldHMuICovXHJcbiAgZmV0Y2hEYXNoYm9hcmQoaWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZW52LmRhc2hib2FyZCArIGlkICsgJz9tb2RlPWVkaXQnLCB0aGlzLmh0dHBPcHRpb25zKVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFZGl0IG1vZGUgb25seSDigJQgR0VUIEdsb2JhbC1EYXNoYm9hcmQvZ2V0V2lkZ2V0cz9kYXNoYm9hcmRJZD17Y2RpZH1cclxuICAgKiBAcGFyYW0gY2RpZCBDdXN0b20gZGFzaGJvYXJkIGlkIChlLmcuIDQzOEY4S1NLMjIpLCBub3QgbnVtZXJpYyByZWNvcmQgaWRcclxuICAgKi9cclxuICBmZXRjaEN1c3RvbURhc2hib2FyZFdpZGdldERldGFpbHMoY2RpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoXHJcbiAgICAgICAgYCR7dGhpcy5lbnYuZGFzaGJvYXJkfWdldFdpZGdldHM/ZGFzaGJvYXJkSWQ9JHtlbmNvZGVVUklDb21wb25lbnQoY2RpZCl9YCxcclxuICAgICAgICB0aGlzLmh0dHBPcHRpb25zXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXM6IGFueSkgPT4gdGhpcy5ub3JtYWxpemVXaWRnZXREZXRhaWxzUmVzcG9uc2UocmVzKSksXHJcbiAgICAgICAgcmV0cnkoMilcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIG5vcm1hbGl6ZVdpZGdldERldGFpbHNSZXNwb25zZShyZXM6IGFueSk6IHtcclxuICAgIHdpZGdldEFycjogYW55W107XHJcbiAgICBhbGxXaWRnZXRzQXJyYXk6IGFueVtdO1xyXG4gICAgYWN0aXZlV2lkZ2V0QXJyOiBhbnlbXTtcclxuICB9IHtcclxuICAgIGNvbnN0IHBheWxvYWQgPSByZXM/LmRhdGEgPz8gcmVzO1xyXG4gICAgY29uc3QgY29sbGVjdCA9ICguLi5jYW5kaWRhdGVzOiBhbnlbXSk6IGFueVtdID0+IHtcclxuICAgICAgY29uc3QgY29sbGVjdGVkOiBhbnlbXSA9IFtdO1xyXG4gICAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcbiAgICAgIGNhbmRpZGF0ZXMuZm9yRWFjaCgoY2FuZGlkYXRlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNhbmRpZGF0ZSkpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FuZGlkYXRlLmZvckVhY2goKHdpZGdldDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb2RlID0gd2lkZ2V0Py53aWRnZXRfY29kZSA/PyB3aWRnZXQ/LndpZGdldENvZGU7XHJcbiAgICAgICAgICBjb25zdCBrZXkgPSBjb2RlICE9IG51bGwgPyBTdHJpbmcoY29kZSkgOiBKU09OLnN0cmluZ2lmeSh3aWRnZXQpO1xyXG4gICAgICAgICAgaWYgKHNlZW4uaGFzKGtleSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc2Vlbi5hZGQoa2V5KTtcclxuICAgICAgICAgIGNvbGxlY3RlZC5wdXNoKHdpZGdldCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gY29sbGVjdGVkO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB3aWRnZXRBcnIgPSBjb2xsZWN0KFxyXG4gICAgICBwYXlsb2FkPy53aWRnZXRBcnIsXHJcbiAgICAgIHJlcz8ud2lkZ2V0QXJyLFxyXG4gICAgICBwYXlsb2FkPy53aWRnZXRfZGV0YWlscyxcclxuICAgICAgQXJyYXkuaXNBcnJheShwYXlsb2FkKSA/IHBheWxvYWQgOiBudWxsLFxyXG4gICAgICBBcnJheS5pc0FycmF5KHJlcz8uZGF0YSkgPyByZXMuZGF0YSA6IG51bGxcclxuICAgICk7XHJcbiAgICBjb25zdCBhbGxXaWRnZXRzQXJyYXkgPSBjb2xsZWN0KFxyXG4gICAgICBwYXlsb2FkPy5hbGxXaWRnZXRzQXJyYXksXHJcbiAgICAgIHBheWxvYWQ/LmFsbF93aWRnZXRzLFxyXG4gICAgICBwYXlsb2FkPy5hbGxXaWRnZXRzLFxyXG4gICAgICBwYXlsb2FkPy5hbGxXaWRnZXRBcnJheSxcclxuICAgICAgcGF5bG9hZD8ud2lkZ2V0cyxcclxuICAgICAgcmVzPy5hbGxXaWRnZXRzQXJyYXksXHJcbiAgICAgIHJlcz8uYWxsX3dpZGdldHMsXHJcbiAgICAgIHJlcz8uYWxsV2lkZ2V0cyxcclxuICAgICAgcmVzPy53aWRnZXRzLFxyXG4gICAgICB3aWRnZXRBcnJcclxuICAgICk7XHJcbiAgICBjb25zdCBhY3RpdmVXaWRnZXRBcnIgPSBjb2xsZWN0KFxyXG4gICAgICBwYXlsb2FkPy5hY3RpdmVXaWRnZXRBcnIsXHJcbiAgICAgIHJlcz8uYWN0aXZlV2lkZ2V0QXJyLFxyXG4gICAgICB3aWRnZXRBcnJcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgd2lkZ2V0QXJyLFxyXG4gICAgICBhbGxXaWRnZXRzQXJyYXk6IGFsbFdpZGdldHNBcnJheS5sZW5ndGggPyBhbGxXaWRnZXRzQXJyYXkgOiB3aWRnZXRBcnIsXHJcbiAgICAgIGFjdGl2ZVdpZGdldEFycjogYWN0aXZlV2lkZ2V0QXJyLmxlbmd0aCA/IGFjdGl2ZVdpZGdldEFyciA6IHdpZGdldEFycixcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXRTYWlsc1Byb2dyYW1MaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgKyAnc2FpbHNQcm9ncmFtTGlzdCcsIHRoaXMuaHR0cE9wdGlvbnMpXHJcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIGdldFByb2dyYW1DYXRlZ29yaWVzKHByb2dyYW1JZDogc3RyaW5nIHwgbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoXHJcbiAgICAgICAgYCR7dGhpcy5lbnYuY29tcGxpYW5jZUdldH1zYWlsc1Byb2dyYW1DYXRlZ29yaWVzJmlkPSR7cHJvZ3JhbUlkfWAsXHJcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xyXG4gICAgICApXHJcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIC8qKiBGdWxsIGN1c3RvbSBkYXNoYm9hcmQgcGF5bG9hZCAoaW5jbHVkZXMgcmVzcG9uc2liaWxpdHlDZW50ZXJJZCwgcHJvZ3JhbUlkLCBldGMuKS4gKi9cclxuICBmZXRjaEN1c3RvbURhc2hib2FyZEJ5SWQoaWQ6IHN0cmluZyB8IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KGAke3RoaXMuZW52LmRhc2hib2FyZH1jdXN0b21EYXNoYm9hcmQvJHtpZH1gLCB0aGlzLmh0dHBPcHRpb25zKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlcykgPT4gYXBwbHlMb2NhbFRpbWVmcmFtZVRvRGFzaGJvYXJkUmVzcG9uc2UocmVzKSksXHJcbiAgICAgICAgcmV0cnkoMilcclxuICAgICAgKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0VXNlckluZm9ybWF0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0KFxyXG4gICAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgKyAndXNlcnMmaWQ9JyArIHRoaXM/Ll9JRCgpLFxyXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnNcclxuICAgICAgKVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG4gIF9JRCgpIHtcclxuICAgIGNvbnN0IGhlbHBlciA9IG5ldyBKd3RIZWxwZXJTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCBteVJhd1Rva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbnRVc2VyJykgfHwgJ3t9JztcclxuICAgIGNvbnN0IGlzRXhwaXJlZCA9IGhlbHBlcj8uaXNUb2tlbkV4cGlyZWQobXlSYXdUb2tlbik7XHJcbiAgICBpZiAoaXNFeHBpcmVkID09PSBmYWxzZSkge1xyXG4gICAgICBjb25zdCB0b2tlbkluZm8gPSBoZWxwZXI/LmRlY29kZVRva2VuKG15UmF3VG9rZW4pO1xyXG4gICAgICByZXR1cm4gdG9rZW5JbmZvLl9pZDtcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGNoZWNrRHVwbGljYXRlRGFzaGJvYXJkTmFtZShwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3QoXHJcbiAgICAgICAgdGhpcy5lbnYuZGFzaGJvYXJkICsgJ0R1cGxpY2F0ZURhc2hib2FyZCcsXHJcbiAgICAgICAgcGF5bG9hZCxcclxuICAgICAgICB0aGlzLmh0dHBPcHRpb25zXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuY3JlYXRlRGFzaGJvYXJkKHBheWxvYWQ6IGFueSkge1xyXG4gIHJldHVybiB0aGlzLmh0dHBcclxuICAgIC5wb3N0KHRoaXMuZW52LmRhc2hib2FyZCArICdjdXN0b21EYXNoYm9hcmQnLCBwYXlsb2FkLCB0aGlzLmh0dHBPcHRpb25zKVxyXG4gICAgLnBpcGUobWFwKChyZXMpID0+IGFwcGx5TG9jYWxUaW1lZnJhbWVUb0Rhc2hib2FyZFJlc3BvbnNlKHJlcykpKTtcclxufVxyXG5cclxudXBkYXRlRGFzaGJvYXJkKHBheWxvYWQ6IGFueSwgaWQ6IGFueSkge1xyXG4gIHJldHVybiB0aGlzLmh0dHBcclxuICAgIC5wdXQodGhpcy5lbnYuZGFzaGJvYXJkICsgJ2N1c3RvbURhc2hib2FyZC8nICsgaWQsIHBheWxvYWQsIHRoaXMuaHR0cE9wdGlvbnMpXHJcbiAgICAucGlwZShtYXAoKHJlcykgPT4gYXBwbHlMb2NhbFRpbWVmcmFtZVRvRGFzaGJvYXJkUmVzcG9uc2UocmVzKSkpO1xyXG59XHJcblxyXG5zYXZlV2lkZ2V0RGV0YWlscyhwYXlsb2FkOiBhbnkpIHtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbnYuZGFzaGJvYXJkICsgJ2NyZWF0ZVdpZGdldHMvY3JlYXRvcicsIHBheWxvYWQsIHRoaXMuaHR0cE9wdGlvbnMpXHJcbn1cclxuICBidWlsZFBheWxvYWQocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkYXNoYm9hcmQ6IHtcclxuICAgICAgICBuYW1lOiBwYXlsb2FkLmRhc2hib2FyZF9uYW1lLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBwYXlsb2FkLmRlc2NyaXB0aW9uWzBdLmNvbnRlbnQsXHJcbiAgICAgICAgdmlld2VyOiB7XHJcbiAgICAgICAgICB1c2VySWQ6IHBheWxvYWQudmlzaWJsZV90b191c2VycyxcclxuICAgICAgICAgIHVzZXJHcm91cElkOiBwYXlsb2FkLnZpc2libGVfdG9fZ3JvdXBzLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJJZDogcGF5bG9hZC5yZXNwb25zaWJpbGl0eV9jZW50ZXIsXHJcbiAgICAgICAgcHJvZ3JhbUlkOiBwYXlsb2FkLnByb2dyYW0uYWxsX3Byb2dyYW1zLm1hcCgocHJvZ3JhbTogYW55KSA9PiBwcm9ncmFtLmlkKSxcclxuICAgICAgICB0aW1lZnJhbWU6IHBheWxvYWQudGltZWZyYW1lLnN0YXJ0X2RhdGUgPyB7XHJcbiAgICAgICAgICBmcm9tOiBwYXlsb2FkLnRpbWVmcmFtZS5zdGFydF9kYXRlLFxyXG4gICAgICAgICAgdG86IHBheWxvYWQudGltZWZyYW1lLmVuZF9kYXRlLFxyXG4gICAgICAgIH0gOiBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,88 @@
|
|
|
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==
|
|
@@ -296,6 +296,94 @@ function filterActiveWidgets(widgets) {
|
|
|
296
296
|
return (widgets ?? []).filter((w) => !w?.state || w.state === 'ACTIVE');
|
|
297
297
|
}
|
|
298
298
|
|
|
299
|
+
const TIMEFRAME_DATE_TIME = /^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2}):(\d{2})/;
|
|
300
|
+
function pad(value) {
|
|
301
|
+
return String(value).padStart(2, '0');
|
|
302
|
+
}
|
|
303
|
+
function formatLocalDateTime(date) {
|
|
304
|
+
return (`${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ` +
|
|
305
|
+
`${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`);
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* API timeframe values are UTC `YYYY-MM-DD HH:mm:ss` without a zone suffix.
|
|
309
|
+
* Convert to the browser/system timezone and keep the same format.
|
|
310
|
+
* Date-only values are left unchanged so legacy `YYYY-MM-DD` fields do not shift.
|
|
311
|
+
*/
|
|
312
|
+
function utcTimeframeToLocal(value) {
|
|
313
|
+
if (value == null || value === '') {
|
|
314
|
+
return value ?? null;
|
|
315
|
+
}
|
|
316
|
+
const raw = String(value).trim();
|
|
317
|
+
const match = raw.match(TIMEFRAME_DATE_TIME);
|
|
318
|
+
if (!match) {
|
|
319
|
+
return raw;
|
|
320
|
+
}
|
|
321
|
+
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])));
|
|
322
|
+
if (isNaN(utcDate.getTime())) {
|
|
323
|
+
return raw;
|
|
324
|
+
}
|
|
325
|
+
return formatLocalDateTime(utcDate);
|
|
326
|
+
}
|
|
327
|
+
function toLocalDashboardTimeframe(timeframe) {
|
|
328
|
+
if (!timeframe || typeof timeframe !== 'object') {
|
|
329
|
+
return timeframe;
|
|
330
|
+
}
|
|
331
|
+
const source = timeframe;
|
|
332
|
+
const converted = { ...source };
|
|
333
|
+
['from', 'to', 'start_date', 'end_date'].forEach((key) => {
|
|
334
|
+
if (converted[key] != null && converted[key] !== '') {
|
|
335
|
+
converted[key] = utcTimeframeToLocal(String(converted[key]));
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
return converted;
|
|
339
|
+
}
|
|
340
|
+
/** Converts `timeframe` (and nested `dashboard.timeframe`) on a dashboard API item. */
|
|
341
|
+
function applyLocalTimeframeToDashboard(dashboard) {
|
|
342
|
+
if (!dashboard || typeof dashboard !== 'object') {
|
|
343
|
+
return dashboard;
|
|
344
|
+
}
|
|
345
|
+
const item = dashboard;
|
|
346
|
+
const next = { ...item };
|
|
347
|
+
if (item['timeframe']) {
|
|
348
|
+
next['timeframe'] = toLocalDashboardTimeframe(item['timeframe']);
|
|
349
|
+
}
|
|
350
|
+
if (item['time_frame_from'] != null) {
|
|
351
|
+
next['time_frame_from'] = utcTimeframeToLocal(item['time_frame_from']);
|
|
352
|
+
}
|
|
353
|
+
if (item['time_frame_to'] != null) {
|
|
354
|
+
next['time_frame_to'] = utcTimeframeToLocal(item['time_frame_to']);
|
|
355
|
+
}
|
|
356
|
+
const nested = item['dashboard'];
|
|
357
|
+
if (nested && typeof nested === 'object' && nested !== dashboard) {
|
|
358
|
+
next['dashboard'] = applyLocalTimeframeToDashboard(nested);
|
|
359
|
+
}
|
|
360
|
+
return next;
|
|
361
|
+
}
|
|
362
|
+
/** Walks getCustomDashboards / customDashboard envelopes and localizes timeframe. */
|
|
363
|
+
function applyLocalTimeframeToDashboardResponse(res) {
|
|
364
|
+
if (!res || typeof res !== 'object') {
|
|
365
|
+
return res;
|
|
366
|
+
}
|
|
367
|
+
if (Array.isArray(res)) {
|
|
368
|
+
return res.map((item) => applyLocalTimeframeToDashboard(item));
|
|
369
|
+
}
|
|
370
|
+
const body = res;
|
|
371
|
+
let next = { ...body };
|
|
372
|
+
if (body['timeframe'] || body['time_frame_from'] || body['time_frame_to']) {
|
|
373
|
+
next = applyLocalTimeframeToDashboard(next);
|
|
374
|
+
}
|
|
375
|
+
if (Array.isArray(body['dashboards'])) {
|
|
376
|
+
next['dashboards'] = body['dashboards'].map((item) => applyLocalTimeframeToDashboard(item));
|
|
377
|
+
}
|
|
378
|
+
if (body['dashboard'] && typeof body['dashboard'] === 'object') {
|
|
379
|
+
next['dashboard'] = applyLocalTimeframeToDashboard(body['dashboard']);
|
|
380
|
+
}
|
|
381
|
+
if (body['data'] && typeof body['data'] === 'object') {
|
|
382
|
+
next['data'] = applyLocalTimeframeToDashboardResponse(body['data']);
|
|
383
|
+
}
|
|
384
|
+
return next;
|
|
385
|
+
}
|
|
386
|
+
|
|
299
387
|
class Configurations {
|
|
300
388
|
envConfig;
|
|
301
389
|
constructor() {
|
|
@@ -456,7 +544,7 @@ class CreateDashboardService {
|
|
|
456
544
|
fetchCustomDashboardById(id) {
|
|
457
545
|
return this.http
|
|
458
546
|
.get(`${this.env.dashboard}customDashboard/${id}`, this.httpOptions)
|
|
459
|
-
.pipe(retry(2));
|
|
547
|
+
.pipe(map((res) => applyLocalTimeframeToDashboardResponse(res)), retry(2));
|
|
460
548
|
}
|
|
461
549
|
getUserInformation() {
|
|
462
550
|
return this.http
|
|
@@ -479,10 +567,14 @@ class CreateDashboardService {
|
|
|
479
567
|
.pipe(retry(2));
|
|
480
568
|
}
|
|
481
569
|
createDashboard(payload) {
|
|
482
|
-
return this.http
|
|
570
|
+
return this.http
|
|
571
|
+
.post(this.env.dashboard + 'customDashboard', payload, this.httpOptions)
|
|
572
|
+
.pipe(map((res) => applyLocalTimeframeToDashboardResponse(res)));
|
|
483
573
|
}
|
|
484
574
|
updateDashboard(payload, id) {
|
|
485
|
-
return this.http
|
|
575
|
+
return this.http
|
|
576
|
+
.put(this.env.dashboard + 'customDashboard/' + id, payload, this.httpOptions)
|
|
577
|
+
.pipe(map((res) => applyLocalTimeframeToDashboardResponse(res)));
|
|
486
578
|
}
|
|
487
579
|
saveWidgetDetails(payload) {
|
|
488
580
|
return this.http.post(this.env.dashboard + 'createWidgets/creator', payload, this.httpOptions);
|