tango-app-ui-shared 3.3.1-beta.71 → 3.3.1-beta.73

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.
@@ -3109,6 +3109,7 @@ class SingleStoreComponent {
3109
3109
  this.selectedFilters.clientName = headerFilters.clientName;
3110
3110
  this.selectedFilters.clients = headerFilters.clients;
3111
3111
  this.selectedFilters.date = headerFilters.date;
3112
+ this.selectedFilters.storeName = headerFilters.storeName;
3112
3113
  this.selectedDateRange = {
3113
3114
  startDate: this.dayjs(headerFilters.date.startDate, "YYYY-MM-DD").format("DD-MM-YYYY"),
3114
3115
  endDate: this.dayjs(headerFilters.date.endDate, "YYYY-MM-DD").format("DD-MM-YYYY"),
@@ -3123,6 +3124,7 @@ class SingleStoreComponent {
3123
3124
  this.selectedFilters.client = headerFilters.client;
3124
3125
  this.selectedFilters.clientName = headerFilters.clientName;
3125
3126
  this.selectedFilters.clients = headerFilters.clients;
3127
+ this.selectedFilters.storeName = headerFilters.storeName;
3126
3128
  this.selectedDateRange = {
3127
3129
  startDate: this.dayjs().format("DD-MM-YYYY"),
3128
3130
  endDate: this.dayjs().format("DD-MM-YYYY"),
@@ -3205,11 +3207,11 @@ class SingleStoreComponent {
3205
3207
  }
3206
3208
  }
3207
3209
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SingleStoreComponent, deps: [{ token: AuthService }, { token: i1.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
3208
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SingleStoreComponent, selector: "lib-single-store", inputs: { urlString: "urlString" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"(urlString.includes('image') || urlString.includes('stream') || urlString.includes('playback')) && queryString.includes('storeId')\" 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</div>\r\n<div *ngIf=\"URL[2] !=='controlcenter'\" 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</div>\r\n\r\n<div *ngIf=\"URL[2] !=='controlcenter'\" 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\" [autoApply]=\"true\"\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<div *ngIf=\"URL[2] ==='controlcenter' && urlString.includes('playback')\" class=\"d-flex align-items-center w-150px 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\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [showCustomRangeLabel]=\"false\" [alwaysShowCalendars]=\"false\" [autoApply]=\"true\" [singleDatePicker]=\"true\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1}\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n\r\n<div *ngIf=\"URL[2] !=='controlcenter'\">\r\n <div class=\"btn btn-primary ms-2\" (click)=\"Apply()\">Apply</div>\r\n</div>\r\n<div *ngIf=\"URL[2] ==='controlcenter'\">\r\n <div *ngIf=\"((urlString.includes('image') || urlString.includes('stream') || urlString.includes('playback')) && queryString.includes('storeId')) || urlString.includes('playback')\" class=\"btn btn-primary ms-2\" (click)=\"Apply()\">Apply</div>\r\n</div>\r\n\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:365px!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"], dependencies: [{ kind: "directive", type: i4.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: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.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"] }] });
3210
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SingleStoreComponent, selector: "lib-single-store", inputs: { urlString: "urlString" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"URL[2] !=='controlcenter'\" 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</div>\r\n\r\n<div *ngIf=\"URL[2] !=='controlcenter'\" 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\" [autoApply]=\"true\"\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<div *ngIf=\"URL[2] ==='controlcenter' && urlString.includes('playback')\" class=\"d-flex align-items-center w-150px 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\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [showCustomRangeLabel]=\"false\" [alwaysShowCalendars]=\"false\" [autoApply]=\"true\" [singleDatePicker]=\"true\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1}\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n\r\n<div *ngIf=\"URL[2] !=='controlcenter'\">\r\n <div class=\"btn btn-primary ms-2\" (click)=\"Apply()\">Apply</div>\r\n</div>\r\n\r\n\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:365px!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"], dependencies: [{ kind: "directive", type: i4.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: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.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"] }] });
3209
3211
  }
3210
3212
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SingleStoreComponent, decorators: [{
3211
3213
  type: Component,
3212
- args: [{ selector: 'lib-single-store', template: "<div *ngIf=\"(urlString.includes('image') || urlString.includes('stream') || urlString.includes('playback')) && queryString.includes('storeId')\" 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</div>\r\n<div *ngIf=\"URL[2] !=='controlcenter'\" 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</div>\r\n\r\n<div *ngIf=\"URL[2] !=='controlcenter'\" 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\" [autoApply]=\"true\"\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<div *ngIf=\"URL[2] ==='controlcenter' && urlString.includes('playback')\" class=\"d-flex align-items-center w-150px 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\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [showCustomRangeLabel]=\"false\" [alwaysShowCalendars]=\"false\" [autoApply]=\"true\" [singleDatePicker]=\"true\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1}\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n\r\n<div *ngIf=\"URL[2] !=='controlcenter'\">\r\n <div class=\"btn btn-primary ms-2\" (click)=\"Apply()\">Apply</div>\r\n</div>\r\n<div *ngIf=\"URL[2] ==='controlcenter'\">\r\n <div *ngIf=\"((urlString.includes('image') || urlString.includes('stream') || urlString.includes('playback')) && queryString.includes('storeId')) || urlString.includes('playback')\" class=\"btn btn-primary ms-2\" (click)=\"Apply()\">Apply</div>\r\n</div>\r\n\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:365px!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"] }]
3214
+ args: [{ selector: 'lib-single-store', template: "<div *ngIf=\"URL[2] !=='controlcenter'\" 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</div>\r\n\r\n<div *ngIf=\"URL[2] !=='controlcenter'\" 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\" [autoApply]=\"true\"\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<div *ngIf=\"URL[2] ==='controlcenter' && urlString.includes('playback')\" class=\"d-flex align-items-center w-150px 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\" type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [showCustomRangeLabel]=\"false\" [alwaysShowCalendars]=\"false\" [autoApply]=\"true\" [singleDatePicker]=\"true\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1}\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" [readonly]=\"true\" />\r\n</div>\r\n\r\n<div *ngIf=\"URL[2] !=='controlcenter'\">\r\n <div class=\"btn btn-primary ms-2\" (click)=\"Apply()\">Apply</div>\r\n</div>\r\n\r\n\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:365px!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"] }]
3213
3215
  }], ctorParameters: () => [{ type: AuthService }, { type: i1.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i2.Router }], propDecorators: { urlString: [{
3214
3216
  type: Input
3215
3217
  }] } });
@@ -4795,6 +4797,834 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
4795
4797
  args: ["document:click", ["$event"]]
4796
4798
  }] } });
4797
4799
 
4800
+ class SingleStoredateComponent {
4801
+ auth;
4802
+ gs;
4803
+ cd;
4804
+ router;
4805
+ dayjs = dayjs;
4806
+ isCustomDate = (m) => {
4807
+ const isValidDate = m > this.dayjs();
4808
+ return isValidDate ? 'invalid-date' : false;
4809
+ };
4810
+ selectedDateRange = {};
4811
+ storeList = [];
4812
+ selectedClient;
4813
+ selectedFilters = {
4814
+ client: null,
4815
+ clientName: null,
4816
+ clients: [],
4817
+ store: null,
4818
+ stores: [],
4819
+ date: null,
4820
+ };
4821
+ URL;
4822
+ baseurl;
4823
+ users;
4824
+ constructor(auth, gs, cd, router) {
4825
+ this.auth = auth;
4826
+ this.gs = gs;
4827
+ this.cd = cd;
4828
+ this.router = router;
4829
+ }
4830
+ ngOnInit() {
4831
+ if ("user-info" in localStorage) {
4832
+ const userData = JSON.parse(localStorage.getItem("user-info") || "{}");
4833
+ this.users = userData;
4834
+ }
4835
+ if ("header-filters" in localStorage) {
4836
+ const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
4837
+ this.selectedFilters.client = this.users.clientId;
4838
+ this.selectedFilters.clients = [this.users.clientId];
4839
+ this.selectedFilters.clientName = headerFilters.clientName;
4840
+ this.selectedFilters.store = headerFilters.store;
4841
+ this.selectedFilters.date = headerFilters.date;
4842
+ this.selectedFilters.storeName = headerFilters.storeName;
4843
+ this.selectedDateRange = {
4844
+ startDate: this.dayjs(headerFilters?.date.startDate, "YYYY-MM-DD").format("DD-MM-YYYY"),
4845
+ endDate: this.dayjs(headerFilters?.date.endDate, "YYYY-MM-DD").format("DD-MM-YYYY"),
4846
+ };
4847
+ localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
4848
+ this.gs.dataRangeValue.next(this.selectedFilters);
4849
+ }
4850
+ else {
4851
+ this.selectedFilters.client = this.users.clientId;
4852
+ this.selectedFilters.clients = [this.users.clientId];
4853
+ this.selectedDateRange = {
4854
+ startDate: this.dayjs().subtract(1, "days").format("DD-MM-YYYY"),
4855
+ endDate: this.dayjs().subtract(1, "days").format("DD-MM-YYYY"), // Yesterday
4856
+ };
4857
+ // Set datetime to yesterday's date as well
4858
+ var datetime = {
4859
+ startDate: this.dayjs().subtract(1, "days").format("YYYY-MM-DD"),
4860
+ endDate: this.dayjs().subtract(1, "days").format("YYYY-MM-DD"), // Yesterday
4861
+ };
4862
+ // var datetime = {
4863
+ // startDate: this.dayjs().subtract(1, 'days').format("YYYY-MM-DD"), // Yesterday
4864
+ // endDate: this.dayjs().subtract(1, 'days').format("YYYY-MM-DD"), // Yesterday
4865
+ // };
4866
+ this.selectedFilters.date = datetime;
4867
+ localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
4868
+ this.gs.dataRangeValue.next(this.selectedFilters);
4869
+ }
4870
+ }
4871
+ onClientSelect(event) {
4872
+ this.selectedClient = event;
4873
+ }
4874
+ onStartDateChange(event) {
4875
+ if (this.dayjs(event.startDate).isValid()) {
4876
+ this.isCustomDate = (m) => {
4877
+ const isValidDate = m > this.dayjs() || m > this.dayjs(event.startDate.add(90, 'days'));
4878
+ return isValidDate ? 'invalid-date' : false;
4879
+ };
4880
+ }
4881
+ }
4882
+ datechange(event) {
4883
+ if (event && event.startDate && event.endDate) {
4884
+ if (this.dayjs(event.startDate).isValid() &&
4885
+ this.dayjs(event.endDate).isValid()) {
4886
+ this.selectedDateRange.startDate = event.startDate;
4887
+ this.selectedDateRange.endDate = event.endDate;
4888
+ var datetime = {
4889
+ startDate: this.dayjs(event.startDate, "DD-MM-YYYY").format("YYYY-MM-DD"),
4890
+ endDate: this.dayjs(event.endDate, "DD-MM-YYYY").format("YYYY-MM-DD"),
4891
+ };
4892
+ this.selectedFilters.date = datetime;
4893
+ }
4894
+ }
4895
+ else {
4896
+ const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
4897
+ this.selectedFilters.date = headerFilters.date;
4898
+ }
4899
+ this.selectedFilters.client = this.users.clientId;
4900
+ this.selectedFilters.clients = [this.users.clientId];
4901
+ this.selectedFilters.date = this.selectedFilters.date;
4902
+ this.selectedFilters.storeName = this.selectedFilters.storeName;
4903
+ this.gs.dataRangeValue.next(this.selectedFilters);
4904
+ localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
4905
+ }
4906
+ Apply() {
4907
+ const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
4908
+ this.selectedFilters = headerFilters;
4909
+ this.selectedFilters.store = this.selectedClient.storeId;
4910
+ this.gs.dataRangeValue.next(this.selectedFilters);
4911
+ localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
4912
+ }
4913
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SingleStoredateComponent, deps: [{ token: AuthService }, { token: i1.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
4914
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SingleStoredateComponent, selector: "lib-single-storedate", ngImport: i0, template: "\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=\"width:165px !important\" type=\"text\" matInput ngxDaterangepickerMd [singleDatePicker]=\"true\" [drops]=\"'down'\"\r\n [opens]=\"'left'\" [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\" [autoApply]=\"true\"/>\r\n</div>\r\n\r\n<!-- <div class=\"btn btn-primary ms-2\" (click)=\"Apply()\">Apply</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:365px!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"], dependencies: [{ kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.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"] }] });
4915
+ }
4916
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SingleStoredateComponent, decorators: [{
4917
+ type: Component,
4918
+ args: [{ selector: 'lib-single-storedate', template: "\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=\"width:165px !important\" type=\"text\" matInput ngxDaterangepickerMd [singleDatePicker]=\"true\" [drops]=\"'down'\"\r\n [opens]=\"'left'\" [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\" [autoApply]=\"true\"/>\r\n</div>\r\n\r\n<!-- <div class=\"btn btn-primary ms-2\" (click)=\"Apply()\">Apply</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:365px!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"] }]
4919
+ }], ctorParameters: () => [{ type: AuthService }, { type: i1.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i2.Router }] });
4920
+
4921
+ class TraxWithoutdateComponent {
4922
+ auth;
4923
+ router;
4924
+ gs;
4925
+ cd;
4926
+ dayjs = dayjs;
4927
+ isCustomDate = (m) => {
4928
+ const isValidDate = m > this.dayjs();
4929
+ return isValidDate ? "invalid-date" : false;
4930
+ };
4931
+ selectedDateRange = { startDate: dayjs().subtract(30, 'days'),
4932
+ endDate: dayjs().subtract(1, "days"), };
4933
+ selectedFilters = {
4934
+ client: null,
4935
+ clientName: null,
4936
+ clients: [],
4937
+ store: null,
4938
+ stores: [],
4939
+ date: null,
4940
+ group: [],
4941
+ location: [],
4942
+ };
4943
+ Opendropdown = false;
4944
+ dropdownOpen = null; // 'location' or 'group'
4945
+ searchLocationText = "";
4946
+ searchGroupText = "";
4947
+ locations = [];
4948
+ filteredLocations = [];
4949
+ groupsData = [];
4950
+ filteredGroups = [];
4951
+ filteredStores = [];
4952
+ stores = [];
4953
+ searchStoreText = '';
4954
+ clientList = [];
4955
+ selectedClient;
4956
+ locationLabel = [];
4957
+ groupLabel = [];
4958
+ users;
4959
+ url;
4960
+ constructor(auth, router, gs, cd) {
4961
+ this.auth = auth;
4962
+ this.router = router;
4963
+ this.gs = gs;
4964
+ this.cd = cd;
4965
+ }
4966
+ onClick(event) {
4967
+ const target = event.target;
4968
+ if (!target.closest('.dropdown1')) {
4969
+ this.Opendropdown = false;
4970
+ }
4971
+ }
4972
+ closeDropdown1() {
4973
+ this.Opendropdown = false;
4974
+ }
4975
+ ngOnInit() {
4976
+ this.url = this.router.url.split("?")[0].split('/');
4977
+ const user = JSON.parse(localStorage.getItem('user-info'));
4978
+ this.users = user;
4979
+ this.gs?.manageRefreshTrigger?.subscribe((e) => {
4980
+ if (e) {
4981
+ if (user.userType === 'tango') {
4982
+ this.getClient();
4983
+ }
4984
+ else {
4985
+ const storedFilters = localStorage.getItem("header-filters");
4986
+ if (storedFilters) {
4987
+ const headerFilters = JSON.parse(storedFilters);
4988
+ this.filteredStores = headerFilters?.stores.map((store) => ({
4989
+ ...store,
4990
+ checked: store.checked
4991
+ }));
4992
+ }
4993
+ }
4994
+ }
4995
+ });
4996
+ if (user.userType === 'tango') {
4997
+ this.getClient();
4998
+ }
4999
+ else {
5000
+ this.getLocations();
5001
+ this.getGroups();
5002
+ this.getStore();
5003
+ }
5004
+ const storedFilters = localStorage.getItem("header-filters");
5005
+ if (storedFilters) {
5006
+ const headerFilters = JSON.parse(storedFilters);
5007
+ // Initialize selectedFilters with defaults or existing values
5008
+ this.selectedFilters = {
5009
+ client: headerFilters.client || this.users.client,
5010
+ clientName: headerFilters.clientName || '',
5011
+ clients: headerFilters.clients || [],
5012
+ store: headerFilters.store || null,
5013
+ date: headerFilters.date || {},
5014
+ stores: headerFilters.stores || [],
5015
+ group: headerFilters.group || [],
5016
+ location: headerFilters.location || []
5017
+ };
5018
+ // Sync filtered data with stored selections
5019
+ this.filteredLocations = this.syncWithLocalStorage(headerFilters.location);
5020
+ this.filteredGroups = this.syncWithLocalStorage(headerFilters.group);
5021
+ this.filteredStores = this.syncWithLocalStorage(headerFilters.stores);
5022
+ // Format date range if it exists
5023
+ // Emit data via service and update localStorage
5024
+ this.emitAndStoreFilters();
5025
+ }
5026
+ else {
5027
+ // Initialize empty states if no header filters are present in localStorage
5028
+ this.resetFilters();
5029
+ }
5030
+ }
5031
+ syncWithLocalStorage(items) {
5032
+ return items
5033
+ ? items.map((item) => ({
5034
+ ...item,
5035
+ checked: item.checked === true
5036
+ }))
5037
+ : [];
5038
+ }
5039
+ emitAndStoreFilters() {
5040
+ this.gs.dataRangeValue.next(this.selectedFilters);
5041
+ localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
5042
+ }
5043
+ resetFilters() {
5044
+ this.selectedFilters = {
5045
+ client: null,
5046
+ clientName: '',
5047
+ clients: [],
5048
+ store: null,
5049
+ date: {},
5050
+ stores: [],
5051
+ group: [],
5052
+ location: []
5053
+ };
5054
+ this.filteredLocations = [];
5055
+ this.filteredGroups = [];
5056
+ this.filteredStores = [];
5057
+ }
5058
+ getClient() {
5059
+ this.auth.getClients().subscribe({
5060
+ next: (e) => {
5061
+ if (e) {
5062
+ this.clientList = e.data.result;
5063
+ const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
5064
+ if (headerFilters.client) {
5065
+ this.clientList.find((obj) => {
5066
+ if (obj.clientId === headerFilters.client) {
5067
+ this.selectedClient = obj;
5068
+ }
5069
+ });
5070
+ this.selectedFilters.client = headerFilters.client;
5071
+ this.selectedFilters.clientName = headerFilters.clientName;
5072
+ this.selectedFilters.clients = headerFilters.clients;
5073
+ this.selectedFilters.store = headerFilters.store;
5074
+ this.selectedFilters.date = headerFilters.date;
5075
+ this.selectedFilters.stores = headerFilters.stores;
5076
+ this.selectedFilters.group = headerFilters.group;
5077
+ this.selectedFilters.location = headerFilters.location;
5078
+ this.gs.dataRangeValue.next(this.selectedFilters);
5079
+ // Ensure locations and groups are loaded before fetching stores
5080
+ this.getLocations();
5081
+ this.getGroups();
5082
+ // Fetch stores only after locations and groups are set
5083
+ this.getStore();
5084
+ }
5085
+ else {
5086
+ this.selectedClient = this.clientList[0];
5087
+ this.selectedFilters.client = this.selectedClient.clientId;
5088
+ this.selectedFilters.clientName = this.selectedClient.clientName;
5089
+ this.selectedFilters.clients = headerFilters.clients;
5090
+ this.selectedFilters.store = headerFilters.store;
5091
+ this.selectedFilters.date = headerFilters.date;
5092
+ this.selectedFilters.stores = headerFilters.stores;
5093
+ this.selectedFilters.group = headerFilters.group;
5094
+ this.selectedFilters.location = headerFilters.location;
5095
+ localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
5096
+ this.gs.dataRangeValue.next(this.selectedFilters);
5097
+ this.cd.detectChanges();
5098
+ // Ensure locations and groups are loaded before fetching stores
5099
+ this.getLocations();
5100
+ this.getGroups();
5101
+ // Fetch stores only after locations and groups are set
5102
+ this.getStore();
5103
+ }
5104
+ }
5105
+ else {
5106
+ this.selectedClient = this.clientList[0];
5107
+ this.selectedFilters.client = this.selectedClient.clientId;
5108
+ this.selectedFilters.clientName = this.selectedClient.clientName;
5109
+ // Ensure locations and groups are loaded before fetching stores
5110
+ this.getLocations();
5111
+ this.getGroups();
5112
+ // Fetch stores only after locations and groups are set
5113
+ this.getStore();
5114
+ localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
5115
+ this.gs.dataRangeValue.next(this.selectedFilters);
5116
+ // console.log("4")
5117
+ this.cd.detectChanges();
5118
+ }
5119
+ },
5120
+ });
5121
+ }
5122
+ onClientSelect(event) {
5123
+ // Update the selected client
5124
+ this.selectedClient = event;
5125
+ // Clear previous filtered data and selections
5126
+ this.filteredGroups = [];
5127
+ this.filteredStores = [];
5128
+ this.filteredLocations = [];
5129
+ this.selectedFilters.stores = [];
5130
+ this.selectedFilters.group = [];
5131
+ this.selectedFilters.location = [];
5132
+ // Fetch header filters from localStorage
5133
+ const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
5134
+ // Update the selected filters with the new client
5135
+ this.selectedFilters.client = this.selectedClient.clientId;
5136
+ this.selectedFilters.clientName = this.selectedClient.clientName;
5137
+ // Remove old store, group, and location data from the header filters
5138
+ delete headerFilters.stores;
5139
+ delete headerFilters.groups;
5140
+ delete headerFilters.location;
5141
+ // Fetch new data based on the new client
5142
+ this.getLocations();
5143
+ this.getStore();
5144
+ this.getGroups();
5145
+ // Update localStorage with the new client selection and empty filter data
5146
+ localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
5147
+ window.location.reload();
5148
+ this.cd.detectChanges();
5149
+ }
5150
+ opendropdown(e) {
5151
+ e.stopPropagation();
5152
+ this.Opendropdown = !this.Opendropdown;
5153
+ }
5154
+ getLocations() {
5155
+ // const headerFilters: any = JSON.parse(localStorage.getItem("header-filters") || "{}");
5156
+ let obj = {
5157
+ clientId: this.selectedFilters.client ? this.selectedFilters.client : this.users.clientId,
5158
+ city: [],
5159
+ group: [],
5160
+ };
5161
+ this.auth.getLocation(obj).subscribe({
5162
+ next: (res) => {
5163
+ let cityList = this.selectedFilters?.location?.filter((location) => location.checked).map((loc) => loc.city);
5164
+ // Map the fetched locations with default unchecked state
5165
+ this.locations = res?.data?.locationData.map((city) => ({
5166
+ city: city.city,
5167
+ checked: cityList?.includes(city.city) ? true : false,
5168
+ }));
5169
+ // Sync the fetched locations with any stored checked values in localStorage
5170
+ if (this.selectedFilters.location && Array.isArray(this.selectedFilters.location)) {
5171
+ this.filteredLocations = this.locations.map(location => {
5172
+ const matchedLocation = this.selectedFilters.location.find((loc) => loc.city === location.city);
5173
+ return matchedLocation ? { ...location, checked: matchedLocation.checked } : location;
5174
+ });
5175
+ }
5176
+ else {
5177
+ this.filteredLocations = this.locations;
5178
+ }
5179
+ if (this.searchLocationText) {
5180
+ this.filteredLocations = this.locations.filter((location) => location.city.toLowerCase().includes(this.searchLocationText.toLowerCase()));
5181
+ }
5182
+ },
5183
+ error: (err) => {
5184
+ console.error("Failed to fetch locations", err);
5185
+ },
5186
+ });
5187
+ }
5188
+ isAllLocationsSelected() {
5189
+ return this.filteredLocations.every(location => location.checked);
5190
+ }
5191
+ selectedLocationsLabel() {
5192
+ const selectedLocations = this.locationLabel = this.searchLocationText.length ? this.locations
5193
+ .filter(location => location.checked).map(location => location.city) : this.filteredLocations
5194
+ .filter(location => location.checked).map(location => location.city);
5195
+ return selectedLocations.length === 0
5196
+ ? ''
5197
+ : selectedLocations.length === 1
5198
+ ? selectedLocations[0]
5199
+ : `${selectedLocations.length} locations`;
5200
+ }
5201
+ removeLocation() {
5202
+ this.Reset();
5203
+ }
5204
+ getGroups() {
5205
+ const city = this.locations
5206
+ .filter(location => location.checked)
5207
+ .map(location => location.city);
5208
+ const obj = { city, clientId: this.selectedFilters.client ? this.selectedFilters.client : this.users.clientId, group: [] };
5209
+ this.auth.getGroups(obj).subscribe({
5210
+ next: (res) => {
5211
+ let checkedGroup = this.selectedFilters?.group?.filter((group) => group.checked).map((group) => group.groupName);
5212
+ const combinedGroups = res?.data?.groupData?.map((groupName) => ({
5213
+ groupName: groupName.groupName,
5214
+ checked: checkedGroup?.includes(groupName.groupName) ? true : false,
5215
+ }));
5216
+ this.groupsData = combinedGroups;
5217
+ if (this.searchGroupText.length) {
5218
+ this.filteredGroups = combinedGroups.filter((item) => item.groupName.toLowerCase().includes(this.searchGroupText));
5219
+ }
5220
+ else {
5221
+ this.filteredGroups = combinedGroups;
5222
+ }
5223
+ // Auto-fetch stores when groups are selected
5224
+ const selectedGroups = this.groupsData.filter((group) => group.checked).map((group) => group.groupName);
5225
+ if (selectedGroups.length > 0) {
5226
+ this.getStore(); // Fetch stores based on selected groups
5227
+ }
5228
+ },
5229
+ error: (err) => {
5230
+ console.error("Failed to fetch groups", err);
5231
+ },
5232
+ });
5233
+ }
5234
+ toggleDropdown(type) {
5235
+ if (this.dropdownOpen === type) {
5236
+ // If the dropdown is open, close it and avoid resetting the selected values unnecessarily
5237
+ this.dropdownOpen = null;
5238
+ }
5239
+ else {
5240
+ // Open the specific dropdown and handle data fetching only if necessary
5241
+ this.dropdownOpen = type;
5242
+ if (type === 'group') {
5243
+ // Fetch groups only if there are selected cities and no active search text
5244
+ const selectedCities = this.locations
5245
+ .filter((location) => location.checked)
5246
+ .map((location) => location.city);
5247
+ // Fetch groups only if locations are selected, no search text exists, and dropdown is opened
5248
+ if (this.filteredLocations.length > 0 || (selectedCities.length > 0 && !this.searchGroupText.trim())) {
5249
+ this.getGroups();
5250
+ }
5251
+ else {
5252
+ this.filteredGroups = []; // Clear groups if no locations are selected
5253
+ }
5254
+ }
5255
+ if (type === 'store') {
5256
+ // Fetch stores only if not already fetched and no search text is active
5257
+ if ((!this.filteredStores || this.filteredStores.length === 0) && !this.searchStoreText.trim()) {
5258
+ this.getStore();
5259
+ }
5260
+ }
5261
+ }
5262
+ }
5263
+ handleGroupDropdownClick() {
5264
+ if (this.dropdownOpen === 'group') {
5265
+ this.resetSelectedGroups();
5266
+ }
5267
+ this.toggleDropdown('group');
5268
+ }
5269
+ resetSelectedGroups() {
5270
+ this.filteredGroups.forEach((group) => (group.checked = false));
5271
+ this.searchGroupText = "";
5272
+ }
5273
+ selectedGroupsLabel() {
5274
+ const selectedGroups = this.groupLabel = this.searchGroupText.length ? this.groupsData.filter((group) => group.checked) : this.filteredGroups.filter((group) => group.checked);
5275
+ return selectedGroups.length === 0
5276
+ ? ""
5277
+ : selectedGroups.length === 1
5278
+ ? selectedGroups[0].groupName
5279
+ : `${selectedGroups.length} groups`;
5280
+ }
5281
+ removeGroup() {
5282
+ this.Reset();
5283
+ }
5284
+ isAllGroupsSelected() {
5285
+ return this.filteredGroups.length ? this.filteredGroups.every((group) => group.checked) : false;
5286
+ }
5287
+ getStore() {
5288
+ const city = this.locations
5289
+ .filter(location => location.checked)
5290
+ .map(location => location.city);
5291
+ const group = this.groupsData
5292
+ .filter(group => group.checked)
5293
+ .map(group => group.groupName);
5294
+ const data = { city, clusters: group, clientId: this.users.clientId ? this.users.clientId : this.selectedFilters.client };
5295
+ this.auth.getHeaderStores(data).subscribe({
5296
+ next: (res) => {
5297
+ if (res && res.code === 200) {
5298
+ this.stores = res.data.storesData;
5299
+ // Retrieve checked store IDs from selectedFilters
5300
+ const checkedStoreIds = this.selectedFilters?.stores
5301
+ ? this.selectedFilters.stores.filter((store) => store.checked).map((store) => store.storeId)
5302
+ : [];
5303
+ this.stores.forEach(store => {
5304
+ if (checkedStoreIds.includes(store.storeId)) {
5305
+ store.checked = true; // Sync the checked state with full store list
5306
+ }
5307
+ });
5308
+ // Map the stores and retain the 'checked' status
5309
+ if (this.searchStoreText.length) {
5310
+ this.filteredStores = this.stores?.filter(store => store.storeName.toLowerCase().includes(this.searchStoreText));
5311
+ }
5312
+ else {
5313
+ this.filteredStores = this.stores;
5314
+ }
5315
+ // Ensure selectedFilters is in sync with filteredStores
5316
+ if (!this.selectedFilters.stores || !this.selectedFilters.stores.length) {
5317
+ this.stores.forEach(store => {
5318
+ store.checked = true; // Sync the checked state with full store list
5319
+ });
5320
+ // No previously selected stores, mark all as checked
5321
+ this.filteredStores = this.selectedFilters.stores = this.filteredStores.map(store => ({
5322
+ ...store,
5323
+ checked: true
5324
+ }));
5325
+ }
5326
+ else {
5327
+ // Update selectedFilters to reflect current state of stores
5328
+ this.selectedFilters.stores = this.filteredStores.map(store => ({
5329
+ ...store,
5330
+ checked: store.checked
5331
+ }));
5332
+ }
5333
+ // Update localStorage with the latest selectedFilters
5334
+ localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
5335
+ // Emit data via service
5336
+ // this.gs.dataRangeValue.next(this.selectedFilters);
5337
+ // Trigger change detection to reflect changes in the UI
5338
+ this.cd.detectChanges();
5339
+ }
5340
+ else {
5341
+ this.stores = [];
5342
+ this.selectedFilters.stores = [];
5343
+ this.filteredStores = [];
5344
+ this.selectedFilters.stores = this.filteredStores.map(store => ({
5345
+ ...store,
5346
+ checked: false
5347
+ }));
5348
+ localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
5349
+ }
5350
+ },
5351
+ error: (err) => {
5352
+ this.stores = [];
5353
+ this.selectedFilters.stores = [];
5354
+ this.filteredStores = [];
5355
+ this.selectedFilters.stores = this.filteredStores.map(store => ({
5356
+ ...store,
5357
+ checked: false
5358
+ }));
5359
+ localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
5360
+ console.error("Failed to fetch stores", err);
5361
+ },
5362
+ });
5363
+ }
5364
+ resetSelectedStores() {
5365
+ this.filteredStores.forEach((store) => (store.checked = false));
5366
+ this.searchStoreText = "";
5367
+ }
5368
+ selectedStoresLabel() {
5369
+ const selectedStores = this.searchStoreText.length ? this.stores.filter((store) => store.checked) : this.filteredStores.filter((store) => store.checked);
5370
+ return selectedStores.length === 0
5371
+ ? "0 Stores"
5372
+ : selectedStores.length === 1
5373
+ ? selectedStores[0].storeName
5374
+ : `${selectedStores.length} Stores`;
5375
+ }
5376
+ isAllStoresSelected() {
5377
+ return this.filteredStores.length > 0 && this.filteredStores.every(store => store.checked);
5378
+ }
5379
+ // Method to handle dropdown item selection
5380
+ updateSelectedStores() {
5381
+ this.filteredStores.forEach(store => {
5382
+ const filteredStore = this.stores.findIndex(fStore => fStore.storeId === store.storeId);
5383
+ if (filteredStore != -1) {
5384
+ this.stores[filteredStore].checked = store.checked; // Sync the checked state with full store list
5385
+ }
5386
+ });
5387
+ // Update selectedFilters based on the current store selection
5388
+ this.selectedFilters.stores = this.stores.filter(store => store.checked);
5389
+ // Update localStorage with the latest selection
5390
+ localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
5391
+ // Emit updated filters via service
5392
+ // this.gs.dataRangeValue.next(this.selectedFilters);
5393
+ // Trigger change detection if necessary
5394
+ this.cd.detectChanges();
5395
+ }
5396
+ toggleSelectAllLocations(event) {
5397
+ const isChecked = event.target.checked;
5398
+ this.filteredLocations.forEach((location) => (location.checked = isChecked));
5399
+ this.updateSelectedLocations();
5400
+ }
5401
+ toggleSelectAllStores(event) {
5402
+ const checked = event.target.checked;
5403
+ // Apply the selection to both filtered and full list of stores
5404
+ this.filteredStores.forEach(store => store.checked = checked);
5405
+ this.stores.forEach(store => {
5406
+ const filteredStore = this.filteredStores.find(fStore => fStore.storeId === store.storeId);
5407
+ if (filteredStore) {
5408
+ store.checked = checked; // Sync the checked state with full store list
5409
+ }
5410
+ });
5411
+ // Update the selected stores and persist the selection
5412
+ this.updateSelectedStores();
5413
+ }
5414
+ updateSelectedLocations() {
5415
+ // When locations are selected, fetch the related groups
5416
+ const selectedCities = this.filteredLocations
5417
+ .filter((location) => location.checked)
5418
+ .map((location) => location.city);
5419
+ this.filteredLocations.forEach((location) => {
5420
+ let findLocationIndex = this.locations.findIndex((loc) => loc.city == location.city);
5421
+ if (findLocationIndex != -1) {
5422
+ this.locations[findLocationIndex].checked = location.checked;
5423
+ }
5424
+ });
5425
+ if (selectedCities.length > 0 || !selectedCities.length) {
5426
+ this.selectedFilters.stores = [];
5427
+ this.selectedFilters.location = this.locations;
5428
+ this.getGroups(); // Fetch groups based on selected cities
5429
+ // If there are selected groups, fetch the stores based on selected groups
5430
+ this.getStore();
5431
+ }
5432
+ else {
5433
+ this.filteredGroups = []; // Clear groups if no locations are selected
5434
+ this.selectedFilters.location = [];
5435
+ }
5436
+ this.selectedFilters.group = [];
5437
+ this.filteredStores = []; // Reset stores as well
5438
+ this.searchGroupText = '';
5439
+ this.searchStoreText = '';
5440
+ // this.Opendropdown = false;
5441
+ }
5442
+ toggleSelectAllGroups(event) {
5443
+ const isChecked = event.target.checked;
5444
+ this.filteredGroups.forEach((group) => (group.checked = isChecked));
5445
+ this.updateSelectedGroups();
5446
+ // if (!isChecked) {
5447
+ // this.selectedFilters.stores =[];
5448
+ // // If there are selected groups, fetch the stores based on selected groups
5449
+ // this.getStore();
5450
+ // }
5451
+ }
5452
+ updateSelectedGroups() {
5453
+ // Fetch the relevant stores after groups are selected
5454
+ const selectedGroups = this.filteredGroups
5455
+ .filter((group) => group.checked)
5456
+ .map((group) => group.groupName);
5457
+ this.filteredGroups.forEach((group) => {
5458
+ let findGroupIndex = this.groupsData.findIndex((item) => item.groupName == group.groupName);
5459
+ if (findGroupIndex != -1) {
5460
+ this.groupsData[findGroupIndex].checked = group.checked;
5461
+ }
5462
+ });
5463
+ if (selectedGroups.length > 0 || !selectedGroups.length) {
5464
+ this.selectedFilters.stores = [];
5465
+ // If there are selected groups, fetch the stores based on selected groups
5466
+ this.getStore();
5467
+ this.selectedFilters.group = this.groupsData;
5468
+ }
5469
+ else {
5470
+ // If no groups are selected, clear the stores list
5471
+ this.filteredStores = [];
5472
+ // Also, update localStorage to reflect the cleared store selection
5473
+ this.selectedFilters.stores = [];
5474
+ localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
5475
+ // Emit data via service
5476
+ // this.gs.dataRangeValue.next(this.selectedFilters);
5477
+ }
5478
+ // Clear the search store text when groups are updated
5479
+ this.searchStoreText = '';
5480
+ }
5481
+ Reset() {
5482
+ // Clear selected groups, stores, and locations
5483
+ this.filteredGroups = [];
5484
+ this.filteredStores = [];
5485
+ this.filteredLocations = []; // Reset locations as well
5486
+ // Clear search input fields
5487
+ this.searchLocationText = "";
5488
+ this.searchGroupText = "";
5489
+ this.searchStoreText = "";
5490
+ // Fetch locations, groups, and stores again
5491
+ this.getLocations();
5492
+ this.getStore();
5493
+ this.getGroups();
5494
+ // Reset the filters in selectedFilters
5495
+ this.selectedFilters = {
5496
+ ...this.selectedFilters,
5497
+ stores: [],
5498
+ group: [],
5499
+ location: [] // Clear locations selection
5500
+ };
5501
+ // // Once stores are fetched, mark all as checked
5502
+ // setTimeout(() => {
5503
+ // this.filteredStores = this.stores.map(store => ({
5504
+ // ...store,
5505
+ // checked: true // Mark all stores as checked
5506
+ // }));
5507
+ // // Sync selectedFilters with the updated store state
5508
+ // this.selectedFilters.stores = this.filteredStores.map(store => ({
5509
+ // ...store,
5510
+ // checked: true
5511
+ // }));
5512
+ // Update localStorage with the latest selectedFilters
5513
+ localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
5514
+ window.location.reload();
5515
+ // Emit the reset filters to update other components if needed
5516
+ // this.gs.dataRangeValue.next(this.selectedFilters);
5517
+ // Trigger change detection
5518
+ this.cd.detectChanges();
5519
+ // Adding a slight delay to ensure stores are fetched first
5520
+ // Close dropdown after reset if necessary
5521
+ this.Opendropdown = false;
5522
+ }
5523
+ Apply() {
5524
+ // Close the dropdown
5525
+ this.Opendropdown = false;
5526
+ // Fetch existing filters from localStorage
5527
+ const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
5528
+ // Ensure current selections are reflected
5529
+ this.selectedFilters.location = this.locations;
5530
+ this.selectedFilters.group = this.groupsData;
5531
+ this.selectedFilters.stores = headerFilters.stores ? headerFilters.stores : this.stores;
5532
+ // Store updated filters back in localStorage
5533
+ localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
5534
+ window.location.reload();
5535
+ // Emit the updated filters via the service
5536
+ // this.gs.dataRangeValue.next(this.selectedFilters);
5537
+ // Trigger refresh if necessary
5538
+ // this.gs.manageRefreshTrigger.next(true);
5539
+ this.cd.detectChanges();
5540
+ }
5541
+ filterLocations() {
5542
+ const searchText = this.searchLocationText.toLowerCase();
5543
+ if (searchText) {
5544
+ // Preserve the checked state during filtering
5545
+ this.filteredLocations = this.locations
5546
+ .map(location => ({
5547
+ ...location,
5548
+ checked: this.filteredLocations.find(l => l.city === location.city)?.checked || false
5549
+ }))
5550
+ .filter(location => location?.city?.toLowerCase().includes(searchText));
5551
+ }
5552
+ else {
5553
+ // Restore the original checked state when search text is cleared
5554
+ this.filteredLocations = this.locations.map(location => ({
5555
+ ...location,
5556
+ checked: this.selectedFilters.location.find((l) => l.city === location.city)?.checked || false
5557
+ }));
5558
+ }
5559
+ }
5560
+ filterGroups() {
5561
+ const searchText = this.searchGroupText.toLowerCase();
5562
+ if (searchText) {
5563
+ // Preserve the checked state during filtering
5564
+ this.filteredGroups = this.groupsData
5565
+ .map(group => ({
5566
+ ...group,
5567
+ checked: this.filteredGroups.find(g => g.groupName === group.groupName)?.checked || false
5568
+ }))
5569
+ .filter(group => group?.groupName?.toLowerCase().includes(searchText));
5570
+ }
5571
+ else {
5572
+ // Restore the original checked state when search text is cleared
5573
+ this.filteredGroups = this.groupsData.map(group => ({
5574
+ ...group,
5575
+ checked: this.selectedFilters.group.find((g) => g.groupName === group.groupName)?.checked || false
5576
+ }));
5577
+ }
5578
+ }
5579
+ filterStores() {
5580
+ const searchText = this.searchStoreText.toLowerCase();
5581
+ // Preserve checked states during filtering
5582
+ if (searchText) {
5583
+ // Filter based on search text while preserving checked state
5584
+ this.filteredStores = this.stores
5585
+ .map(store => ({
5586
+ ...store,
5587
+ // Check if the store is already checked in filteredStores, fallback to original stores' checked state
5588
+ checked: this.selectedFilters.stores.find((s) => s.storeId === store.storeId)?.checked || store.checked || false
5589
+ }))
5590
+ .filter(store => store.storeName.toLowerCase().includes(searchText));
5591
+ }
5592
+ else {
5593
+ // When the search text is cleared, restore the original list with preserved checked states
5594
+ this.filteredStores = this.stores.map(store => ({
5595
+ ...store,
5596
+ // Preserve the checked state based on the selected filters
5597
+ checked: this.selectedFilters.stores.find((s) => s.storeId === store.storeId)?.checked || store.checked || false
5598
+ }));
5599
+ }
5600
+ }
5601
+ closeDropdown() {
5602
+ this.dropdownOpen = null;
5603
+ }
5604
+ clickOutside(event) {
5605
+ const clickedInside = event.target.closest(".dropdown-container");
5606
+ const clickedoutSide = event.target.closest(".dropdown1");
5607
+ if (!clickedInside) {
5608
+ this.closeDropdown();
5609
+ }
5610
+ if (!clickedoutSide) {
5611
+ this.closeDropdown1();
5612
+ }
5613
+ }
5614
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxWithoutdateComponent, deps: [{ token: AuthService }, { token: i2.Router }, { token: i1.GlobalStateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
5615
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TraxWithoutdateComponent, selector: "lib-trax-withoutdate", host: { listeners: { "document:click": "clickOutside($event)" } }, ngImport: i0, template: "<div class=\"me-3\">\r\n <label *ngIf=\"selectedLocationsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedLocationsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeLocation()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label *ngIf=\"selectedGroupsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedGroupsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeGroup()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label class=\"badge badge-light-default\">{{selectedStoresLabel()}}</label>\r\n</div>\r\n\r\n\r\n<div class=\"wrapper me-3\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n<lib-select [items]=\"clientList\" [multi]=\"false\" [searchField]=\"'clientName'\" [disabled]=\"false\" [idField]=\"'clientId'\"\r\n(selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n</div>\r\n\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 cursor-pointer\" \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 cursor-pointer\" \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 cursor-pointer\" \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 cursor-pointer\" \r\n [value]=\"selectedGroupsLabel()\" readonly\r\n placeholder=\"Select clusters..\"\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 clusters...\" \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 cursor-pointer\" \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 cursor-pointer\" \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 cursor-pointer\"\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 cursor-pointer\" \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:365px!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:230px;overflow-y:auto;display:block;box-sizing:border-box;padding:10px 5px}.dropdown-item{padding:6px 0}.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}.form-check-label{color:var(--Gray-700, #344054)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.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: i6.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: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
5616
+ }
5617
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraxWithoutdateComponent, decorators: [{
5618
+ type: Component,
5619
+ args: [{ selector: 'lib-trax-withoutdate', template: "<div class=\"me-3\">\r\n <label *ngIf=\"selectedLocationsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedLocationsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeLocation()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label *ngIf=\"selectedGroupsLabel()\" class=\"badge badge-light-default mx-2\">{{selectedGroupsLabel()}} \r\n <span class=\"cursor-pointer\" (click)=\"removeGroup()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>\r\n </label>\r\n <label class=\"badge badge-light-default\">{{selectedStoresLabel()}}</label>\r\n</div>\r\n\r\n\r\n<div class=\"wrapper me-3\" *ngIf=\"(gs.userAccess | async)?.userType === 'tango'\">\r\n<lib-select [items]=\"clientList\" [multi]=\"false\" [searchField]=\"'clientName'\" [disabled]=\"false\" [idField]=\"'clientId'\"\r\n(selected)=\"onClientSelect($event)\" [selectedValues]=\"[selectedClient]\"></lib-select>\r\n</div>\r\n\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 cursor-pointer\" \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 cursor-pointer\" \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 cursor-pointer\" \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 cursor-pointer\" \r\n [value]=\"selectedGroupsLabel()\" readonly\r\n placeholder=\"Select clusters..\"\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 clusters...\" \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 cursor-pointer\" \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 cursor-pointer\" \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 cursor-pointer\"\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 cursor-pointer\" \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:365px!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:230px;overflow-y:auto;display:block;box-sizing:border-box;padding:10px 5px}.dropdown-item{padding:6px 0}.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}.form-check-label{color:var(--Gray-700, #344054)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}\n"] }]
5620
+ }], ctorParameters: () => [{ type: AuthService }, { type: i2.Router }, { type: i1.GlobalStateService }, { type: i0.ChangeDetectorRef }], propDecorators: { onClick: [{
5621
+ type: HostListener,
5622
+ args: ['document:click', ['$event']]
5623
+ }], clickOutside: [{
5624
+ type: HostListener,
5625
+ args: ["document:click", ["$event"]]
5626
+ }] } });
5627
+
4798
5628
  class ToolbarComponent {
4799
5629
  layout;
4800
5630
  router;
@@ -4835,6 +5665,8 @@ class ToolbarComponent {
4835
5665
  trafficdatepicker;
4836
5666
  traxdatepicker;
4837
5667
  urlString;
5668
+ traxwithoutdatepicker;
5669
+ storesSingle;
4838
5670
  constructor(layout, router, route, gs) {
4839
5671
  this.layout = layout;
4840
5672
  this.router = router;
@@ -4913,10 +5745,10 @@ class ToolbarComponent {
4913
5745
  URL == "/manage/stores" || URL === "/manage/stores?type=stores" || URL === "/manage/stores?type=clusters" ||
4914
5746
  URL == "/manage/stores/addition-method" ||
4915
5747
  URL == "/manage/stores/add-single-store" || URL === "/manage/trax/gallery" || URL == "/notifications/alerts?tab=alert" || URL == "/notifications/alerts?tab=download") {
4916
- this.setUIProperties(true, false, false, false, false, false, false);
5748
+ this.setUIProperties(true, false, false, false, false, false, false, false, false);
4917
5749
  }
4918
5750
  else if (url[3] == "edge-app") {
4919
- this.setUIProperties(false, false, false, false, true, false, false);
5751
+ this.setUIProperties(false, false, false, false, true, false, false, false, false);
4920
5752
  }
4921
5753
  else if (URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||
4922
5754
  URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||
@@ -4924,36 +5756,44 @@ class ToolbarComponent {
4924
5756
  URL == `/manage/stores/cameras?storeId=${this.storeId}` ||
4925
5757
  // URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||
4926
5758
  URL == `/manage/stores/mat?storeId=${this.storeId}`) {
4927
- this.setUIProperties(false, false, false, true, false, false, false);
5759
+ this.setUIProperties(false, false, false, true, false, false, false, false, false);
4928
5760
  }
4929
- else if (url.includes('controlcenter')) {
4930
- this.setUIProperties(false, false, false, false, true, false, false);
5761
+ else if (url[2] === 'controlcenter') {
5762
+ if (URL == `/manage/controlcenter/playback?storeId=${this.storeId}` || URL == `/manage/controlcenter/playback`) {
5763
+ this.setUIProperties(false, false, false, false, false, false, false, false, true);
5764
+ }
5765
+ else {
5766
+ this.setUIProperties(false, false, false, false, true, false, false, false, false);
5767
+ }
4931
5768
  }
4932
5769
  else if (URL == "/profile" || url[2] === "data-mismatch" || url[2] === "employeetraining"
4933
5770
  || URL == "/manage/brands" || URL == "/manage/users/tango" || (url[1] === "tickets" && url[2] === "audit")) {
4934
- this.setUIProperties(false, false, false, false, false, false, false);
5771
+ this.setUIProperties(false, false, false, false, false, false, false, false, false);
4935
5772
  }
4936
5773
  else if (url[2] === "traffic" || url[2] === "zones" || URL == "/manage/analyse/reports") {
4937
- this.setUIProperties(false, false, false, false, false, true, false);
5774
+ this.setUIProperties(false, false, false, false, false, true, false, false, false);
4938
5775
  }
4939
5776
  else if (url[2] == 'trax') {
4940
5777
  if (url[2] == 'trax' && (url.includes('createChecklist') || url.includes('configure') || url.includes('create-order') || url[3] == 'create-task' || url[3] == 'task-configure')) {
4941
- this.setUIProperties(false, false, false, false, false, false, false);
5778
+ this.setUIProperties(false, false, false, false, false, false, false, false, false);
5779
+ }
5780
+ else if (url[2] == 'trax' && (url.includes('taskinfo'))) {
5781
+ this.setUIProperties(false, false, false, false, false, false, false, true, false);
4942
5782
  }
4943
5783
  else if (url[2] == 'trax' && (url.includes('checklist') || url.includes('gallery'))) {
4944
- this.setUIProperties(true, false, false, false, false, false, false);
5784
+ this.setUIProperties(true, false, false, false, false, false, false, false, false);
4945
5785
  }
4946
5786
  else {
4947
- this.setUIProperties(false, false, false, false, false, false, true);
5787
+ this.setUIProperties(false, false, false, false, false, false, true, false, false);
4948
5788
  }
4949
5789
  }
4950
5790
  else {
4951
- this.setUIProperties(false, false, false, false, true, false, false);
5791
+ this.setUIProperties(false, false, false, false, true, false, false, false, false);
4952
5792
  }
4953
5793
  }
4954
5794
  else {
4955
5795
  if (url[3] == "edge-app") {
4956
- this.setUIProperties(false, false, true, false, false, false, false);
5796
+ this.setUIProperties(false, false, true, false, false, false, false, false, false);
4957
5797
  }
4958
5798
  else if (URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||
4959
5799
  URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||
@@ -4961,41 +5801,49 @@ class ToolbarComponent {
4961
5801
  URL == `/manage/stores/cameras?storeId=${this.storeId}` ||
4962
5802
  // URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||
4963
5803
  URL == `/manage/stores/mat?storeId=${this.storeId}`) {
4964
- this.setUIProperties(false, false, false, true, false, false, false);
5804
+ this.setUIProperties(false, false, false, true, false, false, false, false, false);
4965
5805
  }
4966
- else if (url.includes('controlcenter')) {
4967
- this.setUIProperties(false, false, false, true, false, false, false);
5806
+ else if (url[2] === 'controlcenter') {
5807
+ if (URL == `/manage/controlcenter/playback?storeId=${this.storeId}` || URL == `/manage/controlcenter/playback`) {
5808
+ this.setUIProperties(false, false, false, false, false, false, false, false, true);
5809
+ }
5810
+ else {
5811
+ this.setUIProperties(false, false, false, false, true, false, false, false, false);
5812
+ }
4968
5813
  }
4969
5814
  else if (URL == "/profile" || URL == "/manage/users/client" || URL == "/manage/users/tango" ||
4970
5815
  URL == "/manage/stores" || URL === "/manage/stores?type=stores" || URL === "/manage/stores?type=clusters" || url[2] == "settings" ||
4971
5816
  URL == "/manage/stores/addition-method" ||
4972
5817
  URL == "/manage/stores/add-single-store" || url[2] === "data-mismatch" || url[2] === "employeetraining" || URL == "/notifications/alerts?tab=alert" || URL == "/notifications/alerts?tab=download"
4973
- || URL == "/manage/users/tango" || url[2] === 'controlcenter') {
4974
- this.setUIProperties(false, false, false, false, false, false, false);
5818
+ || URL == "/manage/users/tango" || URL === "/manage/controlcenter" || URL === 'manage/controlcenter/template-manager' || url[2] === 'controlcenter') {
5819
+ this.setUIProperties(false, false, false, false, false, false, false, false, false);
4975
5820
  }
4976
5821
  else if (url[2] === "traffic" || url[2] === "zones" || URL == "/manage/analyse/reports") {
4977
- this.setUIProperties(false, false, false, false, false, true, false);
5822
+ this.setUIProperties(false, false, false, false, false, true, false, false, false);
4978
5823
  }
4979
5824
  else if (url[2] == 'trax') {
4980
5825
  if (url[2] == 'trax' && (url.includes('createChecklist') || url.includes('configure') || url.includes('create-order') || url[3] == 'create-task' || url[3] == 'task-configure')) {
4981
- this.setUIProperties(false, false, false, false, false, false, false);
5826
+ this.setUIProperties(false, false, false, false, false, false, false, false, false);
5827
+ }
5828
+ else if (url[2] == 'trax' && (url.includes('taskinfo'))) {
5829
+ this.setUIProperties(false, false, false, false, false, false, false, true, false);
4982
5830
  }
4983
5831
  else if (url[2] == 'trax' && (url.includes('checklist') || url.includes('gallery'))) {
4984
- this.setUIProperties(true, false, false, false, false, false, false);
5832
+ this.setUIProperties(true, false, false, false, false, false, false, false, false);
4985
5833
  }
4986
5834
  else {
4987
- this.setUIProperties(false, false, false, false, false, false, true);
5835
+ this.setUIProperties(false, false, false, false, false, false, true, false, false);
4988
5836
  }
4989
5837
  }
4990
5838
  else {
4991
- this.setUIProperties(false, false, true, false, false, false, false);
5839
+ this.setUIProperties(false, false, true, false, false, false, false, false, false);
4992
5840
  }
4993
5841
  }
4994
5842
  const viewsWithPageTitles = ["classic", "reports", "saas"];
4995
5843
  return (this.appPageTitleDisplay &&
4996
5844
  viewsWithPageTitles.some((t) => t === this.appToolbarLayout));
4997
5845
  }
4998
- setUIProperties(singleSelect, multiSelect, datepicker, singleStore, singleSelectdatepicker, trafficdatepicker, traxdatepicker) {
5846
+ setUIProperties(singleSelect, multiSelect, datepicker, singleStore, singleSelectdatepicker, trafficdatepicker, traxdatepicker, traxwithoutdatepicker, storesSingle) {
4999
5847
  this.singleSelect = singleSelect;
5000
5848
  this.multiSelect = multiSelect;
5001
5849
  this.datepicker = datepicker;
@@ -5003,13 +5851,15 @@ class ToolbarComponent {
5003
5851
  this.singleSelectdatepicker = singleSelectdatepicker;
5004
5852
  this.trafficdatepicker = trafficdatepicker;
5005
5853
  this.traxdatepicker = traxdatepicker;
5854
+ this.traxwithoutdatepicker = traxwithoutdatepicker;
5855
+ this.storesSingle = storesSingle;
5006
5856
  }
5007
5857
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, deps: [{ token: i1.LayoutService }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i1.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
5008
- 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 || (singleSelectdatepicker && users.userType !=='tango')\">\r\n <lib-single-store class=\"d-flex align-items-center me-5\" [urlString]=\"urlString\"></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=\"traxdatepicker\">\r\n <lib-trax-header class=\"d-flex align-items-center me-5\"></lib-trax-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: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.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", inputs: ["urlString"] }, { kind: "component", type: TrafficHeaderComponent, selector: "lib-traffic-header" }, { kind: "component", type: TraxHeaderComponent, selector: "lib-trax-header" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
5858
+ 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=\"traxdatepicker\">\r\n <lib-trax-header class=\"d-flex align-items-center me-5\"></lib-trax-header>\r\n </ng-container>\r\n <ng-container *ngIf=\"traxwithoutdatepicker\">\r\n <lib-trax-withoutdate class=\"d-flex align-items-center me-5\"></lib-trax-withoutdate>\r\n </ng-container>\r\n <ng-container *ngIf=\"storesSingle\">\r\n <lib-single-storedate class=\"d-flex align-items-center me-5\"></lib-single-storedate>\r\n </ng-container>\r\n \r\n \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: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.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", inputs: ["urlString"] }, { kind: "component", type: TrafficHeaderComponent, selector: "lib-traffic-header" }, { kind: "component", type: TraxHeaderComponent, selector: "lib-trax-header" }, { kind: "component", type: SingleStoredateComponent, selector: "lib-single-storedate" }, { kind: "component", type: TraxWithoutdateComponent, selector: "lib-trax-withoutdate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
5009
5859
  }
5010
5860
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, decorators: [{
5011
5861
  type: Component,
5012
- 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 || (singleSelectdatepicker && users.userType !=='tango')\">\r\n <lib-single-store class=\"d-flex align-items-center me-5\" [urlString]=\"urlString\"></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=\"traxdatepicker\">\r\n <lib-trax-header class=\"d-flex align-items-center me-5\"></lib-trax-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" }]
5862
+ 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=\"traxdatepicker\">\r\n <lib-trax-header class=\"d-flex align-items-center me-5\"></lib-trax-header>\r\n </ng-container>\r\n <ng-container *ngIf=\"traxwithoutdatepicker\">\r\n <lib-trax-withoutdate class=\"d-flex align-items-center me-5\"></lib-trax-withoutdate>\r\n </ng-container>\r\n <ng-container *ngIf=\"storesSingle\">\r\n <lib-single-storedate class=\"d-flex align-items-center me-5\"></lib-single-storedate>\r\n </ng-container>\r\n \r\n \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" }]
5013
5863
  }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i1.GlobalStateService }], propDecorators: { currentLayoutType: [{
5014
5864
  type: Input
5015
5865
  }], appToolbarLayout: [{
@@ -7023,6 +7873,103 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7023
7873
  args: ['attr.data-kt-menu']
7024
7874
  }] } });
7025
7875
 
7876
+ class StoresingleComponent {
7877
+ auth;
7878
+ gs;
7879
+ cd;
7880
+ router;
7881
+ dayjs = dayjs;
7882
+ isCustomDate = (m) => {
7883
+ const isValidDate = m > this.dayjs();
7884
+ return isValidDate ? 'invalid-date' : false;
7885
+ };
7886
+ selectedDateRange = {};
7887
+ storeList = [];
7888
+ selectedClient;
7889
+ selectedFilters = {
7890
+ client: null,
7891
+ clientName: null,
7892
+ clients: [],
7893
+ store: null,
7894
+ stores: [],
7895
+ date: null,
7896
+ };
7897
+ constructor(auth, gs, cd, router) {
7898
+ this.auth = auth;
7899
+ this.gs = gs;
7900
+ this.cd = cd;
7901
+ this.router = router;
7902
+ }
7903
+ ngOnInit() {
7904
+ const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
7905
+ this.cd.detectChanges();
7906
+ if (headerFilters?.client) {
7907
+ this.auth.getStores(headerFilters?.client).subscribe({
7908
+ next: (e) => {
7909
+ if (e) {
7910
+ this.storeList = e.data.result;
7911
+ const headerFilters = JSON.parse(localStorage.getItem("header-filters") || "{}");
7912
+ this.selectedDateRange = {
7913
+ startDate: this.dayjs(headerFilters?.date?.startDate, "DD-MM-YYYY").format("YYYY-MM-DD"),
7914
+ endDate: this.dayjs(headerFilters?.date?.endDate, "DD-MM-YYYY").format("YYYY-MM-DD")
7915
+ };
7916
+ if (headerFilters?.store) {
7917
+ this.storeList.find((obj) => {
7918
+ if (obj.storeId === headerFilters.store) {
7919
+ this.selectedClient = obj;
7920
+ }
7921
+ });
7922
+ this.selectedFilters.store = headerFilters.store;
7923
+ this.selectedFilters.client = headerFilters.client;
7924
+ this.selectedFilters.clientName = headerFilters.clientName;
7925
+ this.selectedFilters.clients = headerFilters.clients;
7926
+ this.selectedFilters.date = headerFilters.date;
7927
+ this.selectedDateRange = {
7928
+ startDate: this.dayjs(headerFilters.date.startDate, "YYYY-MM-DD").format("DD-MM-YYYY"),
7929
+ endDate: this.dayjs(headerFilters.date.endDate, "YYYY-MM-DD").format("DD-MM-YYYY"),
7930
+ };
7931
+ localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
7932
+ this.gs.dataRangeValue.next(this.selectedFilters);
7933
+ this.cd.detectChanges();
7934
+ }
7935
+ else {
7936
+ this.selectedClient = this.storeList[0];
7937
+ this.selectedFilters.store = this.selectedClient.storeId;
7938
+ this.selectedFilters.client = headerFilters.client;
7939
+ this.selectedFilters.clientName = headerFilters.clientName;
7940
+ this.selectedFilters.clients = headerFilters.clients;
7941
+ this.selectedDateRange = {
7942
+ startDate: this.dayjs().format("DD-MM-YYYY"),
7943
+ endDate: this.dayjs().format("DD-MM-YYYY"),
7944
+ };
7945
+ var datetime = {
7946
+ startDate: this.dayjs().format("YYYY-MM-DD"),
7947
+ endDate: this.dayjs().format("YYYY-MM-DD"),
7948
+ };
7949
+ this.selectedFilters.date = datetime;
7950
+ localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
7951
+ this.gs.dataRangeValue.next(this.selectedFilters);
7952
+ this.cd.detectChanges();
7953
+ }
7954
+ }
7955
+ },
7956
+ });
7957
+ }
7958
+ }
7959
+ onClientSelect(event) {
7960
+ this.selectedClient = event;
7961
+ this.selectedFilters.store = this.selectedClient.storeId;
7962
+ this.gs.dataRangeValue.next(this.selectedFilters);
7963
+ localStorage.setItem('header-filters', JSON.stringify(this.selectedFilters));
7964
+ }
7965
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoresingleComponent, deps: [{ token: AuthService }, { token: i1.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
7966
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: StoresingleComponent, selector: "lib-storesingle", ngImport: i0, template: "<div class=\"wrapper\" >\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</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}.wrapper{min-width:200px}.btn-primary{line-height:18px!important}\n"], dependencies: [{ kind: "component", type: CustomSelectComponent, selector: "lib-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }] });
7967
+ }
7968
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StoresingleComponent, decorators: [{
7969
+ type: Component,
7970
+ args: [{ selector: 'lib-storesingle', template: "<div class=\"wrapper\" >\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</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}.wrapper{min-width:200px}.btn-primary{line-height:18px!important}\n"] }]
7971
+ }], ctorParameters: () => [{ type: AuthService }, { type: i1.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i2.Router }] });
7972
+
7026
7973
  const routes$1 = [
7027
7974
  {
7028
7975
  path: '',
@@ -7060,7 +8007,10 @@ class LayoutModule {
7060
8007
  NotificationsInnerComponent,
7061
8008
  CsmAssignConfirmationComponent,
7062
8009
  TrafficHeaderComponent,
7063
- TraxHeaderComponent], imports: [CommonModule, i2.RouterModule, TranslationModule,
8010
+ TraxHeaderComponent,
8011
+ SingleStoredateComponent,
8012
+ StoresingleComponent,
8013
+ TraxWithoutdateComponent], imports: [CommonModule, i2.RouterModule, TranslationModule,
7064
8014
  InlineSVGModule,
7065
8015
  NgbDropdownModule,
7066
8016
  NgbProgressbarModule,
@@ -7124,7 +8074,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7124
8074
  NotificationsInnerComponent,
7125
8075
  CsmAssignConfirmationComponent,
7126
8076
  TrafficHeaderComponent,
7127
- TraxHeaderComponent
8077
+ TraxHeaderComponent,
8078
+ SingleStoredateComponent,
8079
+ StoresingleComponent,
8080
+ TraxWithoutdateComponent
7128
8081
  ],
7129
8082
  imports: [
7130
8083
  CommonModule,