{"version":3,"file":"verben-ng-ui-src-lib-components-data-export.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.types.ts","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.service.ts","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.component.html","../../../projects/verben-ng-ui/src/lib/components/data-export/data-export.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.ts"],"sourcesContent":["import { SortDirection } from 'verben-ng-ui/src/lib/components/data-sort';\n\nexport type ExportItemType = 'property' | 'operation';\n\nexport interface ExportItem {\n  id: string;\n  name: string;\n  type: ExportItemType;\n}\n\nexport interface ExportProfile {\n  id: string;\n  name: string;\n  items: ExportItem[];\n}\n\nexport interface Operation {\n  id: string;\n  name: string;\n  field1: string;\n  operator: Operators;\n  field2: string;\n}\n\nexport enum Operators {\n  add = 'add',\n  subtract = 'subtract',\n  multiply = 'multiply',\n  divide = 'divide',\n  concatenateSpace = 'concatenateSpace',\n  concatenateCommaSpace = 'concatenateCommaSpace',\n  concatenateComma = 'concatenateComma',\n}\n\nexport enum SearchPropertyValueType {\n  Int = 'Int',\n  Float = 'Float',\n  Decimal = 'Decimal',\n  Double = 'Double',\n  String = 'String',\n  Bool = 'Bool',\n  Date = 'Date',\n}\n\nexport enum SearchOperator {\n  And = 'And',\n  Or = 'Or',\n}\n\nexport enum SearchPropertySign {\n  EQ = 'EQ',\n  NEQ = 'NEQ',\n  GT = 'GT',\n  GTE = 'GTE',\n  LT = 'LT',\n  LTE = 'LTE',\n  LIKE = 'LIKE',\n}\n\nexport interface SearchPropertyValue {\n  PropertyName: string;\n  EntityValue: string;\n  Type?: SearchPropertyValueType;\n  Operator: SearchOperator;\n  Sign: SearchPropertySign;\n  Sort?: SortDirection;\n}\n","import { Injectable } from '@angular/core';\nimport {\n  ExportProfile,\n  Operation,\n  ExportItem,\n  ExportItemType,\n  Operators,\n} from './data-export.types';\n\n@Injectable()\nexport class DataExportService {\n  private profiles: ExportProfile[] = [];\n  private operations: Operation[] = [];\n  private baseProperties: string[] = [];\n\n  constructor() {\n    this.initializeDefaultProfile();\n  }\n\n  private initializeDefaultProfile() {\n    this.profiles = [\n      {\n        id: 'default',\n        name: 'All',\n        items: this.baseProperties.map((prop) => ({\n        id: prop,\n        name: prop,\n        type: 'property' as ExportItemType,\n      })),\n      },\n    ];\n  }\n\n  addProfile(profile: ExportProfile): void {\n    this.profiles.push(profile);\n  }\n\n  getProfiles(): ExportProfile[] {\n    return this.profiles;\n  }\n\n  updateProfile(id: string, updatedProfile: ExportProfile): void {\n    const index = this.profiles.findIndex((p) => p.id === id);\n    if (index !== -1) {\n      this.profiles[index] = updatedProfile;\n    }\n  }\n\n  removeProfile(id: string): void {\n    this.profiles = this.profiles.filter((p) => p.id !== id);\n  }\n\n  addOperation(operation: Operation): void {\n    this.operations.unshift(operation);\n    this.updateDefaultProfile();\n  }\n\n  getOperations(): Operation[] {\n    return this.operations;\n  }\n\n  updateOperation(id: string, updatedOperation: Operation): void {\n    const index = this.operations.findIndex((o) => o.id === id);\n    if (index !== -1) {\n      this.operations[index] = updatedOperation;\n      this.updateDefaultProfile();\n    }\n  }\n\n  removeOperation(id: string): void {\n    this.operations = this.operations.filter((o) => o.id !== id);\n    this.updateDefaultProfile();\n    // Remove operation from all profiles\n    this.profiles.forEach((profile) => {\n      profile.items = profile.items.filter((item) => item.id !== id);\n    });\n  }\n\n  resetAll(): void {\n    this.operations = [];\n    this.baseProperties = [];\n    this.initializeDefaultProfile();\n  }\n\n  getAllItems(): ExportItem[] {\n    return [\n      ...this.operations.map((op) => ({\n        id: op.id,\n        name: op.name,\n        type: 'operation' as ExportItemType,\n      })),\n      ...this.baseProperties.map((prop) => ({\n        id: prop,\n        name: prop,\n        type: 'property' as ExportItemType,\n      })),\n    ];\n  }\n\n  getBaseProperties(): string[] {\n    return this.baseProperties;\n  }\n\n  setBaseProperties(properties: string[]): void {\n    this.baseProperties = properties;\n    this.updateDefaultProfile();\n  }\n\n  private updateDefaultProfile(): void {\n    this.profiles[0].items = this.getAllItems();\n  }\n\n  exportData<T>(\n    data: T[],\n    selectedProfiles: ExportProfile[]\n  ): Record<string, any>[] {\n    const uniqueItems = new Set<ExportItem>();\n    selectedProfiles.forEach((profile) => {\n      profile.items.forEach((item) => uniqueItems.add(item));\n    });\n\n    return data.map((item) => {\n      const exportedItem: Record<string, any> = {};\n      uniqueItems.forEach((exportItem) => {\n        if (exportItem.type === 'property') {\n          exportedItem[exportItem.id] = (item as any)[exportItem.id];\n        } else {\n          const operation = this.operations.find((o) => o.id === exportItem.id);\n          if (operation) {\n            exportedItem[exportItem.id] = this.calculateOperation(\n              item,\n              operation\n            );\n          }\n        }\n      });\n      return exportedItem;\n    });\n  }\n\n  private calculateOperation<T>(\n    item: T,\n    operation: Operation\n  ): number | string {\n    const value1 = Number((item as any)[operation.field1]);\n    const value2 = Number((item as any)[operation.field2]);\n    switch (operation.operator) {\n      case Operators.add:\n        return value1 + value2;\n      case Operators.subtract:\n        return value1 - value2;\n      case Operators.multiply:\n        return value1 * value2;\n      case Operators.divide:\n        return value2 !== 0 ? value1 / value2 : NaN;\n      case Operators.concatenateSpace:\n        return `${value1} ${value2}`;\n      case Operators.concatenateCommaSpace:\n        return `${value1}, ${value2}`;\n      case Operators.concatenateComma:\n        return `${value1},${value2}`;\n      default:\n        return NaN;\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  input,\n  Input,\n  Output,\n} from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { DataExportService } from './data-export.service';\nimport {\n  ExportItem,\n  ExportProfile,\n  Operation,\n  Operators,\n  SearchPropertyValue,\n} from './data-export.types';\nimport { ColumnDefinition } from 'verben-ng-ui/src/lib/components/data-table';\n\n@Component({\n  selector: 'lib-data-export',\n  templateUrl: './data-export.component.html',\n  styleUrl: './data-export.component.css',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataExportComponent<T extends { id: string | number }> {\n  @Input() columns!: ColumnDefinition<T>;\n  @Input() data!: any[];\n  dataFetchUrl = input<string>();\n  dataQueryParameters = input<SearchPropertyValue[]>();\n  @Output() exportDataEvent = new EventEmitter<Record<string, any>[]>();\n\n  profiles: (ExportProfile & { selected: boolean })[] = [];\n  groupItems: (ExportItem & { selected: boolean })[] = [];\n  newGroupForm: FormGroup;\n  newOperation: Operation = {\n    id: '',\n    name: '',\n    field1: '',\n    operator: Operators.add,\n    field2: '',\n  };\n  numericProperties: string[] = [];\n  stringProperties: string[] = [];\n  isEditingOperation: boolean = false;\n  showAllProfiles: boolean = false;\n  showAllGroups: boolean = false;\n\n  operatorsNumeric: Operators[] = [\n    Operators.add,\n    Operators.subtract,\n    Operators.multiply,\n    Operators.divide,\n  ];\n  operatorsString: Operators[] = [\n    Operators.concatenateSpace,\n    Operators.concatenateCommaSpace,\n    Operators.concatenateComma,\n  ];\n\n  constructor(\n    private exportService: DataExportService,\n    private fb: FormBuilder\n  ) {\n    this.newGroupForm = this.fb.group({\n      name: ['', Validators.required],\n    });\n  }\n\n  ngOnInit() {\n    this.initializeGroupItems();\n    this.updateProfiles();\n  }\n\n  ngOnChanges() {\n    if (this.data) {\n      this.initializeGroupItems();\n    }\n  }\n\n  get visibleProfiles() {\n    return this.showAllProfiles ? this.profiles : this.profiles.slice(0, 3);\n  }\n\n  get visibleGroups() {\n    return this.showAllGroups ? this.groupItems : this.groupItems.slice(0, 3);\n  }\n\n  initializeGroupItems() {\n    if (this.data && this.data.length > 0) {\n      const properties = Object.keys(this.data[0]).filter((k) => k !== 'id');\n      this.exportService.setBaseProperties(properties);\n      this.numericProperties = properties.filter(\n        (prop) => typeof this.data[0][prop] === 'number'\n      );\n      this.stringProperties = properties.filter(\n        (prop) => typeof this.data[0][prop] === 'string'\n      );\n      this.updateGroupItems();\n    }\n  }\n\n  updateProfiles() {\n    this.profiles = this.exportService.getProfiles().map((profile) => ({\n      ...profile,\n      selected: false,\n    }));\n  }\n\n  updateGroupItems() {\n    this.groupItems = this.exportService.getAllItems().map((item) => ({\n      ...item,\n      selected: false,\n    }));\n  }\n\n  addGroup() {\n    console.log('in');\n    if (this.newGroupForm.valid) {\n      const selectedItems = this.groupItems.filter((item) => item.selected);\n      if (selectedItems.length > 0) {\n        const newProfile: ExportProfile = {\n          id: Date.now().toString(),\n          name: this.newGroupForm.get('name')?.value,\n          items: selectedItems,\n        };\n        this.exportService.addProfile(newProfile);\n        this.updateProfiles();\n        this.groupItems.forEach((item) => (item.selected = false));\n        this.newGroupForm.reset();\n        console.log('SELECTED');\n      }\n      console.log('VALID');\n    }\n  }\n\n  editProfile(profile: ExportProfile & { selected: boolean }) {\n    this.groupItems.forEach((item) => {\n      item.selected = profile.items.some(\n        (profileItem) => profileItem.id === item.id\n      );\n    });\n    this.removeProfile(profile);\n  }\n\n  removeProfile(profile: ExportProfile & { selected: boolean }) {\n    this.exportService.removeProfile(profile.id);\n    this.updateProfiles();\n  }\n\n  addOrUpdateOperation() {\n    if (\n      this.newOperation.name &&\n      this.newOperation.field1 &&\n      this.newOperation.field2\n    ) {\n      if (this.isEditingOperation) {\n        this.exportService.updateOperation(\n          this.newOperation.id,\n          this.newOperation\n        );\n      } else {\n        const operation: Operation = {\n          ...this.newOperation,\n          id: Date.now().toString(),\n        };\n        this.exportService.addOperation(operation);\n      }\n      this.updateGroupItems();\n      this.resetOperationForm();\n    }\n  }\n\n  editOperation(operation: ExportItem & { selected: boolean }) {\n    this.newOperation = { ...(operation as unknown as Operation) };\n    this.isEditingOperation = true;\n  }\n\n  removeOperation(operation: ExportItem & { selected: boolean }) {\n    this.exportService.removeOperation(operation.id);\n    this.updateGroupItems();\n  }\n\n  resetOperationForm() {\n    this.newOperation = {\n      id: '',\n      name: '',\n      field1: '',\n      operator: Operators.add,\n      field2: '',\n    };\n    this.isEditingOperation = false;\n  }\n\n  resetAll() {\n    this.exportService.resetAll();\n    this.initializeGroupItems();\n    this.updateProfiles();\n    this.resetOperationForm();\n    this.newGroupForm.reset();\n  }\n\n  exportData() {\n    const selectedProfiles = this.profiles.filter(\n      (profile) => profile.selected\n    );\n    if (selectedProfiles.length > 0) {\n      const exportedData = this.exportService.exportData(\n        this.data,\n        selectedProfiles\n      );\n      this.exportDataEvent.emit(exportedData);\n    } else {\n      console.log('No profiles selected for export');\n    }\n  }\n\n  onField1Change() {\n    this.newOperation.field2 = '';\n    this.newOperation.operator = this.isNumericField(this.newOperation.field1)\n      ? Operators.add\n      : Operators.concatenateSpace;\n  }\n\n  isNumericField(field: string): boolean {\n    return this.numericProperties.includes(field);\n  }\n\n  get availableOperators(): Operators[] {\n    return this.isNumericField(this.newOperation.field1)\n      ? this.operatorsNumeric\n      : this.operatorsString;\n  }\n\n  get availableFields2(): string[] {\n    return this.isNumericField(this.newOperation.field1)\n      ? this.numericProperties\n      : this.stringProperties;\n  }\n\n  toggleShowAllProfiles() {\n    this.showAllProfiles = !this.showAllProfiles;\n  }\n\n  toggleShowAllGroups() {\n    this.showAllGroups = !this.showAllGroups;\n  }\n}\n","<verben-card\n  width=\"24rem\"\n  borderRadius=\"1rem\"\n  [border]=\"'1px solid #D4A007'\"\n  bgColor=\"#FFFFFF\"\n  class=\"export-card\"\n>\n  <div card-header class=\"card-header\">\n    <h4 class=\"header-title\">Export</h4>\n    <button\n      class=\"reset-button\"\n      [style.color]=\"'#3479E9'\"\n      [style.background-color]=\"'transparent'\"\n      [style.border]=\"'none'\"\n      [style.cursor]=\"'pointer'\"\n      [style.font-size]=\"'12px'\"\n      (click)=\"resetAll()\"\n    >\n      Reset\n    </button>\n  </div>\n  <div card-body class=\"card-body\">\n    <section class=\"section\">\n      <div class=\"section-header\">\n        <h3 class=\"section-title\">Profiles</h3>\n        <verben-svg\n          icon=\"info\"\n          [width]=\"15\"\n          [height]=\"15\"\n          fill=\"grey\"\n        ></verben-svg>\n      </div>\n      <div *ngFor=\"let profile of visibleProfiles; let i = index\" class=\"item\">\n        <div class=\"item-label\">\n          <input\n            type=\"checkbox\"\n            [id]=\"'profile-' + i\"\n            [(ngModel)]=\"profile.selected\"\n          />\n          <label [for]=\"'profile-' + i\" class=\"checkbox-label\">\n            {{ profile.name }}\n          </label>\n        </div>\n        <div class=\"item-actions\">\n          <verben-svg\n            icon=\"edit\"\n            [width]=\"15\"\n            [height]=\"15\"\n            stroke=\"#3479E9\"\n            fill=\"white\"\n            (click)=\"editProfile(profile)\"\n          ></verben-svg>\n          <verben-svg\n            icon=\"delete\"\n            [width]=\"15\"\n            [height]=\"15\"\n            stroke=\"#E20000\"\n            (click)=\"removeProfile(profile)\"\n          ></verben-svg>\n        </div>\n      </div>\n      <div\n        *ngIf=\"profiles.length > 3\"\n        (click)=\"toggleShowAllProfiles()\"\n        class=\"show-more\"\n      >\n        <span>{{ showAllProfiles ? \"Show less\" : \"Show more\" }}</span>\n        <verben-svg\n          icon=\"chevron\"\n          [width]=\"8\"\n          [height]=\"6\"\n          fill=\"black\"\n          stroke=\"black\"\n        ></verben-svg>\n      </div>\n    </section>\n    <hr class=\"divider\" />\n    <section class=\"section\">\n      <div class=\"section-header\">\n        <h3 class=\"section-title\">Group</h3>\n        <verben-svg\n          icon=\"info\"\n          [width]=\"15\"\n          [height]=\"15\"\n          fill=\"grey\"\n        ></verben-svg>\n      </div>\n      <form [formGroup]=\"newGroupForm\" (ngSubmit)=\"addGroup()\">\n        <verbena-input\n          placeholder=\"Group name\"\n          border=\"1px solid #ccc\"\n          borderRadius=\"5px\"\n          textColor=\"black\"\n          width=\"100%\"\n          fontSize=\"11px\"\n          height=\"20px\"\n          pd=\"2px 4px !important\"\n          bgColor=\"transparent\"\n          [showBorder]=\"true\"\n          [showErrorMessage]=\"true\"\n          [errorPosition]=\"'bottom'\"\n          formControlName=\"name\"\n        ></verbena-input>\n      </form>\n      <div *ngFor=\"let item of visibleGroups; let i = index\" class=\"item\">\n        <div class=\"item-label\">\n          <input\n            type=\"checkbox\"\n            [id]=\"'group-' + i\"\n            [(ngModel)]=\"item.selected\"\n          />\n          <label [for]=\"'group-' + i\" class=\"checkbox-label\">\n            {{ item.name }}\n          </label>\n        </div>\n        <div class=\"item-actions\" *ngIf=\"item.type === 'operation'\">\n          <verben-svg\n            icon=\"edit\"\n            [width]=\"15\"\n            [height]=\"15\"\n            stroke=\"#3479E9\"\n            fill=\"white\"\n            (click)=\"editOperation(item)\"\n          ></verben-svg>\n          <verben-svg\n            icon=\"delete\"\n            [width]=\"15\"\n            [height]=\"15\"\n            stroke=\"#E20000\"\n            (click)=\"removeOperation(item)\"\n          ></verben-svg>\n        </div>\n      </div>\n\n      <div class=\"flex items-center justify-between\">\n        <button\n          *ngIf=\"groupItems.length > 3\"\n          (click)=\"toggleShowAllGroups()\"\n          class=\"show-more\"\n        >\n          <span>{{ showAllGroups ? \"Show less\" : \"Show more\" }}</span>\n          <verben-svg\n            icon=\"chevron\"\n            [width]=\"8\"\n            [height]=\"6\"\n            fill=\"black\"\n            stroke=\"black\"\n          ></verben-svg>\n        </button>\n        <button class=\"add-button\" (click)=\"addGroup()\">+ Add</button>\n      </div>\n    </section>\n    <hr class=\"divider\" />\n    <section class=\"section\">\n      <div class=\"section-header\">\n        <h3 class=\"section-title\">Operation</h3>\n        <verben-svg\n          icon=\"info\"\n          [width]=\"15\"\n          [height]=\"15\"\n          fill=\"grey\"\n        ></verben-svg>\n      </div>\n      <verbena-input\n        placeholder=\"Operation name\"\n        border=\"1px solid #ccc\"\n        borderRadius=\"5px\"\n        textColor=\"black\"\n        fontSize=\"11px\"\n        width=\"100%\"\n        height=\"20px\"\n        pd=\"2px 6px\"\n        bgColor=\"transparent\"\n        [showBorder]=\"true\"\n        [showErrorMessage]=\"true\"\n        [errorPosition]=\"'bottom'\"\n        [(ngModel)]=\"newOperation.name\"\n      ></verbena-input>\n      <div class=\"operation-grid\">\n        <verben-drop-down\n          width=\"'8rem'\"\n          height=\"'1.25rem'\"\n          placeholder=\"Select field\"\n          [options]=\"numericProperties.concat(stringProperties)\"\n          [(ngModel)]=\"newOperation.field1\"\n          (ngModelChange)=\"onField1Change()\"\n        >\n        </verben-drop-down>\n        <verben-drop-down\n          width=\"'8rem'\"\n          height=\"'1.25rem'\"\n          placeholder=\"Select operator\"\n          [options]=\"availableOperators\"\n          [(ngModel)]=\"newOperation.operator\"\n        >\n        </verben-drop-down>\n        <verben-drop-down\n          width=\"'8rem'\"\n          placeholder=\"Select field\"\n          [options]=\"availableFields2\"\n          [(ngModel)]=\"newOperation.field2\"\n        >\n        </verben-drop-down>\n      </div>\n      <button class=\"add-button ml-auto\" (click)=\"addOrUpdateOperation()\">\n        {{ isEditingOperation ? \"Update\" : \"+ Add\" }}\n      </button>\n    </section>\n\n    <section class=\"section\">\n      @if (dataFetchUrl()) {\n      <div class=\"section-header\">\n        <h3 class=\"section-title\">Record Size</h3>\n      </div>\n      }\n    </section>\n  </div>\n  <div card-footer class=\"card-footer\">\n    <button class=\"export-button\" (click)=\"exportData()\">Export</button>\n  </div>\n</verben-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataExportService } from './data-export.service';\nimport { DataExportComponent } from './data-export.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\nimport { CardModule } from 'verben-ng-ui/src/lib/components/card';\nimport { DropDownModule } from 'verben-ng-ui/src/lib/components/drop-down';\nimport { TooltipModule } from 'verben-ng-ui/src/lib/components/tooltip';\nimport { VerbenaInputModule } from 'verben-ng-ui/src/lib/verbena-input';\n\n@NgModule({\n  declarations: [DataExportComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    SvgModule,\n    CardModule,\n    DropDownModule,\n    TooltipModule,\n    VerbenaInputModule,\n  ],\n  providers: [DataExportService],\n  exports: [DataExportComponent],\n})\nexport class DataExportModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DataExportService"],"mappings":"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"}