import { ChangeDetectorRef, OnDestroy, OnInit, ElementRef, TemplateRef } from "@angular/core"; import { TrafficRvpsService } from "../../services/traffic-rvps.service"; import { GlobalStateService } from "tango-app-ui-global"; import { TrafficService } from "../../services/traffic.service"; import { ToastService } from "tango-app-ui-shared"; import { NgbModal, NgbModalRef } from "@ng-bootstrap/ng-bootstrap"; import * as i0 from "@angular/core"; export declare class ImgRvpsComponent implements OnInit, OnDestroy { private service; gs: GlobalStateService; private cd; private modalService; private toast; private rvpsService; zoomPopup: ElementRef; parentChildImgConfirmationModel: TemplateRef; imageNewPopup: ElementRef; raisedPopup: ElementRef; resetRequestPopup: ElementRef; imagePopup: ElementRef; duplicateParentPopup: ElementRef; leftPanelContainer: ElementRef; duplicateParentContext: any; duplicateChildrenList: any[]; isDuplicateParentEditMode: boolean; selectedDuplicateImagesList: any; tempRaisedPayload: any; commentText: any; getRaisedData: any; isModalOpen: boolean; currentImageModalRef: NgbModalRef | null; currentImageIndex: number; private readonly destroy$; Math: Math; headerData: any; storeIdarray: any; loading: boolean; noData: boolean; normalize: any; overallCardData: any; configIconList: any; cardDataMap: { [date: string]: any; }; ticketReviewStatus: any; userImgComment: any; revisionMailTo: string; revisionConfig: any[]; selectImageArray: any; remainingImageArray: any; filteredDuplicateImages: any[]; revopsTypeValue: boolean; revopsTypeValuepopup: boolean; editBtnShow: boolean; originalCheckedDuplicateIds: any[]; selectedType: any; selectedRadioType: any; enableSaveBtn: boolean; popupType: any; users: any; isAccordionExpanded: boolean; folderView: boolean; backnav: boolean; dateArray: any; isNavEnabled: boolean; selectedTime: any; folderName: any; folderDate: any; imageFlow: boolean; splitScreenEnabled: boolean; getRvpsList: any; getRvpsImageList: any; objectsArray: any; imagesArrayData: any; listViewGroups: Array<{ timeRange: string; data: any[]; }>; remainingImagesGroups: Array<{ timeRange: string; data: any[]; }>; selectIndex: any; footfallDate: any; lengthValue: boolean; viewMode: "grid" | "list"; type: any; imageUrl: any; revopsTypeCount: any; currentTimeRangeData: any; overallArrayData: any; allFootfallData: any; countData: any; tempPopupValue: any; tempModalImage: any; modalNavigationList: any[]; currentModalImageIndex: number; selectedImagePosition: { templd: string; timeRange: string; index: number; } | null; leftPanelScrollPosition: number; pendingSelectedImage: any; shouldRestoreSelectedImage: boolean; allowTicketCreation: number; constructor(service: TrafficService, gs: GlobalStateService, cd: ChangeDetectorRef, modalService: NgbModal, toast: ToastService, rvpsService: TrafficRvpsService); ngOnDestroy(): void; toggleAccordion(): void; ngOnInit(): void; getInital(): void; backToFootfall(): void; displayDateRange(): void; getDateRangeArray(fromDate: string, toDate: string): string[]; loadCardData(): void; selectedTimes(val: any): void; getimages(index: any, obj: any): void; getTotal(): void; getTicketStatuses(): string[]; getRevops(): void; editValue(action: any): void; backToFootfall1(): void; selectImageForSplitView(obj: any): void; imgFullView(obj: any): void; imgSwap(obj: any): void; onRadioChange(val: any): void; selectPlanTrends(type: any): void; private updateTimeRangeTabs; applyFilters(): void; setViewMode(mode: "grid" | "list"): void; convertMinutes(totalMinutes: number): { hours: number; mins: number; }; private buildRemainingImagesGroups; buildListViewGroups(): void; /** * Compares two time range strings chronologically (morning to evening) * Handles formats like "9:00 AM - 10:00 AM", "2:00 PM - 3:00 PM", etc. * @param timeRangeA First time range string * @param timeRangeB Second time range string * @returns Negative if A comes before B, positive if A comes after B, 0 if equal */ private compareTimeRanges; /** * Updates objectsArray (time range tabs) based on the current filtered grid/list view data * This ensures time range counts reflect the filtered data, not just the original allFootfallData */ private updateObjectsArrayFromFilteredData; get filteredListViewGroups(): Array<{ timeRange: string; data: any[]; }>; get filteredRemainingImagesGroups(): Array<{ timeRange: string; data: any[]; }>; getNavigationListFromFilteredGroups(): any[]; getCurrentImageIndexInFilteredGroups(): number; canNavigatePrevious(): boolean; canNavigateNext(): boolean; navigateFilteredImage(direction: "previous" | "next"): void; handleImageClick(evt: any, obj: any, navigEnable: boolean): void; /** * In duplicate-parent popup, open child image with navigation scoped to the * selected parent's duplicateImagePath list. */ handleDuplicateChildImageClick(evt: any, child: any, newArray: any): void; openImageZoomModal(imageUrl: any, imageData: any, navigEnable?: boolean): void; get canNavigateLeftModal(): boolean; get canNavigateRightModal(): boolean; navigateModalImage(direction: "left" | "right"): void; /** * Find mapped parent image for currently selected duplicate child */ getParentForSelectedDuplicateChild(): any | null; openDuplicateParentPopup(parentImage: any): void; onPopupDuplicateCheckboxChange(evt: any, child: any): void; openParentChildConfirmation(): void; confirmParentChildUntag(modalRef?: any): void; untagParentAndChildrenRequest(): void; saveDuplicateParentPopup(): void; editDuplicateParent(): void; closeDuplicateParentPopup(modal: any): void; saveAndCloseDuplicateParentPopup(modal: any): void; toggleDuplicateSelection(img: any): void; onImageCheckboxChange(evt: any, img: any, type: string): void; clearValue(): void; cancel(): void; save(category: any): void; cancelSubmit(): void; submitValue(category: any): void; noDataMessages: { [key: string]: string; }; getNoDataMessage(type: string): string; Raised(): void; getCount(type: any): any; cancelRasied(): void; submitRaised(): void; selectedImageArray(url: any, data: any): void; closeImage(): void; saveDuplicateImagesFromModal(): void; canEnableButton(): boolean; isTaggingExpired(): boolean; isImageAlreadyTagged(): boolean; shouldBlockTagging(): boolean; canEnableSaveButton(): boolean; get canNavigateLeft(): boolean; get canNavigateRight(): boolean; navigateImage(direction: "left" | "right"): void; getCurrentFootfall(): number; getFootfallPercentageChange(): number; getFormattedDowntime(): string; getFormattedDowntimeHTML(): string; getTicketStatus(): any; hasDowntime(): boolean; getTaggingData(type: string): any; isTicketRaised(): boolean; isTicketClosed(): boolean; isTicketAutoClosed(): boolean; get revisionRoleText(): string; getAllTaggingData(): any[]; getInitialRevisionData(): any; getFinalRevisionData(): any; getCountByType(data: any, countType: string): number; getRevisionCalculation(type: string): number; requestReset(): void; cancelResetRequest(): void; submitResetRequest(): void; getNormalizedDate(): string | null; getSelectedDateCardData(): any; getIconName(revOpsType: string): any; enablePopupSaveBtn: boolean; updateFilteredDuplicateImages(): void; getFilteredDuplicateImages(): any[]; getDynamicConfigIcons(): any[]; isDynamicPopupType(popupType: string): boolean; getDynamicPopupName(popupType: string): string; getRaisedPayloadCount(type: string): number; getTypeCount(type: string): number; openImageNewZoomModal(imageUrl: any, imageData: any): void; isTaggingLimitExceed(type: string): boolean; /** * Store the position of the selected image in the list view * This helps maintain scroll position after update */ storeSelectedImagePosition(obj: any): void; /** * Restore UI state (buttons, radio buttons) based on restored image */ restoreImageUIState(selectedImage: any): void; /** * Update remaining images array after restoring selected image */ updateRemainingImagesAfterRestore(selectedImage: any): void; /** * Restore scroll position after list rebuild * This maintains the position where the selected image was located */ restoreScrollPosition(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }