tango-app-ui-store-builder 1.2.15 → 1.2.17
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/manage-store-plano/verification-feedback/zone-editable-fixture/zone-editable-fixture.component.mjs +33 -7
- package/esm2022/lib/components/plano-configurations/plano-configurations.component.mjs +18 -7
- package/esm2022/lib/components/plano-tools/allow-edit/allow-edit.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/cad-files/cad-files.component.mjs +5 -4
- package/esm2022/lib/components/plano-tools/cad-render/cad-render.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/delete-floor/delete-floor.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/delete-task/delete-task.component.mjs +11 -4
- package/esm2022/lib/components/plano-tools/layout-touchup/layout-touchup.component.mjs +134 -0
- package/esm2022/lib/components/plano-tools/layout-touchup/touchup-editor/touchup-editor.component.mjs +5103 -0
- package/esm2022/lib/components/plano-tools/modify-fixture-numbers/modify-fixture-numbers.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/move-bucket/move-bucket.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/plano-data-export/plano-data-export.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/plano-migrate/plano-migrate.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/store-exports/store-exports.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/swap-template/swap-template.component.mjs +6 -3
- package/esm2022/lib/components/plano-tools/tool-page-header/tool-page-header.component.mjs +22 -0
- package/esm2022/lib/components/plano-tools/tools-parent/tools-parent.component.mjs +27 -8
- package/esm2022/lib/components/popups/publish-plano-modal/publish-plano-modal.component.mjs +1 -1
- package/esm2022/lib/components/store-plano/store-plano.component.mjs +31 -6
- package/esm2022/lib/services/store-builder.service.mjs +10 -1
- package/esm2022/lib/tango-store-builder-routing.module.mjs +25 -55
- package/esm2022/lib/tango-store-builder.module.mjs +10 -1
- package/esm2022/lib/tango-store-plano.module.mjs +5 -2
- package/fesm2022/tango-app-ui-store-builder.mjs +5678 -386
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +4 -4
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +5 -5
- package/lib/components/manage-store-plano/verification-feedback/zone-editable-fixture/zone-editable-fixture.component.d.ts +6 -0
- package/lib/components/plano-configurations/plano-configurations.component.d.ts +9 -1
- package/lib/components/plano-tools/delete-task/delete-task.component.d.ts +2 -0
- package/lib/components/plano-tools/layout-touchup/layout-touchup.component.d.ts +50 -0
- package/lib/components/plano-tools/layout-touchup/touchup-editor/touchup-editor.component.d.ts +331 -0
- package/lib/components/plano-tools/tool-page-header/tool-page-header.component.d.ts +8 -0
- package/lib/components/plano-tools/tools-parent/tools-parent.component.d.ts +4 -2
- package/lib/components/store-plano/store-plano.component.d.ts +1 -0
- package/lib/services/store-builder.service.d.ts +14 -1
- package/lib/tango-store-builder.module.d.ts +61 -58
- package/lib/tango-store-plano.module.d.ts +1 -1
- package/package.json +1 -1
|
@@ -54,13 +54,13 @@ export declare class PlanoRolloutTableComponent implements OnInit, OnDestroy {
|
|
|
54
54
|
paginationSize(): number;
|
|
55
55
|
onPageChange(pageOffset: number): void;
|
|
56
56
|
onPageSizeChange(pageSize: number): void;
|
|
57
|
-
getTaskStatus(data: any, type: string): "
|
|
58
|
-
getTaskTooltip(data: any, type: string): "
|
|
57
|
+
getTaskStatus(data: any, type: string): "yetToAssign" | "taskAssigned" | "completed" | "reviewPending" | undefined;
|
|
58
|
+
getTaskTooltip(data: any, type: string): "Yet to Assign" | "Task Assigned" | "Review Pending" | "Completed" | undefined;
|
|
59
59
|
showBreach(data: any, type: string): boolean;
|
|
60
60
|
updateQueryParams(): void;
|
|
61
61
|
ngOnDestroy(): void;
|
|
62
|
-
getStatus(data: any): "
|
|
63
|
-
getStatusBadge(data: any): "yetToAssign" | "
|
|
62
|
+
getStatus(data: any): "Yet to Assign" | "Task Assigned" | "Review Pending" | "Ready to Publish" | "Published" | undefined;
|
|
63
|
+
getStatusBadge(data: any): "yetToAssign" | "taskAssigned" | "reviewPending" | "primaryBadgeStyle" | "bg-success" | undefined;
|
|
64
64
|
onExport(): void;
|
|
65
65
|
static ɵfac: i0.ɵɵFactoryDeclaration<PlanoRolloutTableComponent, never>;
|
|
66
66
|
static ɵcmp: i0.ɵɵComponentDeclaration<PlanoRolloutTableComponent, "lib-plano-rollout-table", never, {}, {}, never, never, false, never>;
|
|
@@ -54,14 +54,14 @@ export declare class PlanoVerificationTableComponent implements OnInit, OnDestro
|
|
|
54
54
|
onPageChange(pageOffset: number): void;
|
|
55
55
|
onPageSizeChange(pageSize: number): void;
|
|
56
56
|
planoFloorDetails(data: any): string | 1;
|
|
57
|
-
getTaskStatus(data: any, type: string): "
|
|
58
|
-
getTaskTooltip(data: any, type: string): "
|
|
59
|
-
getZoneStatus(data: any): "
|
|
57
|
+
getTaskStatus(data: any, type: string): "yetToAssign" | "taskAssigned" | "completed" | "reviewPending" | undefined;
|
|
58
|
+
getTaskTooltip(data: any, type: string): "Yet to Assign" | "Task Assigned" | "Review Pending" | "Completed" | "Task Scheduled" | undefined;
|
|
59
|
+
getZoneStatus(data: any): "yetToAssign" | "taskAssigned" | "completed" | "reviewPending" | "flag";
|
|
60
60
|
getZoneTooltip(data: any): any;
|
|
61
61
|
getProgressValue(data: any): 100 | 50 | 25;
|
|
62
62
|
showBreach(data: any, type: string): boolean;
|
|
63
|
-
getStatus(data: any): "
|
|
64
|
-
getStatusBadge(data: any): "
|
|
63
|
+
getStatus(data: any): "Yet to Assign" | "Task Assigned" | "Review Pending" | "Completed" | "Ready to Publish" | "Published" | "Task Scheduled" | undefined;
|
|
64
|
+
getStatusBadge(data: any): "yetToAssign" | "taskAssigned" | "completed" | "reviewPending" | "primaryBadgeStyle" | "bg-success" | undefined;
|
|
65
65
|
getSubmit(data: any): boolean;
|
|
66
66
|
updateQueryParams(): void;
|
|
67
67
|
ngOnDestroy(): void;
|
|
@@ -46,6 +46,8 @@ export declare class ZoneEditableFixtureComponent implements OnInit, OnChanges,
|
|
|
46
46
|
bg: string;
|
|
47
47
|
border: string;
|
|
48
48
|
}[];
|
|
49
|
+
private readonly ZONE_DIFF_COLOR;
|
|
50
|
+
private readonly ZONE_MATCH_COLOR;
|
|
49
51
|
sectionByZones: {
|
|
50
52
|
zone: string;
|
|
51
53
|
section: {
|
|
@@ -80,6 +82,10 @@ export declare class ZoneEditableFixtureComponent implements OnInit, OnChanges,
|
|
|
80
82
|
}[];
|
|
81
83
|
isToggleAvailable(): boolean;
|
|
82
84
|
onToggleOthers(zone: string): Promise<void>;
|
|
85
|
+
private getZoneBrandsFromConfig;
|
|
86
|
+
private zoneBrandKey;
|
|
87
|
+
private isZoneBrandsDifferent;
|
|
88
|
+
private zoneColor;
|
|
83
89
|
private snapshotBrandsByZone;
|
|
84
90
|
private loadHeaders;
|
|
85
91
|
private loadBrandsForHeader;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ChangeDetectorRef, ElementRef, OnInit } from "@angular/core";
|
|
2
2
|
import { AbstractControl, FormArray, FormBuilder, FormGroup } from "@angular/forms";
|
|
3
3
|
import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
|
|
4
|
+
import { Router } from "@angular/router";
|
|
4
5
|
import { GlobalStateService, PageInfoService } from "tango-app-ui-global";
|
|
5
6
|
import { ToastService } from "tango-app-ui-shared";
|
|
6
7
|
import { PlanoDataService } from "../../services/plano-data.service";
|
|
@@ -16,6 +17,7 @@ export declare class PlanoConfigurationsComponent implements OnInit {
|
|
|
16
17
|
private modelService;
|
|
17
18
|
private cd;
|
|
18
19
|
private pageInfo;
|
|
20
|
+
private router;
|
|
19
21
|
formRef: ElementRef;
|
|
20
22
|
brandMetaRef: ElementRef;
|
|
21
23
|
selectedTab: string;
|
|
@@ -29,7 +31,13 @@ export declare class PlanoConfigurationsComponent implements OnInit {
|
|
|
29
31
|
brandMetaList: any[];
|
|
30
32
|
isBrandMetaEdit: boolean;
|
|
31
33
|
brandMetaSearch: string;
|
|
32
|
-
constructor(fb: FormBuilder, dataService: PlanoDataService, gs: GlobalStateService, builderService: StoreBuilderService, toast: ToastService, modelService: NgbModal, cd: ChangeDetectorRef, pageInfo: PageInfoService);
|
|
34
|
+
constructor(fb: FormBuilder, dataService: PlanoDataService, gs: GlobalStateService, builderService: StoreBuilderService, toast: ToastService, modelService: NgbModal, cd: ChangeDetectorRef, pageInfo: PageInfoService, router: Router);
|
|
35
|
+
/**
|
|
36
|
+
* Hidden entry point to the internal plano-tools page.
|
|
37
|
+
* Triggered from an invisible 1×1 hit-area below the config side card —
|
|
38
|
+
* for ops/devs who know it's there. Not discoverable in the UI.
|
|
39
|
+
*/
|
|
40
|
+
goToPlanoTools(): void;
|
|
33
41
|
ngOnInit(): Promise<void>;
|
|
34
42
|
setPageData(): void;
|
|
35
43
|
loadBrandData(): Promise<void>;
|
|
@@ -7,6 +7,7 @@ export declare class DeleteTaskComponent implements OnInit, OnDestroy {
|
|
|
7
7
|
private sbs;
|
|
8
8
|
private gs;
|
|
9
9
|
clientId: string;
|
|
10
|
+
taskType: 'fixture' | 'zoneVerification';
|
|
10
11
|
storeOptions: StoreOption[];
|
|
11
12
|
initialStores: StoreOption[];
|
|
12
13
|
selectedStores: StoreOption[];
|
|
@@ -18,6 +19,7 @@ export declare class DeleteTaskComponent implements OnInit, OnDestroy {
|
|
|
18
19
|
ngOnInit(): void;
|
|
19
20
|
loadStores(): void;
|
|
20
21
|
onStoresSelected(stores: StoreOption[]): void;
|
|
22
|
+
onTaskTypeChange(): void;
|
|
21
23
|
onSubmit(): void;
|
|
22
24
|
showMessage(msg: string, type: 'success' | 'error'): void;
|
|
23
25
|
ngOnDestroy(): void;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { OnDestroy, OnInit } from "@angular/core";
|
|
2
|
+
import { Router } from "@angular/router";
|
|
3
|
+
import { GlobalStateService } from "tango-app-ui-global";
|
|
4
|
+
import { ToastService } from "tango-app-ui-shared";
|
|
5
|
+
import { StoreBuilderService } from "../../../services/store-builder.service";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
interface StoreTouchupOption {
|
|
8
|
+
id: string;
|
|
9
|
+
label: string;
|
|
10
|
+
storeId?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Layout Touchup — internal tool selector.
|
|
14
|
+
*
|
|
15
|
+
* Two-step selector (Store → Floor). On "Open Editor", navigates to the
|
|
16
|
+
* existing manage-planogram route with `touchup=1` query param. The existing
|
|
17
|
+
* ManageStorePlanoComponent detects this and switches to touchup behaviour:
|
|
18
|
+
* - status-affecting buttons (publish / assign / redo / revoke) hidden
|
|
19
|
+
* - Save calls /managePlano/updateLayoutTouchup (no task cascade)
|
|
20
|
+
*
|
|
21
|
+
* No canvas rendering or fixture editor lives here — the existing edit-plano
|
|
22
|
+
* surface IS the editor, so the visual is identical to the verification flow.
|
|
23
|
+
*/
|
|
24
|
+
export declare class LayoutTouchupComponent implements OnInit, OnDestroy {
|
|
25
|
+
private apiService;
|
|
26
|
+
private gs;
|
|
27
|
+
private toast;
|
|
28
|
+
private router;
|
|
29
|
+
private destroy$;
|
|
30
|
+
clientId: string;
|
|
31
|
+
storeOptions: StoreTouchupOption[];
|
|
32
|
+
selectedStore: StoreTouchupOption | null;
|
|
33
|
+
floorOptions: {
|
|
34
|
+
id: string;
|
|
35
|
+
label: string;
|
|
36
|
+
}[];
|
|
37
|
+
selectedFloorId: string;
|
|
38
|
+
isLoadingStores: boolean;
|
|
39
|
+
isLoadingFloor: boolean;
|
|
40
|
+
constructor(apiService: StoreBuilderService, gs: GlobalStateService, toast: ToastService, router: Router);
|
|
41
|
+
ngOnInit(): void;
|
|
42
|
+
ngOnDestroy(): void;
|
|
43
|
+
loadStores(): void;
|
|
44
|
+
onStoreChange(planoId: string | null): void;
|
|
45
|
+
loadFloorsForPlano(planoId: string): void;
|
|
46
|
+
openEditor(): void;
|
|
47
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LayoutTouchupComponent, never>;
|
|
48
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LayoutTouchupComponent, "lib-layout-touchup", never, {}, {}, never, never, false, never>;
|
|
49
|
+
}
|
|
50
|
+
export {};
|
package/lib/components/plano-tools/layout-touchup/touchup-editor/touchup-editor.component.d.ts
ADDED
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy, OnInit, TemplateRef } from "@angular/core";
|
|
2
|
+
import { Location, TitleCasePipe } from "@angular/common";
|
|
3
|
+
import { FormArray, FormBuilder, FormControl, FormGroup } from "@angular/forms";
|
|
4
|
+
import { ActivatedRoute, Router } from "@angular/router";
|
|
5
|
+
import { Subject, Subscription } from "rxjs";
|
|
6
|
+
import { NgbAccordionDirective, NgbModal } from "@ng-bootstrap/ng-bootstrap";
|
|
7
|
+
import * as fabric from "fabric";
|
|
8
|
+
import { GlobalStateService, PageInfoService } from "tango-app-ui-global";
|
|
9
|
+
import { ToastService } from "tango-app-ui-shared";
|
|
10
|
+
import { StoreBuilderService } from "../../../../services/store-builder.service";
|
|
11
|
+
import { DropdownIF } from "../../../../interfaces/plano-general.interface";
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
type BoundFixtureGroup = {
|
|
14
|
+
fixtureGroup: fabric.Group;
|
|
15
|
+
offsetX: number;
|
|
16
|
+
offsetY: number;
|
|
17
|
+
_tempOldTop?: number;
|
|
18
|
+
_tempOldLeft?: number;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Layout Touchup Editor — full clone of ManageStorePlanoComponent for the
|
|
22
|
+
* internal Layout Touchup tool flow.
|
|
23
|
+
*
|
|
24
|
+
* Identical canvas rendering, fixture editor (uses the same 3 standalone tab
|
|
25
|
+
* components from TangoStoreBuilderModule with `revertOnEdit=false` so per-
|
|
26
|
+
* fixture saves don't cascade), and form patching logic — verification /
|
|
27
|
+
* task / publish / assign UI is removed from the template so users can't
|
|
28
|
+
* accidentally mutate task state.
|
|
29
|
+
*
|
|
30
|
+
* Top "Save" calls /managePlano/updateLayoutTouchup which on the backend:
|
|
31
|
+
* - rejects any add/remove of walls / fixtures / entrances / otherElements
|
|
32
|
+
* - upserts geometry + fixture detail fields ONLY
|
|
33
|
+
* - never touches processedTask / planoTaskCompliance / planoCompliance
|
|
34
|
+
* - never flips floor status (verificationStatus, isPlanoApproved, etc.)
|
|
35
|
+
*
|
|
36
|
+
* Maintenance note: keep this file in approximate sync with
|
|
37
|
+
* manage-store-plano.component.ts for canvas-rendering bug fixes. The two are
|
|
38
|
+
* intentionally independent so the verification flow is never destabilized by
|
|
39
|
+
* touchup changes (and vice versa).
|
|
40
|
+
*/
|
|
41
|
+
export declare class TouchupEditorComponent implements AfterViewInit, OnDestroy, OnInit {
|
|
42
|
+
private apiService;
|
|
43
|
+
private route;
|
|
44
|
+
private fb;
|
|
45
|
+
private gs;
|
|
46
|
+
private titleCase;
|
|
47
|
+
private toastService;
|
|
48
|
+
private modalService;
|
|
49
|
+
private pageInfo;
|
|
50
|
+
private location;
|
|
51
|
+
private router;
|
|
52
|
+
private cd;
|
|
53
|
+
canvasRef: ElementRef<HTMLCanvasElement>;
|
|
54
|
+
containerRef: ElementRef<HTMLDivElement>;
|
|
55
|
+
noStoreVideoModalRef: TemplateRef<any>;
|
|
56
|
+
applyLogicsModalRef: TemplateRef<any>;
|
|
57
|
+
approveLayoutModalRef: TemplateRef<any>;
|
|
58
|
+
bodyAccordion?: NgbAccordionDirective;
|
|
59
|
+
onResize(): void;
|
|
60
|
+
destroy$: Subject<unknown>;
|
|
61
|
+
clientId: string;
|
|
62
|
+
canvas: fabric.Canvas;
|
|
63
|
+
zoomLevel: number;
|
|
64
|
+
wallThickness: number;
|
|
65
|
+
verticalMargin: number;
|
|
66
|
+
wallBindings: Map<fabric.Group, BoundFixtureGroup[]>;
|
|
67
|
+
layoutForm: FormGroup;
|
|
68
|
+
selectedFloorId: FormControl<string | null>;
|
|
69
|
+
floorsList: DropdownIF[][];
|
|
70
|
+
fixtureConfigSubscriptions: Subscription[];
|
|
71
|
+
fixtureTemplateIdSubscriptions: Subscription[];
|
|
72
|
+
otherElementsSubscriptions: Subscription[];
|
|
73
|
+
planoData: any;
|
|
74
|
+
floorData: any;
|
|
75
|
+
readonly originalFloorData: any;
|
|
76
|
+
cdnUrl: string;
|
|
77
|
+
fixtureTemplates: any[];
|
|
78
|
+
allFixtures: any[];
|
|
79
|
+
allFixtureInstances: any[];
|
|
80
|
+
storeFeedback: any;
|
|
81
|
+
zoneFeedback: any;
|
|
82
|
+
selectedZoneFeedback: any;
|
|
83
|
+
private isClComplianceRow;
|
|
84
|
+
get zonePendingCount(): number;
|
|
85
|
+
get zoneRedoCount(): number;
|
|
86
|
+
get zoneRedoStatus(): boolean;
|
|
87
|
+
get zoneTaskStyle(): {
|
|
88
|
+
name: string;
|
|
89
|
+
class: string;
|
|
90
|
+
};
|
|
91
|
+
get showTopPublish(): boolean;
|
|
92
|
+
get topPublishDisabled(): boolean;
|
|
93
|
+
readonly shouldRevertOnEdit: boolean;
|
|
94
|
+
readonly canMutateStructure: boolean;
|
|
95
|
+
isSyncingZoneResponse: boolean;
|
|
96
|
+
selectedFixture: any;
|
|
97
|
+
selectedFixtureData: any;
|
|
98
|
+
selectedFixtureFeedback: any;
|
|
99
|
+
editFixture: boolean;
|
|
100
|
+
editFixtureSection: "basic-details" | "products" | "vms";
|
|
101
|
+
activeFeedbackTab: "fixture" | "zone";
|
|
102
|
+
editFromTab: "fixture" | "zone";
|
|
103
|
+
submitFixture: boolean;
|
|
104
|
+
highlightedFixtureFormId: string | null;
|
|
105
|
+
storeMetrics: {
|
|
106
|
+
floorCount: number;
|
|
107
|
+
fixtureCount: number;
|
|
108
|
+
vmCount: number;
|
|
109
|
+
};
|
|
110
|
+
isPageLoading: boolean;
|
|
111
|
+
isRightPanelCollapsed: boolean;
|
|
112
|
+
isLeftPanelCollapsed: boolean;
|
|
113
|
+
selectedView: "tree" | "detail";
|
|
114
|
+
publishingState: "layout" | "layout-redo" | "fixture" | "fixture-redo" | "vm" | "vm-redo" | "complete" | "";
|
|
115
|
+
disabledPublish: boolean;
|
|
116
|
+
disableEdit: boolean;
|
|
117
|
+
isSavingLayout: boolean;
|
|
118
|
+
layoutHasUnsavedChanges: boolean;
|
|
119
|
+
taskInfo: any;
|
|
120
|
+
taskStyle: {
|
|
121
|
+
layout: {
|
|
122
|
+
name: string;
|
|
123
|
+
class: string;
|
|
124
|
+
};
|
|
125
|
+
fixture: {
|
|
126
|
+
name: string;
|
|
127
|
+
class: string;
|
|
128
|
+
};
|
|
129
|
+
vm: {
|
|
130
|
+
name: string;
|
|
131
|
+
class: string;
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
otherElementList: DropdownIF[];
|
|
135
|
+
storeList: any;
|
|
136
|
+
selectedStoreName: any;
|
|
137
|
+
private activeHighlight;
|
|
138
|
+
private cancelHighlightBlink;
|
|
139
|
+
isButtonLoading: boolean;
|
|
140
|
+
isStoreTourLoading: boolean;
|
|
141
|
+
layoutBounds: any;
|
|
142
|
+
showLayout: boolean;
|
|
143
|
+
clCount: number;
|
|
144
|
+
wallCount: number;
|
|
145
|
+
toggle: boolean;
|
|
146
|
+
constructor(apiService: StoreBuilderService, route: ActivatedRoute, fb: FormBuilder, gs: GlobalStateService, titleCase: TitleCasePipe, toastService: ToastService, modalService: NgbModal, pageInfo: PageInfoService, location: Location, router: Router, cd: ChangeDetectorRef);
|
|
147
|
+
ngOnInit(): void;
|
|
148
|
+
ngAfterViewInit(): void;
|
|
149
|
+
updateAllPositions(): Promise<void>;
|
|
150
|
+
applyGroupTransform(selection: fabric.ActiveSelection): void;
|
|
151
|
+
resizeCanvas(): void;
|
|
152
|
+
setupZoomHandlers(): void;
|
|
153
|
+
setPageData(): void;
|
|
154
|
+
onFixtureSave(): void;
|
|
155
|
+
onFixturePageCancel(): Promise<void>;
|
|
156
|
+
onFixtureSubmit(event: any): void;
|
|
157
|
+
togglePanel(side: "left" | "right", action?: boolean): void;
|
|
158
|
+
onFeedbackTabChange(tab: "fixture" | "zone"): void;
|
|
159
|
+
getZoneVerificationFeedback(planoId: string, floorId: string): Promise<unknown>;
|
|
160
|
+
selectZoneFeedback(fixtureId: string): void;
|
|
161
|
+
getStoreFeedback(planoId: string, floorId: string, filter: any, checkPublishState?: boolean): Promise<unknown>;
|
|
162
|
+
calculatePublishingState(): void;
|
|
163
|
+
getTemplate(fixtureConfigId: string): Promise<Object>;
|
|
164
|
+
processLayoutFeedback(storeFeedback: any[]): Promise<void>;
|
|
165
|
+
processFixtureFeedback(storeFeedback: any[]): void;
|
|
166
|
+
processVmFeedback(storeFeedback: any[]): void;
|
|
167
|
+
transferArrayItem<T = any>(currentArray: T[], targetArray: T[], currentIndex: number, targetIndex: number): void;
|
|
168
|
+
reorderFixture(floorData: any): void;
|
|
169
|
+
getElementValue(group: any): any;
|
|
170
|
+
private getWallByNumber;
|
|
171
|
+
roundToTwo(num: number): number;
|
|
172
|
+
getStoreFixtures(storeId: string, enable?: boolean): Promise<void>;
|
|
173
|
+
extractAllFixtures(floorData: any): void;
|
|
174
|
+
renderFloor(update?: boolean): Promise<void>;
|
|
175
|
+
drawInitialContent(): Promise<void>;
|
|
176
|
+
private getFullLayoutBounds;
|
|
177
|
+
private fitCanvasToLayoutAnimated;
|
|
178
|
+
drawLayoutElements(): Promise<true | undefined>;
|
|
179
|
+
private isPointInsidePolygon;
|
|
180
|
+
private getOccupiedRects;
|
|
181
|
+
private rectsOverlap;
|
|
182
|
+
private computeEmptyMargin;
|
|
183
|
+
drawFixtureRowLabel(text: string, x: number, y: number): void;
|
|
184
|
+
drawWall(canvas: fabric.Canvas, x: number, y: number, height: number, width: number, elementData: any): Promise<fabric.Group & {
|
|
185
|
+
objType: string;
|
|
186
|
+
data: any;
|
|
187
|
+
}>;
|
|
188
|
+
drawFixture(canvas: fabric.Canvas, x: number, y: number, height: number, width: number, fixtureData: any): Promise<(fabric.Group & {
|
|
189
|
+
wallIndex: number;
|
|
190
|
+
fixtureIndex: number;
|
|
191
|
+
fixtureId: string;
|
|
192
|
+
fixtureType: "wall" | "floor";
|
|
193
|
+
issue: boolean;
|
|
194
|
+
issueData: any;
|
|
195
|
+
taskType: string;
|
|
196
|
+
vmConfig: [];
|
|
197
|
+
objType: string;
|
|
198
|
+
}) | undefined>;
|
|
199
|
+
drawEntrance(canvas: fabric.Canvas, x: number, y: number, width: number, height: number, arrowWidth: number, elementData: any): void;
|
|
200
|
+
drawOtherElementsWithLabel(canvas: fabric.Canvas, x: number, y: number, a: number, width: number, height: number, element: any): fabric.Group;
|
|
201
|
+
drawBg(): void;
|
|
202
|
+
subscribeToFixtureConfigIdChanges(): void;
|
|
203
|
+
subscribeToOtherElementsChanges(): void;
|
|
204
|
+
updateCanvasOtherElementLabel(elementRef: any): void;
|
|
205
|
+
rotateCanvas(canvas: fabric.Canvas, angleDeg: number): void;
|
|
206
|
+
selectFixtureOnCanvasClick(target: any, collapseTaskInfo?: boolean): void;
|
|
207
|
+
selectFixtureFeedback(fixtureId: string, collapseTaskInfo?: boolean): void;
|
|
208
|
+
getFixtureTemplates(): Promise<void>;
|
|
209
|
+
createForm(): void;
|
|
210
|
+
get getFormWalls(): FormArray<any>;
|
|
211
|
+
get getFormFloorFixtures(): FormArray<any>;
|
|
212
|
+
get getFormFloorOtherElements(): FormArray<any>;
|
|
213
|
+
get getEntrances(): any;
|
|
214
|
+
get showFixturePreview(): boolean;
|
|
215
|
+
getWallOtherElements(wallIndex: number): FormArray<any>;
|
|
216
|
+
getFormFixtures(wallIndex: number): FormArray<any>;
|
|
217
|
+
patchWallElements({ elementType, elementNumber }: Record<string, any>): FormGroup<{
|
|
218
|
+
elementType: FormControl<any>;
|
|
219
|
+
elementNumber: FormControl<any>;
|
|
220
|
+
fixtures: FormArray<FormControl<unknown>>;
|
|
221
|
+
otherElements: FormArray<FormControl<unknown>>;
|
|
222
|
+
}>;
|
|
223
|
+
patchFixture({ fixtureName, fixtureConfigId, _id }: Record<string, any>): FormGroup<{
|
|
224
|
+
fixtureName: FormControl<any>;
|
|
225
|
+
fixtureConfigId: FormControl<any>;
|
|
226
|
+
_id: FormControl<any>;
|
|
227
|
+
}>;
|
|
228
|
+
addWallSpace(wallIndex: number, operation: "increment" | "decrement"): void;
|
|
229
|
+
deleteFixture(fixtureType: "wall" | "floor", fixtureIndex: number, wallIndex?: number): void;
|
|
230
|
+
private hasUnsavedLayoutChanges;
|
|
231
|
+
removeOtherElement(elementType: "wall" | "floor", elementIndex: number, wallIndex?: number): void;
|
|
232
|
+
changeFixtureTemplate(configId: string, fixtureType: "wall" | "floor", fixtureIndex: number, wallIndex?: number): void;
|
|
233
|
+
onDrop(event: any, destinationWallIndex: number | "floor", destinationFixtureIndex?: number): void;
|
|
234
|
+
downloadCanvas(): void;
|
|
235
|
+
private createExportLayoutBackground;
|
|
236
|
+
private buildLayoutPolygonFromWalls;
|
|
237
|
+
handleFeedbackAction(userAction: any): Promise<void>;
|
|
238
|
+
private mergeAiFixtureData;
|
|
239
|
+
private replaceFixtureInFloorData;
|
|
240
|
+
private buildLocalActionComment;
|
|
241
|
+
private mergeZoneFixtureData;
|
|
242
|
+
handleZoneFeedbackAction(userAction: any): Promise<void>;
|
|
243
|
+
private buildZoneModifiedAnswer;
|
|
244
|
+
private persistZoneEditAccepted;
|
|
245
|
+
rotateWall(eleNumber: number): void;
|
|
246
|
+
addNewWall(eleNumber: number): void;
|
|
247
|
+
addNewEntrance(): void;
|
|
248
|
+
private isAddingFixture;
|
|
249
|
+
addNewFixture(fixtureType: "wall" | "floor", wallIndex?: number): Promise<void>;
|
|
250
|
+
private addNewFixtureInternal;
|
|
251
|
+
addNewOtherElements(posType: "wall" | "floor", wallIndex?: number): void;
|
|
252
|
+
findEmptyCenterSpot(objectWidthPx: number, objectHeightPx: number, tempOccupied?: {
|
|
253
|
+
x: number;
|
|
254
|
+
y: number;
|
|
255
|
+
width: number;
|
|
256
|
+
height: number;
|
|
257
|
+
}[]): {
|
|
258
|
+
x: number;
|
|
259
|
+
y: number;
|
|
260
|
+
} | null;
|
|
261
|
+
cancelEdit(): Promise<void>;
|
|
262
|
+
listenToDeleteKey(): void;
|
|
263
|
+
deleteEntrance(): void;
|
|
264
|
+
deleteWall(eleNumber: number): Promise<void>;
|
|
265
|
+
updateWallElementNumber(): void;
|
|
266
|
+
toPixels(value: number, unit: string, dpi?: number): number;
|
|
267
|
+
fromPixels(pixels: number, unit: string, dpi?: number): number;
|
|
268
|
+
confirmEdit(): Promise<boolean>;
|
|
269
|
+
confirmDeleteWall(): Promise<boolean>;
|
|
270
|
+
updateFixtureCoordinates(fixtures?: any): void;
|
|
271
|
+
updateOtherElementsCoordinates(): void;
|
|
272
|
+
updateWallCoordinates(): void;
|
|
273
|
+
updateEntranceCoordinates(): void;
|
|
274
|
+
/**
|
|
275
|
+
* Touchup save — calls /managePlano/updateLayoutTouchup which never wipes
|
|
276
|
+
* task rows or flips floor status. Shows a touchup-specific confirm dialog
|
|
277
|
+
* (the original verification flow's confirmEdit warns about resetting
|
|
278
|
+
* progress — not applicable here).
|
|
279
|
+
*
|
|
280
|
+
* editMode arg is kept for template parity with manage-store-plano's Save
|
|
281
|
+
* button, but is ignored — every touchup save behaves the same way.
|
|
282
|
+
*/
|
|
283
|
+
updateLayout(_editMode?: boolean): Promise<void>;
|
|
284
|
+
/**
|
|
285
|
+
* Layout Touchup — Sync zone response.
|
|
286
|
+
*
|
|
287
|
+
* For each zone-verification compliance row on this floor, rewrites
|
|
288
|
+
* `answers[0].shelfConfig` to match the fixture's current shelves: shelf
|
|
289
|
+
* count + per-shelf zone come from the fixture, user-submitted
|
|
290
|
+
* productBrandName / productCategory are preserved (zone-normalized for
|
|
291
|
+
* newly added shelves). See /managePlano/syncZoneResponseFromFixtures on
|
|
292
|
+
* the BE.
|
|
293
|
+
*
|
|
294
|
+
* Only available in non-edit mode (gated in template via *ngIf="!layoutForm.enabled").
|
|
295
|
+
*/
|
|
296
|
+
syncZoneResponse(): Promise<void>;
|
|
297
|
+
assignTask(): Promise<void>;
|
|
298
|
+
revokeZoneTask(): void;
|
|
299
|
+
publishZoneVerification(): Promise<void>;
|
|
300
|
+
publishZoneRedo(): Promise<void>;
|
|
301
|
+
onClickEdit(): void;
|
|
302
|
+
taskDetails(planoId: any, floorId: any): Promise<unknown>;
|
|
303
|
+
getStatus(type: any): {
|
|
304
|
+
name: string;
|
|
305
|
+
class: string;
|
|
306
|
+
};
|
|
307
|
+
getElementNumber(group: any): number | null;
|
|
308
|
+
highlightFixture(group: any, blink?: boolean): void;
|
|
309
|
+
removeHighlight(): void;
|
|
310
|
+
keepHighlightOnTop: () => void;
|
|
311
|
+
highlightFixtureInAccordion(fixtureData: any): void;
|
|
312
|
+
onChangeFixtureOnFeedbackPanel({ currentFixture, action, }: {
|
|
313
|
+
currentFixture?: string;
|
|
314
|
+
action?: "next" | "previous";
|
|
315
|
+
}, collapseTaskInfo?: boolean): void;
|
|
316
|
+
revokeTask(): void;
|
|
317
|
+
publish(): void;
|
|
318
|
+
goToStoreTourPage(): Promise<void>;
|
|
319
|
+
openNoVideoFoundModal(): Promise<void>;
|
|
320
|
+
goToStoreCameraPage(): void;
|
|
321
|
+
getStoreList(planoId?: string): void;
|
|
322
|
+
onSelected(event: any): Promise<void>;
|
|
323
|
+
applyPIDLogics(): Promise<void>;
|
|
324
|
+
onClickApplyLogics(): Promise<void>;
|
|
325
|
+
onClickApproveLayout(): Promise<void>;
|
|
326
|
+
approveLayout(): Promise<void>;
|
|
327
|
+
ngOnDestroy(): void;
|
|
328
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TouchupEditorComponent, never>;
|
|
329
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TouchupEditorComponent, "lib-touchup-editor", never, {}, {}, never, never, false, never>;
|
|
330
|
+
}
|
|
331
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class ToolPageHeaderComponent {
|
|
3
|
+
title: string;
|
|
4
|
+
description: string;
|
|
5
|
+
backLink: string;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ToolPageHeaderComponent, never>;
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ToolPageHeaderComponent, "lib-tool-page-header", never, { "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; "backLink": { "alias": "backLink"; "required": false; }; }, {}, never, never, false, never>;
|
|
8
|
+
}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { OnInit } from "@angular/core";
|
|
2
2
|
import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
|
|
3
|
-
import { GlobalStateService } from "tango-app-ui-global";
|
|
3
|
+
import { GlobalStateService, PageInfoService } from "tango-app-ui-global";
|
|
4
4
|
import { Router } from "@angular/router";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class ToolsParentComponent implements OnInit {
|
|
7
7
|
private ngbModal;
|
|
8
8
|
private router;
|
|
9
9
|
private gs;
|
|
10
|
+
private pageInfo;
|
|
10
11
|
clientId: string;
|
|
11
12
|
private readonly destroy$;
|
|
12
|
-
constructor(ngbModal: NgbModal, router: Router, gs: GlobalStateService);
|
|
13
|
+
constructor(ngbModal: NgbModal, router: Router, gs: GlobalStateService, pageInfo: PageInfoService);
|
|
13
14
|
ngOnInit(): void;
|
|
15
|
+
setPageData(): void;
|
|
14
16
|
onClickCreateFixtureTemplate(): void;
|
|
15
17
|
ngOnDestroy(): void;
|
|
16
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<ToolsParentComponent, never>;
|
|
@@ -122,6 +122,7 @@ export declare class StorePlanoComponent implements OnInit, AfterViewInit, OnDes
|
|
|
122
122
|
private isFutureTaskDate;
|
|
123
123
|
openSetCurrentModal(revisionIndex: number): void;
|
|
124
124
|
private doOpenSetCurrentModal;
|
|
125
|
+
toggleStagingFlag(revisionIndex: number): void;
|
|
125
126
|
openEditNameModal(revisionIndex: number): void;
|
|
126
127
|
static ɵfac: i0.ɵɵFactoryDeclaration<StorePlanoComponent, never>;
|
|
127
128
|
static ɵcmp: i0.ɵɵComponentDeclaration<StorePlanoComponent, "app-store-plano", never, {}, {}, never, never, false, never>;
|
|
@@ -79,6 +79,16 @@ export declare class StoreBuilderService implements OnDestroy {
|
|
|
79
79
|
updateApprovalStatus(data: any): import("rxjs").Observable<Object>;
|
|
80
80
|
getStoreFixturesfeedback(data: any): import("rxjs").Observable<Object>;
|
|
81
81
|
updateStorePlano(data: any): import("rxjs").Observable<Object>;
|
|
82
|
+
updateLayoutTouchup(data: {
|
|
83
|
+
planoId: string;
|
|
84
|
+
floorId: string;
|
|
85
|
+
data: any;
|
|
86
|
+
}): import("rxjs").Observable<Object>;
|
|
87
|
+
getStoresForTouchup(): import("rxjs").Observable<Object>;
|
|
88
|
+
syncZoneResponseFromFixtures(data: {
|
|
89
|
+
planoId: string;
|
|
90
|
+
floorId: string;
|
|
91
|
+
}): import("rxjs").Observable<Object>;
|
|
82
92
|
getStoreFeedback(data: any): import("rxjs").Observable<Object>;
|
|
83
93
|
getRolloutFeedback(data: any): import("rxjs").Observable<Object>;
|
|
84
94
|
getZoneVerificationFeedback(data: any): import("rxjs").Observable<Object>;
|
|
@@ -229,7 +239,10 @@ export declare class StoreBuilderService implements OnDestroy {
|
|
|
229
239
|
fixtureNumber?: number;
|
|
230
240
|
associatedElementFixtureNumber?: number;
|
|
231
241
|
}): import("rxjs").Observable<Object>;
|
|
232
|
-
deleteTaskForStores(data:
|
|
242
|
+
deleteTaskForStores(data: {
|
|
243
|
+
storeNames: string[];
|
|
244
|
+
taskType: "fixture" | "zoneVerification";
|
|
245
|
+
}): import("rxjs").Observable<Object>;
|
|
233
246
|
getFloorsWithStatus(storeName: string, clientId: string): import("rxjs").Observable<Object>;
|
|
234
247
|
moveStoreBucket(data: {
|
|
235
248
|
floorId: string;
|