import { OnInit, SimpleChanges } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { VhAlgorithm, VhEventMediator, VhImage } from 'vhautowebdb'; import { VhQueryAutoWeb } from 'vhautowebdb'; import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal'; import { LanguageService } from 'vhobjects-service'; import { DomSanitizer } from '@angular/platform-browser'; import { FunctionService } from 'vhobjects-service'; import { CdkDragDrop } from '@angular/cdk/drag-drop'; import { HttpClient } from '@angular/common/http'; import * as i0 from "@angular/core"; export declare class AtwFrameRepeatAdmin implements OnInit { vhAlgorithm: VhAlgorithm; vhQueryAutoWeb: VhQueryAutoWeb; private vhImage; functionService: FunctionService; private vhEventMediator; private matdialog; private platformId; private modal; private dialog; private languageService; sanitizer: DomSanitizer; private nzModalService; private http; data: any; type: any; listPureData: any[]; isOpenModal: boolean; dataRow: any; arr_link_page: any; loading: boolean; pageSize: number; pageIndex: number; total: number; sources: { label: string; value: string; }[]; source: string; subproject: any; id_subproject: string; isShowUploadToServer: boolean; compressType: string; isSharedImg: boolean; compressWidth: number; compressHeight: number; uploadToServerLoading: boolean; isOpenGuideMap: boolean; isOpenGuideVideo: boolean; radioValue: string; dataLoaded: boolean; type_link: any; clickActionOptions: any; blocks_of_page?: any; itemEdit: any; listOfData: any[]; loaded: any; popupHovers: any[]; hoverBlanks: any[]; /** Dùng cho hình ảnh cần nén cho các thiết bị khác nhau tối ưu SEO */ deviceTemp: 'desktop' | 'tablet_landscape' | 'tablet_portrait' | 'mobile_landscape' | 'mobile_portrait'; /** Kích thước hình ảnh có phù hợp với kích thước thực tế hay chưa? */ isDesignImageSizeValid: boolean; /** Có hiển thị chỗ chọn thiết bị hay không? */ showChooseDevice: boolean; /** Chứa các kích thước thiết kế vật thể image của các thiết bị */ imageSizeOfDevices: any; /** Biến kiểm tra obj image này có đang dùng tính năng xem toàn màn hình hay không */ isFullscreenImage: {}; /** Biến kiểm tra obj image này có đang dùng hiệu ứng lớp phủ hay không? Để hiển thị ô nhập nội dung */ isEffectOverlayImage: {}; /** Biến lưu tạm index của danh sách ảnh toàn màn hình */ indexImgFullscreenTemp: number; /** * Các component con trong frame repeat này, nếu là component khác thì không add */ childrenComp: any; mapType: any; sampleImgDetail: string[]; /** Biến lưu cấu hình tự động dịch có đang bật không? Tránh gọi hàm getSetups_byFields quá nhiều lần */ isAutoTranslate: boolean; useLegacy: boolean; docId: string | null; constructor(vhAlgorithm: VhAlgorithm, vhQueryAutoWeb: VhQueryAutoWeb, vhImage: VhImage, functionService: FunctionService, vhEventMediator: VhEventMediator, matdialog: MatDialog, platformId: Object, modal: NzModalRef, // Thêm @Optional() vào NzModalRef dialog: MatDialog, languageService: LanguageService, sanitizer: DomSanitizer, nzModalService: NzModalService, http: HttpClient); ngOnInit(): void; getBlocksOther(): void; getSetups(): void; getBlocksbyPage(): void; startEdit(item: any): void; deleteRow(id: string): void; ngOnChanges(changes: SimpleChanges): Promise; handleAddData(): void; private persistNewItemLegacy; private persistNewItem; convertObjectToArray(data: any): any[]; /** * Hàm chuyển đổi cấu trúc dữ liệu đầu vào. * Mục đích: Duyệt qua danh sách dữ liệu (rows) và ánh xạ với cấu hình đối tượng (columns) * để tạo ra cấu trúc dữ liệu chuẩn cho việc hiển thị (bao gồm cả dữ liệu đã lưu và dữ liệu mặc định). * @param data Mảng dữ liệu đầu vào cần chuyển đổi */ convertData(data: any): any; getData(): void; private finishLoadData; updateOrdinal(dataRow: any): void; updateVideoRepeat(field: any, value: any): void; /** * Hàm này sẽ lấy link tiktok mà người dùng nhúng vào */ private getLinkTiktok; /** * Xử lý trích xuất ID từ URL Web (dùng Regex) */ private extractIdFromWebUrl; /** * Xử lý link rút gọn từ App (Cần gọi qua một proxy/backend) */ private handleAppShortLink; /** * Tạo link tiktok để gán vào staticdata */ private updateTiktokSrc; private getLinkFacebook; /** * Hàm cốt lõi: Biến đổi mọi loại chuỗi Instagram thành Link Embed an toàn * @param input Chuỗi link gốc hoặc đoạn mã Blockquote bài viết */ private getLinkInstagram; updateData(dataRow: any): void; onUpload(e: any, dataRow: any, type?: string): void; path: string; /** * Hàm xử lý lấy ảnh ở thư viện */ openLibrary(dataRow: any, type?: string): void; openFreeImage(dataRow: any, type?: string): void; chooseItemEdit(item: any, dataRow: any): Promise; openUploadToServer(): void; /** * Xử lý lấy link các page về. */ getLinkAllPages(): void; removeLink(fieldName: string): void; findObjectName(item: any): string; /** * Hàm mở ra hộp thoại chỉnh sửa tên và update * @param object */ editNameObject(object: any): void; /** * Update dữ liệu của data */ updateObject(): void; cancelUploadToServer(): void; okUploadToServer(itemEdit: any, type?: string, index?: number): void; openDialogChooseIcon(): void; onDateTimeChange(result: any, item: any): void; onDateTimeOk(result: any, dataRow: any): void; /** * Khi chọn add link bằng iframe hàm này sẽ cập nhật * @param item * @param dataRow */ getLink_atwMapRepeat(item: any, dataRow: any): void; /** * Khi chọn add link bằng địa chỉ hàm này sẽ được gọi ra * @param item * @param dataRow */ getLocal_atwMapRepeat(item: any, dataRow: any): void; /** * hàm này sẽ chuyển địa chỉ thành chuỗi url * @param place Dịa chi * @returns */ private getGoogleMapsUrl; /** * Hàm này sẽ mã hóa chuỗi url địa chỉ * @param data Dữ liệu * @returns */ private encodeQueryData; /** * Hàm kiểm tra giá trị truyền vào * @param { mailto, tel } * @returns boolean */ isValidValue({ mailto, tel }?: { mailto?: string; tel?: string; }): boolean; /** * Hàm lấy kích thước thiết kế của hình ảnh trong khung lưới * @param item */ private getDesignDimensionsOfDevices; /** * Lấy ra tên file và đuôi file * @param url Đường dẫn ảnh * @example const { fileName, fileExtension } = getFileInfo("https://115.78.228.208:20350/autowebapp/67c1b593b1344364462b082b/images/design/objects/3-1-768x768%20(3).png"); */ getFileInfo(url: string): { fullFileName: string; fileName: string; fileExtension: string; folderPath: string; }; /** Hàm kiểm tra có cần phải hiển thị nút cập nhật không */ private checkDesignImageSize; /** * Hàm update kích thước ảnh phù hợp cho từng kích thước thiết kế của từng thiết bị * @param itemEdit * @param dataRow */ updateDesignImageSize(itemEdit: any, dataRow: any): Promise; /** * Sao chép đường dẫn hình ảnh vào bộ nhớ tạm */ copyLinkImg(text?: string): void; handleLinkImg(dataRow: any, type?: string): void; /** * Hàm kiểm tra xem obj img này có đang dùng tính năng xem toàn màn hình hay không. * Để xem có hiển thị ô nhập hay không */ checkImgHasFullscreen(item: any, device: any): any; /** * Hàm kiểm tra xem obj img này có đang dùng hiệu ứng lớp phủ hay không. * Để xem có hiển thị ô nhập hay không */ checkImgHasEffectOverlay(item: any, device: any): any; /** * Hàm kéo thả thay đổi thứ tự ảnh trong danh sách ảnh toàn màn hình */ dropImgFullscreens(event: CdkDragDrop, dataRow: any): void; /** * Hàm xoá ảnh thứ tự bất kì trong danh sách ảnh toàn màn hình */ handleDelImgFullscreens(dataRow: any, index?: number): void; autoTranslateLang(field: any, itemEdit: any, dataRow: any): Promise; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }