tango-app-ui-shared 3.3.0-alpha.4 → 3.3.0-alpha.6
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/sidebar/sidebar-footer/sidebar-footer.component.mjs +3 -3
- 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 +529 -0
- package/esm2022/lib/services/auth.service.mjs +12 -1
- package/fesm2022/tango-app-ui-shared.mjs +570 -17
- 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:0px solid var(--Gray-300, #D0D5DD)!important;border-radius:16px!important;background:var(--Gray-100, #F2F4F7);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:0px solid var(--Gray-300, #D0D5DD)!important;border-radius:16px!important;background:var(--Gray-100, #F2F4F7);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,525 @@ 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
|
+
}));
|
|
3477
|
+
localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
|
|
3478
|
+
this.gs.dataRangeValue.next(this.selectedFilters);
|
|
3479
|
+
}
|
|
3480
|
+
// Ensure selected stores are reflected
|
|
3481
|
+
this.stores.forEach(store => {
|
|
3482
|
+
const storedStore = this.selectedFilters.stores.find((s) => s.storeId === store.storeId);
|
|
3483
|
+
if (storedStore) {
|
|
3484
|
+
store.checked = storedStore.checked;
|
|
3485
|
+
}
|
|
3486
|
+
});
|
|
3487
|
+
},
|
|
3488
|
+
error: (err) => {
|
|
3489
|
+
console.error("Failed to fetch stores", err);
|
|
3490
|
+
},
|
|
3491
|
+
});
|
|
3492
|
+
}
|
|
3493
|
+
resetSelectedStores() {
|
|
3494
|
+
this.filteredStores.forEach((store) => (store.checked = false));
|
|
3495
|
+
this.searchStoreText = "";
|
|
3496
|
+
}
|
|
3497
|
+
selectedStoresLabel() {
|
|
3498
|
+
const selectedStores = this.filteredStores.filter((store) => store.checked);
|
|
3499
|
+
return selectedStores.length === 0
|
|
3500
|
+
? "No Stores selected"
|
|
3501
|
+
: selectedStores.length === 1
|
|
3502
|
+
? selectedStores[0].storeName
|
|
3503
|
+
: `${selectedStores.length} Stores selected`;
|
|
3504
|
+
}
|
|
3505
|
+
isAllStoresSelected() {
|
|
3506
|
+
return this.filteredStores.length > 0 && this.filteredStores.every(store => store.checked);
|
|
3507
|
+
}
|
|
3508
|
+
// Method to handle dropdown item selection
|
|
3509
|
+
updateSelectedStores() {
|
|
3510
|
+
// Update logic for store selection
|
|
3511
|
+
// Ensure this logic does not reset the store values unintentionally
|
|
3512
|
+
this.selectedFilters.stores = this.filteredStores.filter(store => store.checked);
|
|
3513
|
+
localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
|
|
3514
|
+
}
|
|
3515
|
+
toggleSelectAllLocations(event) {
|
|
3516
|
+
const isChecked = event.target.checked;
|
|
3517
|
+
this.filteredLocations.forEach((location) => (location.checked = isChecked));
|
|
3518
|
+
this.updateSelectedLocations();
|
|
3519
|
+
}
|
|
3520
|
+
toggleSelectAllStores(event) {
|
|
3521
|
+
const checked = event.target.checked;
|
|
3522
|
+
this.filteredStores.forEach(store => store.checked = checked);
|
|
3523
|
+
this.updateSelectedStores();
|
|
3524
|
+
}
|
|
3525
|
+
updateSelectedLocations() {
|
|
3526
|
+
// When locations are selected, fetch the related groups
|
|
3527
|
+
const selectedCities = this.filteredLocations
|
|
3528
|
+
.filter((location) => location.checked)
|
|
3529
|
+
.map((location) => location.city);
|
|
3530
|
+
if (selectedCities.length > 0) {
|
|
3531
|
+
this.getGroups(selectedCities); // Fetch groups based on selected cities
|
|
3532
|
+
}
|
|
3533
|
+
else {
|
|
3534
|
+
this.filteredGroups = []; // Clear groups if no locations are selected
|
|
3535
|
+
}
|
|
3536
|
+
this.filteredStores = []; // Reset stores as well
|
|
3537
|
+
this.searchGroupText = '';
|
|
3538
|
+
this.searchStoreText = '';
|
|
3539
|
+
}
|
|
3540
|
+
toggleSelectAllGroups(event) {
|
|
3541
|
+
const isChecked = event.target.checked;
|
|
3542
|
+
this.filteredGroups.forEach((group) => (group.checked = isChecked));
|
|
3543
|
+
this.updateSelectedGroups();
|
|
3544
|
+
}
|
|
3545
|
+
updateSelectedGroups() {
|
|
3546
|
+
// Fetch the relevant stores after groups are selected
|
|
3547
|
+
const selectedGroups = this.filteredGroups
|
|
3548
|
+
.filter((group) => group.checked)
|
|
3549
|
+
.map((group) => group.groupName);
|
|
3550
|
+
if (selectedGroups.length > 0) {
|
|
3551
|
+
this.getStore(); // Fetch stores based on selected groups
|
|
3552
|
+
}
|
|
3553
|
+
else {
|
|
3554
|
+
this.filteredStores = []; // Clear stores if no groups are selected
|
|
3555
|
+
}
|
|
3556
|
+
this.searchStoreText = '';
|
|
3557
|
+
}
|
|
3558
|
+
Reset() {
|
|
3559
|
+
// Clear groups and stores
|
|
3560
|
+
this.filteredGroups = [];
|
|
3561
|
+
this.filteredStores = [];
|
|
3562
|
+
// Reset locations and checkboxes
|
|
3563
|
+
this.filteredLocations.forEach(location => location.checked = false);
|
|
3564
|
+
this.searchLocationText = "";
|
|
3565
|
+
this.searchGroupText = "";
|
|
3566
|
+
this.searchStoreText = "";
|
|
3567
|
+
this.groupsData.forEach(group => group.checked = false);
|
|
3568
|
+
// Update stores based on conditions
|
|
3569
|
+
if (this.filteredLocations.every(location => !location.checked) &&
|
|
3570
|
+
this.filteredGroups.every(group => !group.checked)) {
|
|
3571
|
+
this.filteredStores = this.stores.map(store => ({
|
|
3572
|
+
...store,
|
|
3573
|
+
checked: true
|
|
3574
|
+
}));
|
|
3575
|
+
}
|
|
3576
|
+
else {
|
|
3577
|
+
this.filteredStores = this.stores.map(store => ({
|
|
3578
|
+
...store,
|
|
3579
|
+
checked: false
|
|
3580
|
+
}));
|
|
3581
|
+
}
|
|
3582
|
+
// Update localStorage and emit data
|
|
3583
|
+
const resetFilters = {
|
|
3584
|
+
...this.selectedFilters,
|
|
3585
|
+
stores: this.filteredStores,
|
|
3586
|
+
group: [],
|
|
3587
|
+
location: []
|
|
3588
|
+
};
|
|
3589
|
+
localStorage.setItem("header-filters", JSON.stringify(resetFilters));
|
|
3590
|
+
this.gs.dataRangeValue.next(resetFilters);
|
|
3591
|
+
this.Opendropdown = false; // Close dropdown if needed
|
|
3592
|
+
}
|
|
3593
|
+
Apply() {
|
|
3594
|
+
// Close the dropdown
|
|
3595
|
+
this.Opendropdown = false;
|
|
3596
|
+
// Fetch existing filters from localStorage
|
|
3597
|
+
const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
|
|
3598
|
+
// Ensure current selections are reflected
|
|
3599
|
+
this.selectedFilters.location = this.filteredLocations;
|
|
3600
|
+
this.selectedFilters.group = this.filteredGroups;
|
|
3601
|
+
this.selectedFilters.stores = this.filteredStores;
|
|
3602
|
+
// Store updated filters back in localStorage
|
|
3603
|
+
localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
|
|
3604
|
+
// Emit the updated filters via the service
|
|
3605
|
+
this.gs.dataRangeValue.next(this.selectedFilters);
|
|
3606
|
+
// Trigger refresh if necessary
|
|
3607
|
+
this.gs.manageRefreshTrigger.next(true);
|
|
3608
|
+
this.cd.detectChanges();
|
|
3609
|
+
}
|
|
3610
|
+
filterLocations() {
|
|
3611
|
+
const searchText = this.searchLocationText.toLowerCase();
|
|
3612
|
+
if (searchText) {
|
|
3613
|
+
// Filter based on search text
|
|
3614
|
+
this.filteredLocations = this.locations.filter((location) => location.city.toLowerCase().includes(searchText));
|
|
3615
|
+
}
|
|
3616
|
+
else {
|
|
3617
|
+
// Reset to full array if search text is empty
|
|
3618
|
+
this.filteredLocations = [...this.locations];
|
|
3619
|
+
}
|
|
3620
|
+
}
|
|
3621
|
+
filterGroups() {
|
|
3622
|
+
if (this.searchGroupText) {
|
|
3623
|
+
this.filteredGroups = this.groupsData.filter((group) => group.groupName
|
|
3624
|
+
.toLowerCase()
|
|
3625
|
+
.includes(this.searchGroupText.toLowerCase()));
|
|
3626
|
+
}
|
|
3627
|
+
else {
|
|
3628
|
+
this.filteredGroups = this.groupsData;
|
|
3629
|
+
}
|
|
3630
|
+
}
|
|
3631
|
+
filterStores() {
|
|
3632
|
+
if (this.searchStoreText) {
|
|
3633
|
+
this.filteredStores = this.stores.filter((store) => store.storeName
|
|
3634
|
+
.toLowerCase()
|
|
3635
|
+
.includes(this.searchStoreText.toLowerCase()));
|
|
3636
|
+
}
|
|
3637
|
+
else {
|
|
3638
|
+
this.filteredStores = this.stores;
|
|
3639
|
+
}
|
|
3640
|
+
}
|
|
3641
|
+
closeDropdown() {
|
|
3642
|
+
this.dropdownOpen = null;
|
|
3643
|
+
}
|
|
3644
|
+
clickOutside(event) {
|
|
3645
|
+
const clickedInside = event.target.closest(".dropdown-container");
|
|
3646
|
+
const clickedoutSide = event.target.closest(".dropdown1");
|
|
3647
|
+
if (!clickedInside) {
|
|
3648
|
+
this.closeDropdown();
|
|
3649
|
+
}
|
|
3650
|
+
if (!clickedoutSide) {
|
|
3651
|
+
this.closeDropdown1();
|
|
3652
|
+
}
|
|
3653
|
+
}
|
|
3654
|
+
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 });
|
|
3655
|
+
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-2\" *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" }] });
|
|
3656
|
+
}
|
|
3657
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TrafficHeaderComponent, decorators: [{
|
|
3658
|
+
type: Component,
|
|
3659
|
+
args: [{ selector: "lib-traffic-header", template: "<div class=\"wrapper mx-2\" *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"] }]
|
|
3660
|
+
}], ctorParameters: () => [{ type: AuthService }, { type: i1$1.GlobalStateService }, { type: i0.ChangeDetectorRef }], propDecorators: { onClick: [{
|
|
3661
|
+
type: HostListener,
|
|
3662
|
+
args: ['document:click', ['$event']]
|
|
3663
|
+
}], clickOutside: [{
|
|
3664
|
+
type: HostListener,
|
|
3665
|
+
args: ["document:click", ["$event"]]
|
|
3666
|
+
}] } });
|
|
3667
|
+
|
|
3125
3668
|
class ToolbarComponent {
|
|
3126
3669
|
layout;
|
|
3127
3670
|
router;
|
|
@@ -3159,6 +3702,7 @@ class ToolbarComponent {
|
|
|
3159
3702
|
stores: [],
|
|
3160
3703
|
date: null,
|
|
3161
3704
|
};
|
|
3705
|
+
trafficdatepicker;
|
|
3162
3706
|
constructor(layout, router, route, gs) {
|
|
3163
3707
|
this.layout = layout;
|
|
3164
3708
|
this.router = router;
|
|
@@ -3227,10 +3771,10 @@ class ToolbarComponent {
|
|
|
3227
3771
|
URL == "/manage/stores" || URL === "/manage/stores?type=stores" || URL === "/manage/stores?type=groups" ||
|
|
3228
3772
|
URL == "/manage/stores/addition-method" ||
|
|
3229
3773
|
URL == "/manage/stores/add-single-store") {
|
|
3230
|
-
this.setUIProperties(true, false, false, false, false);
|
|
3774
|
+
this.setUIProperties(true, false, false, false, false, false);
|
|
3231
3775
|
}
|
|
3232
3776
|
else if (url[3] == "edge-app") {
|
|
3233
|
-
this.setUIProperties(false, false, false, false, true);
|
|
3777
|
+
this.setUIProperties(false, false, false, false, true, false);
|
|
3234
3778
|
}
|
|
3235
3779
|
else if (URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||
|
|
3236
3780
|
URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||
|
|
@@ -3238,19 +3782,22 @@ class ToolbarComponent {
|
|
|
3238
3782
|
URL == `/manage/stores/cameras?storeId=${this.storeId}` ||
|
|
3239
3783
|
// URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||
|
|
3240
3784
|
URL == `/manage/stores/mat?storeId=${this.storeId}`) {
|
|
3241
|
-
this.setUIProperties(false, false, false, true, false);
|
|
3785
|
+
this.setUIProperties(false, false, false, true, false, false);
|
|
3242
3786
|
}
|
|
3243
3787
|
else if (URL == "/profile" || url[2] === "data-mismatch" || url[2] === "employeetraining" || URL == "/notifications/alerts"
|
|
3244
3788
|
|| URL == "/manage/brands" || URL == "/manage/users/tango" || URL === "/tickets/users?type=audit") {
|
|
3245
|
-
this.setUIProperties(false, false, false, false, false);
|
|
3789
|
+
this.setUIProperties(false, false, false, false, false, false);
|
|
3790
|
+
}
|
|
3791
|
+
else if (URL == "/manage/traffic") {
|
|
3792
|
+
this.setUIProperties(false, false, false, false, false, true);
|
|
3246
3793
|
}
|
|
3247
3794
|
else {
|
|
3248
|
-
this.setUIProperties(false, false, false, false, true);
|
|
3795
|
+
this.setUIProperties(false, false, false, false, true, false);
|
|
3249
3796
|
}
|
|
3250
3797
|
}
|
|
3251
3798
|
else {
|
|
3252
3799
|
if (url[3] == "edge-app") {
|
|
3253
|
-
this.setUIProperties(false, false, true, false, false);
|
|
3800
|
+
this.setUIProperties(false, false, true, false, false, false);
|
|
3254
3801
|
}
|
|
3255
3802
|
else if (URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||
|
|
3256
3803
|
URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||
|
|
@@ -3258,36 +3805,40 @@ class ToolbarComponent {
|
|
|
3258
3805
|
URL == `/manage/stores/cameras?storeId=${this.storeId}` ||
|
|
3259
3806
|
// URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||
|
|
3260
3807
|
URL == `/manage/stores/mat?storeId=${this.storeId}`) {
|
|
3261
|
-
this.setUIProperties(false, false, false, true, false);
|
|
3808
|
+
this.setUIProperties(false, false, false, true, false, false);
|
|
3262
3809
|
}
|
|
3263
3810
|
else if (URL == "/profile" || URL == "/manage/users/client" || URL == "/manage/users/tango" ||
|
|
3264
3811
|
URL == "/manage/stores" || URL === "/manage/stores?type=stores" || URL === "/manage/stores?type=groups" || url[2] == "settings" ||
|
|
3265
3812
|
URL == "/manage/stores/addition-method" ||
|
|
3266
3813
|
URL == "/manage/stores/add-single-store" || url[2] === "data-mismatch" || url[2] === "employeetraining"
|
|
3267
3814
|
|| URL == "/notifications/alerts" || URL == "/manage/users/tango") {
|
|
3268
|
-
this.setUIProperties(false, false, false, false, false);
|
|
3815
|
+
this.setUIProperties(false, false, false, false, false, false);
|
|
3816
|
+
}
|
|
3817
|
+
else if (URL == "/manage/traffic") {
|
|
3818
|
+
this.setUIProperties(false, false, false, false, false, true);
|
|
3269
3819
|
}
|
|
3270
3820
|
else {
|
|
3271
|
-
this.setUIProperties(false, false, true, false, false);
|
|
3821
|
+
this.setUIProperties(false, false, true, false, false, false);
|
|
3272
3822
|
}
|
|
3273
3823
|
}
|
|
3274
3824
|
const viewsWithPageTitles = ["classic", "reports", "saas"];
|
|
3275
3825
|
return (this.appPageTitleDisplay &&
|
|
3276
3826
|
viewsWithPageTitles.some((t) => t === this.appToolbarLayout));
|
|
3277
3827
|
}
|
|
3278
|
-
setUIProperties(singleSelect, multiSelect, datepicker, singleStore, singleSelectdatepicker) {
|
|
3828
|
+
setUIProperties(singleSelect, multiSelect, datepicker, singleStore, singleSelectdatepicker, trafficdatepicker) {
|
|
3279
3829
|
this.singleSelect = singleSelect;
|
|
3280
3830
|
this.multiSelect = multiSelect;
|
|
3281
3831
|
this.datepicker = datepicker;
|
|
3282
3832
|
this.singleStore = singleStore;
|
|
3283
3833
|
this.singleSelectdatepicker = singleSelectdatepicker;
|
|
3834
|
+
this.trafficdatepicker = trafficdatepicker;
|
|
3284
3835
|
}
|
|
3285
3836
|
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" }] });
|
|
3837
|
+
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
3838
|
}
|
|
3288
3839
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, decorators: [{
|
|
3289
3840
|
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" }]
|
|
3841
|
+
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
3842
|
}], ctorParameters: () => [{ type: i1$1.LayoutService }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i1$1.GlobalStateService }], propDecorators: { currentLayoutType: [{
|
|
3292
3843
|
type: Input
|
|
3293
3844
|
}], appToolbarLayout: [{
|
|
@@ -3490,11 +4041,11 @@ class SidebarFooterComponent {
|
|
|
3490
4041
|
});
|
|
3491
4042
|
}
|
|
3492
4043
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SidebarFooterComponent, deps: [{ token: AuthService }, { token: i1.Router }, { token: i1$1.LayoutService }, { token: i1$1.PageInfoService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
3493
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SidebarFooterComponent, selector: "lib-sidebar-footer", inputs: { toggleButtonClass: "toggleButtonClass", toggleEnabled: "toggleEnabled", toggleType: "toggleType", toggleState: "toggleState", userValuefooter: "userValuefooter" }, ngImport: i0, template: "<div class=\"container-with-overflow\">\r\n <div id=\"kt_app_sidebar_menu_scroll\" class=\"\" data-kt-scroll=\"false\" data-kt-scroll-activate=\"false\"\r\n data-kt-scroll-height=\"auto\" data-kt-scroll-dependencies=\"#kt_app_sidebar_logo, #kt_app_sidebar_footer\"\r\n data-kt-scroll-wrappers=\"#kt_app_sidebar_menu\" data-kt-scroll-offset=\"5px\" data-kt-scroll-save-state=\"true\">\r\n <div class=\"menu menu-column menu-rounded menu-sub-indention fw-semibold fs-6\" id=\"kt_app_sidebar_menu\"\r\n data-kt-menu=\"true\" data-kt-menu-expand=\"false\">\r\n <div class=\"menu-item menu-accordion w-100 px-3\" id=\"#kt_app_sidebar_menu\" [ngClass]=\"{'active': isSubMenuActive}\"\r\n data-kt-menu-trigger=\"click\" (mouseover)=\"setArrowDirection(true)\"\r\n (mouseleave)=\"setArrowDirection(false)\" >\r\n <span class=\"menu-link without-sub\">\r\n <span class=\"menu-icon\">\r\n <img class=\"img-src\" *ngIf=\"userProfileData
|
|
4044
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SidebarFooterComponent, selector: "lib-sidebar-footer", inputs: { toggleButtonClass: "toggleButtonClass", toggleEnabled: "toggleEnabled", toggleType: "toggleType", toggleState: "toggleState", userValuefooter: "userValuefooter" }, ngImport: i0, template: "<div class=\"container-with-overflow\">\r\n <div id=\"kt_app_sidebar_menu_scroll\" class=\"\" data-kt-scroll=\"false\" data-kt-scroll-activate=\"false\"\r\n data-kt-scroll-height=\"auto\" data-kt-scroll-dependencies=\"#kt_app_sidebar_logo, #kt_app_sidebar_footer\"\r\n data-kt-scroll-wrappers=\"#kt_app_sidebar_menu\" data-kt-scroll-offset=\"5px\" data-kt-scroll-save-state=\"true\">\r\n <div class=\"menu menu-column menu-rounded menu-sub-indention fw-semibold fs-6\" id=\"kt_app_sidebar_menu\"\r\n data-kt-menu=\"true\" data-kt-menu-expand=\"false\">\r\n <div class=\"menu-item menu-accordion w-100 px-3\" id=\"#kt_app_sidebar_menu\" [ngClass]=\"{'active': isSubMenuActive}\"\r\n data-kt-menu-trigger=\"click\" (mouseover)=\"setArrowDirection(true)\"\r\n (mouseleave)=\"setArrowDirection(false)\" >\r\n <span class=\"menu-link without-sub\">\r\n <span class=\"menu-icon\">\r\n <img class=\"img-src\" *ngIf=\"userProfileData?.userProfile\" (error)=\"userProfileData.userProfile = null\" [src]=\"userProfileData?.userProfile ? userProfileData?.userProfile :'./assets/tango/Images/userProfile.svg'\" alt=\"Profile Image\">\r\n <img class=\"img-src\" *ngIf=\"!userProfileData?.userProfile\" src=\"assets/tango/Images/userProfile.svg\">\r\n </span>\r\n <span class=\"menu-title overflow-hidden ms-2\" data-link=\"/crafted/account\">{{ userValue.userName | titlecase}}<br>\r\n {{ userValue.email | titlecase}}</span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion w-100\" #accordion [class.show]=\"isSubMenuActive\" [ngClass]=\"{'menu-sub-top': isSubMenuActive}\"\r\n routerLinkActive=\"menu-active-bg\" >\r\n <div class=\"menu-item px-3 border-profile-first\">\r\n <a class=\"menu-link without-sub\" (click)=\"profileUrl()\" >\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M11.8574 3.83162C11.8574 5.94799 10.0668 7.66324 7.85742 7.66324C5.64805 7.66324 3.85742 5.94799 3.85742 3.83162C3.85742 1.71525 5.64805 0 7.85742 0C10.0668 0 11.8574 1.71525 11.8574 3.83162Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M6.36786 9.38452C2.85 9.38452 0 11.9226 0 15.0554C0 15.577 0.475 16.0001 1.06071 16.0001H14.9393C15.525 16.0001 16 15.577 16 15.0554C16 11.9226 13.15 9.38452 9.63214 9.38452H6.36786Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title overflow-hidden\">Profile</span>\r\n </a>\r\n </div>\r\n <!-- <div class=\"menu-item px-3\" style=\"border-radius: 0px;\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M14.2222 11.5556V8C14.2222 4.56356 11.4364 1.77778 8 1.77778C4.56356 1.77778 1.77778 4.56356 1.77778 8V11.5556H14.2222ZM16 11.5556H0V8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8V11.5556Z\"\r\n fill=\"#D0D5DD\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M1.77778 9.77759H2.66667C3.64851 9.77759 4.44444 10.5735 4.44444 11.5554V14.222C4.44444 15.2039 3.64851 15.9998 2.66667 15.9998H1.77778C0.795938 15.9998 0 15.2039 0 14.222V11.5554C0 10.5735 0.795938 9.77759 1.77778 9.77759ZM13.3333 9.77759H14.2222C15.2041 9.77759 16 10.5735 16 11.5554V14.222C16 15.2039 15.2041 15.9998 14.2222 15.9998H13.3333C12.3515 15.9998 11.5556 15.2039 11.5556 14.222V11.5554C11.5556 10.5735 12.3515 9.77759 13.3333 9.77759Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title overflow-hidden\">Support</span>\r\n </a>\r\n </div> -->\r\n <div class=\"menu-item px-3\" style=\"border-radius: 0px;\">\r\n <a class=\"menu-link without-sub\" (click)=\"logout()\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path\r\n d=\"M5 13H2.33333C1.97971 13 1.64057 12.8595 1.39052 12.6095C1.14048 12.3594 1 12.0203 1 11.6667V2.33333C1 1.97971 1.14048 1.64057 1.39052 1.39052C1.64057 1.14048 1.97971 1 2.33333 1H5\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M9.66667 10.3332L13 6.99984M13 6.99984L9.66667 3.6665M13 6.99984H5\" stroke=\"#D0D5DD\"\r\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title overflow-hidden\">Logout</span>\r\n </a>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".menu{background:var(--Gray-700, #344054)}.menu .menu-item{position:relative;background:var(--Gray-700, #344054)}.menu .border-profile-first{border-top-left-radius:8px;border-top-right-radius:8px}.menu .menu-sub{position:absolute;top:100;bottom:calc(100% + 5px);left:0}.menu .menu-sub-top{bottom:auto;top:calc(100% + 5px)}.menu-sub{transition:max-height .3s ease-out}.menu-sub:not(.show){max-height:0;overflow:hidden}.menu-sub-indention .menu-sub{margin-left:0rem!important}.custom-scroll{max-height:300px}.img-src{width:40px;height:40px;border-radius:30px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }] });
|
|
3494
4045
|
}
|
|
3495
4046
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SidebarFooterComponent, decorators: [{
|
|
3496
4047
|
type: Component,
|
|
3497
|
-
args: [{ selector: "lib-sidebar-footer", template: "<div class=\"container-with-overflow\">\r\n <div id=\"kt_app_sidebar_menu_scroll\" class=\"\" data-kt-scroll=\"false\" data-kt-scroll-activate=\"false\"\r\n data-kt-scroll-height=\"auto\" data-kt-scroll-dependencies=\"#kt_app_sidebar_logo, #kt_app_sidebar_footer\"\r\n data-kt-scroll-wrappers=\"#kt_app_sidebar_menu\" data-kt-scroll-offset=\"5px\" data-kt-scroll-save-state=\"true\">\r\n <div class=\"menu menu-column menu-rounded menu-sub-indention fw-semibold fs-6\" id=\"kt_app_sidebar_menu\"\r\n data-kt-menu=\"true\" data-kt-menu-expand=\"false\">\r\n <div class=\"menu-item menu-accordion w-100 px-3\" id=\"#kt_app_sidebar_menu\" [ngClass]=\"{'active': isSubMenuActive}\"\r\n data-kt-menu-trigger=\"click\" (mouseover)=\"setArrowDirection(true)\"\r\n (mouseleave)=\"setArrowDirection(false)\" >\r\n <span class=\"menu-link without-sub\">\r\n <span class=\"menu-icon\">\r\n <img class=\"img-src\" *ngIf=\"userProfileData
|
|
4048
|
+
args: [{ selector: "lib-sidebar-footer", template: "<div class=\"container-with-overflow\">\r\n <div id=\"kt_app_sidebar_menu_scroll\" class=\"\" data-kt-scroll=\"false\" data-kt-scroll-activate=\"false\"\r\n data-kt-scroll-height=\"auto\" data-kt-scroll-dependencies=\"#kt_app_sidebar_logo, #kt_app_sidebar_footer\"\r\n data-kt-scroll-wrappers=\"#kt_app_sidebar_menu\" data-kt-scroll-offset=\"5px\" data-kt-scroll-save-state=\"true\">\r\n <div class=\"menu menu-column menu-rounded menu-sub-indention fw-semibold fs-6\" id=\"kt_app_sidebar_menu\"\r\n data-kt-menu=\"true\" data-kt-menu-expand=\"false\">\r\n <div class=\"menu-item menu-accordion w-100 px-3\" id=\"#kt_app_sidebar_menu\" [ngClass]=\"{'active': isSubMenuActive}\"\r\n data-kt-menu-trigger=\"click\" (mouseover)=\"setArrowDirection(true)\"\r\n (mouseleave)=\"setArrowDirection(false)\" >\r\n <span class=\"menu-link without-sub\">\r\n <span class=\"menu-icon\">\r\n <img class=\"img-src\" *ngIf=\"userProfileData?.userProfile\" (error)=\"userProfileData.userProfile = null\" [src]=\"userProfileData?.userProfile ? userProfileData?.userProfile :'./assets/tango/Images/userProfile.svg'\" alt=\"Profile Image\">\r\n <img class=\"img-src\" *ngIf=\"!userProfileData?.userProfile\" src=\"assets/tango/Images/userProfile.svg\">\r\n </span>\r\n <span class=\"menu-title overflow-hidden ms-2\" data-link=\"/crafted/account\">{{ userValue.userName | titlecase}}<br>\r\n {{ userValue.email | titlecase}}</span>\r\n <span class=\"menu-arrow\"></span>\r\n </span>\r\n <div class=\"menu-sub menu-sub-accordion w-100\" #accordion [class.show]=\"isSubMenuActive\" [ngClass]=\"{'menu-sub-top': isSubMenuActive}\"\r\n routerLinkActive=\"menu-active-bg\" >\r\n <div class=\"menu-item px-3 border-profile-first\">\r\n <a class=\"menu-link without-sub\" (click)=\"profileUrl()\" >\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M11.8574 3.83162C11.8574 5.94799 10.0668 7.66324 7.85742 7.66324C5.64805 7.66324 3.85742 5.94799 3.85742 3.83162C3.85742 1.71525 5.64805 0 7.85742 0C10.0668 0 11.8574 1.71525 11.8574 3.83162Z\"\r\n fill=\"#98A2B3\" />\r\n <path\r\n d=\"M6.36786 9.38452C2.85 9.38452 0 11.9226 0 15.0554C0 15.577 0.475 16.0001 1.06071 16.0001H14.9393C15.525 16.0001 16 15.577 16 15.0554C16 11.9226 13.15 9.38452 9.63214 9.38452H6.36786Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title overflow-hidden\">Profile</span>\r\n </a>\r\n </div>\r\n <!-- <div class=\"menu-item px-3\" style=\"border-radius: 0px;\">\r\n <a class=\"menu-link without-sub\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path opacity=\"0.3\"\r\n d=\"M14.2222 11.5556V8C14.2222 4.56356 11.4364 1.77778 8 1.77778C4.56356 1.77778 1.77778 4.56356 1.77778 8V11.5556H14.2222ZM16 11.5556H0V8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8V11.5556Z\"\r\n fill=\"#D0D5DD\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M1.77778 9.77759H2.66667C3.64851 9.77759 4.44444 10.5735 4.44444 11.5554V14.222C4.44444 15.2039 3.64851 15.9998 2.66667 15.9998H1.77778C0.795938 15.9998 0 15.2039 0 14.222V11.5554C0 10.5735 0.795938 9.77759 1.77778 9.77759ZM13.3333 9.77759H14.2222C15.2041 9.77759 16 10.5735 16 11.5554V14.222C16 15.2039 15.2041 15.9998 14.2222 15.9998H13.3333C12.3515 15.9998 11.5556 15.2039 11.5556 14.222V11.5554C11.5556 10.5735 12.3515 9.77759 13.3333 9.77759Z\"\r\n fill=\"#667085\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title overflow-hidden\">Support</span>\r\n </a>\r\n </div> -->\r\n <div class=\"menu-item px-3\" style=\"border-radius: 0px;\">\r\n <a class=\"menu-link without-sub\" (click)=\"logout()\" routerLinkActive=\"active\">\r\n <span class=\"menu-bullet\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path\r\n d=\"M5 13H2.33333C1.97971 13 1.64057 12.8595 1.39052 12.6095C1.14048 12.3594 1 12.0203 1 11.6667V2.33333C1 1.97971 1.14048 1.64057 1.39052 1.39052C1.64057 1.14048 1.97971 1 2.33333 1H5\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path d=\"M9.66667 10.3332L13 6.99984M13 6.99984L9.66667 3.6665M13 6.99984H5\" stroke=\"#D0D5DD\"\r\n stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span class=\"menu-title overflow-hidden\">Logout</span>\r\n </a>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".menu{background:var(--Gray-700, #344054)}.menu .menu-item{position:relative;background:var(--Gray-700, #344054)}.menu .border-profile-first{border-top-left-radius:8px;border-top-right-radius:8px}.menu .menu-sub{position:absolute;top:100;bottom:calc(100% + 5px);left:0}.menu .menu-sub-top{bottom:auto;top:calc(100% + 5px)}.menu-sub{transition:max-height .3s ease-out}.menu-sub:not(.show){max-height:0;overflow:hidden}.menu-sub-indention .menu-sub{margin-left:0rem!important}.custom-scroll{max-height:300px}.img-src{width:40px;height:40px;border-radius:30px}\n"] }]
|
|
3498
4049
|
}], ctorParameters: () => [{ type: AuthService }, { type: i1.Router }, { type: i1$1.LayoutService }, { type: i1$1.PageInfoService }, { type: i0.NgZone }], propDecorators: { toggleButtonClass: [{
|
|
3499
4050
|
type: Input
|
|
3500
4051
|
}], toggleEnabled: [{
|
|
@@ -5305,7 +5856,8 @@ class LayoutModule {
|
|
|
5305
5856
|
DateSingleSelectComponent,
|
|
5306
5857
|
SingleStoreComponent,
|
|
5307
5858
|
NotificationsInnerComponent,
|
|
5308
|
-
CsmAssignConfirmationComponent
|
|
5859
|
+
CsmAssignConfirmationComponent,
|
|
5860
|
+
TrafficHeaderComponent], imports: [CommonModule, i1.RouterModule, TranslationModule,
|
|
5309
5861
|
InlineSVGModule,
|
|
5310
5862
|
NgbDropdownModule,
|
|
5311
5863
|
NgbProgressbarModule,
|
|
@@ -5368,6 +5920,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
5368
5920
|
SingleStoreComponent,
|
|
5369
5921
|
NotificationsInnerComponent,
|
|
5370
5922
|
CsmAssignConfirmationComponent,
|
|
5923
|
+
TrafficHeaderComponent,
|
|
5371
5924
|
],
|
|
5372
5925
|
imports: [
|
|
5373
5926
|
CommonModule,
|