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.
- package/esm2022/lib/components/collection-update-ai/collection-update-ai.component.mjs +3 -3
- package/esm2022/lib/components/collection-update-ai/components/dynamic-filter/dynamic-filter.component.mjs +183 -0
- package/esm2022/lib/components/collection-update-ai/components/store-dropdown/store-dropdown.component.mjs +211 -0
- package/esm2022/lib/components/collection-update-ai/components/store-fixture/store-fixture.component.mjs +422 -0
- package/esm2022/lib/components/collection-update-ai/components/store-select/store-select.component.mjs +148 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/cancel-confirmation-modal/cancel-confirmation-modal.component.mjs +20 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/find-replace-layout.component.mjs +359 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/batch-confirmation-modal/batch-confirmation-modal.component.mjs +23 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.mjs +2524 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/approve-complete-modal/approve-complete-modal.component.mjs +66 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/fixture-before-after/fixture-before-after.component.mjs +85 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.mjs +2039 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-table/find-replace-table.component.mjs +433 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-table/reschedule-modal/reschedule-modal.component.mjs +76 -0
- package/esm2022/lib/components/collection-update-ai/models/find-replace.model.mjs +2 -0
- package/esm2022/lib/components/collection-update-ai/services/data.service.mjs +291 -0
- package/esm2022/lib/components/fixture-template-table/fixture-template-table.component.mjs +33 -4
- package/esm2022/lib/components/manage-plano/rollout-table/rollout-table.component.mjs +25 -3
- package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +133 -83
- package/esm2022/lib/components/manage-store-plano/verification-feedback/editable-fixture/editable-fixture.component.mjs +1 -1
- package/esm2022/lib/components/planogram/merch-compliance/fixture-products/fixture-products.component.mjs +75 -31
- package/esm2022/lib/components/planogram/merch-compliance/merch-compliance.component.mjs +4 -7
- package/esm2022/lib/components/planogram/merch-compliance/product-locator/misplaced-product-fixture/misplaced-product-fixture.component.mjs +228 -0
- package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-locator.component.mjs +1105 -0
- package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-zone-locator/product-zone-locator.component.mjs +20 -0
- package/esm2022/lib/components/planogram/merch-compliance/zone-products/zone-products.component.mjs +22 -9
- package/esm2022/lib/components/planogram/plano-analytics/date-range-picker/date-range-picker.component.mjs +92 -0
- package/esm2022/lib/components/planogram/plano-analytics/plano-analytics.component.mjs +106 -0
- package/esm2022/lib/components/planogram/plano-details-parent/plano-details-parent.component.mjs +21 -10
- package/esm2022/lib/components/planogram/plano-overview/fixture-overview/fixture-overview.component.mjs +41 -35
- package/esm2022/lib/components/planogram/plano-overview/plano-overview.component.mjs +3 -4
- package/esm2022/lib/components/popups/layout-edit-confirmation/layout-edit-confirmation.component.mjs +3 -3
- package/esm2022/lib/services/store-builder.service.mjs +46 -1
- package/esm2022/lib/tango-store-builder-routing.module.mjs +23 -1
- package/esm2022/lib/tango-store-builder.module.mjs +36 -5
- package/fesm2022/tango-app-ui-store-builder.mjs +10438 -1911
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/collection-update-ai/components/dynamic-filter/dynamic-filter.component.d.ts +51 -0
- package/lib/components/collection-update-ai/components/store-dropdown/store-dropdown.component.d.ts +36 -0
- package/lib/components/collection-update-ai/components/store-fixture/store-fixture.component.d.ts +50 -0
- package/lib/components/collection-update-ai/components/store-select/store-select.component.d.ts +33 -0
- package/lib/components/collection-update-ai/find-replace-layout/cancel-confirmation-modal/cancel-confirmation-modal.component.d.ts +9 -0
- package/lib/components/collection-update-ai/find-replace-layout/find-replace-layout.component.d.ts +58 -0
- package/lib/components/collection-update-ai/find-replace-layout/prepare-template/batch-confirmation-modal/batch-confirmation-modal.component.d.ts +10 -0
- package/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.d.ts +141 -0
- package/lib/components/collection-update-ai/find-replace-layout/review-replace/approve-complete-modal/approve-complete-modal.component.d.ts +18 -0
- package/lib/components/collection-update-ai/find-replace-layout/review-replace/fixture-before-after/fixture-before-after.component.d.ts +19 -0
- package/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.d.ts +116 -0
- package/lib/components/collection-update-ai/find-replace-table/find-replace-table.component.d.ts +63 -0
- package/lib/components/collection-update-ai/find-replace-table/reschedule-modal/reschedule-modal.component.d.ts +19 -0
- package/lib/components/collection-update-ai/models/find-replace.model.d.ts +55 -0
- package/lib/components/collection-update-ai/services/data.service.d.ts +70 -0
- package/lib/components/fixture-template-table/fixture-template-table.component.d.ts +2 -0
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +6 -4
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +4 -4
- package/lib/components/manage-store-plano/manage-store-plano.component.d.ts +5 -1
- package/lib/components/planogram/merch-compliance/fixture-products/fixture-products.component.d.ts +8 -2
- package/lib/components/planogram/merch-compliance/merch-compliance.component.d.ts +1 -3
- package/lib/components/planogram/merch-compliance/product-locator/misplaced-product-fixture/misplaced-product-fixture.component.d.ts +45 -0
- package/lib/components/planogram/merch-compliance/product-locator/product-locator.component.d.ts +69 -0
- package/lib/components/planogram/merch-compliance/product-locator/product-zone-locator/product-zone-locator.component.d.ts +9 -0
- package/lib/components/planogram/merch-compliance/zone-products/zone-products.component.d.ts +10 -2
- package/lib/components/planogram/plano-analytics/date-range-picker/date-range-picker.component.d.ts +24 -0
- package/lib/components/planogram/plano-analytics/plano-analytics.component.d.ts +25 -0
- package/lib/components/planogram/plano-details-parent/plano-details-parent.component.d.ts +5 -1
- package/lib/components/planogram/plano-overview/fixture-overview/fixture-overview.component.d.ts +2 -4
- package/lib/services/store-builder.service.d.ts +24 -0
- package/lib/tango-store-builder.module.d.ts +29 -21
- 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): "
|
|
55
|
-
getTaskTooltip(data: any, type: string): "
|
|
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): "
|
|
60
|
-
getStatusBadge(data: any): "
|
|
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): "
|
|
57
|
-
getTaskTooltip(data: any, type: string): "
|
|
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): "
|
|
61
|
-
getStatusBadge(data: any): "
|
|
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<
|
|
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;
|
package/lib/components/planogram/merch-compliance/fixture-products/fixture-products.component.d.ts
CHANGED
|
@@ -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
|
-
|
|
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; };
|
|
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
|
+
}
|
package/lib/components/planogram/merch-compliance/product-locator/product-locator.component.d.ts
ADDED
|
@@ -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
|
+
}
|
package/lib/components/planogram/merch-compliance/zone-products/zone-products.component.d.ts
CHANGED
|
@@ -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:
|
|
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
|
}
|
package/lib/components/planogram/plano-analytics/date-range-picker/date-range-picker.component.d.ts
ADDED
|
@@ -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 {};
|
package/lib/components/planogram/plano-overview/fixture-overview/fixture-overview.component.d.ts
CHANGED
|
@@ -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; }; "
|
|
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>;
|