tango-app-ui-shared 3.3.0-alpha.5 → 3.3.0-alpha.6-test
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/modules/common/custom-select/custom-select.component.mjs +2 -2
- package/esm2022/lib/modules/layout/layout.module.mjs +5 -2
- package/esm2022/lib/modules/layout/toolbar/classic/classic.component.mjs +3 -1
- package/esm2022/lib/modules/layout/toolbar/client-settings/client-settings.component.mjs +3 -1
- package/esm2022/lib/modules/layout/toolbar/date-single-select/date-single-select.component.mjs +6 -1
- package/esm2022/lib/modules/layout/toolbar/datepicker/datepicker.component.mjs +3 -1
- package/esm2022/lib/modules/layout/toolbar/single-store/single-store.component.mjs +3 -1
- package/esm2022/lib/modules/layout/toolbar/toolbar.component.mjs +22 -13
- package/esm2022/lib/modules/layout/toolbar/traffic-header/traffic-header.component.mjs +531 -0
- package/esm2022/lib/services/auth.service.mjs +12 -1
- package/fesm2022/tango-app-ui-shared.mjs +570 -15
- package/fesm2022/tango-app-ui-shared.mjs.map +1 -1
- package/lib/modules/layout/layout.module.d.ts +11 -10
- package/lib/modules/layout/toolbar/toolbar.component.d.ts +2 -1
- package/lib/modules/layout/toolbar/traffic-header/traffic-header.component.d.ts +66 -0
- package/lib/services/auth.service.d.ts +4 -0
- package/package.json +1 -1
|
@@ -41,6 +41,7 @@ class AuthService {
|
|
|
41
41
|
billingApiUrl;
|
|
42
42
|
oldDashboardUrl;
|
|
43
43
|
dropDownTrigger = new BehaviorSubject(null);
|
|
44
|
+
trafficApiUrl;
|
|
44
45
|
constructor(router, gs, http) {
|
|
45
46
|
this.router = router;
|
|
46
47
|
this.gs = gs;
|
|
@@ -51,6 +52,7 @@ class AuthService {
|
|
|
51
52
|
this.userApiUrl = env.userApiUrl;
|
|
52
53
|
this.storeApiUrl = env.storeApiUrl;
|
|
53
54
|
this.oldDashboardUrl = env.oldDashboardUrl;
|
|
55
|
+
this.trafficApiUrl = env.trafficApiUrl;
|
|
54
56
|
this.authlocalStorageToken = `${env.appVersion}-${env.USERDATA_KEY}`;
|
|
55
57
|
this.billingApiUrl = env.billingApiUrl;
|
|
56
58
|
}
|
|
@@ -114,6 +116,15 @@ class AuthService {
|
|
|
114
116
|
csmAssignClientAction(clientId, data) {
|
|
115
117
|
return this.http.post(`${this.clientApiUrl}/client-csm-assign-action?clientId=${clientId}`, data);
|
|
116
118
|
}
|
|
119
|
+
getLocation(data) {
|
|
120
|
+
return this.http.post(`${this.trafficApiUrl}/headerLocations_v1`, data);
|
|
121
|
+
}
|
|
122
|
+
getGroups(data) {
|
|
123
|
+
return this.http.post(`${this.trafficApiUrl}/headerGroups_v1`, data);
|
|
124
|
+
}
|
|
125
|
+
getHeaderStores(data) {
|
|
126
|
+
return this.http.post(`${this.trafficApiUrl}/headerStores_v1`, data);
|
|
127
|
+
}
|
|
117
128
|
getLeadProducts(email) {
|
|
118
129
|
return this.http.get(`${this.billingApiUrl}/getLeadProducts/${email}`);
|
|
119
130
|
}
|
|
@@ -2202,6 +2213,8 @@ class ClassicComponent {
|
|
|
2202
2213
|
store: null,
|
|
2203
2214
|
stores: [],
|
|
2204
2215
|
date: null,
|
|
2216
|
+
group: [],
|
|
2217
|
+
location: []
|
|
2205
2218
|
};
|
|
2206
2219
|
ngOnInit() {
|
|
2207
2220
|
this.service.getClients().subscribe({
|
|
@@ -2598,11 +2611,11 @@ class CustomSelectComponent {
|
|
|
2598
2611
|
return this.filteredValues.every((item) => item.isSelected);
|
|
2599
2612
|
}
|
|
2600
2613
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: AuthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2601
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomSelectComponent, selector: "lib-select", inputs: { items: "items", searchField: "searchField", multi: "multi", idField: "idField", selectedValues: "selectedValues", disabled: "disabled", label: "label" }, outputs: { selected: "selected" }, host: { listeners: { "document:click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n {{selectedValues?.length}} {{label}} Selected \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" for=\"selectAll\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n id=\"selectAll\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>", styles: [":host{width:100%;height:100%}.outer-container{position:relative;background-color:#fff}.outer-container .form-select{font-size:1.1rem;font-weight:600;
|
|
2614
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomSelectComponent, selector: "lib-select", inputs: { items: "items", searchField: "searchField", multi: "multi", idField: "idField", selectedValues: "selectedValues", disabled: "disabled", label: "label" }, outputs: { selected: "selected" }, host: { listeners: { "document:click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n {{selectedValues?.length}} {{label}} Selected \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" for=\"selectAll\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n id=\"selectAll\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>", styles: [":host{width:100%;height:100%}.outer-container{position:relative;background-color:#fff}.outer-container .form-select{font-size:1.1rem;font-weight:600;color:var(--Gray-500, #344054);border:1px solid var(--Gray-300, #D0D5DD)!important;border-radius:8px!important;background:var(--Gray-100, #ffffff);height:42.5px}.outer-container .disable-input{pointer-events:none;background-color:#f9fafb!important}.outer-container .input-container{position:absolute;width:100%;z-index:1}.outer-container .input-container .input-wrapper{padding:8px 10px;background-color:#fff;border-top-right-radius:8px;border-top-left-radius:8px;border-top:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container .input-wrapper input{width:100%;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px 10px 30px;outline:none}.outer-container .input-container .input-wrapper input ::placeholder{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .input-wrapper .search-icon{position:absolute;left:20px;top:20px}.outer-container .input-container ul{position:relative;background-color:#fff;margin:0;padding:0;max-height:200px;min-height:auto;overflow-y:auto;border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-bottom:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container ul .selected{background:#f9fafb}.outer-container .input-container ul li{list-style:none;padding:10px 16px;cursor:pointer}.outer-container .input-container ul li label{cursor:pointer}.outer-container .input-container ul li:hover{background:#f9fafb}.form-check{display:flex;align-items:center}.form-check-input{height:16px;width:16px;border-radius:4px;border:1px solid var(--Primary-600, #00A3FF)}.form-check-input:checked{--bs-form-check-bg-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB4SURBVHgBhY7NDUBQEIRnqcJNKXTg6qYTStCB+Isy6IQSNMDa9SLh5eWZZPcw+81kCX/quABhD73QyKXsGoyIvNCJSto2hEhNtY4N9cwYeMXEsVqB1GaSauRQOpty2tSmO3FgloAmF5nEhgyoesMO6CuFW66fn2xdFyA3ZzcRLrMAAAAASUVORK5CYII=);background-color:#eaf8ff;border-color:#00a3ff}.form-check-label{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2602
2615
|
}
|
|
2603
2616
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomSelectComponent, decorators: [{
|
|
2604
2617
|
type: Component,
|
|
2605
|
-
args: [{ selector: 'lib-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n {{selectedValues?.length}} {{label}} Selected \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" for=\"selectAll\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n id=\"selectAll\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>", styles: [":host{width:100%;height:100%}.outer-container{position:relative;background-color:#fff}.outer-container .form-select{font-size:1.1rem;font-weight:600;
|
|
2618
|
+
args: [{ selector: 'lib-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n {{selectedValues?.length}} {{label}} Selected \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" for=\"selectAll\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n id=\"selectAll\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>", styles: [":host{width:100%;height:100%}.outer-container{position:relative;background-color:#fff}.outer-container .form-select{font-size:1.1rem;font-weight:600;color:var(--Gray-500, #344054);border:1px solid var(--Gray-300, #D0D5DD)!important;border-radius:8px!important;background:var(--Gray-100, #ffffff);height:42.5px}.outer-container .disable-input{pointer-events:none;background-color:#f9fafb!important}.outer-container .input-container{position:absolute;width:100%;z-index:1}.outer-container .input-container .input-wrapper{padding:8px 10px;background-color:#fff;border-top-right-radius:8px;border-top-left-radius:8px;border-top:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container .input-wrapper input{width:100%;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px 10px 30px;outline:none}.outer-container .input-container .input-wrapper input ::placeholder{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .input-wrapper .search-icon{position:absolute;left:20px;top:20px}.outer-container .input-container ul{position:relative;background-color:#fff;margin:0;padding:0;max-height:200px;min-height:auto;overflow-y:auto;border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-bottom:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container ul .selected{background:#f9fafb}.outer-container .input-container ul li{list-style:none;padding:10px 16px;cursor:pointer}.outer-container .input-container ul li label{cursor:pointer}.outer-container .input-container ul li:hover{background:#f9fafb}.form-check{display:flex;align-items:center}.form-check-input{height:16px;width:16px;border-radius:4px;border:1px solid var(--Primary-600, #00A3FF)}.form-check-input:checked{--bs-form-check-bg-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB4SURBVHgBhY7NDUBQEIRnqcJNKXTg6qYTStCB+Isy6IQSNMDa9SLh5eWZZPcw+81kCX/quABhD73QyKXsGoyIvNCJSto2hEhNtY4N9cwYeMXEsVqB1GaSauRQOpty2tSmO3FgloAmF5nEhgyoesMO6CuFW66fn2xdFyA3ZzcRLrMAAAAASUVORK5CYII=);background-color:#eaf8ff;border-color:#00a3ff}.form-check-label{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}\n"] }]
|
|
2606
2619
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: AuthService }], propDecorators: { onClick: [{
|
|
2607
2620
|
type: HostListener,
|
|
2608
2621
|
args: ['document:click', ['$event']]
|
|
@@ -2637,6 +2650,8 @@ class ClientSettingsComponent {
|
|
|
2637
2650
|
store: null,
|
|
2638
2651
|
stores: [],
|
|
2639
2652
|
date: null,
|
|
2653
|
+
group: [],
|
|
2654
|
+
location: []
|
|
2640
2655
|
};
|
|
2641
2656
|
constructor(auth, gs, cd) {
|
|
2642
2657
|
this.auth = auth;
|
|
@@ -2720,6 +2735,8 @@ class DatepickerComponent {
|
|
|
2720
2735
|
store: null,
|
|
2721
2736
|
stores: [],
|
|
2722
2737
|
date: null,
|
|
2738
|
+
group: [],
|
|
2739
|
+
location: []
|
|
2723
2740
|
};
|
|
2724
2741
|
users;
|
|
2725
2742
|
constructor(layout, gs, service, cd) {
|
|
@@ -2841,6 +2858,8 @@ class DateSingleSelectComponent {
|
|
|
2841
2858
|
store: null,
|
|
2842
2859
|
stores: [],
|
|
2843
2860
|
date: null,
|
|
2861
|
+
group: [],
|
|
2862
|
+
location: []
|
|
2844
2863
|
};
|
|
2845
2864
|
dummyArray;
|
|
2846
2865
|
respnsearray = [];
|
|
@@ -2882,6 +2901,9 @@ class DateSingleSelectComponent {
|
|
|
2882
2901
|
this.selectedFilters.store = headerFilters.store;
|
|
2883
2902
|
this.selectedFilters.date = headerFilters.date;
|
|
2884
2903
|
this.selectedFilters.date = headerFilters.date;
|
|
2904
|
+
this.selectedFilters.stores = headerFilters.stores;
|
|
2905
|
+
this.selectedFilters.group = headerFilters.group;
|
|
2906
|
+
this.selectedFilters.location = headerFilters.location;
|
|
2885
2907
|
this.selectedDateRange = {
|
|
2886
2908
|
startDate: this.dayjs(headerFilters.date.startDate, "YYYY-MM-DD").format("DD-MM-YYYY"),
|
|
2887
2909
|
endDate: this.dayjs(headerFilters.date.endDate, "YYYY-MM-DD").format("DD-MM-YYYY"),
|
|
@@ -3006,6 +3028,8 @@ class SingleStoreComponent {
|
|
|
3006
3028
|
store: null,
|
|
3007
3029
|
stores: [],
|
|
3008
3030
|
date: null,
|
|
3031
|
+
group: [],
|
|
3032
|
+
location: []
|
|
3009
3033
|
};
|
|
3010
3034
|
constructor(auth, gs, cd) {
|
|
3011
3035
|
this.auth = auth;
|
|
@@ -3122,6 +3146,527 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
3122
3146
|
args: [{ selector: 'lib-single-store', template: "<div class=\"wrapper mx-2\" >\r\n <lib-select [items]=\"storeList\" [multi]=\"false\" [searchField]=\"'storeName'\" [disabled]=\"false\" [idField]=\"'storeId'\"\r\n (selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n\r\n \r\n</div>\r\n<div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n\r\n<div class=\"btn btn-primary ms-2\" (click)=\"Apply()\">Apply</div>\r\n", styles: [".daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}::ng-deep .applyBtn{display:none!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.wrapper{min-width:200px}.btn-primary{line-height:18px!important}\n"] }]
|
|
3123
3147
|
}], ctorParameters: () => [{ type: AuthService }, { type: i1$1.GlobalStateService }, { type: i0.ChangeDetectorRef }] });
|
|
3124
3148
|
|
|
3149
|
+
class TrafficHeaderComponent {
|
|
3150
|
+
auth;
|
|
3151
|
+
gs;
|
|
3152
|
+
cd;
|
|
3153
|
+
dayjs = dayjs;
|
|
3154
|
+
isCustomDate = (m) => {
|
|
3155
|
+
const isValidDate = m > this.dayjs();
|
|
3156
|
+
return isValidDate ? "invalid-date" : false;
|
|
3157
|
+
};
|
|
3158
|
+
selectedDateRange = {};
|
|
3159
|
+
selectedFilters = {
|
|
3160
|
+
client: null,
|
|
3161
|
+
clientName: null,
|
|
3162
|
+
clients: [],
|
|
3163
|
+
store: null,
|
|
3164
|
+
stores: [],
|
|
3165
|
+
date: null,
|
|
3166
|
+
group: [],
|
|
3167
|
+
location: [],
|
|
3168
|
+
};
|
|
3169
|
+
Opendropdown = false;
|
|
3170
|
+
dropdownOpen = null; // 'location' or 'group'
|
|
3171
|
+
searchLocationText = "";
|
|
3172
|
+
searchGroupText = "";
|
|
3173
|
+
locations = [];
|
|
3174
|
+
filteredLocations = [];
|
|
3175
|
+
groupsData = [];
|
|
3176
|
+
filteredGroups = [];
|
|
3177
|
+
filteredStores = [];
|
|
3178
|
+
stores = [];
|
|
3179
|
+
searchStoreText = '';
|
|
3180
|
+
clientList = [];
|
|
3181
|
+
selectedClient;
|
|
3182
|
+
constructor(auth, gs, cd) {
|
|
3183
|
+
this.auth = auth;
|
|
3184
|
+
this.gs = gs;
|
|
3185
|
+
this.cd = cd;
|
|
3186
|
+
}
|
|
3187
|
+
onClick(event) {
|
|
3188
|
+
const target = event.target;
|
|
3189
|
+
if (!target.closest('.dropdown1')) {
|
|
3190
|
+
this.Opendropdown = false;
|
|
3191
|
+
}
|
|
3192
|
+
}
|
|
3193
|
+
closeDropdown1() {
|
|
3194
|
+
this.Opendropdown = false;
|
|
3195
|
+
}
|
|
3196
|
+
ngOnInit() {
|
|
3197
|
+
const user = JSON.parse(localStorage.getItem('user-info'));
|
|
3198
|
+
if (user.userType === 'tango')
|
|
3199
|
+
this.getClient();
|
|
3200
|
+
// Load filters from localStorage if they exist
|
|
3201
|
+
if ("header-filters" in localStorage) {
|
|
3202
|
+
const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
|
|
3203
|
+
// Load and set selected filters from localStorage
|
|
3204
|
+
this.selectedFilters.client = headerFilters.client;
|
|
3205
|
+
this.selectedFilters.clientName = headerFilters.clientName;
|
|
3206
|
+
this.selectedFilters.clients = headerFilters.clients;
|
|
3207
|
+
this.selectedFilters.store = headerFilters.store;
|
|
3208
|
+
this.selectedFilters.date = headerFilters.date;
|
|
3209
|
+
this.selectedFilters.stores = headerFilters.stores;
|
|
3210
|
+
this.selectedFilters.group = headerFilters.group;
|
|
3211
|
+
this.selectedFilters.location = headerFilters.location;
|
|
3212
|
+
this.getLocations();
|
|
3213
|
+
this.getStore();
|
|
3214
|
+
// Sync selected locations, groups, and stores with filtered data
|
|
3215
|
+
this.filteredLocations = headerFilters.location
|
|
3216
|
+
? headerFilters.location.map((item) => ({ ...item, checked: item.checked === true }))
|
|
3217
|
+
: [];
|
|
3218
|
+
this.filteredGroups = headerFilters.group
|
|
3219
|
+
? headerFilters.group.map((item) => ({ ...item, checked: item.checked === true }))
|
|
3220
|
+
: [];
|
|
3221
|
+
this.filteredStores = headerFilters.stores
|
|
3222
|
+
? headerFilters.stores.map((item) => ({ ...item, checked: item.checked === true }))
|
|
3223
|
+
: [];
|
|
3224
|
+
// Format date range
|
|
3225
|
+
if (headerFilters.date) {
|
|
3226
|
+
this.selectedDateRange = {
|
|
3227
|
+
startDate: this.dayjs(headerFilters.date.startDate, "YYYY-MM-DD").format("DD-MM-YYYY"),
|
|
3228
|
+
endDate: this.dayjs(headerFilters.date.endDate, "YYYY-MM-DD").format("DD-MM-YYYY"),
|
|
3229
|
+
};
|
|
3230
|
+
}
|
|
3231
|
+
// Update localStorage with current selectedFilters
|
|
3232
|
+
localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
|
|
3233
|
+
// Emit data via service
|
|
3234
|
+
this.gs.dataRangeValue.next(this.selectedFilters);
|
|
3235
|
+
}
|
|
3236
|
+
}
|
|
3237
|
+
getClient() {
|
|
3238
|
+
this.auth.getClients().subscribe({
|
|
3239
|
+
next: (e) => {
|
|
3240
|
+
if (e) {
|
|
3241
|
+
this.clientList = e.data.result;
|
|
3242
|
+
const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
|
|
3243
|
+
if (headerFilters.client) {
|
|
3244
|
+
this.clientList.find((obj) => {
|
|
3245
|
+
if (obj.clientId === headerFilters.client) {
|
|
3246
|
+
this.selectedClient = obj;
|
|
3247
|
+
}
|
|
3248
|
+
});
|
|
3249
|
+
this.selectedFilters.client = headerFilters.client;
|
|
3250
|
+
this.selectedFilters.clientName = headerFilters.clientName;
|
|
3251
|
+
this.selectedFilters.clients = headerFilters.clients;
|
|
3252
|
+
this.selectedFilters.store = headerFilters.store;
|
|
3253
|
+
this.selectedFilters.date = headerFilters.date;
|
|
3254
|
+
this.selectedFilters.stores = headerFilters.stores;
|
|
3255
|
+
this.selectedFilters.group = headerFilters.group;
|
|
3256
|
+
this.selectedFilters.location = headerFilters.location;
|
|
3257
|
+
this.gs.dataRangeValue.next(this.selectedFilters);
|
|
3258
|
+
}
|
|
3259
|
+
else {
|
|
3260
|
+
this.selectedClient = this.clientList[0];
|
|
3261
|
+
this.selectedFilters.client = this.selectedClient.clientId;
|
|
3262
|
+
this.selectedFilters.clientName = this.selectedClient.clientName;
|
|
3263
|
+
this.selectedFilters.clients = headerFilters.clients;
|
|
3264
|
+
this.selectedFilters.store = headerFilters.store;
|
|
3265
|
+
this.selectedFilters.date = headerFilters.date;
|
|
3266
|
+
this.selectedFilters.stores = headerFilters.stores;
|
|
3267
|
+
this.selectedFilters.group = headerFilters.group;
|
|
3268
|
+
this.selectedFilters.location = headerFilters.location;
|
|
3269
|
+
localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
|
|
3270
|
+
this.gs.dataRangeValue.next(this.selectedFilters);
|
|
3271
|
+
this.cd.detectChanges();
|
|
3272
|
+
}
|
|
3273
|
+
}
|
|
3274
|
+
else {
|
|
3275
|
+
this.selectedClient = this.clientList[0];
|
|
3276
|
+
this.selectedFilters.client = this.selectedClient.clientId;
|
|
3277
|
+
this.selectedFilters.clientName = this.selectedClient.clientName;
|
|
3278
|
+
localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
|
|
3279
|
+
this.gs.dataRangeValue.next(this.selectedFilters);
|
|
3280
|
+
this.cd.detectChanges();
|
|
3281
|
+
}
|
|
3282
|
+
},
|
|
3283
|
+
});
|
|
3284
|
+
}
|
|
3285
|
+
onClientSelect(event) {
|
|
3286
|
+
this.selectedClient = event;
|
|
3287
|
+
const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
|
|
3288
|
+
this.selectedFilters = headerFilters;
|
|
3289
|
+
this.selectedFilters.client = this.selectedClient.clientId;
|
|
3290
|
+
this.selectedFilters.clientName = this.selectedClient.clientName;
|
|
3291
|
+
this.gs.dataRangeValue.next(this.selectedFilters);
|
|
3292
|
+
localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
|
|
3293
|
+
this.cd.detectChanges();
|
|
3294
|
+
}
|
|
3295
|
+
ranges = {
|
|
3296
|
+
Today: [this.dayjs(), this.dayjs()],
|
|
3297
|
+
Yesterday: [
|
|
3298
|
+
this.dayjs().subtract(1, "days"),
|
|
3299
|
+
this.dayjs().subtract(1, "days"),
|
|
3300
|
+
],
|
|
3301
|
+
"This Week": [this.dayjs().subtract(6, "days"), this.dayjs()],
|
|
3302
|
+
"Last Week": [
|
|
3303
|
+
this.dayjs().subtract(14, "days").startOf("days"),
|
|
3304
|
+
this.dayjs().subtract(8, "days").endOf("days"),
|
|
3305
|
+
],
|
|
3306
|
+
"This Month": [this.dayjs().startOf("month"), this.dayjs().endOf("month")],
|
|
3307
|
+
"Last Month": [
|
|
3308
|
+
this.dayjs().subtract(1, "month").startOf("month"),
|
|
3309
|
+
this.dayjs().subtract(1, "month").endOf("month"),
|
|
3310
|
+
],
|
|
3311
|
+
};
|
|
3312
|
+
onStartDateChange(event) {
|
|
3313
|
+
if (this.dayjs(event.startDate).isValid()) {
|
|
3314
|
+
this.isCustomDate = (m) => {
|
|
3315
|
+
const isValidDate = m > this.dayjs() || m > this.dayjs(event.startDate.add(90, "days"));
|
|
3316
|
+
return isValidDate ? "invalid-date" : false;
|
|
3317
|
+
};
|
|
3318
|
+
}
|
|
3319
|
+
}
|
|
3320
|
+
datechange(event) {
|
|
3321
|
+
if (event && event.startDate && event.endDate) {
|
|
3322
|
+
if (this.dayjs(event.startDate).isValid() &&
|
|
3323
|
+
this.dayjs(event.endDate).isValid()) {
|
|
3324
|
+
this.selectedDateRange.startDate = event.startDate;
|
|
3325
|
+
this.selectedDateRange.endDate = event.endDate;
|
|
3326
|
+
var datetime = {
|
|
3327
|
+
startDate: this.dayjs(event.startDate, "DD-MM-YYYY").format("YYYY-MM-DD"),
|
|
3328
|
+
endDate: this.dayjs(event.endDate, "DD-MM-YYYY").format("YYYY-MM-DD"),
|
|
3329
|
+
};
|
|
3330
|
+
this.selectedFilters.date = datetime;
|
|
3331
|
+
localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
|
|
3332
|
+
this.gs.dataRangeValue.next(this.selectedFilters);
|
|
3333
|
+
}
|
|
3334
|
+
}
|
|
3335
|
+
}
|
|
3336
|
+
opendropdown(e) {
|
|
3337
|
+
e.stopPropagation();
|
|
3338
|
+
this.Opendropdown = !this.Opendropdown;
|
|
3339
|
+
}
|
|
3340
|
+
getLocations() {
|
|
3341
|
+
let obj = {
|
|
3342
|
+
clientId: this.selectedFilters.client,
|
|
3343
|
+
city: [],
|
|
3344
|
+
group: [],
|
|
3345
|
+
};
|
|
3346
|
+
this.auth.getLocation(obj).subscribe({
|
|
3347
|
+
next: (res) => {
|
|
3348
|
+
// Map the fetched locations with default unchecked state
|
|
3349
|
+
this.locations = res.data.locationData.map((city) => ({
|
|
3350
|
+
city: city.city,
|
|
3351
|
+
checked: false,
|
|
3352
|
+
}));
|
|
3353
|
+
// Sync the fetched locations with any stored checked values in localStorage
|
|
3354
|
+
if (this.selectedFilters.location && Array.isArray(this.selectedFilters.location)) {
|
|
3355
|
+
this.filteredLocations = this.locations.map(location => {
|
|
3356
|
+
const matchedLocation = this.selectedFilters.location.find((loc) => loc.city === location.city);
|
|
3357
|
+
return matchedLocation ? { ...location, checked: matchedLocation.checked } : location;
|
|
3358
|
+
});
|
|
3359
|
+
}
|
|
3360
|
+
else {
|
|
3361
|
+
this.filteredLocations = this.locations;
|
|
3362
|
+
}
|
|
3363
|
+
},
|
|
3364
|
+
error: (err) => {
|
|
3365
|
+
console.error("Failed to fetch locations", err);
|
|
3366
|
+
},
|
|
3367
|
+
});
|
|
3368
|
+
}
|
|
3369
|
+
isAllLocationsSelected() {
|
|
3370
|
+
return this.filteredLocations.every(location => location.checked);
|
|
3371
|
+
}
|
|
3372
|
+
selectedLocationsLabel() {
|
|
3373
|
+
const selectedLocations = this.filteredLocations
|
|
3374
|
+
.filter(location => location.checked)
|
|
3375
|
+
.map(location => location.city);
|
|
3376
|
+
return selectedLocations.length === 0
|
|
3377
|
+
? ''
|
|
3378
|
+
: selectedLocations.length === 1
|
|
3379
|
+
? selectedLocations[0]
|
|
3380
|
+
: `${selectedLocations.length} locations selected`;
|
|
3381
|
+
}
|
|
3382
|
+
getGroups(cities) {
|
|
3383
|
+
const obj = { city: cities, clientId: this.selectedFilters.client, group: [] };
|
|
3384
|
+
this.auth.getGroups(obj).subscribe({
|
|
3385
|
+
next: (res) => {
|
|
3386
|
+
let checkedGroup = this.filteredGroups.filter((group) => group.checked).map((group) => group.groupName);
|
|
3387
|
+
const combinedGroups = res.data.groupData.map((groupName) => ({
|
|
3388
|
+
groupName: groupName.groupName,
|
|
3389
|
+
checked: checkedGroup.includes(groupName.groupName) ? true : false,
|
|
3390
|
+
}));
|
|
3391
|
+
this.groupsData = combinedGroups;
|
|
3392
|
+
this.filteredGroups = combinedGroups;
|
|
3393
|
+
// Auto-fetch stores when groups are selected
|
|
3394
|
+
const selectedGroups = this.filteredGroups.filter((group) => group.checked).map((group) => group.groupName);
|
|
3395
|
+
if (selectedGroups.length > 0) {
|
|
3396
|
+
this.getStore(); // Fetch stores based on selected groups
|
|
3397
|
+
}
|
|
3398
|
+
},
|
|
3399
|
+
error: (err) => {
|
|
3400
|
+
console.error("Failed to fetch groups", err);
|
|
3401
|
+
},
|
|
3402
|
+
});
|
|
3403
|
+
}
|
|
3404
|
+
toggleDropdown(type) {
|
|
3405
|
+
if (this.dropdownOpen === type) {
|
|
3406
|
+
this.dropdownOpen = null;
|
|
3407
|
+
if (type === 'group') {
|
|
3408
|
+
this.resetSelectedGroups();
|
|
3409
|
+
}
|
|
3410
|
+
if (type === 'store') {
|
|
3411
|
+
this.resetSelectedStores();
|
|
3412
|
+
}
|
|
3413
|
+
}
|
|
3414
|
+
else {
|
|
3415
|
+
this.dropdownOpen = type;
|
|
3416
|
+
if (type === 'group') {
|
|
3417
|
+
const selectedCities = this.filteredLocations
|
|
3418
|
+
.filter((location) => location.checked)
|
|
3419
|
+
.map((location) => location.city);
|
|
3420
|
+
if (selectedCities.length > 0) {
|
|
3421
|
+
if (!this.searchGroupText.trim().length) {
|
|
3422
|
+
this.getGroups(selectedCities);
|
|
3423
|
+
}
|
|
3424
|
+
}
|
|
3425
|
+
}
|
|
3426
|
+
if (type == 'store') {
|
|
3427
|
+
if (!this.searchStoreText.trim().length) {
|
|
3428
|
+
this.getStore();
|
|
3429
|
+
}
|
|
3430
|
+
}
|
|
3431
|
+
}
|
|
3432
|
+
}
|
|
3433
|
+
handleGroupDropdownClick() {
|
|
3434
|
+
if (this.dropdownOpen === 'group') {
|
|
3435
|
+
this.resetSelectedGroups();
|
|
3436
|
+
}
|
|
3437
|
+
this.toggleDropdown('group');
|
|
3438
|
+
}
|
|
3439
|
+
resetSelectedGroups() {
|
|
3440
|
+
this.filteredGroups.forEach((group) => (group.checked = false));
|
|
3441
|
+
this.searchGroupText = "";
|
|
3442
|
+
}
|
|
3443
|
+
selectedGroupsLabel() {
|
|
3444
|
+
const selectedGroups = this.filteredGroups.filter((group) => group.checked);
|
|
3445
|
+
return selectedGroups.length === 0
|
|
3446
|
+
? "No groups selected"
|
|
3447
|
+
: selectedGroups.length === 1
|
|
3448
|
+
? selectedGroups[0].groupName
|
|
3449
|
+
: `${selectedGroups.length} groups selected`;
|
|
3450
|
+
}
|
|
3451
|
+
isAllGroupsSelected() {
|
|
3452
|
+
return this.filteredGroups.length ? this.filteredGroups.every((group) => group.checked) : false;
|
|
3453
|
+
}
|
|
3454
|
+
getStore() {
|
|
3455
|
+
const city = this.filteredLocations
|
|
3456
|
+
.filter(location => location.checked)
|
|
3457
|
+
.map(location => location.city);
|
|
3458
|
+
const group = this.filteredGroups
|
|
3459
|
+
.filter(group => group.checked)
|
|
3460
|
+
.map(group => group.groupName);
|
|
3461
|
+
const data = { city, group, clientId: this.selectedFilters.client };
|
|
3462
|
+
this.auth.getHeaderStores(data).subscribe({
|
|
3463
|
+
next: (res) => {
|
|
3464
|
+
const checkedStoreIds = this.filteredStores
|
|
3465
|
+
.filter(store => store.checked)
|
|
3466
|
+
.map(store => store.storeId);
|
|
3467
|
+
this.stores = res.data.storesData;
|
|
3468
|
+
this.filteredStores = this.stores.map((item) => ({
|
|
3469
|
+
...item,
|
|
3470
|
+
checked: checkedStoreIds.length ? checkedStoreIds.includes(item.storeId) : false
|
|
3471
|
+
}));
|
|
3472
|
+
// if(!city.length && !group.length){
|
|
3473
|
+
// this.selectedFilters.stores = this.filteredStores.map((item) => ({
|
|
3474
|
+
// ...item,
|
|
3475
|
+
// checked: true}));
|
|
3476
|
+
// localStorage.setItem(
|
|
3477
|
+
// "header-filters",
|
|
3478
|
+
// JSON.stringify(this.selectedFilters)
|
|
3479
|
+
// );
|
|
3480
|
+
// this.gs.dataRangeValue.next(this.selectedFilters);
|
|
3481
|
+
// }
|
|
3482
|
+
// Ensure selected stores are reflected
|
|
3483
|
+
this.stores.forEach(store => {
|
|
3484
|
+
const storedStore = this.selectedFilters.stores.find((s) => s.storeId === store.storeId);
|
|
3485
|
+
if (storedStore) {
|
|
3486
|
+
store.checked = storedStore.checked;
|
|
3487
|
+
}
|
|
3488
|
+
});
|
|
3489
|
+
},
|
|
3490
|
+
error: (err) => {
|
|
3491
|
+
console.error("Failed to fetch stores", err);
|
|
3492
|
+
},
|
|
3493
|
+
});
|
|
3494
|
+
}
|
|
3495
|
+
resetSelectedStores() {
|
|
3496
|
+
this.filteredStores.forEach((store) => (store.checked = false));
|
|
3497
|
+
this.searchStoreText = "";
|
|
3498
|
+
}
|
|
3499
|
+
selectedStoresLabel() {
|
|
3500
|
+
const selectedStores = this.filteredStores.filter((store) => store.checked);
|
|
3501
|
+
return selectedStores.length === 0
|
|
3502
|
+
? "No Stores selected"
|
|
3503
|
+
: selectedStores.length === 1
|
|
3504
|
+
? selectedStores[0].storeName
|
|
3505
|
+
: `${selectedStores.length} Stores selected`;
|
|
3506
|
+
}
|
|
3507
|
+
isAllStoresSelected() {
|
|
3508
|
+
return this.filteredStores.length > 0 && this.filteredStores.every(store => store.checked);
|
|
3509
|
+
}
|
|
3510
|
+
// Method to handle dropdown item selection
|
|
3511
|
+
updateSelectedStores() {
|
|
3512
|
+
// Update logic for store selection
|
|
3513
|
+
// Ensure this logic does not reset the store values unintentionally
|
|
3514
|
+
this.selectedFilters.stores = this.filteredStores.filter(store => store.checked);
|
|
3515
|
+
localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
|
|
3516
|
+
}
|
|
3517
|
+
toggleSelectAllLocations(event) {
|
|
3518
|
+
const isChecked = event.target.checked;
|
|
3519
|
+
this.filteredLocations.forEach((location) => (location.checked = isChecked));
|
|
3520
|
+
this.updateSelectedLocations();
|
|
3521
|
+
}
|
|
3522
|
+
toggleSelectAllStores(event) {
|
|
3523
|
+
const checked = event.target.checked;
|
|
3524
|
+
this.filteredStores.forEach(store => store.checked = checked);
|
|
3525
|
+
this.updateSelectedStores();
|
|
3526
|
+
}
|
|
3527
|
+
updateSelectedLocations() {
|
|
3528
|
+
// When locations are selected, fetch the related groups
|
|
3529
|
+
const selectedCities = this.filteredLocations
|
|
3530
|
+
.filter((location) => location.checked)
|
|
3531
|
+
.map((location) => location.city);
|
|
3532
|
+
if (selectedCities.length > 0) {
|
|
3533
|
+
this.getGroups(selectedCities); // Fetch groups based on selected cities
|
|
3534
|
+
}
|
|
3535
|
+
else {
|
|
3536
|
+
this.filteredGroups = []; // Clear groups if no locations are selected
|
|
3537
|
+
}
|
|
3538
|
+
this.filteredStores = []; // Reset stores as well
|
|
3539
|
+
this.searchGroupText = '';
|
|
3540
|
+
this.searchStoreText = '';
|
|
3541
|
+
}
|
|
3542
|
+
toggleSelectAllGroups(event) {
|
|
3543
|
+
const isChecked = event.target.checked;
|
|
3544
|
+
this.filteredGroups.forEach((group) => (group.checked = isChecked));
|
|
3545
|
+
this.updateSelectedGroups();
|
|
3546
|
+
}
|
|
3547
|
+
updateSelectedGroups() {
|
|
3548
|
+
// Fetch the relevant stores after groups are selected
|
|
3549
|
+
const selectedGroups = this.filteredGroups
|
|
3550
|
+
.filter((group) => group.checked)
|
|
3551
|
+
.map((group) => group.groupName);
|
|
3552
|
+
if (selectedGroups.length > 0) {
|
|
3553
|
+
this.getStore(); // Fetch stores based on selected groups
|
|
3554
|
+
}
|
|
3555
|
+
else {
|
|
3556
|
+
this.filteredStores = []; // Clear stores if no groups are selected
|
|
3557
|
+
}
|
|
3558
|
+
this.searchStoreText = '';
|
|
3559
|
+
}
|
|
3560
|
+
Reset() {
|
|
3561
|
+
// Clear groups and stores
|
|
3562
|
+
this.filteredGroups = [];
|
|
3563
|
+
this.filteredStores = [];
|
|
3564
|
+
// Reset locations and checkboxes
|
|
3565
|
+
this.filteredLocations.forEach(location => location.checked = false);
|
|
3566
|
+
this.searchLocationText = "";
|
|
3567
|
+
this.searchGroupText = "";
|
|
3568
|
+
this.searchStoreText = "";
|
|
3569
|
+
this.groupsData.forEach(group => group.checked = false);
|
|
3570
|
+
// Update stores based on conditions
|
|
3571
|
+
if (this.filteredLocations.every(location => !location.checked) &&
|
|
3572
|
+
this.filteredGroups.every(group => !group.checked)) {
|
|
3573
|
+
this.filteredStores = this.stores.map(store => ({
|
|
3574
|
+
...store,
|
|
3575
|
+
checked: true
|
|
3576
|
+
}));
|
|
3577
|
+
}
|
|
3578
|
+
else {
|
|
3579
|
+
this.filteredStores = this.stores.map(store => ({
|
|
3580
|
+
...store,
|
|
3581
|
+
checked: false
|
|
3582
|
+
}));
|
|
3583
|
+
}
|
|
3584
|
+
// Update localStorage and emit data
|
|
3585
|
+
const resetFilters = {
|
|
3586
|
+
...this.selectedFilters,
|
|
3587
|
+
stores: this.filteredStores,
|
|
3588
|
+
group: [],
|
|
3589
|
+
location: []
|
|
3590
|
+
};
|
|
3591
|
+
localStorage.setItem("header-filters", JSON.stringify(resetFilters));
|
|
3592
|
+
this.gs.dataRangeValue.next(resetFilters);
|
|
3593
|
+
this.Opendropdown = false; // Close dropdown if needed
|
|
3594
|
+
}
|
|
3595
|
+
Apply() {
|
|
3596
|
+
// Close the dropdown
|
|
3597
|
+
this.Opendropdown = false;
|
|
3598
|
+
// Fetch existing filters from localStorage
|
|
3599
|
+
const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
|
|
3600
|
+
// Ensure current selections are reflected
|
|
3601
|
+
this.selectedFilters.location = this.filteredLocations;
|
|
3602
|
+
this.selectedFilters.group = this.filteredGroups;
|
|
3603
|
+
this.selectedFilters.stores = this.filteredStores;
|
|
3604
|
+
// Store updated filters back in localStorage
|
|
3605
|
+
localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
|
|
3606
|
+
// Emit the updated filters via the service
|
|
3607
|
+
this.gs.dataRangeValue.next(this.selectedFilters);
|
|
3608
|
+
// Trigger refresh if necessary
|
|
3609
|
+
this.gs.manageRefreshTrigger.next(true);
|
|
3610
|
+
this.cd.detectChanges();
|
|
3611
|
+
}
|
|
3612
|
+
filterLocations() {
|
|
3613
|
+
const searchText = this.searchLocationText.toLowerCase();
|
|
3614
|
+
if (searchText) {
|
|
3615
|
+
// Filter based on search text
|
|
3616
|
+
this.filteredLocations = this.locations.filter((location) => location.city.toLowerCase().includes(searchText));
|
|
3617
|
+
}
|
|
3618
|
+
else {
|
|
3619
|
+
// Reset to full array if search text is empty
|
|
3620
|
+
this.filteredLocations = [...this.locations];
|
|
3621
|
+
}
|
|
3622
|
+
}
|
|
3623
|
+
filterGroups() {
|
|
3624
|
+
if (this.searchGroupText) {
|
|
3625
|
+
this.filteredGroups = this.groupsData.filter((group) => group.groupName
|
|
3626
|
+
.toLowerCase()
|
|
3627
|
+
.includes(this.searchGroupText.toLowerCase()));
|
|
3628
|
+
}
|
|
3629
|
+
else {
|
|
3630
|
+
this.filteredGroups = this.groupsData;
|
|
3631
|
+
}
|
|
3632
|
+
}
|
|
3633
|
+
filterStores() {
|
|
3634
|
+
if (this.searchStoreText) {
|
|
3635
|
+
this.filteredStores = this.stores.filter((store) => store.storeName
|
|
3636
|
+
.toLowerCase()
|
|
3637
|
+
.includes(this.searchStoreText.toLowerCase()));
|
|
3638
|
+
}
|
|
3639
|
+
else {
|
|
3640
|
+
this.filteredStores = this.stores;
|
|
3641
|
+
}
|
|
3642
|
+
}
|
|
3643
|
+
closeDropdown() {
|
|
3644
|
+
this.dropdownOpen = null;
|
|
3645
|
+
}
|
|
3646
|
+
clickOutside(event) {
|
|
3647
|
+
const clickedInside = event.target.closest(".dropdown-container");
|
|
3648
|
+
const clickedoutSide = event.target.closest(".dropdown1");
|
|
3649
|
+
if (!clickedInside) {
|
|
3650
|
+
this.closeDropdown();
|
|
3651
|
+
}
|
|
3652
|
+
if (!clickedoutSide) {
|
|
3653
|
+
this.closeDropdown1();
|
|
3654
|
+
}
|
|
3655
|
+
}
|
|
3656
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TrafficHeaderComponent, deps: [{ token: AuthService }, { token: i1$1.GlobalStateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
3657
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TrafficHeaderComponent, selector: "lib-traffic-header", host: { listeners: { "document:click": "clickOutside($event)" } }, ngImport: i0, template: "<div class=\"wrapper mx-3\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n<lib-select [items]=\"clientList\" [multi]=\"false\" [searchField]=\"'clientName'\" [disabled]=\"false\" [idField]=\"'clientId'\"\r\n(selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n</div>\r\n<div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput\r\n ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n<div class=\"position-relative\">\r\n <button type=\"button\" (click)=\"opendropdown($event)\" class=\"btn btn-default mx-2 rounded-3 text-nowrap border-val\">\r\n <span class=\"me-2\">Filter</span>\r\n <svg class=\"pl-3\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n\r\n <div *ngIf=\"Opendropdown\" class=\"card p-5 dropdown1 position-absolute z-1 end-0\" style=\"z-index: 1 !important;\" (clickOutside)=\"closeDropdown1()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-2\">Filter Options\r\n <button class=\"btn btn-outline w-25 ms-3 btn-resize\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-25 btn-resize\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n\r\n <!-- Location Dropdown -->\r\n<div class=\"dropdown-container\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input\" \r\n [value]=\"selectedLocationsLabel()\"\r\n (focus)=\"toggleDropdown('location')\" \r\n readonly\r\n placeholder=\"Select locations...\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'location'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search locations...\" \r\n [(ngModel)]=\"searchLocationText\" \r\n (ngModelChange)=\"filterLocations()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n id=\"selectAllLocations\" \r\n [checked]=\"isAllLocationsSelected()\" \r\n (change)=\"toggleSelectAllLocations($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllLocations\">\r\n Select All Locations\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let location of filteredLocations\"\r\n >\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n [id]=\"location.city\" \r\n [(ngModel)]=\"location.checked\"\r\n (change)=\"updateSelectedLocations()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"location.city\">\r\n {{ location.city }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Group Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('group')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input\" \r\n [value]=\"selectedGroupsLabel()\" readonly\r\n placeholder=\"Select groups...\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'group'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search groups...\" \r\n [(ngModel)]=\"searchGroupText\" \r\n (ngModelChange)=\"filterGroups()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n id=\"selectAllGroups\" \r\n [checked]=\"isAllGroupsSelected()\" \r\n (change)=\"toggleSelectAllGroups($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllGroups\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let group of filteredGroups\"\r\n >\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n [id]=\"group.groupName\"\r\n [(ngModel)]=\"group.checked\"\r\n (change)=\"updateSelectedGroups()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"group.groupName\">\r\n {{ group.groupName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Store Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('store')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input\" \r\n [value]=\"selectedStoresLabel()\"\r\n readonly\r\n placeholder=\"Select stores...\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'store'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search stores...\" \r\n [(ngModel)]=\"searchStoreText\" \r\n (ngModelChange)=\"filterStores()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n id=\"selectAllStores\" \r\n [checked]=\"isAllStoresSelected()\" \r\n (change)=\"toggleSelectAllStores($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllStores\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let store of filteredStores\"\r\n >\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n [id]=\"store.storeId\"\r\n [(ngModel)]=\"store.checked\"\r\n (change)=\"updateSelectedStores()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"store.storeId\">\r\n {{ store.storeName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</div>", styles: [".daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}::ng-deep .applyBtn{display:none!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.wrapper{min-width:200px}.btn-primary{line-height:18px!important}.filter-label{color:var(--Gray-500, #667085)!important;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.position-relative{position:relative}.filter-icon{cursor:pointer}.dropdown-container{position:relative;display:inline-block;width:100%}.dropdown-header{cursor:pointer;width:100%}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize;width:100%;box-sizing:border-box}.dropdown-menu{position:absolute;top:100%;left:0;right:0;border:1px solid #ccc;background-color:#fff;z-index:1000;max-height:200px;overflow-y:auto;display:block;box-sizing:border-box}.dropdown-item{padding:8px 12px}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.dropdown1{position:absolute;top:70px;min-width:270px!important}.dropdown1 .dropdown-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:24px}.dropdown1 .dropdown{position:relative;display:inline-block}.dropdown1 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}::ng-deep .dropdown1{z-index:1!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CustomSelectComponent, selector: "lib-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "directive", type: i3$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
3658
|
+
}
|
|
3659
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TrafficHeaderComponent, decorators: [{
|
|
3660
|
+
type: Component,
|
|
3661
|
+
args: [{ selector: "lib-traffic-header", template: "<div class=\"wrapper mx-3\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n<lib-select [items]=\"clientList\" [multi]=\"false\" [searchField]=\"'clientName'\" [disabled]=\"false\" [idField]=\"'clientId'\"\r\n(selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n</div>\r\n<div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput\r\n ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n<div class=\"position-relative\">\r\n <button type=\"button\" (click)=\"opendropdown($event)\" class=\"btn btn-default mx-2 rounded-3 text-nowrap border-val\">\r\n <span class=\"me-2\">Filter</span>\r\n <svg class=\"pl-3\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n\r\n <div *ngIf=\"Opendropdown\" class=\"card p-5 dropdown1 position-absolute z-1 end-0\" style=\"z-index: 1 !important;\" (clickOutside)=\"closeDropdown1()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-2\">Filter Options\r\n <button class=\"btn btn-outline w-25 ms-3 btn-resize\" (click)=\"Reset()\"> Reset </button>\r\n <button class=\"btn btn-primary w-25 btn-resize\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n\r\n <!-- Location Dropdown -->\r\n<div class=\"dropdown-container\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input\" \r\n [value]=\"selectedLocationsLabel()\"\r\n (focus)=\"toggleDropdown('location')\" \r\n readonly\r\n placeholder=\"Select locations...\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'location'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search locations...\" \r\n [(ngModel)]=\"searchLocationText\" \r\n (ngModelChange)=\"filterLocations()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n id=\"selectAllLocations\" \r\n [checked]=\"isAllLocationsSelected()\" \r\n (change)=\"toggleSelectAllLocations($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllLocations\">\r\n Select All Locations\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let location of filteredLocations\"\r\n >\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n [id]=\"location.city\" \r\n [(ngModel)]=\"location.checked\"\r\n (change)=\"updateSelectedLocations()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"location.city\">\r\n {{ location.city }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Group Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('group')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input\" \r\n [value]=\"selectedGroupsLabel()\" readonly\r\n placeholder=\"Select groups...\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'group'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search groups...\" \r\n [(ngModel)]=\"searchGroupText\" \r\n (ngModelChange)=\"filterGroups()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n id=\"selectAllGroups\" \r\n [checked]=\"isAllGroupsSelected()\" \r\n (change)=\"toggleSelectAllGroups($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllGroups\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let group of filteredGroups\"\r\n >\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n [id]=\"group.groupName\"\r\n [(ngModel)]=\"group.checked\"\r\n (change)=\"updateSelectedGroups()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"group.groupName\">\r\n {{ group.groupName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Store Dropdown -->\r\n<div class=\"dropdown-container mt-3\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-header\" (click)=\"toggleDropdown('store')\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control dropdown-input\" \r\n [value]=\"selectedStoresLabel()\"\r\n readonly\r\n placeholder=\"Select stores...\"\r\n />\r\n </div>\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"dropdownOpen === 'store'\">\r\n <input \r\n type=\"text\" \r\n class=\"form-control mb-2 dropdown-search\" \r\n placeholder=\"Search stores...\" \r\n [(ngModel)]=\"searchStoreText\" \r\n (ngModelChange)=\"filterStores()\" \r\n />\r\n <div class=\"form-check mb-2 dropdown-item custom-dropdown-item\">\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n id=\"selectAllStores\" \r\n [checked]=\"isAllStoresSelected()\" \r\n (change)=\"toggleSelectAllStores($event)\" \r\n />\r\n <label class=\"form-check-label\" for=\"selectAllStores\">\r\n Select All\r\n </label>\r\n </div>\r\n <div \r\n class=\"dropdown-item form-check custom-dropdown-item\" \r\n *ngFor=\"let store of filteredStores\"\r\n >\r\n <input \r\n class=\"form-check-input\" \r\n type=\"checkbox\" \r\n [id]=\"store.storeId\"\r\n [(ngModel)]=\"store.checked\"\r\n (change)=\"updateSelectedStores()\" \r\n />\r\n <label class=\"form-check-label\" [for]=\"store.storeId\">\r\n {{ store.storeName }}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</div>", styles: [".daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize}::ng-deep .applyBtn{display:none!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}.wrapper{min-width:200px}.btn-primary{line-height:18px!important}.filter-label{color:var(--Gray-500, #667085)!important;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.position-relative{position:relative}.filter-icon{cursor:pointer}.dropdown-container{position:relative;display:inline-block;width:100%}.dropdown-header{cursor:pointer;width:100%}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize;width:100%;box-sizing:border-box}.dropdown-menu{position:absolute;top:100%;left:0;right:0;border:1px solid #ccc;background-color:#fff;z-index:1000;max-height:200px;overflow-y:auto;display:block;box-sizing:border-box}.dropdown-item{padding:8px 12px}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.dropdown1{position:absolute;top:70px;min-width:270px!important}.dropdown1 .dropdown-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:24px}.dropdown1 .dropdown{position:relative;display:inline-block}.dropdown1 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}::ng-deep .dropdown1{z-index:1!important}\n"] }]
|
|
3662
|
+
}], ctorParameters: () => [{ type: AuthService }, { type: i1$1.GlobalStateService }, { type: i0.ChangeDetectorRef }], propDecorators: { onClick: [{
|
|
3663
|
+
type: HostListener,
|
|
3664
|
+
args: ['document:click', ['$event']]
|
|
3665
|
+
}], clickOutside: [{
|
|
3666
|
+
type: HostListener,
|
|
3667
|
+
args: ["document:click", ["$event"]]
|
|
3668
|
+
}] } });
|
|
3669
|
+
|
|
3125
3670
|
class ToolbarComponent {
|
|
3126
3671
|
layout;
|
|
3127
3672
|
router;
|
|
@@ -3159,6 +3704,7 @@ class ToolbarComponent {
|
|
|
3159
3704
|
stores: [],
|
|
3160
3705
|
date: null,
|
|
3161
3706
|
};
|
|
3707
|
+
trafficdatepicker;
|
|
3162
3708
|
constructor(layout, router, route, gs) {
|
|
3163
3709
|
this.layout = layout;
|
|
3164
3710
|
this.router = router;
|
|
@@ -3227,10 +3773,10 @@ class ToolbarComponent {
|
|
|
3227
3773
|
URL == "/manage/stores" || URL === "/manage/stores?type=stores" || URL === "/manage/stores?type=groups" ||
|
|
3228
3774
|
URL == "/manage/stores/addition-method" ||
|
|
3229
3775
|
URL == "/manage/stores/add-single-store") {
|
|
3230
|
-
this.setUIProperties(true, false, false, false, false);
|
|
3776
|
+
this.setUIProperties(true, false, false, false, false, false);
|
|
3231
3777
|
}
|
|
3232
3778
|
else if (url[3] == "edge-app") {
|
|
3233
|
-
this.setUIProperties(false, false, false, false, true);
|
|
3779
|
+
this.setUIProperties(false, false, false, false, true, false);
|
|
3234
3780
|
}
|
|
3235
3781
|
else if (URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||
|
|
3236
3782
|
URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||
|
|
@@ -3238,19 +3784,22 @@ class ToolbarComponent {
|
|
|
3238
3784
|
URL == `/manage/stores/cameras?storeId=${this.storeId}` ||
|
|
3239
3785
|
// URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||
|
|
3240
3786
|
URL == `/manage/stores/mat?storeId=${this.storeId}`) {
|
|
3241
|
-
this.setUIProperties(false, false, false, true, false);
|
|
3787
|
+
this.setUIProperties(false, false, false, true, false, false);
|
|
3242
3788
|
}
|
|
3243
3789
|
else if (URL == "/profile" || url[2] === "data-mismatch" || url[2] === "employeetraining" || URL == "/notifications/alerts"
|
|
3244
3790
|
|| URL == "/manage/brands" || URL == "/manage/users/tango" || URL === "/tickets/users?type=audit") {
|
|
3245
|
-
this.setUIProperties(false, false, false, false, false);
|
|
3791
|
+
this.setUIProperties(false, false, false, false, false, false);
|
|
3792
|
+
}
|
|
3793
|
+
else if (URL == "/manage/traffic") {
|
|
3794
|
+
this.setUIProperties(false, false, false, false, false, true);
|
|
3246
3795
|
}
|
|
3247
3796
|
else {
|
|
3248
|
-
this.setUIProperties(false, false, false, false, true);
|
|
3797
|
+
this.setUIProperties(false, false, false, false, true, false);
|
|
3249
3798
|
}
|
|
3250
3799
|
}
|
|
3251
3800
|
else {
|
|
3252
3801
|
if (url[3] == "edge-app") {
|
|
3253
|
-
this.setUIProperties(false, false, true, false, false);
|
|
3802
|
+
this.setUIProperties(false, false, true, false, false, false);
|
|
3254
3803
|
}
|
|
3255
3804
|
else if (URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||
|
|
3256
3805
|
URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||
|
|
@@ -3258,36 +3807,40 @@ class ToolbarComponent {
|
|
|
3258
3807
|
URL == `/manage/stores/cameras?storeId=${this.storeId}` ||
|
|
3259
3808
|
// URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||
|
|
3260
3809
|
URL == `/manage/stores/mat?storeId=${this.storeId}`) {
|
|
3261
|
-
this.setUIProperties(false, false, false, true, false);
|
|
3810
|
+
this.setUIProperties(false, false, false, true, false, false);
|
|
3262
3811
|
}
|
|
3263
3812
|
else if (URL == "/profile" || URL == "/manage/users/client" || URL == "/manage/users/tango" ||
|
|
3264
3813
|
URL == "/manage/stores" || URL === "/manage/stores?type=stores" || URL === "/manage/stores?type=groups" || url[2] == "settings" ||
|
|
3265
3814
|
URL == "/manage/stores/addition-method" ||
|
|
3266
3815
|
URL == "/manage/stores/add-single-store" || url[2] === "data-mismatch" || url[2] === "employeetraining"
|
|
3267
3816
|
|| URL == "/notifications/alerts" || URL == "/manage/users/tango") {
|
|
3268
|
-
this.setUIProperties(false, false, false, false, false);
|
|
3817
|
+
this.setUIProperties(false, false, false, false, false, false);
|
|
3818
|
+
}
|
|
3819
|
+
else if (URL == "/manage/traffic") {
|
|
3820
|
+
this.setUIProperties(false, false, false, false, false, true);
|
|
3269
3821
|
}
|
|
3270
3822
|
else {
|
|
3271
|
-
this.setUIProperties(false, false, true, false, false);
|
|
3823
|
+
this.setUIProperties(false, false, true, false, false, false);
|
|
3272
3824
|
}
|
|
3273
3825
|
}
|
|
3274
3826
|
const viewsWithPageTitles = ["classic", "reports", "saas"];
|
|
3275
3827
|
return (this.appPageTitleDisplay &&
|
|
3276
3828
|
viewsWithPageTitles.some((t) => t === this.appToolbarLayout));
|
|
3277
3829
|
}
|
|
3278
|
-
setUIProperties(singleSelect, multiSelect, datepicker, singleStore, singleSelectdatepicker) {
|
|
3830
|
+
setUIProperties(singleSelect, multiSelect, datepicker, singleStore, singleSelectdatepicker, trafficdatepicker) {
|
|
3279
3831
|
this.singleSelect = singleSelect;
|
|
3280
3832
|
this.multiSelect = multiSelect;
|
|
3281
3833
|
this.datepicker = datepicker;
|
|
3282
3834
|
this.singleStore = singleStore;
|
|
3283
3835
|
this.singleSelectdatepicker = singleSelectdatepicker;
|
|
3836
|
+
this.trafficdatepicker = trafficdatepicker;
|
|
3284
3837
|
}
|
|
3285
3838
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, deps: [{ token: i1$1.LayoutService }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i1$1.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3286
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ToolbarComponent, selector: "lib-toolbar", inputs: { currentLayoutType: "currentLayoutType", appToolbarLayout: "appToolbarLayout" }, ngImport: i0, template: "<!--begin::Toolbar container-->\r\n<div id=\"kt_app_toolbar_container\" class=\"app-container\" [ngClass]=\"appToolbarContainerCSSClass\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || (gs.userAccess | async)?.userType === 'client' || (gs.userAccess | async)?.userType === 'lead'\" >\r\n <ng-container *ngIf=\"showPageTitle()\">\r\n <lib-page-title [appPageTitleDirection]=\"appPageTitleDirection\" [appPageTitleBreadcrumb]=\"appPageTitleBreadcrumb\"\r\n [appPageTitleDescription]=\"appPageTitleDescription\" class=\"page-title d-flex flex-wrap me-3\"\r\n [ngClass]=\"{'flex-column justify-content-center': appPageTitleDirection === 'column', 'align-items-center': appPageTitleDirection !== 'column', appPageTitleCSSClass}\">\r\n </lib-page-title>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiSelect && users.userType ==='tango'\">\r\n <lib-classic class=\"d-flex align-items-center gap-2 gap-lg-3\"></lib-classic>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelect && users.userType ==='tango'\">\r\n <lib-client-settings class=\"d-flex align-items-center me-5\"></lib-client-settings>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"datepicker && users.userType ==='client'\">\r\n <lib-datepicker class=\"d-flex align-items-center me-5\"></lib-datepicker>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelectdatepicker && users.userType ==='tango'\">\r\n <lib-date-single-select class=\"d-flex align-items-center me-5\"></lib-date-single-select>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleStore\">\r\n <lib-single-store class=\"d-flex align-items-center me-5\"></lib-single-store>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"appToolbarLayout === 'extended'\">\r\n <lib-extended class=\"d-flex align-items-center flex-shrink-0 me-5\"></lib-extended>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'reports'\">\r\n <lib-reports class=\"d-flex align-items-center overflow-auto\" [appPageTitleDisplay]=\"appPageTitleDisplay\">\r\n </lib-reports>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'saas'\">\r\n <lib-saas class=\"d-flex align-items-center gap-2\" [appPageTitleDisplay]=\"appPageTitleDisplay\"></lib-saas>\r\n </ng-container> -->\r\n</ng-container>\r\n</div>\r\n<!--end::Toolbar container-->\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PageTitleComponent, selector: "lib-page-title", inputs: ["appPageTitleDirection", "appPageTitleBreadcrumb", "appPageTitleDescription"] }, { kind: "component", type: ClassicComponent, selector: "lib-classic" }, { kind: "component", type: ClientSettingsComponent, selector: "lib-client-settings" }, { kind: "component", type: DatepickerComponent, selector: "lib-datepicker" }, { kind: "component", type: DateSingleSelectComponent, selector: "lib-date-single-select" }, { kind: "component", type: SingleStoreComponent, selector: "lib-single-store" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
3839
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ToolbarComponent, selector: "lib-toolbar", inputs: { currentLayoutType: "currentLayoutType", appToolbarLayout: "appToolbarLayout" }, ngImport: i0, template: "<!--begin::Toolbar container-->\r\n<div id=\"kt_app_toolbar_container\" class=\"app-container\" [ngClass]=\"appToolbarContainerCSSClass\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || (gs.userAccess | async)?.userType === 'client' || (gs.userAccess | async)?.userType === 'lead'\" >\r\n <ng-container *ngIf=\"showPageTitle()\">\r\n <lib-page-title [appPageTitleDirection]=\"appPageTitleDirection\" [appPageTitleBreadcrumb]=\"appPageTitleBreadcrumb\"\r\n [appPageTitleDescription]=\"appPageTitleDescription\" class=\"page-title d-flex flex-wrap me-3\"\r\n [ngClass]=\"{'flex-column justify-content-center': appPageTitleDirection === 'column', 'align-items-center': appPageTitleDirection !== 'column', appPageTitleCSSClass}\">\r\n </lib-page-title>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiSelect && users.userType ==='tango'\">\r\n <lib-classic class=\"d-flex align-items-center gap-2 gap-lg-3\"></lib-classic>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelect && users.userType ==='tango'\">\r\n <lib-client-settings class=\"d-flex align-items-center me-5\"></lib-client-settings>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"datepicker && users.userType ==='client'\">\r\n <lib-datepicker class=\"d-flex align-items-center me-5\"></lib-datepicker>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelectdatepicker && users.userType ==='tango'\">\r\n <lib-date-single-select class=\"d-flex align-items-center me-5\"></lib-date-single-select>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleStore\">\r\n <lib-single-store class=\"d-flex align-items-center me-5\"></lib-single-store>\r\n </ng-container>\r\n <ng-container *ngIf=\"trafficdatepicker\">\r\n <lib-traffic-header class=\"d-flex align-items-center me-5\"></lib-traffic-header>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"appToolbarLayout === 'extended'\">\r\n <lib-extended class=\"d-flex align-items-center flex-shrink-0 me-5\"></lib-extended>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'reports'\">\r\n <lib-reports class=\"d-flex align-items-center overflow-auto\" [appPageTitleDisplay]=\"appPageTitleDisplay\">\r\n </lib-reports>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'saas'\">\r\n <lib-saas class=\"d-flex align-items-center gap-2\" [appPageTitleDisplay]=\"appPageTitleDisplay\"></lib-saas>\r\n </ng-container> -->\r\n</ng-container>\r\n</div>\r\n<!--end::Toolbar container-->\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PageTitleComponent, selector: "lib-page-title", inputs: ["appPageTitleDirection", "appPageTitleBreadcrumb", "appPageTitleDescription"] }, { kind: "component", type: ClassicComponent, selector: "lib-classic" }, { kind: "component", type: ClientSettingsComponent, selector: "lib-client-settings" }, { kind: "component", type: DatepickerComponent, selector: "lib-datepicker" }, { kind: "component", type: DateSingleSelectComponent, selector: "lib-date-single-select" }, { kind: "component", type: SingleStoreComponent, selector: "lib-single-store" }, { kind: "component", type: TrafficHeaderComponent, selector: "lib-traffic-header" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
3287
3840
|
}
|
|
3288
3841
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, decorators: [{
|
|
3289
3842
|
type: Component,
|
|
3290
|
-
args: [{ selector: "lib-toolbar", template: "<!--begin::Toolbar container-->\r\n<div id=\"kt_app_toolbar_container\" class=\"app-container\" [ngClass]=\"appToolbarContainerCSSClass\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || (gs.userAccess | async)?.userType === 'client' || (gs.userAccess | async)?.userType === 'lead'\" >\r\n <ng-container *ngIf=\"showPageTitle()\">\r\n <lib-page-title [appPageTitleDirection]=\"appPageTitleDirection\" [appPageTitleBreadcrumb]=\"appPageTitleBreadcrumb\"\r\n [appPageTitleDescription]=\"appPageTitleDescription\" class=\"page-title d-flex flex-wrap me-3\"\r\n [ngClass]=\"{'flex-column justify-content-center': appPageTitleDirection === 'column', 'align-items-center': appPageTitleDirection !== 'column', appPageTitleCSSClass}\">\r\n </lib-page-title>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiSelect && users.userType ==='tango'\">\r\n <lib-classic class=\"d-flex align-items-center gap-2 gap-lg-3\"></lib-classic>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelect && users.userType ==='tango'\">\r\n <lib-client-settings class=\"d-flex align-items-center me-5\"></lib-client-settings>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"datepicker && users.userType ==='client'\">\r\n <lib-datepicker class=\"d-flex align-items-center me-5\"></lib-datepicker>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelectdatepicker && users.userType ==='tango'\">\r\n <lib-date-single-select class=\"d-flex align-items-center me-5\"></lib-date-single-select>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleStore\">\r\n <lib-single-store class=\"d-flex align-items-center me-5\"></lib-single-store>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"appToolbarLayout === 'extended'\">\r\n <lib-extended class=\"d-flex align-items-center flex-shrink-0 me-5\"></lib-extended>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'reports'\">\r\n <lib-reports class=\"d-flex align-items-center overflow-auto\" [appPageTitleDisplay]=\"appPageTitleDisplay\">\r\n </lib-reports>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'saas'\">\r\n <lib-saas class=\"d-flex align-items-center gap-2\" [appPageTitleDisplay]=\"appPageTitleDisplay\"></lib-saas>\r\n </ng-container> -->\r\n</ng-container>\r\n</div>\r\n<!--end::Toolbar container-->\r\n" }]
|
|
3843
|
+
args: [{ selector: "lib-toolbar", template: "<!--begin::Toolbar container-->\r\n<div id=\"kt_app_toolbar_container\" class=\"app-container\" [ngClass]=\"appToolbarContainerCSSClass\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || (gs.userAccess | async)?.userType === 'client' || (gs.userAccess | async)?.userType === 'lead'\" >\r\n <ng-container *ngIf=\"showPageTitle()\">\r\n <lib-page-title [appPageTitleDirection]=\"appPageTitleDirection\" [appPageTitleBreadcrumb]=\"appPageTitleBreadcrumb\"\r\n [appPageTitleDescription]=\"appPageTitleDescription\" class=\"page-title d-flex flex-wrap me-3\"\r\n [ngClass]=\"{'flex-column justify-content-center': appPageTitleDirection === 'column', 'align-items-center': appPageTitleDirection !== 'column', appPageTitleCSSClass}\">\r\n </lib-page-title>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiSelect && users.userType ==='tango'\">\r\n <lib-classic class=\"d-flex align-items-center gap-2 gap-lg-3\"></lib-classic>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelect && users.userType ==='tango'\">\r\n <lib-client-settings class=\"d-flex align-items-center me-5\"></lib-client-settings>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"datepicker && users.userType ==='client'\">\r\n <lib-datepicker class=\"d-flex align-items-center me-5\"></lib-datepicker>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelectdatepicker && users.userType ==='tango'\">\r\n <lib-date-single-select class=\"d-flex align-items-center me-5\"></lib-date-single-select>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleStore\">\r\n <lib-single-store class=\"d-flex align-items-center me-5\"></lib-single-store>\r\n </ng-container>\r\n <ng-container *ngIf=\"trafficdatepicker\">\r\n <lib-traffic-header class=\"d-flex align-items-center me-5\"></lib-traffic-header>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"appToolbarLayout === 'extended'\">\r\n <lib-extended class=\"d-flex align-items-center flex-shrink-0 me-5\"></lib-extended>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'reports'\">\r\n <lib-reports class=\"d-flex align-items-center overflow-auto\" [appPageTitleDisplay]=\"appPageTitleDisplay\">\r\n </lib-reports>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'saas'\">\r\n <lib-saas class=\"d-flex align-items-center gap-2\" [appPageTitleDisplay]=\"appPageTitleDisplay\"></lib-saas>\r\n </ng-container> -->\r\n</ng-container>\r\n</div>\r\n<!--end::Toolbar container-->\r\n" }]
|
|
3291
3844
|
}], ctorParameters: () => [{ type: i1$1.LayoutService }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i1$1.GlobalStateService }], propDecorators: { currentLayoutType: [{
|
|
3292
3845
|
type: Input
|
|
3293
3846
|
}], appToolbarLayout: [{
|
|
@@ -5305,7 +5858,8 @@ class LayoutModule {
|
|
|
5305
5858
|
DateSingleSelectComponent,
|
|
5306
5859
|
SingleStoreComponent,
|
|
5307
5860
|
NotificationsInnerComponent,
|
|
5308
|
-
CsmAssignConfirmationComponent
|
|
5861
|
+
CsmAssignConfirmationComponent,
|
|
5862
|
+
TrafficHeaderComponent], imports: [CommonModule, i1.RouterModule, TranslationModule,
|
|
5309
5863
|
InlineSVGModule,
|
|
5310
5864
|
NgbDropdownModule,
|
|
5311
5865
|
NgbProgressbarModule,
|
|
@@ -5368,6 +5922,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
5368
5922
|
SingleStoreComponent,
|
|
5369
5923
|
NotificationsInnerComponent,
|
|
5370
5924
|
CsmAssignConfirmationComponent,
|
|
5925
|
+
TrafficHeaderComponent,
|
|
5371
5926
|
],
|
|
5372
5927
|
imports: [
|
|
5373
5928
|
CommonModule,
|