tango-app-ui-store-builder 1.0.45 → 1.0.47

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.
Files changed (69) hide show
  1. package/esm2022/lib/components/collection-update-ai/collection-update-ai.component.mjs +3 -3
  2. package/esm2022/lib/components/collection-update-ai/components/dynamic-filter/dynamic-filter.component.mjs +183 -0
  3. package/esm2022/lib/components/collection-update-ai/components/store-dropdown/store-dropdown.component.mjs +211 -0
  4. package/esm2022/lib/components/collection-update-ai/components/store-fixture/store-fixture.component.mjs +422 -0
  5. package/esm2022/lib/components/collection-update-ai/components/store-select/store-select.component.mjs +148 -0
  6. package/esm2022/lib/components/collection-update-ai/find-replace-layout/cancel-confirmation-modal/cancel-confirmation-modal.component.mjs +20 -0
  7. package/esm2022/lib/components/collection-update-ai/find-replace-layout/find-replace-layout.component.mjs +359 -0
  8. package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/batch-confirmation-modal/batch-confirmation-modal.component.mjs +23 -0
  9. package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.mjs +2524 -0
  10. package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/approve-complete-modal/approve-complete-modal.component.mjs +66 -0
  11. package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/fixture-before-after/fixture-before-after.component.mjs +85 -0
  12. package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.mjs +2039 -0
  13. package/esm2022/lib/components/collection-update-ai/find-replace-table/find-replace-table.component.mjs +433 -0
  14. package/esm2022/lib/components/collection-update-ai/find-replace-table/reschedule-modal/reschedule-modal.component.mjs +76 -0
  15. package/esm2022/lib/components/collection-update-ai/models/find-replace.model.mjs +2 -0
  16. package/esm2022/lib/components/collection-update-ai/services/data.service.mjs +291 -0
  17. package/esm2022/lib/components/fixture-template-table/fixture-template-table.component.mjs +33 -4
  18. package/esm2022/lib/components/manage-plano/rollout-table/rollout-table.component.mjs +25 -3
  19. package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +133 -83
  20. package/esm2022/lib/components/manage-store-plano/verification-feedback/editable-fixture/editable-fixture.component.mjs +1 -1
  21. package/esm2022/lib/components/planogram/merch-compliance/fixture-products/fixture-products.component.mjs +75 -31
  22. package/esm2022/lib/components/planogram/merch-compliance/merch-compliance.component.mjs +4 -7
  23. package/esm2022/lib/components/planogram/merch-compliance/product-locator/misplaced-product-fixture/misplaced-product-fixture.component.mjs +228 -0
  24. package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-locator.component.mjs +1105 -0
  25. package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-zone-locator/product-zone-locator.component.mjs +20 -0
  26. package/esm2022/lib/components/planogram/merch-compliance/zone-products/zone-products.component.mjs +22 -9
  27. package/esm2022/lib/components/planogram/plano-analytics/date-range-picker/date-range-picker.component.mjs +92 -0
  28. package/esm2022/lib/components/planogram/plano-analytics/plano-analytics.component.mjs +106 -0
  29. package/esm2022/lib/components/planogram/plano-details-parent/plano-details-parent.component.mjs +21 -10
  30. package/esm2022/lib/components/planogram/plano-overview/fixture-overview/fixture-overview.component.mjs +41 -35
  31. package/esm2022/lib/components/planogram/plano-overview/plano-overview.component.mjs +3 -4
  32. package/esm2022/lib/components/popups/layout-edit-confirmation/layout-edit-confirmation.component.mjs +3 -3
  33. package/esm2022/lib/services/store-builder.service.mjs +46 -1
  34. package/esm2022/lib/tango-store-builder-routing.module.mjs +23 -1
  35. package/esm2022/lib/tango-store-builder.module.mjs +36 -5
  36. package/fesm2022/tango-app-ui-store-builder.mjs +10438 -1911
  37. package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
  38. package/lib/components/collection-update-ai/components/dynamic-filter/dynamic-filter.component.d.ts +51 -0
  39. package/lib/components/collection-update-ai/components/store-dropdown/store-dropdown.component.d.ts +36 -0
  40. package/lib/components/collection-update-ai/components/store-fixture/store-fixture.component.d.ts +50 -0
  41. package/lib/components/collection-update-ai/components/store-select/store-select.component.d.ts +33 -0
  42. package/lib/components/collection-update-ai/find-replace-layout/cancel-confirmation-modal/cancel-confirmation-modal.component.d.ts +9 -0
  43. package/lib/components/collection-update-ai/find-replace-layout/find-replace-layout.component.d.ts +58 -0
  44. package/lib/components/collection-update-ai/find-replace-layout/prepare-template/batch-confirmation-modal/batch-confirmation-modal.component.d.ts +10 -0
  45. package/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.d.ts +141 -0
  46. package/lib/components/collection-update-ai/find-replace-layout/review-replace/approve-complete-modal/approve-complete-modal.component.d.ts +18 -0
  47. package/lib/components/collection-update-ai/find-replace-layout/review-replace/fixture-before-after/fixture-before-after.component.d.ts +19 -0
  48. package/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.d.ts +116 -0
  49. package/lib/components/collection-update-ai/find-replace-table/find-replace-table.component.d.ts +63 -0
  50. package/lib/components/collection-update-ai/find-replace-table/reschedule-modal/reschedule-modal.component.d.ts +19 -0
  51. package/lib/components/collection-update-ai/models/find-replace.model.d.ts +55 -0
  52. package/lib/components/collection-update-ai/services/data.service.d.ts +70 -0
  53. package/lib/components/fixture-template-table/fixture-template-table.component.d.ts +2 -0
  54. package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +6 -4
  55. package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +4 -4
  56. package/lib/components/manage-store-plano/manage-store-plano.component.d.ts +5 -1
  57. package/lib/components/planogram/merch-compliance/fixture-products/fixture-products.component.d.ts +8 -2
  58. package/lib/components/planogram/merch-compliance/merch-compliance.component.d.ts +1 -3
  59. package/lib/components/planogram/merch-compliance/product-locator/misplaced-product-fixture/misplaced-product-fixture.component.d.ts +45 -0
  60. package/lib/components/planogram/merch-compliance/product-locator/product-locator.component.d.ts +69 -0
  61. package/lib/components/planogram/merch-compliance/product-locator/product-zone-locator/product-zone-locator.component.d.ts +9 -0
  62. package/lib/components/planogram/merch-compliance/zone-products/zone-products.component.d.ts +10 -2
  63. package/lib/components/planogram/plano-analytics/date-range-picker/date-range-picker.component.d.ts +24 -0
  64. package/lib/components/planogram/plano-analytics/plano-analytics.component.d.ts +25 -0
  65. package/lib/components/planogram/plano-details-parent/plano-details-parent.component.d.ts +5 -1
  66. package/lib/components/planogram/plano-overview/fixture-overview/fixture-overview.component.d.ts +2 -4
  67. package/lib/services/store-builder.service.d.ts +24 -0
  68. package/lib/tango-store-builder.module.d.ts +29 -21
  69. package/package.json +1 -1
@@ -0,0 +1,55 @@
1
+ export interface FindReplace {
2
+ _id: string;
3
+ name?: string;
4
+ clientId?: string;
5
+ searchMode?: 'store' | 'cluster';
6
+ storeSearchString?: string;
7
+ target?: 'merch' | 'vm' | 'both';
8
+ findPrompt?: string;
9
+ replacePrompt?: string;
10
+ storeCount?: number;
11
+ stores?: Store[];
12
+ selectedClusters?: Array<{
13
+ id: string;
14
+ label: string;
15
+ }>;
16
+ batchProgress?: number;
17
+ status: 'draft' | 'batch-running' | 'yet-to-approve' | 'approved' | 'scheduled';
18
+ schedule?: boolean;
19
+ scheduleDate?: string | null;
20
+ createdAt?: string;
21
+ updatedAt?: string;
22
+ }
23
+ export interface Store {
24
+ storeName: string;
25
+ storeId?: string;
26
+ planoId?: string;
27
+ layoutId?: string;
28
+ batchId?: string;
29
+ batchStatus?: 'yet-to-start' | 'initiated' | 'complete' | 'failed';
30
+ responseStatus?: 'match' | 'no-match';
31
+ findResponseData?: string;
32
+ isApproved?: boolean;
33
+ replaceResponseData?: {
34
+ vmConfig?: any[];
35
+ shelfConfig?: any[];
36
+ };
37
+ }
38
+ export interface FindReplaceFilter {
39
+ status?: string[];
40
+ }
41
+ export interface FindReplaceRequest {
42
+ limit: number;
43
+ offset: number;
44
+ searchValue?: string;
45
+ filter?: FindReplaceFilter;
46
+ sortColumnName?: string;
47
+ sortBy?: number;
48
+ }
49
+ export interface FindReplaceResponse {
50
+ code: number;
51
+ data: {
52
+ data: FindReplace[];
53
+ count: number;
54
+ };
55
+ }
@@ -0,0 +1,70 @@
1
+ import { OnDestroy } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { FindReplace } from '../models/find-replace.model';
4
+ import { StoreBuilderService } from '../../../services/store-builder.service';
5
+ import { ToastService } from 'tango-app-ui-shared';
6
+ import * as i0 from "@angular/core";
7
+ export declare class CollectionUpdateAiDataService implements OnDestroy {
8
+ private storeBuilderService;
9
+ private toastService;
10
+ private findReplaceData$;
11
+ private saveDraftSubject$;
12
+ private loading$;
13
+ private savedId$;
14
+ private destroy$;
15
+ private saveSubscription;
16
+ constructor(storeBuilderService: StoreBuilderService, toastService: ToastService);
17
+ ngOnDestroy(): void;
18
+ /**
19
+ * Get current FindReplace data as Observable
20
+ */
21
+ getFindReplaceData(): Observable<FindReplace | null>;
22
+ /**
23
+ * Get loading state as Observable
24
+ */
25
+ getLoadingState(): Observable<boolean>;
26
+ /**
27
+ * Get saved ID as Observable (emits when save is successful)
28
+ */
29
+ getSavedId(): Observable<string>;
30
+ /**
31
+ * Get current FindReplace data value
32
+ */
33
+ getCurrentData(): FindReplace | null;
34
+ /**
35
+ * Initialize or update FindReplace data
36
+ */
37
+ setFindReplaceData(data: FindReplace | null): void;
38
+ /**
39
+ * Update partial data and merge with existing
40
+ */
41
+ updateData(partialData: Partial<FindReplace>): void;
42
+ /**
43
+ * Trigger save as draft with updated data
44
+ * Components can call this to save current state
45
+ */
46
+ triggerSaveDraft(data?: Partial<FindReplace>): void;
47
+ /**
48
+ * Save as draft and return an Observable that can be awaited
49
+ * Use this when you need to wait for the save to complete
50
+ */
51
+ saveDraftAndWait(data?: Partial<FindReplace>): Observable<any>;
52
+ /**
53
+ * Save as draft - internal method
54
+ */
55
+ private saveAsDraft;
56
+ /**
57
+ * Load FindReplace data by ID
58
+ */
59
+ loadFindReplaceDataById(id: string): Observable<any>;
60
+ /**
61
+ * Load and set FindReplace data by ID
62
+ */
63
+ loadAndSetFindReplaceDataById(id: string): void;
64
+ /**
65
+ * Clear all data
66
+ */
67
+ clearData(): void;
68
+ static ɵfac: i0.ɵɵFactoryDeclaration<CollectionUpdateAiDataService, never>;
69
+ static ɵprov: i0.ɵɵInjectableDeclaration<CollectionUpdateAiDataService>;
70
+ }
@@ -21,6 +21,7 @@ export declare class FixtureTemplateTableComponent implements OnInit, OnDestroy
21
21
  fixtureTemplatesList: FixtureTemplateList[];
22
22
  viewMode: "list" | "grid" | "tree" | string;
23
23
  fixtureTemplateChildList: any;
24
+ activeTab: string;
24
25
  sortedColumn: string;
25
26
  sortOrder: number;
26
27
  childSortedColumn: string;
@@ -61,6 +62,7 @@ export declare class FixtureTemplateTableComponent implements OnInit, OnDestroy
61
62
  openBulkUploadModal(): void;
62
63
  onClickCreateFixtureTemplate(): void;
63
64
  onSearch(): void;
65
+ onTabChange(tab: string): void;
64
66
  onSortTable(column: string): void;
65
67
  redirectToreplace(): void;
66
68
  onChildSortTable(column: string, templateId: any, index: number): void;
@@ -16,6 +16,7 @@ export declare class PlanoRolloutTableComponent implements OnInit, OnDestroy {
16
16
  cardData: any;
17
17
  planogramsList: PlanoRolloutList[];
18
18
  selectedFilterTab: string;
19
+ activeTab: string;
19
20
  sortedColumn: string;
20
21
  sortOrder: number;
21
22
  searchTerm: string;
@@ -46,18 +47,19 @@ export declare class PlanoRolloutTableComponent implements OnInit, OnDestroy {
46
47
  openBulkUploadModal(): void;
47
48
  onSearch(): void;
48
49
  onSortTable(column: string): void;
50
+ onTabChange(tab: string): void;
49
51
  filterTable(data: string): void;
50
52
  applyFilters(event: any): void;
51
53
  paginationSize(): number;
52
54
  onPageChange(pageOffset: number): void;
53
55
  onPageSizeChange(pageSize: number): void;
54
- getTaskStatus(data: any, type: string): "taskAssigned" | "reviewPending" | "yetToAssign" | "completed" | undefined;
55
- getTaskTooltip(data: any, type: string): "Task Assigned" | "Review Pending" | "Completed" | "Yet to Assign" | undefined;
56
+ getTaskStatus(data: any, type: string): "yetToAssign" | "completed" | "reviewPending" | "taskAssigned" | undefined;
57
+ getTaskTooltip(data: any, type: string): "Review Pending" | "Yet to Assign" | "Task Assigned" | "Completed" | undefined;
56
58
  showBreach(data: any, type: string): boolean;
57
59
  updateQueryParams(): void;
58
60
  ngOnDestroy(): void;
59
- getStatus(data: any): "Task Assigned" | "Review Pending" | "Ready to Publish" | "Published" | "Yet to Assign" | undefined;
60
- getStatusBadge(data: any): "taskAssigned" | "reviewPending" | "yetToAssign" | "primaryBadgeStyle" | "bg-success" | undefined;
61
+ getStatus(data: any): "Review Pending" | "Yet to Assign" | "Task Assigned" | "Ready to Publish" | "Published" | undefined;
62
+ getStatusBadge(data: any): "yetToAssign" | "reviewPending" | "taskAssigned" | "primaryBadgeStyle" | "bg-success" | undefined;
61
63
  onExport(): void;
62
64
  static ɵfac: i0.ɵɵFactoryDeclaration<PlanoRolloutTableComponent, never>;
63
65
  static ɵcmp: i0.ɵɵComponentDeclaration<PlanoRolloutTableComponent, "lib-plano-rollout-table", never, {}, {}, never, never, false, never>;
@@ -53,12 +53,12 @@ export declare class PlanoVerificationTableComponent implements OnInit, OnDestro
53
53
  onPageChange(pageOffset: number): void;
54
54
  onPageSizeChange(pageSize: number): void;
55
55
  planoFloorDetails(data: any): string | 1;
56
- getTaskStatus(data: any, type: string): "taskAssigned" | "reviewPending" | "yetToAssign" | "completed" | undefined;
57
- getTaskTooltip(data: any, type: string): "Task Assigned" | "reviewPending" | "Completed" | "Yet to Assign" | undefined;
56
+ getTaskStatus(data: any, type: string): "yetToAssign" | "completed" | "reviewPending" | "taskAssigned" | undefined;
57
+ getTaskTooltip(data: any, type: string): "reviewPending" | "Yet to Assign" | "Task Assigned" | "Completed" | undefined;
58
58
  getProgressValue(data: any): 100 | 50 | 25;
59
59
  showBreach(data: any, type: string): boolean;
60
- getStatus(data: any): "Task Assigned" | "reviewPending" | "Completed" | "Ready to Publish" | "Published" | "Yet to Assign" | undefined;
61
- getStatusBadge(data: any): "taskAssigned" | "reviewPending" | "yetToAssign" | "completed" | "primaryBadgeStyle" | "bg-success" | undefined;
60
+ getStatus(data: any): "reviewPending" | "Yet to Assign" | "Task Assigned" | "Completed" | "Ready to Publish" | "Published" | undefined;
61
+ getStatusBadge(data: any): "yetToAssign" | "completed" | "reviewPending" | "taskAssigned" | "primaryBadgeStyle" | "bg-success" | undefined;
62
62
  getSubmit(data: any): boolean;
63
63
  updateQueryParams(): void;
64
64
  ngOnDestroy(): void;
@@ -124,7 +124,11 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
124
124
  drawInitialContent(): Promise<void>;
125
125
  private getFullLayoutBounds;
126
126
  private fitCanvasToLayoutAnimated;
127
- drawLayoutElements(): Promise<boolean>;
127
+ drawLayoutElements(): Promise<true | undefined>;
128
+ private isPointInsidePolygon;
129
+ private getOccupiedRects;
130
+ private rectsOverlap;
131
+ private computeEmptyMargin;
128
132
  drawFixtureRowLabel(text: string, x: number, y: number): void;
129
133
  drawWall(canvas: fabric.Canvas, x: number, y: number, height: number, width: number, elementData: any): Promise<fabric.Group & {
130
134
  objType: string;
@@ -12,6 +12,7 @@ export declare class FixtureProductsComponent implements OnInit, OnChanges, Afte
12
12
  private ngbModal;
13
13
  fixtureDetails: any;
14
14
  vmList: VmLibraryList[];
15
+ floorData: any;
15
16
  onClose: EventEmitter<any>;
16
17
  changeFixture: EventEmitter<{
17
18
  fixtureId: string;
@@ -57,6 +58,7 @@ export declare class FixtureProductsComponent implements OnInit, OnChanges, Afte
57
58
  private isVMInitialized;
58
59
  private isBCInitialized;
59
60
  private destroy$;
61
+ private fixtureSub?;
60
62
  constructor(storeBuilderService: StoreBuilderService, gs: GlobalStateService, cd: ChangeDetectorRef, ngbModal: NgbModal);
61
63
  ngOnInit(): void;
62
64
  ngOnChanges(changes: SimpleChanges): Promise<void>;
@@ -68,12 +70,16 @@ export declare class FixtureProductsComponent implements OnInit, OnChanges, Afte
68
70
  constructSequentialSection(shelfDivs: (HTMLElement | null)[]): void;
69
71
  groupShelvesByZone(input: ShelfConfig[]): SectionConfig[];
70
72
  applySectionConfigToShelves(sections: SectionConfig[]): ShelfConfig[];
71
- openZoneLevelProductModal(zoneData: any, level: string): void;
73
+ openZoneLevelProductModalByProduct(p: any, s: any): void;
74
+ openZoneLevelProductModal(zoneData: any, level: string, pLocator?: {
75
+ s: number;
76
+ pid: any;
77
+ }): void;
72
78
  openStoreBoxProducts(): void;
73
79
  distributeRoundRobin(products: any, trayRows: number): any;
74
80
  getShelfRowWithProducts(): void;
75
81
  onClickClose(): void;
76
82
  ngOnDestroy(): void;
77
83
  static ɵfac: i0.ɵɵFactoryDeclaration<FixtureProductsComponent, never>;
78
- static ɵcmp: i0.ɵɵComponentDeclaration<FixtureProductsComponent, "fixture-products", never, { "fixtureDetails": { "alias": "fixtureDetails"; "required": false; }; "vmList": { "alias": "vmList"; "required": false; }; }, { "onClose": "onClose"; "changeFixture": "changeFixture"; }, never, never, false, never>;
84
+ static ɵcmp: i0.ɵɵComponentDeclaration<FixtureProductsComponent, "fixture-products", never, { "fixtureDetails": { "alias": "fixtureDetails"; "required": false; }; "vmList": { "alias": "vmList"; "required": false; }; "floorData": { "alias": "floorData"; "required": false; }; }, { "onClose": "onClose"; "changeFixture": "changeFixture"; }, never, never, false, never>;
79
85
  }
@@ -2,13 +2,11 @@ import { TitleCasePipe } from "@angular/common";
2
2
  import { AfterViewInit, ElementRef, OnChanges, OnDestroy, SimpleChanges } from "@angular/core";
3
3
  import { GlobalStateService } from "tango-app-ui-global";
4
4
  import * as fabric from "fabric";
5
- import { VmLibraryList } from "../../../interfaces/vm-library.interface";
6
5
  import * as i0 from "@angular/core";
7
6
  export declare class MerchComplianceComponent implements AfterViewInit, OnChanges, OnDestroy {
8
7
  private gs;
9
8
  private titleCase;
10
9
  floorData: any;
11
- vmList: VmLibraryList[];
12
10
  canvasEl: ElementRef<HTMLCanvasElement>;
13
11
  containerRef: ElementRef<HTMLDivElement>;
14
12
  onResize(): void;
@@ -68,5 +66,5 @@ export declare class MerchComplianceComponent implements AfterViewInit, OnChange
68
66
  onClickClose(): void;
69
67
  ngOnDestroy(): void;
70
68
  static ɵfac: i0.ɵɵFactoryDeclaration<MerchComplianceComponent, never>;
71
- static ɵcmp: i0.ɵɵComponentDeclaration<MerchComplianceComponent, "merch-compliance", never, { "floorData": { "alias": "floorData"; "required": false; }; "vmList": { "alias": "vmList"; "required": false; }; }, {}, never, never, false, never>;
69
+ static ɵcmp: i0.ɵɵComponentDeclaration<MerchComplianceComponent, "merch-compliance", never, { "floorData": { "alias": "floorData"; "required": false; }; }, {}, never, never, false, never>;
72
70
  }
@@ -0,0 +1,45 @@
1
+ import { AfterViewChecked, ChangeDetectorRef, ElementRef, OnChanges, OnDestroy, OnInit, SimpleChanges } from "@angular/core";
2
+ import { StoreBuilderService } from "../../../../../services/store-builder.service";
3
+ import { ShelfConfig, SectionConfig } from "../../../../../interfaces/fixture-template.interface";
4
+ import { GlobalStateService } from "tango-app-ui-global";
5
+ import * as i0 from "@angular/core";
6
+ export declare class MisplacedProductFixtureComponent implements OnInit, OnChanges, AfterViewChecked, OnDestroy {
7
+ private storeBuilderService;
8
+ private gs;
9
+ private cd;
10
+ fixtureDetails: any;
11
+ fixtureTemplateDetails: any;
12
+ selectedProduct: any;
13
+ fixtureRoot: ElementRef<HTMLElement>;
14
+ clientId: string;
15
+ imgCDN: string;
16
+ sectionByZones: {
17
+ zone: string;
18
+ section: {
19
+ brands: string[];
20
+ categories: string[];
21
+ shelves: string[];
22
+ shelfDivs: (HTMLElement | null | undefined)[];
23
+ capacity: number;
24
+ color: any;
25
+ };
26
+ }[];
27
+ private isLayoutInitialized;
28
+ private isColorsApplied;
29
+ isPageLoading: boolean;
30
+ private destroy$;
31
+ constructor(storeBuilderService: StoreBuilderService, gs: GlobalStateService, cd: ChangeDetectorRef);
32
+ ngOnInit(): void;
33
+ ngOnChanges(changes: SimpleChanges): Promise<void>;
34
+ ngAfterViewChecked(): void;
35
+ getFixtureShelfDetails(data: any): Promise<void>;
36
+ distributeRoundRobin(products: any, trayRows: number): any;
37
+ updateHeaderFooterSize(): boolean;
38
+ applyShelfColors(): boolean;
39
+ constructSequentialSection(shelfDivs: (HTMLElement | null)[]): void;
40
+ groupShelvesByZone(input: ShelfConfig[]): SectionConfig[];
41
+ private get bodyEl();
42
+ ngOnDestroy(): void;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<MisplacedProductFixtureComponent, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<MisplacedProductFixtureComponent, "misplaced-product-fixture", never, { "fixtureDetails": { "alias": "fixtureDetails"; "required": false; }; "selectedProduct": { "alias": "selectedProduct"; "required": false; }; }, {}, never, never, false, never>;
45
+ }
@@ -0,0 +1,69 @@
1
+ import { TitleCasePipe } from "@angular/common";
2
+ import { AfterViewInit, ElementRef, OnChanges, OnDestroy, SimpleChanges } from "@angular/core";
3
+ import { GlobalStateService } from "tango-app-ui-global";
4
+ import * as fabric from "fabric";
5
+ import * as i0 from "@angular/core";
6
+ export declare class ProductLocatorComponent implements AfterViewInit, OnChanges, OnDestroy {
7
+ private gs;
8
+ private titleCase;
9
+ floorData: any;
10
+ selectedProduct?: any;
11
+ canvasEl: ElementRef<HTMLCanvasElement>;
12
+ containerRef: ElementRef<HTMLDivElement>;
13
+ onResize(): void;
14
+ canvas: fabric.Canvas;
15
+ clientId: string;
16
+ cdnUrl: string;
17
+ zoomLevel: number;
18
+ fixtureHeight: number;
19
+ fixtureWidth: number;
20
+ wallThickness: number;
21
+ verticalMargin: number;
22
+ isPageLoading: boolean;
23
+ selectedFixture: any;
24
+ selectedFixtureData: any;
25
+ private activeHighlight;
26
+ private cancelHighlightBlink;
27
+ private readonly destroy$;
28
+ constructor(gs: GlobalStateService, titleCase: TitleCasePipe);
29
+ ngOnChanges(changes: SimpleChanges): void;
30
+ ngAfterViewInit(): void;
31
+ resizeCanvas(): void;
32
+ setupZoomHandlers(): void;
33
+ renderFloor(): Promise<void>;
34
+ private fitCanvasToLayoutAnimated;
35
+ drawLayoutElements(): Promise<void>;
36
+ drawWall(canvas: fabric.Canvas, x: number, y: number, height: number, width: number, elementData: any): fabric.Group & {
37
+ objType: string;
38
+ data: any;
39
+ };
40
+ drawEntrance(canvas: fabric.Canvas, x: number, y: number, width: number, height: number, arrowWidth: number, elementData: any): void;
41
+ drawFixture(canvas: fabric.Canvas, x: number, y: number, height: number, width: number, fixtureData: any): Promise<fabric.Group & {
42
+ wallIndex: number;
43
+ fixtureIndex: number;
44
+ fixtureId: string;
45
+ fixtureType: "wall" | "floor";
46
+ issue: boolean;
47
+ issueData: any;
48
+ taskType: string;
49
+ vmConfig: [];
50
+ objType: string;
51
+ }>;
52
+ selectFixture(target: any): void;
53
+ drawLabeledRectangle(canvas: fabric.Canvas, x: number, y: number, width: number, height: number, element: any): fabric.Group;
54
+ toPixels(value: number, unit: string, dpi?: number): number;
55
+ calcMerchCompliancePercentage(): number;
56
+ private getFullLayoutBounds;
57
+ highlightFixture(group: any, blink?: boolean): void;
58
+ removeHighlight(): void;
59
+ onChangeFixture({ fixtureId, fixtureName, shelfId, zone, }: {
60
+ fixtureId: string;
61
+ fixtureName: string;
62
+ shelfId: string;
63
+ zone: string;
64
+ }): void;
65
+ onClickClose(): void;
66
+ ngOnDestroy(): void;
67
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductLocatorComponent, never>;
68
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProductLocatorComponent, "product-fixture-locator", never, { "floorData": { "alias": "floorData"; "required": false; }; "selectedProduct": { "alias": "selectedProduct"; "required": false; }; }, {}, never, never, false, never>;
69
+ }
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class ProductZoneLocatorComponent {
3
+ data: any;
4
+ selectedProduct: any;
5
+ allBrands: any;
6
+ zoneCapacity: number;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProductZoneLocatorComponent, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProductZoneLocatorComponent, "product-zone-locator", never, { "data": { "alias": "data"; "required": false; }; "selectedProduct": { "alias": "selectedProduct"; "required": false; }; }, {}, never, never, false, never>;
9
+ }
@@ -1,27 +1,35 @@
1
1
  import { OnChanges, OnInit, SimpleChanges } from "@angular/core";
2
2
  import { NgbActiveModal } from "@ng-bootstrap/ng-bootstrap";
3
3
  import { ToastService } from "tango-app-ui-shared";
4
+ import { VmLibraryList } from '../../../../interfaces/vm-library.interface';
4
5
  import * as i0 from "@angular/core";
5
6
  export declare class ZoneProductsComponent implements OnChanges, OnInit {
6
7
  activeModal: NgbActiveModal;
7
8
  private toastService;
8
9
  data: any;
9
10
  level: string;
11
+ floorData: any;
12
+ vmList: VmLibraryList[];
13
+ productLocation?: {
14
+ s: number;
15
+ pid: any;
16
+ };
10
17
  selectedProduct: any;
11
18
  productNote: string | null;
12
19
  allProducts: any[];
13
20
  zoneCapacity: number;
14
21
  brandName: string;
15
22
  allBrands: any;
23
+ showProductLocation: boolean;
16
24
  constructor(activeModal: NgbActiveModal, toastService: ToastService);
17
25
  ngOnInit(): void;
18
26
  ngOnChanges(changes: SimpleChanges): void;
19
27
  onClickRefresh(): void;
20
- onSelectProduct(pid: string, s: any): void;
28
+ onSelectProduct(pid: any, s: any): void;
21
29
  onClickClose(): void;
22
30
  distributeRoundRobin(products: any, trayRows: number): any;
23
31
  copySKU(text: string): void;
24
32
  onClickLocateFixture(fixtureDetails: any): void;
25
33
  static ɵfac: i0.ɵɵFactoryDeclaration<ZoneProductsComponent, never>;
26
- static ɵcmp: i0.ɵɵComponentDeclaration<ZoneProductsComponent, "zone-products", never, { "data": { "alias": "data"; "required": false; }; "level": { "alias": "level"; "required": false; }; }, {}, never, never, false, never>;
34
+ static ɵcmp: i0.ɵɵComponentDeclaration<ZoneProductsComponent, "zone-products", never, { "data": { "alias": "data"; "required": false; }; "level": { "alias": "level"; "required": false; }; "floorData": { "alias": "floorData"; "required": false; }; "vmList": { "alias": "vmList"; "required": false; }; "productLocation": { "alias": "productLocation"; "required": false; }; }, {}, never, never, false, never>;
27
35
  }
@@ -0,0 +1,24 @@
1
+ import { EventEmitter } from "@angular/core";
2
+ import dayjs from "dayjs";
3
+ import "dayjs/locale/en";
4
+ import { GlobalStateService } from "tango-app-ui-global";
5
+ import * as i0 from "@angular/core";
6
+ export declare class DateRangePickerComponent {
7
+ gs: GlobalStateService;
8
+ dateChange: EventEmitter<any>;
9
+ dayjs: typeof dayjs;
10
+ selectedClient: any;
11
+ isCustomDate: (m: dayjs.Dayjs) => false | "invalid-date";
12
+ selectedDateRange: any;
13
+ selectedFilters: any;
14
+ ranges: any;
15
+ constructor(gs: GlobalStateService);
16
+ value: number;
17
+ ngOnInit(): void;
18
+ getDateRanges(): any;
19
+ resetValidation(): void;
20
+ onStartDateChange(event: any): void;
21
+ emitDateChange(event: any): void;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateRangePickerComponent, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<DateRangePickerComponent, "lib-date-range-picker", never, { "value": { "alias": "value"; "required": false; }; }, { "dateChange": "dateChange"; }, never, never, false, never>;
24
+ }
@@ -0,0 +1,25 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { StoreBuilderService } from '../../../services/store-builder.service';
3
+ import * as i0 from "@angular/core";
4
+ export declare class PlanoAnalyticsComponent implements OnInit {
5
+ private apiService;
6
+ floorData: any;
7
+ vmList: any;
8
+ footfallList: any;
9
+ cardData: any;
10
+ topPerformingZoneList: any;
11
+ engagersList: any;
12
+ private readonly destroy$;
13
+ constructor(apiService: StoreBuilderService);
14
+ ngOnInit(): void;
15
+ getFootfallDetails(): void;
16
+ getTopPerformingZones(): void;
17
+ getStoreEngagers(): void;
18
+ topItems(): any;
19
+ topEngagers(): any;
20
+ leastEngagers(): any;
21
+ nonEngagers(): any;
22
+ datechange(event: any): void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<PlanoAnalyticsComponent, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<PlanoAnalyticsComponent, "lib-plano-analytics", never, { "floorData": { "alias": "floorData"; "required": false; }; "vmList": { "alias": "vmList"; "required": false; }; }, {}, never, never, false, never>;
25
+ }
@@ -27,6 +27,7 @@ export declare class PlanoDetailsParentComponent implements OnInit, OnDestroy {
27
27
  selectedTab: TabType;
28
28
  storeList: any;
29
29
  selectedStoreName: any;
30
+ isShowCompliance: boolean;
30
31
  constructor(apiService: StoreBuilderService, gs: GlobalStateService, route: ActivatedRoute, router: Router, location: Location, pageInfo: PageInfoService);
31
32
  ngOnInit(): void;
32
33
  setPageData(): void;
@@ -45,7 +46,7 @@ export declare class PlanoDetailsParentComponent implements OnInit, OnDestroy {
45
46
  static ɵfac: i0.ɵɵFactoryDeclaration<PlanoDetailsParentComponent, never>;
46
47
  static ɵcmp: i0.ɵɵComponentDeclaration<PlanoDetailsParentComponent, "lib-plano-details-parent", never, {}, {}, never, never, false, never>;
47
48
  }
48
- type TabType = "overview" | "merch-compliance";
49
+ type TabType = "overview" | "merch-compliance" | "analytics";
49
50
  interface PlanoBriefDetails {
50
51
  planoId: string;
51
52
  floorId: string;
@@ -56,5 +57,8 @@ interface PlanoBriefDetails {
56
57
  lastMerchCompliancePercentage: number;
57
58
  lastMerchComplianceCheck: string | null;
58
59
  merchStatus: boolean | null;
60
+ missedCount: number | null;
61
+ misplacedCount: number | null;
62
+ productCount: number | null;
59
63
  }
60
64
  export {};
@@ -1,5 +1,4 @@
1
1
  import { AfterViewChecked, ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from "@angular/core";
2
- import { VmLibraryList } from "../../../../interfaces/vm-library.interface";
3
2
  import { StoreBuilderService } from "../../../../services/store-builder.service";
4
3
  import { GlobalStateService } from "tango-app-ui-global";
5
4
  import { ShelfConfig, SectionConfig } from "../../../../interfaces/fixture-template.interface";
@@ -10,7 +9,6 @@ export declare class FixtureOverviewComponent implements OnInit, OnChanges, Afte
10
9
  private cd;
11
10
  fixtureDetails: any;
12
11
  totalFixtures: string[];
13
- vmList: VmLibraryList[];
14
12
  revisionId: string;
15
13
  onClose: EventEmitter<any>;
16
14
  changeFixture: EventEmitter<{
@@ -42,12 +40,12 @@ export declare class FixtureOverviewComponent implements OnInit, OnChanges, Afte
42
40
  private isVMInitialized;
43
41
  private isBCInitialized;
44
42
  private destroy$;
43
+ private fixtureSub?;
45
44
  constructor(storeBuilderService: StoreBuilderService, gs: GlobalStateService, cd: ChangeDetectorRef);
46
45
  ngOnInit(): void;
47
46
  ngOnChanges(changes: SimpleChanges): Promise<void>;
48
47
  ngAfterViewChecked(): void;
49
48
  getFixtureShelfDetails(data: any): Promise<void>;
50
- getSelectedVM(vm: any): VmLibraryList | undefined;
51
49
  handleVmPositionAndSize(): boolean;
52
50
  applyShelfColors(): boolean;
53
51
  constructSequentialSection(shelfDivs: (HTMLElement | null)[]): void;
@@ -59,5 +57,5 @@ export declare class FixtureOverviewComponent implements OnInit, OnChanges, Afte
59
57
  onChangeFixture(change: "next" | "previous"): void;
60
58
  ngOnDestroy(): void;
61
59
  static ɵfac: i0.ɵɵFactoryDeclaration<FixtureOverviewComponent, never>;
62
- static ɵcmp: i0.ɵɵComponentDeclaration<FixtureOverviewComponent, "fixture-overview", never, { "fixtureDetails": { "alias": "fixtureDetails"; "required": false; }; "totalFixtures": { "alias": "totalFixtures"; "required": false; }; "vmList": { "alias": "vmList"; "required": false; }; "revisionId": { "alias": "revisionId"; "required": false; }; }, { "onClose": "onClose"; "changeFixture": "changeFixture"; }, never, never, false, never>;
60
+ static ɵcmp: i0.ɵɵComponentDeclaration<FixtureOverviewComponent, "fixture-overview", never, { "fixtureDetails": { "alias": "fixtureDetails"; "required": false; }; "totalFixtures": { "alias": "totalFixtures"; "required": false; }; "revisionId": { "alias": "revisionId"; "required": false; }; }, { "onClose": "onClose"; "changeFixture": "changeFixture"; }, never, never, false, never>;
63
61
  }
@@ -120,12 +120,36 @@ export declare class StoreBuilderService implements OnDestroy {
120
120
  createPlanoFromCAD(file: File, storeId: string, floorNumber: number): import("rxjs").Observable<Object>;
121
121
  getAllPlanoIds(clientId: string): import("rxjs").Observable<Object>;
122
122
  findFixtureAi(data: any): import("rxjs").Observable<Object>;
123
+ findFixture(data: any): import("rxjs").Observable<Object>;
124
+ replaceFixture(data: any): import("rxjs").Observable<Object>;
123
125
  getPlanoId(data: any): import("rxjs").Observable<Object>;
124
126
  updateFixtureData(data: any): import("rxjs").Observable<Object>;
125
127
  approvePlanoLayout(floorId: any): import("rxjs").Observable<Object>;
128
+ getAllFindReplaceData(data: any): import("rxjs").Observable<Object>;
129
+ getFindReplaceDataById(data: any): import("rxjs").Observable<Object>;
130
+ saveAsDraft(data: any): import("rxjs").Observable<Object>;
131
+ getStoreOrClusterList(data: {
132
+ searchMode: 'store' | 'cluster';
133
+ }): import("rxjs").Observable<Object>;
134
+ batchFindReplace(data: any): import("rxjs").Observable<Object>;
135
+ approveReplace(data: {
136
+ findReplaceId: string;
137
+ stores?: any[];
138
+ schedule?: boolean;
139
+ scheduleDate?: string | null;
140
+ }): import("rxjs").Observable<Object>;
141
+ updateBatchProgress(data: any): import("rxjs").Observable<Object>;
142
+ cancelFindReplace(data: any): import("rxjs").Observable<Object>;
143
+ deleteFindReplaceAi(data: {
144
+ id: string;
145
+ }): import("rxjs").Observable<Object>;
126
146
  createStore(data: any): import("rxjs").Observable<Object>;
127
147
  spocEmailCheck(data: any): import("rxjs").Observable<Object>;
128
148
  createInfraTicket(data: any): import("rxjs").Observable<Object>;
149
+ getfootfallDetails(data: any): import("rxjs").Observable<Object>;
150
+ getTopPerformingZones(data: any): import("rxjs").Observable<Object>;
151
+ getStoreEngagers(data: any): import("rxjs").Observable<Object>;
152
+ getStoreFixtureEngagers(data: any): import("rxjs").Observable<Object>;
129
153
  ngOnDestroy(): void;
130
154
  static ɵfac: i0.ɵɵFactoryDeclaration<StoreBuilderService, never>;
131
155
  static ɵprov: i0.ɵɵInjectableDeclaration<StoreBuilderService>;