{"version":3,"file":"verben-ticketing-ui-src-utils.mjs","sources":["../../../projects/verben-ticketing-ui/src/utils/components/base-data-view.component.ts","../../../projects/verben-ticketing-ui/src/utils/verben-ticketing-ui-src-utils.ts"],"sourcesContent":["import { Component, computed, OnInit, signal, ViewChild } from '@angular/core';\nimport {\n  CardData,\n  CardDataViewComponent,\n  DataFilterType,\n  DataViewComponent,\n  IDataFilter,\n} from 'verben-ng-ui';\nimport { DataViewConfig } from '../models/DataViewConfig';\n\n@Component({\n  template: '',\n})\nexport abstract class BaseDataViewComponent<T> implements OnInit {\n  @ViewChild('vdcv') cardDataView!: CardDataViewComponent;\n  @ViewChild('vdv') dataView!: DataViewComponent;\n\n  // Configurable properties\n  abstract config: DataViewConfig<T>;\n\n  // Signals for reactive data management\n  data = signal<T[]>([]);\n  cardData = computed(() => this.data().map(this.config.cardDataMapper));\n\n  // View state management\n  currentData: CardData | null = null;\n  isGridView = true;\n  selected: CardData | null = null;\n\n  // Filtering and sorting state\n  visibleColumns: IDataFilter[] = [];\n  filterArray: IDataFilter[] = [];\n  sortOptions: IDataFilter[] = [];\n\n  selectedColumnCount = 0;\n  selectedFilterTableCount = 0;\n  selectedSortCount = 0;\n\n  constructor() {\n    this.initializeConfig();\n  }\n\n  ngOnInit() {\n    this.loadInitialData();\n  }\n\n  // To be implemented by child classes if needed\n  protected loadInitialData() {\n    // Default implementation can be overridden\n    this.data.set(this.config.dataSource);\n  }\n\n  private initializeConfig() {\n    // Initialize filter and column configurations\n    this.visibleColumns = this.config.columns.map((col) => ({\n      checked: true,\n      name: typeof col.header === 'string' ? col.header : col.id,\n      type: DataFilterType.Bool,\n    }));\n\n    this.filterArray = this.config.filterOptions || [];\n    this.sortOptions = this.config.sortOptions || [];\n  }\n\n  // Generic view and interaction methods\n  openDetailView(identifier: any) {\n    const cardItem = this.getCardDataByIdentifier(identifier);\n    if (cardItem && this.cardDataView) {\n      this.resetSelections();\n      cardItem.selected = true;\n      this.currentData = this.cardDataView.onItemClick(cardItem);\n      this.dataView.toggleView();\n    }\n  }\n\n  private resetSelections() {\n    this.cardData().forEach((item) => {\n      item.selected = false;\n      item.children?.forEach((child) => (child.selected = false));\n    });\n  }\n\n  // Abstract method to find card data - to be implemented by child\n  protected abstract getCardDataByIdentifier(\n    identifier: any\n  ): CardData | undefined;\n\n  // Common utility methods\n  downloadCSV(data: Partial<any>[]) {\n    const headers = Object.keys(data[0]);\n    const csvContent = [\n      headers.join(','),\n      ...data.map((row) => headers.map((header) => row[header]).join(',')),\n    ].join('\\n');\n\n    const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n    const link = document.createElement('a');\n    if (link.download !== undefined) {\n      const url = URL.createObjectURL(blob);\n      link.setAttribute('href', url);\n      link.setAttribute('download', 'export.csv');\n      link.style.visibility = 'hidden';\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    }\n  }\n\n  // Event handlers\n  onViewChange(isGridView: boolean): void {\n    this.isGridView = isGridView;\n    if (this.currentData) {\n      this.cardDataView?.clearData();\n      this.currentData = null;\n    }\n  }\n\n  onColumnsUpdated(updatedColumns: IDataFilter[]) {\n    // Update visible columns logic\n    this.selectedColumnCount = updatedColumns.length;\n    // Additional column update logic can be added here\n  }\n\n  onSortUpdated(updatedSorts: IDataFilter[]) {\n    this.selectedSortCount = updatedSorts.length;\n  }\n\n  onSelectionChange(selectedRows: T[]) {\n    //console.log('Selection changed:', selectedRows);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}