tango-app-ui-store-builder 1.2.4 → 1.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/esm2022/lib/components/collection-update-ai/collection-update-ai.component.mjs +3 -2
  2. package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.mjs +3 -2
  3. package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.mjs +3 -2
  4. package/esm2022/lib/components/create-fixture/create-fixture.component.mjs +41 -4
  5. package/esm2022/lib/components/custom-select/custom-select.component.mjs +14 -5
  6. package/esm2022/lib/components/fixture-template/template-assign-stores/preview-modal/preview-modal.component.mjs +3 -2
  7. package/esm2022/lib/components/fixture-template/template-assign-stores/template-assign-stores.component.mjs +3 -2
  8. package/esm2022/lib/components/fixture-template-table/find-and-replace/find-and-replace.component.mjs +3 -2
  9. package/esm2022/lib/components/fixture-template-table/fixture-template-table.component.mjs +2 -3
  10. package/esm2022/lib/components/fixture-template-tree/fixture-template-tree.component.mjs +3 -2
  11. package/esm2022/lib/components/manage-plano/verification-table/verification-table.component.mjs +2 -3
  12. package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +87 -13
  13. package/esm2022/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.mjs +4 -3
  14. package/esm2022/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.mjs +114 -4
  15. package/esm2022/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.mjs +7 -2
  16. package/esm2022/lib/components/onboard-store-plano/onboard-fixture/onboard-fixture.component.mjs +3 -3
  17. package/esm2022/lib/components/onboard-store-plano/onboard-store-plano.component.mjs +255 -25
  18. package/esm2022/lib/components/plano-configurations/plano-configurations.component.mjs +162 -3
  19. package/esm2022/lib/components/plano-library/fixture-library/fixture-library.component.mjs +3 -4
  20. package/esm2022/lib/components/plano-library/vm-library/vm-library.component.mjs +3 -4
  21. package/esm2022/lib/components/plano-tools/cad-files/cad-files.component.mjs +88 -0
  22. package/esm2022/lib/components/plano-tools/cad-render/cad-render.component.mjs +4 -5
  23. package/esm2022/lib/components/plano-tools/move-bucket/move-bucket.component.mjs +239 -0
  24. package/esm2022/lib/components/plano-tools/plano-data-export/plano-data-export.component.mjs +98 -3
  25. package/esm2022/lib/components/plano-tools/plano-migrate/plano-migrate.component.mjs +5 -4
  26. package/esm2022/lib/components/plano-tools/store-exports/store-exports.component.mjs +135 -33
  27. package/esm2022/lib/components/plano-tools/swap-template/swap-template.component.mjs +325 -0
  28. package/esm2022/lib/components/plano-tools/tools-parent/tools-parent.component.mjs +3 -3
  29. package/esm2022/lib/components/planogram/merch-compliance/merch-compliance.component.mjs +3 -2
  30. package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-locator.component.mjs +3 -2
  31. package/esm2022/lib/components/planogram/plano-analytics/plano-analytics.component.mjs +3 -2
  32. package/esm2022/lib/components/planogram/plano-details-parent/plano-details-parent.component.mjs +1 -1
  33. package/esm2022/lib/components/planogram/plano-overview/plano-comparison/plano-comparison.component.mjs +3 -2
  34. package/esm2022/lib/components/planogram/plano-overview/plano-overview.component.mjs +3 -2
  35. package/esm2022/lib/components/planogram/plano-table/plano-table.component.mjs +2 -3
  36. package/esm2022/lib/components/popups/delete-confirmation/delete-confirmation.component.mjs +10 -3
  37. package/esm2022/lib/components/store-plano/store-plano-tree-view/store-plano-tree-view.component.mjs +3 -4
  38. package/esm2022/lib/components/store-plano/store-plano.component.mjs +4 -3
  39. package/esm2022/lib/data/fixture-template.data.mjs +12 -1
  40. package/esm2022/lib/functions/plano.function.mjs +13 -1
  41. package/esm2022/lib/services/store-builder.service.mjs +35 -1
  42. package/esm2022/lib/tango-store-builder-routing.module.mjs +16 -1
  43. package/esm2022/lib/tango-store-builder.module.mjs +10 -1
  44. package/fesm2022/tango-app-ui-store-builder.mjs +1914 -401
  45. package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
  46. package/lib/components/create-fixture/create-fixture.component.d.ts +3 -0
  47. package/lib/components/custom-select/custom-select.component.d.ts +5 -2
  48. package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +4 -4
  49. package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +5 -5
  50. package/lib/components/manage-store-plano/manage-store-plano.component.d.ts +7 -1
  51. package/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.d.ts +14 -1
  52. package/lib/components/onboard-store-plano/onboard-store-plano.component.d.ts +19 -2
  53. package/lib/components/plano-configurations/plano-configurations.component.d.ts +19 -1
  54. package/lib/components/plano-tools/cad-files/cad-files.component.d.ts +30 -0
  55. package/lib/components/plano-tools/move-bucket/move-bucket.component.d.ts +64 -0
  56. package/lib/components/plano-tools/plano-data-export/plano-data-export.component.d.ts +26 -0
  57. package/lib/components/plano-tools/store-exports/store-exports.component.d.ts +28 -3
  58. package/lib/components/plano-tools/swap-template/swap-template.component.d.ts +83 -0
  59. package/lib/components/popups/delete-confirmation/delete-confirmation.component.d.ts +3 -1
  60. package/lib/data/fixture-template.data.d.ts +8 -0
  61. package/lib/functions/plano.function.d.ts +1 -0
  62. package/lib/services/store-builder.service.d.ts +26 -0
  63. package/lib/tango-store-builder.module.d.ts +56 -53
  64. package/package.json +1 -1
@@ -29,6 +29,8 @@ export declare class CreateFixtureComponent implements OnInit, OnDestroy, CanExi
29
29
  isBodyEnabled: boolean;
30
30
  canGoBack: boolean;
31
31
  readonly shelfTypes: DropdownIF[];
32
+ readonly wallZones: DropdownIF[];
33
+ readonly floorZones: DropdownIF[];
32
34
  private readonly destroy$;
33
35
  constructor(route: ActivatedRoute, fb: FormBuilder, storeBuilderService: StoreBuilderService, toast: ToastService, router: Router, ngbModal: NgbModal, pageInfo: PageInfoService, gs: GlobalStateService);
34
36
  ngOnInit(): void;
@@ -51,6 +53,7 @@ export declare class CreateFixtureComponent implements OnInit, OnDestroy, CanExi
51
53
  setupShelfTypeListener(shelfGroup: FormGroup): void;
52
54
  removeShelf(index?: number): void;
53
55
  addPanel(panel?: FixtureLibraryShelfConfig): void;
56
+ autoAssignWallZones(): void;
54
57
  removePanel(index?: number): void;
55
58
  toggleSection(section: "header" | "body" | "footer"): void;
56
59
  toggleSectionForm(section: "header" | "body" | "footer"): void;
@@ -1,9 +1,10 @@
1
- import { ChangeDetectorRef, EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
1
+ import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
2
2
  import { StoreBuilderService } from '../../services/store-builder.service';
3
3
  import * as i0 from "@angular/core";
4
- export declare class CustomSelectComponent implements OnChanges, OnInit {
4
+ export declare class CustomSelectComponent implements OnChanges, OnInit, OnDestroy {
5
5
  private cd;
6
6
  private authService;
7
+ private readonly destroy$;
7
8
  onClick(event: MouseEvent): void;
8
9
  items: any;
9
10
  searchField: string;
@@ -18,8 +19,10 @@ export declare class CustomSelectComponent implements OnChanges, OnInit {
18
19
  showDropdown: boolean;
19
20
  searchValue: string;
20
21
  instanceId: any;
22
+ trackByItem: (_: number, item: any) => any;
21
23
  constructor(cd: ChangeDetectorRef, authService: StoreBuilderService);
22
24
  ngOnInit(): void;
25
+ ngOnDestroy(): void;
23
26
  ngOnChanges(changes: SimpleChanges): void;
24
27
  initializeItems(): void;
25
28
  updateSelectedValues(): void;
@@ -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): "yetToAssign" | "taskAssigned" | "completed" | "reviewPending" | undefined;
58
- getTaskTooltip(data: any, type: string): "Yet to Assign" | "Task Assigned" | "Review Pending" | "Completed" | undefined;
57
+ getTaskStatus(data: any, type: string): "completed" | "yetToAssign" | "reviewPending" | "taskAssigned" | undefined;
58
+ getTaskTooltip(data: any, type: string): "Review Pending" | "Yet to Assign" | "Task Assigned" | "Completed" | undefined;
59
59
  showBreach(data: any, type: string): boolean;
60
60
  updateQueryParams(): void;
61
61
  ngOnDestroy(): void;
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;
62
+ getStatus(data: any): "Review Pending" | "Yet to Assign" | "Task Assigned" | "Ready to Publish" | "Published" | undefined;
63
+ getStatusBadge(data: any): "yetToAssign" | "reviewPending" | "taskAssigned" | "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): "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";
57
+ getTaskStatus(data: any, type: string): "completed" | "yetToAssign" | "reviewPending" | "taskAssigned" | undefined;
58
+ getTaskTooltip(data: any, type: string): "Review Pending" | "Yet to Assign" | "Task Assigned" | "Task Scheduled" | "Completed" | undefined;
59
+ getZoneStatus(data: any): "completed" | "yetToAssign" | "reviewPending" | "taskAssigned" | "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): "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;
63
+ getStatus(data: any): "Review Pending" | "Yet to Assign" | "Task Assigned" | "Ready to Publish" | "Published" | "Task Scheduled" | "Completed" | undefined;
64
+ getStatusBadge(data: any): "completed" | "yetToAssign" | "reviewPending" | "taskAssigned" | "primaryBadgeStyle" | "bg-success" | undefined;
65
65
  getSubmit(data: any): boolean;
66
66
  updateQueryParams(): void;
67
67
  ngOnDestroy(): void;
@@ -3,7 +3,7 @@ import { Location, TitleCasePipe } from "@angular/common";
3
3
  import { FormArray, FormBuilder, FormControl, FormGroup } from "@angular/forms";
4
4
  import { ActivatedRoute, Router } from "@angular/router";
5
5
  import { Subject, Subscription } from "rxjs";
6
- import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
6
+ import { NgbAccordionDirective, NgbModal } from "@ng-bootstrap/ng-bootstrap";
7
7
  import * as fabric from "fabric";
8
8
  import { GlobalStateService, PageInfoService } from "tango-app-ui-global";
9
9
  import { ToastService } from "tango-app-ui-shared";
@@ -34,6 +34,7 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
34
34
  noStoreVideoModalRef: TemplateRef<any>;
35
35
  applyLogicsModalRef: TemplateRef<any>;
36
36
  approveLayoutModalRef: TemplateRef<any>;
37
+ bodyAccordion?: NgbAccordionDirective;
37
38
  onResize(): void;
38
39
  destroy$: Subject<unknown>;
39
40
  clientId: string;
@@ -58,6 +59,7 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
58
59
  storeFeedback: any;
59
60
  zoneFeedback: any;
60
61
  selectedZoneFeedback: any;
62
+ private isClComplianceAnswer;
61
63
  get zonePendingCount(): number;
62
64
  get zoneRedoCount(): number;
63
65
  get zoneRedoStatus(): boolean;
@@ -76,6 +78,7 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
76
78
  activeFeedbackTab: "fixture" | "zone";
77
79
  editFromTab: "fixture" | "zone";
78
80
  submitFixture: boolean;
81
+ highlightedFixtureFormId: string | null;
79
82
  storeMetrics: {
80
83
  floorCount: number;
81
84
  fixtureCount: number;
@@ -89,6 +92,7 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
89
92
  disabledPublish: boolean;
90
93
  disableEdit: boolean;
91
94
  isSavingLayout: boolean;
95
+ layoutHasUnsavedChanges: boolean;
92
96
  taskInfo: any;
93
97
  taskStyle: {
94
98
  layout: {
@@ -200,6 +204,7 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
200
204
  }>;
201
205
  addWallSpace(wallIndex: number, operation: "increment" | "decrement"): void;
202
206
  deleteFixture(fixtureType: "wall" | "floor", fixtureIndex: number, wallIndex?: number): void;
207
+ private hasUnsavedLayoutChanges;
203
208
  removeOtherElement(elementType: "wall" | "floor", elementIndex: number, wallIndex?: number): void;
204
209
  changeFixtureTemplate(configId: string, fixtureType: "wall" | "floor", fixtureIndex: number, wallIndex?: number): void;
205
210
  onDrop(event: any, destinationWallIndex: number | "floor", destinationFixtureIndex?: number): void;
@@ -256,6 +261,7 @@ export declare class ManageStorePlanoComponent implements AfterViewInit, OnDestr
256
261
  highlightFixture(group: any, blink?: boolean): void;
257
262
  removeHighlight(): void;
258
263
  keepHighlightOnTop: () => void;
264
+ highlightFixtureInAccordion(fixtureData: any): void;
259
265
  onChangeFixtureOnFeedbackPanel({ currentFixture, action, }: {
260
266
  currentFixture?: string;
261
267
  action?: "next" | "previous";
@@ -18,11 +18,24 @@ export declare class InstanceBasicDetailsComponent implements OnChanges, OnDestr
18
18
  isSubmitted: boolean;
19
19
  revertOnEdit: boolean;
20
20
  zoneEditMode: boolean;
21
+ libraryCategories: string[];
22
+ libraryByCategory: Map<string, Set<number>>;
23
+ allowCategoryAndWidthEdit: boolean;
21
24
  submitEvent: EventEmitter<boolean>;
22
25
  initialState: any;
23
26
  readonly shelfTypes: DropdownIF[];
27
+ categoryOptions: DropdownIF[];
28
+ widthOptions: DropdownIF[];
29
+ originalCategory: string | null;
30
+ originalWidth: number | null;
31
+ showOriginalCategoryOption: boolean;
32
+ showOriginalWidthOption: boolean;
33
+ originalWidthLabel: string;
24
34
  constructor(fb: FormBuilder, toast: ToastService, storeBuilderService: StoreBuilderService);
25
35
  ngOnChanges(changes: SimpleChanges): void;
36
+ private updateOriginalOptionVisibility;
37
+ private recomputeCategoryOptions;
38
+ private recomputeWidthOptions;
26
39
  initializeForm(): void;
27
40
  addShelf(shelf?: any): void;
28
41
  setupShelfTypeListener(shelfGroup: FormGroup): void;
@@ -36,5 +49,5 @@ export declare class InstanceBasicDetailsComponent implements OnChanges, OnDestr
36
49
  getFixtureLibrary(): string;
37
50
  ngOnDestroy(): void;
38
51
  static ɵfac: i0.ɵɵFactoryDeclaration<InstanceBasicDetailsComponent, never>;
39
- static ɵcmp: i0.ɵɵComponentDeclaration<InstanceBasicDetailsComponent, "lib-instance-basic-details", never, { "fixtureData": { "alias": "fixtureData"; "required": false; }; "editMode": { "alias": "editMode"; "required": false; }; "isSubmitted": { "alias": "isSubmitted"; "required": false; }; "revertOnEdit": { "alias": "revertOnEdit"; "required": false; }; "zoneEditMode": { "alias": "zoneEditMode"; "required": false; }; }, { "submitEvent": "submitEvent"; }, never, never, true, never>;
52
+ static ɵcmp: i0.ɵɵComponentDeclaration<InstanceBasicDetailsComponent, "lib-instance-basic-details", never, { "fixtureData": { "alias": "fixtureData"; "required": false; }; "editMode": { "alias": "editMode"; "required": false; }; "isSubmitted": { "alias": "isSubmitted"; "required": false; }; "revertOnEdit": { "alias": "revertOnEdit"; "required": false; }; "zoneEditMode": { "alias": "zoneEditMode"; "required": false; }; "libraryCategories": { "alias": "libraryCategories"; "required": false; }; "libraryByCategory": { "alias": "libraryByCategory"; "required": false; }; "allowCategoryAndWidthEdit": { "alias": "allowCategoryAndWidthEdit"; "required": false; }; }, { "submitEvent": "submitEvent"; }, never, never, true, never>;
40
53
  }
@@ -3,7 +3,7 @@ import { Location, TitleCasePipe } from "@angular/common";
3
3
  import { FormArray, FormBuilder, FormControl, FormGroup } from "@angular/forms";
4
4
  import { ActivatedRoute, Router } from "@angular/router";
5
5
  import { Subject, Subscription } from "rxjs";
6
- import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
6
+ import { NgbAccordionDirective, NgbModal } from "@ng-bootstrap/ng-bootstrap";
7
7
  import * as fabric from "fabric";
8
8
  import { GlobalStateService, PageInfoService } from "tango-app-ui-global";
9
9
  import { ToastService } from "tango-app-ui-shared";
@@ -28,6 +28,7 @@ export declare class OnboardStorePlanoComponent implements AfterViewInit, OnDest
28
28
  approveLayoutModalRef: TemplateRef<any>;
29
29
  revertAllocationModalRef: TemplateRef<any>;
30
30
  completeAllocationModalRef: TemplateRef<any>;
31
+ bodyAccordion?: NgbAccordionDirective;
31
32
  onResize(): void;
32
33
  destroy$: Subject<unknown>;
33
34
  clientId: string;
@@ -62,6 +63,7 @@ export declare class OnboardStorePlanoComponent implements AfterViewInit, OnDest
62
63
  editFixture: boolean;
63
64
  editFixtureSection: "basic-details" | "products" | "vms";
64
65
  submitFixture: boolean;
66
+ highlightedFixtureFormId: string | null;
65
67
  layoutMetrics: {
66
68
  allStore: number;
67
69
  allocationPending: number;
@@ -83,6 +85,10 @@ export declare class OnboardStorePlanoComponent implements AfterViewInit, OnDest
83
85
  layoutBounds: any;
84
86
  isRunAllocationAllowed: boolean;
85
87
  ivmAliasKeys: Set<string>;
88
+ fixtureLibraryByWidth: Map<number, Set<string>>;
89
+ libraryCategories: string[];
90
+ libraryByCategory: Map<string, Set<number>>;
91
+ layoutHasUnsavedChanges: boolean;
86
92
  restrictedUsers: string[];
87
93
  constructor(apiService: StoreBuilderService, route: ActivatedRoute, fb: FormBuilder, gs: GlobalStateService, titleCase: TitleCasePipe, toastService: ToastService, modalService: NgbModal, pageInfo: PageInfoService, location: Location, router: Router, cd: ChangeDetectorRef);
88
94
  ngOnInit(): void;
@@ -106,9 +112,18 @@ export declare class OnboardStorePlanoComponent implements AfterViewInit, OnDest
106
112
  extractAllFixtures(floorData: any): void;
107
113
  get allFixtureInstances(): any[];
108
114
  fetchIvmAlias(): Promise<void>;
109
- validateFixtureHeaders(): void;
115
+ fetchFixtureLibraryKeys(): Promise<void>;
116
+ private normalizeForMatch;
117
+ private damerauLevenshteinDistance;
118
+ private similarityRatio;
119
+ private isLibraryMatch;
120
+ validateFixtures(): void;
110
121
  get hasInvalidHeaderFixtures(): boolean;
111
122
  get invalidHeaderFixtureCount(): number;
123
+ get hasInvalidLibraryFixtures(): boolean;
124
+ get invalidLibraryFixtureCount(): number;
125
+ get hasInvalidFixtures(): boolean;
126
+ get invalidFixturesTooltip(): string;
112
127
  get isEditLayoutAllowed(): boolean;
113
128
  renderFloor(update?: boolean): Promise<void>;
114
129
  drawInitialContent(): Promise<void>;
@@ -200,6 +215,7 @@ export declare class OnboardStorePlanoComponent implements AfterViewInit, OnDest
200
215
  updateEntranceCoordinates(): void;
201
216
  updateLayout(editMode?: boolean): Promise<void>;
202
217
  onClickEdit(): void;
218
+ private hasUnsavedLayoutChanges;
203
219
  get getProgressValue(): 0 | 25;
204
220
  get getStatusText(): "Draft" | "Allocation pending";
205
221
  get getStatus(): any;
@@ -207,6 +223,7 @@ export declare class OnboardStorePlanoComponent implements AfterViewInit, OnDest
207
223
  highlightFixture(group: any, blink?: boolean): void;
208
224
  removeHighlight(): void;
209
225
  keepHighlightOnTop: () => void;
226
+ highlightFixtureInAccordion(fixtureData: any): void;
210
227
  onClickApproveLayout(): Promise<void>;
211
228
  onClickRunAllocation(): Promise<void>;
212
229
  onClickRevertAllocation(): Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import { ChangeDetectorRef, ElementRef, OnInit } from "@angular/core";
2
- import { FormArray, FormBuilder, FormGroup } from "@angular/forms";
2
+ import { AbstractControl, FormArray, FormBuilder, FormGroup } from "@angular/forms";
3
3
  import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
4
4
  import { GlobalStateService, PageInfoService } from "tango-app-ui-global";
5
5
  import { ToastService } from "tango-app-ui-shared";
@@ -17,6 +17,7 @@ export declare class PlanoConfigurationsComponent implements OnInit {
17
17
  private cd;
18
18
  private pageInfo;
19
19
  formRef: ElementRef;
20
+ brandMetaRef: ElementRef;
20
21
  selectedTab: string;
21
22
  form: FormGroup;
22
23
  clientId: string;
@@ -24,6 +25,10 @@ export declare class PlanoConfigurationsComponent implements OnInit {
24
25
  loading: boolean;
25
26
  isEdit: boolean;
26
27
  taskForm: FormGroup;
28
+ brandMetaForm: FormGroup;
29
+ brandMetaList: any[];
30
+ isBrandMetaEdit: boolean;
31
+ brandMetaSearch: string;
27
32
  constructor(fb: FormBuilder, dataService: PlanoDataService, gs: GlobalStateService, builderService: StoreBuilderService, toast: ToastService, modelService: NgbModal, cd: ChangeDetectorRef, pageInfo: PageInfoService);
28
33
  ngOnInit(): Promise<void>;
29
34
  setPageData(): void;
@@ -45,6 +50,19 @@ export declare class PlanoConfigurationsComponent implements OnInit {
45
50
  updateTask(): void;
46
51
  bulkUpload(): void;
47
52
  formEnable(): void;
53
+ get brandMetaData(): FormArray;
54
+ loadBrandMetaData(): void;
55
+ buildBrandMetaForm(rows: any[]): void;
56
+ addBrandMetaRow(): void;
57
+ removeBrandMetaRow(index: number): void;
58
+ enableBrandMetaForm(): void;
59
+ cancelBrandMetaEdit(): void;
60
+ updateBrandMetaData(): void;
61
+ private readonly BRAND_META_FIELD_LABELS;
62
+ private focusFirstInvalidBrandMetaField;
63
+ private scrollAndFlashBrandMetaField;
64
+ matchesBrandMetaSearch(group: AbstractControl): boolean;
65
+ get filteredBrandMetaCount(): number;
48
66
  static ɵfac: i0.ɵɵFactoryDeclaration<PlanoConfigurationsComponent, never>;
49
67
  static ɵcmp: i0.ɵɵComponentDeclaration<PlanoConfigurationsComponent, "lib-plano-configurations", never, {}, {}, never, never, false, never>;
50
68
  }
@@ -0,0 +1,30 @@
1
+ import { OnDestroy } from '@angular/core';
2
+ import { StoreBuilderService } from '../../../services/store-builder.service';
3
+ import * as i0 from "@angular/core";
4
+ interface CadFile {
5
+ name: string;
6
+ key: string;
7
+ uploadedAt: string;
8
+ size: number;
9
+ url: string;
10
+ }
11
+ export declare class CadFilesComponent implements OnDestroy {
12
+ private sbs;
13
+ storeName: string;
14
+ files: CadFile[];
15
+ hasSearched: boolean;
16
+ isLoading: boolean;
17
+ downloadingKey: string | null;
18
+ message: string;
19
+ messageType: 'success' | 'error';
20
+ private readonly destroy$;
21
+ constructor(sbs: StoreBuilderService);
22
+ onFetch(): void;
23
+ onDownload(file: CadFile): Promise<void>;
24
+ formatSize(bytes: number): string;
25
+ showMessage(msg: string, type: 'success' | 'error'): void;
26
+ ngOnDestroy(): void;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<CadFilesComponent, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<CadFilesComponent, "lib-cad-files", never, {}, {}, never, never, false, never>;
29
+ }
30
+ export {};
@@ -0,0 +1,64 @@
1
+ import { OnDestroy, OnInit } from "@angular/core";
2
+ import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
3
+ import { GlobalStateService } from "tango-app-ui-global";
4
+ import { StoreBuilderService } from "../../../services/store-builder.service";
5
+ import * as i0 from "@angular/core";
6
+ interface StoreOption {
7
+ id: string;
8
+ label: string;
9
+ }
10
+ interface FloorOption {
11
+ _id: string;
12
+ floorNumber: number;
13
+ floorName: string;
14
+ status: BucketStatus;
15
+ isPlanoApproved?: boolean;
16
+ displayName: string;
17
+ }
18
+ type BucketStatus = "draft" | "allocationPending" | "completed";
19
+ interface StatusOption {
20
+ value: BucketStatus;
21
+ label: string;
22
+ bucket: string;
23
+ }
24
+ export declare class MoveBucketComponent implements OnInit, OnDestroy {
25
+ private sbs;
26
+ private gs;
27
+ private modalService;
28
+ clientId: string;
29
+ storeOptions: StoreOption[];
30
+ selectedStoreId: string | null;
31
+ selectedStoreLabel: string | null;
32
+ floors: FloorOption[];
33
+ selectedFloorId: string | null;
34
+ isLoadingFloors: boolean;
35
+ statusOptions: StatusOption[];
36
+ targetStatus: BucketStatus | null;
37
+ currentStatus: BucketStatus | null;
38
+ clearLayoutTasks: boolean;
39
+ clearFixtureTasks: boolean;
40
+ clearZoneTasks: boolean;
41
+ isSubmitting: boolean;
42
+ message: string;
43
+ messageType: "success" | "error";
44
+ private readonly destroy$;
45
+ constructor(sbs: StoreBuilderService, gs: GlobalStateService, modalService: NgbModal);
46
+ ngOnInit(): void;
47
+ loadStores(): void;
48
+ onStoreSelected(storeId: string | null): void;
49
+ private resetFloorState;
50
+ loadFloors(): void;
51
+ onFloorSelected(floorId: string | null): void;
52
+ onTargetStatusSelected(value: BucketStatus | null): void;
53
+ get statusChanged(): boolean;
54
+ get canSubmit(): boolean;
55
+ getStatusLabel(status: BucketStatus | null | undefined): string;
56
+ getBucketLabel(status: BucketStatus | null | undefined): string;
57
+ onSubmit(): Promise<void>;
58
+ private confirm;
59
+ showMessage(msg: string, type: "success" | "error"): void;
60
+ ngOnDestroy(): void;
61
+ static ɵfac: i0.ɵɵFactoryDeclaration<MoveBucketComponent, never>;
62
+ static ɵcmp: i0.ɵɵComponentDeclaration<MoveBucketComponent, "lib-move-bucket", never, {}, {}, never, never, false, never>;
63
+ }
64
+ export {};
@@ -29,6 +29,12 @@ interface QueryResult {
29
29
  rows: Record<string, any>[];
30
30
  totalRows: number;
31
31
  }
32
+ interface VmPlacementResult {
33
+ columns: string[];
34
+ rows: Record<string, any>[];
35
+ totalRows: number;
36
+ matchedVmCount: number;
37
+ }
32
38
  export declare class PlanoDataExportComponent implements OnInit, OnDestroy {
33
39
  private sbs;
34
40
  private gs;
@@ -56,6 +62,16 @@ export declare class PlanoDataExportComponent implements OnInit, OnDestroy {
56
62
  paginationSizes: number[];
57
63
  pageSize: number;
58
64
  currentPage: number;
65
+ vmSelectedStores: StoreOption[];
66
+ vmInitialStores: StoreOption[];
67
+ vmNameRegex: string;
68
+ isVmRunning: boolean;
69
+ vmResult: VmPlacementResult | null;
70
+ vmResultColumns: string[];
71
+ vmPageSize: number;
72
+ vmCurrentPage: number;
73
+ vmMessage: string;
74
+ vmMessageType: 'success' | 'error';
59
75
  private readonly destroy$;
60
76
  constructor(sbs: StoreBuilderService, gs: GlobalStateService);
61
77
  ngOnInit(): void;
@@ -81,6 +97,16 @@ export declare class PlanoDataExportComponent implements OnInit, OnDestroy {
81
97
  onRun(): void;
82
98
  onExport(): void;
83
99
  showMessage(msg: string, type: 'success' | 'error'): void;
100
+ onVmStoresSelected(stores: StoreOption[]): void;
101
+ get vmTotalRows(): number;
102
+ get vmPagedRows(): Record<string, any>[];
103
+ get vmPageStart(): number;
104
+ get vmPageEnd(): number;
105
+ onVmPageChange(page: number): void;
106
+ onVmPageSizeChange(size: number): void;
107
+ onVmRun(): void;
108
+ onVmExport(): void;
109
+ showVmMessage(msg: string, type: 'success' | 'error'): void;
84
110
  ngOnDestroy(): void;
85
111
  static ɵfac: i0.ɵɵFactoryDeclaration<PlanoDataExportComponent, never>;
86
112
  static ɵcmp: i0.ɵɵComponentDeclaration<PlanoDataExportComponent, "lib-plano-data-export", never, {}, {}, never, never, false, never>;
@@ -4,6 +4,24 @@ import { GlobalStateService } from 'tango-app-ui-global';
4
4
  import { StoreOption } from '../../collection-update-ai/components/store-select/store-select.component';
5
5
  import * as i0 from "@angular/core";
6
6
  type ExportKind = 'mbq' | 'order';
7
+ type JobStatus = 'running' | 'succeeded' | 'failed';
8
+ interface ExportJob {
9
+ jobId: string;
10
+ kind: ExportKind;
11
+ status: JobStatus;
12
+ startedAt?: string;
13
+ completedAt?: string | null;
14
+ downloadUrl?: string | null;
15
+ error?: string | null;
16
+ rowCount?: number | null;
17
+ storeCount?: number | null;
18
+ }
19
+ interface BusyInfo {
20
+ jobId: string;
21
+ kind: ExportKind;
22
+ startedAt?: string;
23
+ storeCount?: number;
24
+ }
7
25
  export declare class StoreExportsComponent implements OnInit, OnDestroy {
8
26
  private sbs;
9
27
  private gs;
@@ -11,19 +29,26 @@ export declare class StoreExportsComponent implements OnInit, OnDestroy {
11
29
  storeOptions: StoreOption[];
12
30
  initialStores: StoreOption[];
13
31
  selectedStores: StoreOption[];
14
- loading: ExportKind | null;
32
+ starting: ExportKind | null;
33
+ activeJob: ExportJob | null;
34
+ busyInfo: BusyInfo | null;
15
35
  message: string;
16
36
  messageType: 'success' | 'error';
17
37
  private readonly destroy$;
38
+ private readonly stopPoll$;
18
39
  constructor(sbs: StoreBuilderService, gs: GlobalStateService);
19
40
  ngOnInit(): void;
20
41
  loadStores(): void;
21
42
  onStoresSelected(stores: StoreOption[]): void;
22
43
  onExportMbq(): void;
23
44
  onExportOrderSheet(): void;
45
+ get isWorking(): boolean;
46
+ kindLabel(kind: ExportKind | undefined | null): string;
47
+ startedAgo(iso?: string | null): string;
48
+ dismissResult(): void;
24
49
  private runExport;
25
- private kindLabel;
26
- private safeName;
50
+ private startPolling;
51
+ private handlePollTimeout;
27
52
  showMessage(msg: string, type: 'success' | 'error'): void;
28
53
  ngOnDestroy(): void;
29
54
  static ɵfac: i0.ɵɵFactoryDeclaration<StoreExportsComponent, never>;
@@ -0,0 +1,83 @@
1
+ import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
+ import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
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 StoreItem {
8
+ id: string;
9
+ label: string;
10
+ }
11
+ interface FixtureItem {
12
+ _id: string;
13
+ fixtureNumber: number;
14
+ fixtureName: string;
15
+ fixtureCategory: string;
16
+ fixtureWidthValue: number;
17
+ associatedElementType: string;
18
+ associatedElementFixtureNumber: number | null;
19
+ displayName: string;
20
+ }
21
+ interface TemplateItem {
22
+ _id: string;
23
+ fixtureName: string;
24
+ displayName: string;
25
+ subtext: string;
26
+ }
27
+ interface SwapRow {
28
+ rowId: number;
29
+ fixtureId: string | null;
30
+ templateId: string | null;
31
+ fixture: FixtureItem | null;
32
+ template: TemplateItem | null;
33
+ fixtureOptions: FixtureItem[];
34
+ wallPosition: string;
35
+ }
36
+ export declare class SwapTemplateComponent implements OnInit, OnDestroy {
37
+ private sbs;
38
+ private gs;
39
+ private modalService;
40
+ private toast;
41
+ private cdr;
42
+ clientId: string;
43
+ storeOptions: StoreItem[];
44
+ selectedStoreId: string | null;
45
+ selectedStore: StoreItem | null;
46
+ fixtures: FixtureItem[];
47
+ templates: TemplateItem[];
48
+ rows: SwapRow[];
49
+ isLoadingFixtures: boolean;
50
+ isSubmitting: boolean;
51
+ canAddRow: boolean;
52
+ canSubmit: boolean;
53
+ private readonly destroy$;
54
+ private readonly storeSelected$;
55
+ private templatesCache$;
56
+ private cachedTemplatesClientId;
57
+ private rowIdSeq;
58
+ constructor(sbs: StoreBuilderService, gs: GlobalStateService, modalService: NgbModal, toast: ToastService, cdr: ChangeDetectorRef);
59
+ ngOnInit(): void;
60
+ loadStores(): void;
61
+ private prefetchTemplates;
62
+ private getCachedTemplates;
63
+ onStoreSelected(storeId: string | null): void;
64
+ private makeEmptyRow;
65
+ private computeFixtureOptions;
66
+ private refreshAllFixtureOptions;
67
+ private computeWallPosition;
68
+ private recomputeFlags;
69
+ onRowFixtureChange(row: SwapRow, fixtureId: string | null): void;
70
+ onRowTemplateChange(row: SwapRow, templateId: string | null): void;
71
+ addRow(): void;
72
+ removeRow(index: number): void;
73
+ onCancel(): void;
74
+ private resetSelection;
75
+ onSubmit(): Promise<void>;
76
+ private summarizeErrors;
77
+ private confirmSwap;
78
+ trackByRow: (_: number, row: SwapRow) => number;
79
+ ngOnDestroy(): void;
80
+ static ɵfac: i0.ɵɵFactoryDeclaration<SwapTemplateComponent, never>;
81
+ static ɵcmp: i0.ɵɵComponentDeclaration<SwapTemplateComponent, "lib-swap-template", never, {}, {}, never, never, false, never>;
82
+ }
83
+ export {};
@@ -4,9 +4,11 @@ export declare class DeleteConfirmationComponent {
4
4
  private activeModal;
5
5
  title: string;
6
6
  description: string;
7
+ confirmLabel: string;
8
+ confirmClass: string;
7
9
  constructor(activeModal: NgbActiveModal);
8
10
  onCancel(): void;
9
11
  onDelete(): void;
10
12
  static ɵfac: i0.ɵɵFactoryDeclaration<DeleteConfirmationComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<DeleteConfirmationComponent, "app-delete-confirmation", never, { "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; }, {}, never, never, false, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<DeleteConfirmationComponent, "app-delete-confirmation", never, { "title": { "alias": "title"; "required": false; }; "description": { "alias": "description"; "required": false; }; "confirmLabel": { "alias": "confirmLabel"; "required": false; }; "confirmClass": { "alias": "confirmClass"; "required": false; }; }, {}, never, never, false, never>;
12
14
  }
@@ -1,3 +1,11 @@
1
+ export declare const WALL_ZONES: {
2
+ label: string;
3
+ value: string;
4
+ }[];
5
+ export declare const FLOOR_ZONES: {
6
+ label: string;
7
+ value: string;
8
+ }[];
1
9
  export declare const SHELF_COLORS: {
2
10
  text: string;
3
11
  textBg: string;
@@ -19,4 +19,5 @@ export declare const getQueryParamString: ({ params, key, fallback, allowed, }:
19
19
  export declare function uniqueFieldInFormArrayValidator(fieldName: string): ValidatorFn;
20
20
  export declare const getNameFromEmail: (email: string) => string;
21
21
  export declare const indianPincodeValidator: () => ValidatorFn;
22
+ export declare const getFixtureCanvasLabel: (fixture: any) => string;
22
23
  export declare const lightenColor: (hex: string, amount?: number) => string;
@@ -81,6 +81,8 @@ export declare class StoreBuilderService implements OnDestroy {
81
81
  updateFixtureComplianceStatus(data: any): import("rxjs").Observable<Object>;
82
82
  addUpdateBrand(data: any): import("rxjs").Observable<Object>;
83
83
  uploadBrand(data: any): import("rxjs").Observable<Object>;
84
+ getBrandMetaData(clientId: string): import("rxjs").Observable<Object>;
85
+ updateBrandMetaData(data: any): import("rxjs").Observable<Object>;
84
86
  updateTask(data: any): import("rxjs").Observable<Object>;
85
87
  getTaskConfig(data: any): import("rxjs").Observable<Object>;
86
88
  updateStoreFixture(data: any): import("rxjs").Observable<Object>;
@@ -151,6 +153,9 @@ export declare class StoreBuilderService implements OnDestroy {
151
153
  approvePlanoLayout(floorId: any): import("rxjs").Observable<Object>;
152
154
  exportMBQSheet(data: any): import("rxjs").Observable<ArrayBuffer>;
153
155
  exportPlanoOrderSheet(data: any): import("rxjs").Observable<ArrayBuffer>;
156
+ exportMBQSheetAsync(data: any): import("rxjs").Observable<import("@angular/common/http").HttpResponse<Object>>;
157
+ exportPlanoOrderSheetAsync(data: any): import("rxjs").Observable<import("@angular/common/http").HttpResponse<Object>>;
158
+ getPlanoExportJob(jobId: string): import("rxjs").Observable<Object>;
154
159
  runAlocation(data: any): import("rxjs").Observable<Object>;
155
160
  getIvmConversionAlias(): import("rxjs").Observable<Object>;
156
161
  getAllFindReplaceData(data: any): import("rxjs").Observable<Object>;
@@ -207,7 +212,23 @@ export declare class StoreBuilderService implements OnDestroy {
207
212
  associatedElementFixtureNumber?: number;
208
213
  }): import("rxjs").Observable<Object>;
209
214
  deleteTaskForStores(data: any): import("rxjs").Observable<Object>;
215
+ getFloorsWithStatus(storeName: string, clientId: string): import("rxjs").Observable<Object>;
216
+ moveStoreBucket(data: {
217
+ floorId: string;
218
+ targetStatus: "draft" | "allocationPending" | "completed";
219
+ clearLayoutTasks: boolean;
220
+ clearFixtureTasks: boolean;
221
+ clearZoneTasks: boolean;
222
+ }): import("rxjs").Observable<Object>;
223
+ swapFixtureTemplate(data: {
224
+ data: {
225
+ storeName: string;
226
+ fixtureNumber: number;
227
+ templateName: string;
228
+ }[];
229
+ }): import("rxjs").Observable<Object>;
210
230
  getPlanoDataSchema(): import("rxjs").Observable<Object>;
231
+ getCadFiles(storeName: string): import("rxjs").Observable<Object>;
211
232
  runPlanoDataQuery(data: {
212
233
  clientId: string;
213
234
  storeNames: string[];
@@ -225,6 +246,11 @@ export declare class StoreBuilderService implements OnDestroy {
225
246
  }[];
226
247
  includeNotFoundRows?: boolean;
227
248
  }): import("rxjs").Observable<Object>;
249
+ runVmPlacementQuery(data: {
250
+ clientId: string;
251
+ storeNames: string[];
252
+ vmName: string;
253
+ }): import("rxjs").Observable<Object>;
228
254
  ngOnDestroy(): void;
229
255
  static ɵfac: i0.ɵɵFactoryDeclaration<StoreBuilderService, never>;
230
256
  static ɵprov: i0.ɵɵInjectableDeclaration<StoreBuilderService>;