@sd-angular/core 1.3.255 → 1.3.257
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.
- package/bundles/sd-angular-core-table.umd.js +2 -1
- package/bundles/sd-angular-core-table.umd.js.map +1 -1
- package/bundles/sd-angular-core-table.umd.min.js +1 -1
- package/bundles/sd-angular-core-table.umd.min.js.map +1 -1
- package/esm2015/table/src/lib/services/table-filter/table-filter.model.js +1 -1
- package/esm2015/table/src/lib/table.component.js +3 -2
- package/fesm2015/sd-angular-core-table.js +2 -1
- package/fesm2015/sd-angular-core-table.js.map +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.3.255.tgz → sd-angular-core-1.3.257.tgz} +0 -0
- package/table/src/lib/services/table-filter/table-filter.model.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-table.js","sources":["../../../../projects/sd-core/table/src/lib/directives/sd-table-cell-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-filter-def.directive.ts","../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/table/src/lib/components/table-filter/table-filter.component.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-expand-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-footer-def.directive.ts","../../../../projects/sd-core/table/src/lib/services/table-configuration.service.ts","../../../../projects/sd-core/table/src/lib/models/table-item.model.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.service.ts","../../../../projects/sd-core/table/src/lib/components/popup-configuration/popup-configuration.component.ts","../../../../projects/sd-core/table/src/lib/components/popup-export/popup-export.component.ts","../../../../projects/sd-core/table/src/lib/table.component.ts","../../../../projects/sd-core/table/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/table/src/lib/models/table-column.model.ts","../../../../projects/sd-core/table/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/table/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/table/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/table/src/lib/table.module.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.model.ts","../../../../projects/sd-core/table/sd-angular-core-table.ts"],"sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableCellDef]'\r\n})\r\nexport class SdTabelCellDefDirective {\r\n @Input() sdTableCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableFilterDef]'\r\n})\r\nexport class SdTableFilterDefDirective {\r\n @Input() sdTableFilterDef: string;\r\n defaultShowing: boolean;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator, SdTableColumn } from './table-column.model';\r\n\r\nexport interface ISdTableConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n defaultOperator?:{\r\n [key in SdTableColumn['type']]?:SdFilterOperator\r\n }\r\n };\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_TABLE_CONFIG: ISdTableConfiguration = {\r\n paginate: {\r\n pageSize: 20,\r\n pages: [20, 50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.configuration');\r\n","import { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableExternalFilter, SdTableFilterRegister } from '../../services/table-filter/table-filter.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild(SdModal) modal: SdModal;\r\n #filterRegister: SdTableFilterRegister;\r\n @Input() set filterRegister(value: SdTableFilterRegister) {\r\n this.#filterRegister = value;\r\n }\r\n @Input() externalFilters: SdTableExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdTableColumn[] = [];\r\n columnFilter: Record<string, any> = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n\r\n @Input() filterDefs: SdTableFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.filterDef));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onApply = () => {\r\n this.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onClear() {\r\n this.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdTableOptionFilter,\r\n SdTableExternalFilter,\r\n SdTableFilterRegister,\r\n} from '../../services/table-filter/table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'sd-table-filter',\r\n templateUrl: './table-filter.component.html',\r\n styleUrls: ['./table-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTableFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n filter: Readonly<SdTableOptionFilter>;\r\n @Input('filter') set _filter(filter: SdTableOptionFilter) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdTableColumn[] = [];\r\n externalFilters: SdTableExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdTableExternalFilter[]) {\r\n this.externalFilters = value || [];\r\n }\r\n @Input() filterDefs: SdTableFilterDefDirective[] = [];\r\n filterRegister: SdTableFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdTableFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdTableFilterRegister>(null);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n\r\n constructor(private ref: ChangeDetectorRef, private deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.filterRegisterChange.pipe(startWith(this.filterRegister)).subscribe(filterRegister => {\r\n if (this.filterRegister) {\r\n this.#subscription.add(\r\n this.filterRegister.configuration.observer.subscribe(configuration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n this.inlineColumn = inlineColumn;\r\n this.inlineExternal = inlineExternal;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.filterRegister.value.observer.subscribe(value => {\r\n const { columnFilter, externalFilter, filterDef } = value;\r\n this.columnFilter = columnFilter;\r\n this.externalFilter = externalFilter;\r\n this.filterDef = filterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdTableColumn | SdTableExternalFilter) => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n };\r\n\r\n updateFilter = () => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n notReload: true\r\n });\r\n };\r\n\r\n open = () => {\r\n this.popupFilter.open();\r\n };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableExpandDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdTableFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport {\r\n SdColumnConfiguration,\r\n SdTableConfiguration,\r\n SdTableConfigurationResult,\r\n} from '../models/table-option-config.model';\r\nimport { TABLE_CONFIG, ISdTableConfiguration } from '../models/table-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdTableConfigurationService {\r\n #COLUMNS = {\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup',\r\n };\r\n #prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) { }\r\n\r\n #getSetting = (option: SdTableOption): SdSetting<SdTableConfiguration> => {\r\n // Nếu không có key thì không lấy được setting\r\n if (!option?.key) {\r\n return null;\r\n }\r\n // Key của setting là tổ hợp từ key truyền vào và prefix để tránh chung key với các tính năng khác cũng dùng key trong core table\r\n return this.settingService.create<SdTableConfiguration>(\r\n { prefix: this.#prefix, key: option.key },\r\n {\r\n default: this.#default(option),\r\n }\r\n );\r\n };\r\n\r\n loadConfiguration = (option: SdTableOption) => {\r\n // Nếu không có key thì trả về thông tin mặc định\r\n if (!option?.key) {\r\n return this.#default(option);\r\n }\r\n const setting = this.#getSetting(option);\r\n return setting.get();\r\n };\r\n\r\n loadConfigurationResult = (option: SdTableOption, configuration: SdTableConfiguration) => {\r\n const result: SdTableConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false,\r\n };\r\n const { selector, commands, group } = option || {};\r\n if (selector?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns\r\n ?.filter(col => !col.invisible)\r\n .forEach(col => {\r\n // Kiểm tra column trong config có còn được khai báo trong option\r\n // Nếu không thì ẩn column đó đi\r\n const column = option?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n }\r\n }\r\n });\r\n // Nếu có thêm các column mới, chèn các column đó vào cuối\r\n option?.columns?.filter(column=> !configuration?.columns?.some(e=>e.origin.field === column.field))\r\n .forEach(column =>{\r\n result.firstColumns.push({\r\n ...column,\r\n title: column.title,\r\n width: column.width,\r\n });\r\n result.firstHeaders.push(column.field);\r\n result.displayedColumns.push(column.field);\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n }\r\n })\r\n if (option.expand) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n };\r\n\r\n init = (gridOption: SdTableOption) => {\r\n return this.#getSetting(gridOption);\r\n };\r\n\r\n #default = (gridOption: SdTableOption): SdTableConfiguration => {\r\n const columns: SdColumnConfiguration[] =\r\n gridOption?.columns\r\n ?.filter(e => !e.hidden)\r\n .map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible,\r\n },\r\n invisible: e.invisible,\r\n fixed: false,\r\n })) || [];\r\n return {\r\n columns,\r\n };\r\n };\r\n}\r\n","import * as hash from 'object-hash';\r\nimport { SdTableColumn } from './table-column.model';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\r\nexport interface SdTableMetaSelector {\r\n selectable?: boolean;\r\n isSelected?: boolean;\r\n actions?: string[];\r\n}\r\n\r\nexport interface SdTableMetaExpand {\r\n isExpanded?: boolean;\r\n isExpanding?: boolean;\r\n data?: any;\r\n}\r\n\r\nexport interface SdTableDisplay {\r\n tooltip: string;\r\n badge: {\r\n type: 'round' | 'circle' | 'icon';\r\n color: SdBadgeColor;\r\n icon: string;\r\n };\r\n cellStyle: Record<string, string>;\r\n data: string;\r\n isHtml: boolean;\r\n click: () => void;\r\n}\r\n\r\nexport interface SdTableMeta<T> {\r\n id?: string;\r\n display: Record<string, SdTableDisplay>;\r\n selector?: SdTableMetaSelector;\r\n expand?: SdTableMetaExpand;\r\n group?: {\r\n htmlTemplate?: string;\r\n items?: SdTableItem<T>[];\r\n };\r\n}\r\n\r\nexport interface SdTableItem<T = any> {\r\n meta: SdTableMeta<T>;\r\n data: T;\r\n}\r\n\r\nexport const MapToSdTableItem = <T = any>(item: T): SdTableItem<T> => ({\r\n data: item,\r\n meta: {\r\n id: hash(item),\r\n display: {},\r\n expand: {\r\n isExpanding: false,\r\n isExpanded: false,\r\n },\r\n group: {},\r\n selector: { actions: [], isSelected: false, selectable: false },\r\n },\r\n});\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdTableExternalFilter,\r\n SdTableFilterConfiguration,\r\n SdTableOptionFilter,\r\n SdTableFilterRegister,\r\n SdTableFilterValue,\r\n} from './table-filter.model';\r\nimport { SdFilterOperator, SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdTableFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, SdTableFilterRegister> = {};\r\n constructor(private settingService: SdSettingService) {}\r\n register = (\r\n filter: SdTableOptionFilter,\r\n args: {\r\n id: string;\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n columnOperator?:Record<string,SdFilterOperator>;\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdTableFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdTableFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdTableFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdTableFilterConfiguration>): SdTableFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdTableFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdTableFilterValue>): SdTableFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef, notReload } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!value?.notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdTableFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n columnOperator?:Record<string,SdFilterOperator>\r\n }): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const columnOperator:Record<string,SdFilterOperator> = args.columnOperator || {}\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n if (item?.filter?.operator?.enable && item?.filter?.operator?.default){\r\n columnOperator[item.field]=item.filter.operator.default;\r\n }\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdTableFilterDef] = undefined;\r\n }\r\n\r\n\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n // columnOperator\r\n columnOperator,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdTableFilterDef] = configuration?.inlineFilterDef?.[item.sdTableFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n columnOperator?:Record<string, SdFilterOperator>\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const columnOperator:Record<string, SdFilterOperator> = args.columnOperator || {};\r\n const { columns, externalFilters, filterDefs} = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n if (item?.filter?.operator?.enable && item?.filter?.operator?.default){\r\n columnOperator[item.field]=item.filter.operator.default;\r\n }\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdTableFilterDef] = value?.filterDef?.[item.sdTableFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n //column Operator\r\n columnOperator\r\n };\r\n };\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableConfigurationResult, SdTableConfiguration } from '../../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../../services/table-configuration.service';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdSetting } from '@sd-angular/core/setting';\r\n\r\n@Component({\r\n selector: 'sd-popup-configuration',\r\n templateUrl: './popup-configuration.component.html',\r\n styleUrls: ['./popup-configuration.component.scss'],\r\n})\r\nexport class SdPopupConfiguration implements OnInit {\r\n @Input() tableOption: SdTableOption;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdTableColumn>;\r\n readonly changes = new EventEmitter<SdTableConfigurationResult>();\r\n #setting: SdSetting<SdTableConfiguration>;\r\n configuration: SdTableConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private tableConfigurationService: SdTableConfigurationService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#setting = this.tableConfigurationService.init(this.tableOption);\r\n this.configuration = this.#setting.get();\r\n this.modal.open();\r\n };\r\n\r\n onSave = () => {\r\n this.#setting.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n };\r\n\r\n onReset = async () => {\r\n this.notifyService.confirm('Xác nhận đưa tất cả thiết lập về mặc định').then(() => {\r\n this.#setting.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n };\r\n\r\n dropTable(event: CdkDragDrop<SdTableColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n AfterViewInit,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n Input,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\n\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\n\r\nimport { SdLoadingService } from '@sd-angular/core/loading';\r\n\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatSelectionList } from '@angular/material/list';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdExportFile, SdExportService, SdExportColumn } from '@sd-angular/core/export';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdTableColumn, SdTableOption } from '../../models';\r\nimport { SdTableConfigurationResult } from '../../models/table-option-config.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-export',\r\n templateUrl: './popup-export.component.html',\r\n styleUrls: ['./popup-export.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupExport implements OnInit, AfterViewInit {\r\n tableOption: SdTableOption;\r\n columns: SdExportColumn[] = [];\r\n templateName: string;\r\n enableCreating = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('listGroups') listGroups: MatSelectionList;\r\n\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n files: SdExportFile[] = [];\r\n\r\n @Output() export = new EventEmitter<{ file: SdExportFile; columns: SdExportColumn[]; isCSV?: boolean }>();\r\n form = new FormGroup({});\r\n\r\n @Input('tableOption') set _tableOption(option: SdTableOption) {\r\n this.tableOption = option;\r\n this.columns = this.#getExportableColumns();\r\n }\r\n @Input() configuration: SdTableConfigurationResult;\r\n private get key(): string {\r\n const prefix = '93889e78-f971-4a1d-8c73-fe2321af9233';\r\n if (!this.tableOption?.export?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: this.tableOption?.export?.key,\r\n });\r\n }\r\n\r\n private get tableColumns() {\r\n const columns: SdExportColumn[] = [];\r\n this.tableOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns.map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width,\r\n }));\r\n }\r\n private get additionalColumns() {\r\n return (this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || []).map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width,\r\n }));\r\n }\r\n\r\n #getExportableColumns = (): SdExportColumn[] => {\r\n return [...this.tableColumns, ...this.additionalColumns];\r\n };\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n open = async () => {\r\n if (!this.key) {\r\n this.exportDefault();\r\n return;\r\n }\r\n this.loadFiles(null);\r\n this.selected = {};\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n };\r\n\r\n #getExportColumns = () => {\r\n if (this.configuration) {\r\n const columns = [...this.tableColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdTableColumn[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.tableOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children') {\r\n return [...first, column];\r\n }\r\n return [...first, ...column.children];\r\n }, []);\r\n const results = displayColumns\r\n .map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field),\r\n }))\r\n .filter(e => !!e.data)\r\n .map(e => e.data);\r\n return [...results, ...this.additionalColumns];\r\n } else {\r\n return this.columns;\r\n }\r\n };\r\n\r\n exportDefault = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: false,\r\n });\r\n };\r\n\r\n exportCSV = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: true,\r\n });\r\n };\r\n\r\n loadFiles = async (group: string = null) => {\r\n this.files = await this.exportService.filesInFolder({\r\n key: this.key,\r\n group,\r\n });\r\n this.ref.markForCheck();\r\n };\r\n\r\n #initTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateTemplate({\r\n fileName: fileName || this.tableOption?.export?.fileName,\r\n columns: this.columns,\r\n sheets,\r\n });\r\n };\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n await this.#initTemplate().finally(this.loadingService.stop);\r\n };\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption?.export?.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.tableOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets,\r\n },\r\n });\r\n };\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns,\r\n });\r\n this.ref.detectChanges();\r\n };\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n });\r\n if (file) {\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n };\r\n\r\n createTemplate = async () => {\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(`Vui lòng chọn cột dữ liệu để xuất`);\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName,\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n };\r\n\r\n templateNameValidator = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n };\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport { SdTableFilterRegister, SdTableFilterRequest } from './services/table-filter/table-filter.model';\r\nimport { SdTableOption } from './models/table-option.model';\r\nimport { TABLE_CONFIG, DEFAULT_TABLE_CONFIG, ISdTableConfiguration } from './models/table-configuration.model';\r\nimport { Subscription, isObservable, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdFilterOperator, SdTableColumn, SdTableColumnLazyValues, SdTableColumnValues } from './models/table-column.model';\r\nimport { SdTabelCellDefDirective } from './directives/sd-table-cell-def.directive';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdTableFilter } from './components/table-filter/table-filter.component';\r\nimport { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdTableConfigurationResult } from './models/table-option-config.model';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { SdTableOptionExportColumn } from './models/table-option-export.model';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { MapToSdTableItem, SdTableItem } from './models/table-item.model';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\nimport { SdLoadingService } from '@sd-angular/core/loading';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\n\r\n@Component({\r\n selector: 'sd-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\r\n state('expanded', style({ height: '*', visibility: 'visible' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class SdTable<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild(MatTable) table: MatTable<any>;\r\n @ViewChild(SdPopupConfiguration) popupConfiguration: SdPopupConfiguration;\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdTableFilterRegister;\r\n key = uuid.v4();\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n @ViewChild(SdTableFilter) tableFilter: SdTableFilter;\r\n tableOption: SdTableOption<T>;\r\n configuration: SdTableConfigurationResult;\r\n @Input() set option(option: SdTableOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.tableOption = option;\r\n this.#loadCompleted = false;\r\n const setting = this.tableConfigurationService.init(this.tableOption);\r\n if (setting) {\r\n this.#subscription.add(\r\n setting.observer.pipe(startWith(setting.subject.getValue())).subscribe(() => {\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, setting.get());\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.loadingService.start();\r\n this.ref.detectChanges();\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field)))\r\n .then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\r\n })\r\n .finally(() => {\r\n this.loadingService.stop();\r\n this.ref.detectChanges();\r\n });\r\n })\r\n );\r\n } else {\r\n const configuration = this.tableConfigurationService.loadConfiguration(this.tableOption);\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, configuration);\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.loadingService.start();\r\n this.ref.detectChanges();\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field)))\r\n .then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\r\n })\r\n .finally(() => {\r\n this.loadingService.stop();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n }\r\n }\r\n #optionChanges = new Subject<SdTableOption>();\r\n\r\n #localItems: SdTableItem<T>[] = [];\r\n items: SdTableItem<T>[] = [];\r\n selectedTableItems: SdTableItem<T>[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdTabelCellDefDirective) sdCellDefs = new QueryList<SdTabelCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdTabelCellDefDirective;\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective;\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdTableFilterDefDirective) sdFilterDefs = new QueryList<SdTableFilterDefDirective>();\r\n filterDefs: SdTableFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n cacheValues: Record<string, any[]> = {};\r\n #cacheObjValues: Record<string, Record<string, string>> = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n @Inject(TABLE_CONFIG)\r\n @Optional()\r\n public tableConfiguration: ISdTableConfiguration,\r\n private tableConfigurationService: SdTableConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private gridFilterService: SdTableFilterService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.#reload\r\n .pipe(\r\n debounceTime(200),\r\n switchMap(async data => {\r\n const filterInfo = this.#getFilter();\r\n const result = await this.#load(filterInfo, !this.#loadCompleted || data.force);\r\n this.#loadCompleted = true;\r\n return result;\r\n })\r\n )\r\n .subscribe(this.#render)\r\n );\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(\r\n combineLatest([\r\n this.#optionChanges.pipe(startWith(this.tableOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs || []) {\r\n if (cellDef.sdTableCellDef) {\r\n this.cellDef[cellDef.sdTableCellDef] = cellDef;\r\n }\r\n }\r\n };\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n };\r\n\r\n #initFooterDef = () => {\r\n // NOTE: ContentChildren nên subcribe trong AfterViewInit\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdTableFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdTableFooterDef] = footerDef;\r\n }\r\n }\r\n };\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true,\r\n };\r\n };\r\n\r\n #initConfiguration = (option: SdTableOption) => {\r\n // Init pagination\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.tableConfiguration?.paginate?.pageSize ?? DEFAULT_TABLE_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.tableConfiguration?.paginate?.pages ?? DEFAULT_TABLE_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false,\r\n };\r\n for (const column of option.columns || []) {\r\n if (column.filter?.operator?.enable) {\r\n if (!column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n\r\n this.columnOperator[column.field] = this.tableConfiguration?.filter?.operator?.defaultOperator?.[column.type] || undefined;\r\n if (column.filter.operator.default && column.filter.operator.list.some(el => el === column.filter.operator.default)) {\r\n this.columnOperator[column.field] = column.filter.operator.default;\r\n }\r\n }\r\n }\r\n return option;\r\n };\r\n\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.tableOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.tableOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.tableOption?.columns,\r\n externalFilters: this.tableOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n columnOperator: this.columnOperator,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator || {};\r\n this.columnFilter = columnFilter;\r\n if (!notReload) {\r\n if (this.#paginator) {\r\n this.#paginator.pageIndex = 0;\r\n }\r\n this.#reload.next({\r\n force: false,\r\n });\r\n }\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n };\r\n\r\n #filterLocal = (localItems: SdTableItem<T>[], filterInfo: SdTableFilterRequest) => {\r\n const { columns } = this.tableOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(tableItem => {\r\n const item = tableItem.data;\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field as string] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values' || type === 'lazy-values') {\r\n const columnType = column as SdTableColumnValues<T> | SdTableColumnLazyValues<T>;\r\n const isMultiple = ['MULTIPLE'].includes(columnType.option.selection);\r\n if (isMultiple) {\r\n const columnValues: string[] =\r\n (item[field] as any).map(i => (i[columnType.option.valueField] ?? '').toString().trim().toLowerCase()) ?? [];\r\n const filterValues: string[] = rawColumnFilter[field as string]?.map(v => (v ?? '').toString().trim().toLowerCase());\r\n if (filterValues?.length && filterValues.every(fv => !columnValues.includes(fv))) {\r\n return false;\r\n }\r\n } else {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate || toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((tableItemCurrent, tableItemNext) => {\r\n const data = tableItemCurrent.data;\r\n const next = tableItemNext.data;\r\n if (type === 'number') {\r\n return (data[field as string] || 0) - (next[field as string] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(data[field as string] || '').getTime();\r\n const d2 = new Date(data[field as string] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (data[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length,\r\n };\r\n };\r\n\r\n #getFilter = (): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.tableOption?.paginate?.pageSize || 50,\r\n };\r\n };\r\n\r\n #load = async (filterReq: SdTableFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n this.ref.detectChanges();\r\n if (this.tableOption.type === 'server') {\r\n const { items } = this.tableOption;\r\n const data = await items(filterReq).catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return {\r\n items: [] as T[],\r\n total: 0,\r\n };\r\n });\r\n return {\r\n items: await this.#format(data?.items, this.tableOption.columns).finally(() => {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }),\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.tableOption;\r\n const results = items();\r\n let data: T[] = [];\r\n if (results instanceof Promise) {\r\n data = await results.catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return [];\r\n });\r\n } else {\r\n data = results;\r\n }\r\n if (!Array.isArray(data)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n data = [];\r\n }\r\n this.#localItems = await this.#format(data, this.tableOption.columns);\r\n }\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n };\r\n\r\n #render = async (args: { items: SdTableItem<T>[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n await this.tableOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n setTimeout(() => {\r\n this.table?.updateStickyColumnStyles();\r\n }, 0);\r\n };\r\n\r\n reload = async (force: boolean = true) => {\r\n this.tableFilter?.updateFilter?.();\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.#render(data);\r\n };\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.tableOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.tableOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[]; total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.tableOption.type === 'server') {\r\n let result = this.tableOption.items(filterInfo);\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.tableOption.items === 'function') {\r\n const results = this.tableOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.tableOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n };\r\n\r\n #allColumns = (): SdTableColumn[] => {\r\n const columns: SdTableColumn[] = [];\r\n this.tableOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n };\r\n\r\n #allExportedColumns = (): SdTableOptionExportColumn[] => {\r\n return this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n onExport = async (args?: { file?: SdExportFile; columns?: SdExportColumn[]; isCSV?: boolean }) => {\r\n const { file, isCSV } = { ...args };\r\n try {\r\n let columns = this.#getExportColumns(args?.columns);\r\n const pageSize = this.tableOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.tableOption?.export?.batch || 1;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\r\n }\r\n if (this.tableOption.export?.mapping) {\r\n const results = this.tableOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 100.0) / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item, {\r\n isExport: true,\r\n });\r\n if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n obj[column.field] = obj[column.field] ?? '';\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n // Nếu là date thì convert theo đúng format ISO\r\n obj[column.field] = Date.toFormat(date, 'MM/dd/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'MM/dd/yyyy HH:mm:ss');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm');\r\n } else if (column.type === 'values' || column.type === 'lazy-values') {\r\n const value = item[column.field];\r\n if (column.type === 'lazy-values' && typeof column.option.mapValue === 'function') {\r\n const val = column.option.mapValue(value, item);\r\n const vals = (Array.isArray(val) ? val : [val]).filter(e => !!e?.toString());\r\n obj[column.field] = vals\r\n .map(val => this.#cacheObjValues[column.field]?.[val]?.[column.option.displayField] || val)\r\n ?.join(', ');\r\n } else {\r\n const vals = (Array.isArray(value) ? value : [value]).filter(e => !!e?.toString());\r\n obj[column.field] = vals\r\n .map(val => this.#cacheObjValues[column.field]?.[val]?.[column.option.displayField] || val)\r\n ?.join(', ');\r\n }\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (file?.filePath) {\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items,\r\n });\r\n return;\r\n }\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.tableOption?.export?.fileName,\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.tableOption?.export?.fileName,\r\n sheets,\r\n });\r\n return;\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n #getExportColumns = (columns?: SdExportColumn[]) => {\r\n let tableColumns: SdExportColumn[] = [];\r\n // Lấy column từ option\r\n this.tableOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n tableColumns.push(childColumn);\r\n });\r\n return;\r\n }\r\n tableColumns.push({\r\n field: column.field,\r\n title: column.title,\r\n description: column.description,\r\n width: column.width,\r\n });\r\n });\r\n // Lấy columns từ configuration\r\n if (this.configuration) {\r\n const columns = [...tableColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdTableColumn[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.tableOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children') {\r\n return [...first, column];\r\n }\r\n const children = column.children;\r\n return [...first, ...children];\r\n }, []);\r\n tableColumns = displayColumns\r\n .map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field),\r\n }))\r\n .filter(e => !!e.data)\r\n .map(e => e.data);\r\n }\r\n // Chỉ lấy các columns được thiết lập\r\n const columnFields = columns?.map(e => e.field) || [];\r\n return [...tableColumns, ...(this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || [])].filter(\r\n column => !columnFields?.length || columnFields.includes(column.field)\r\n );\r\n };\r\n\r\n exportExcel = () => {\r\n this.onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.onExport({ isCSV: true });\r\n };\r\n\r\n onFilterChange = () => {\r\n this.tableFilter?.updateFilter?.();\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator || {},\r\n columnFilter: this.columnFilter,\r\n });\r\n };\r\n\r\n onExpand = async (rowData: SdTableItem<T>) => {\r\n if (this.tableOption.expand?.always) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanding) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanded) {\r\n rowData.meta.expand.isExpanded = false;\r\n return;\r\n }\r\n const data = this.tableOption?.expand?.onExpand?.(rowData.data);\r\n if (!this.tableOption.expand?.multiple) {\r\n this.items.forEach(item => (item.meta.expand.isExpanding = item.meta.expand.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.meta.expand.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.meta.expand.data = res;\r\n rowData.meta.expand.isExpanded = true;\r\n })\r\n .finally(() => (rowData.meta.expand.isExpanding = false));\r\n } else {\r\n rowData.meta.expand.data = data;\r\n rowData.meta.expand.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdTableItem<T>) => {\r\n if (rowData.meta.group?.items?.length) {\r\n rowData.meta.group.items.forEach(e => (e.meta.selector.isSelected = rowData.meta.selector.isSelected));\r\n this.tableOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.tableOption.selector?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.tableOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.meta.selector.selectable && (!this.tableOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.tableOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.data));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdTableItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedTableItems = this.items.filter(item => item.meta.selector.isSelected);\r\n this.ref.detectChanges();\r\n };\r\n\r\n clearFilter = () => {\r\n this.filterRegister.value.remove();\r\n };\r\n\r\n setFilter = (args: { columnFilter?: Record<string, any>; externalFilter?: Record<string, any>; filterDef?: Record<string, any> }) => {\r\n const { columnFilter, externalFilter, filterDef } = args || {};\r\n if (columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\r\n };\r\n\r\n get dataItems(): T[] {\r\n return this.items.map(item => item.data);\r\n }\r\n\r\n get selectedItems(): T[] {\r\n return this.selectedTableItems.map(item => item.data);\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n #loadValues = async (columns: SdTableColumn[]) => {\r\n const promises: Promise<{\r\n key: string;\r\n valueField: string;\r\n displayField: string;\r\n data: any[];\r\n }>[] = [];\r\n for (const column of columns) {\r\n if (column.type === 'values' && !this.cacheValues[column.field]) {\r\n if (typeof column.option.items === 'function') {\r\n promises.push(\r\n column.option\r\n .items()\r\n .then(data => ({\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: Array.isArray(data) ? data : [],\r\n }))\r\n .catch(err => {\r\n console.error(err);\r\n return {\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: [],\r\n };\r\n })\r\n );\r\n } else {\r\n this.cacheValues[column.field] = column.option.items.map(e => ({\r\n [column.option.valueField]: e?.[column.option.valueField],\r\n [column.option.displayField]: e?.[column.option.displayField],\r\n }));\r\n this.#cacheObjValues[column.field] = Array.toObject(this.cacheValues[column.field], column.option.valueField);\r\n }\r\n }\r\n }\r\n if (promises.length) {\r\n const results = await Promise.all(promises);\r\n for (const result of results) {\r\n this.cacheValues[result.key] = result.data.map(e => ({\r\n [result.valueField]: e?.[result.valueField],\r\n [result.displayField]: e?.[result.displayField],\r\n }));\r\n this.#cacheObjValues[result.key] = Array.toObject(this.cacheValues[result.key], result.valueField);\r\n }\r\n }\r\n };\r\n\r\n #format = async <T = any>(rawItems: T[], columns: SdTableColumn[]) => {\r\n const items = rawItems.map(MapToSdTableItem);\r\n for (const column of columns) {\r\n // Clickable\r\n const { field, cellStyle, click, tooltip, htmlTemplate, transform } = column;\r\n if (!transform && !htmlTemplate && column.type === 'lazy-values' && typeof column.option.views === 'function') {\r\n const {\r\n option: { views, mapValue },\r\n } = column;\r\n this.#cacheObjValues[field] = this.#cacheObjValues[field] || {};\r\n const values = items\r\n .map(item => {\r\n if (typeof mapValue === 'function') {\r\n return mapValue(item.data?.[field], item.data);\r\n }\r\n return item.data?.[field];\r\n })\r\n .filter(val => !!val?.toString())\r\n .reduce<string[]>((current, next) => [...current, ...(Array.isArray(next) ? next : [next])], [])\r\n .filter(val => !Object.keys(this.#cacheObjValues[field]).includes(val))\r\n .union();\r\n\r\n if (values.length) {\r\n const lazyItems: any[] = (\r\n await views(values).catch(err => {\r\n console.error(err);\r\n return [];\r\n })\r\n )\r\n .filter(item => values.includes(item?.[column.option.valueField]))\r\n .map(e => ({\r\n [column.option.valueField]: e?.[column.option.valueField],\r\n [column.option.displayField]: e?.[column.option.displayField],\r\n }));\r\n Object.assign(this.#cacheObjValues[field], Array.toObject(lazyItems, column.option.valueField) || {});\r\n }\r\n }\r\n for (const item of items) {\r\n const rowData = item.data;\r\n const value = rowData?.[field];\r\n item.meta.display[field] = {\r\n badge: undefined,\r\n cellStyle: column.type === 'number' ? { 'text-align': 'right!important' } : undefined,\r\n data: value,\r\n isHtml: false,\r\n tooltip: typeof tooltip === 'function' ? tooltip(value, rowData) : undefined,\r\n click: typeof click === 'function' ? () => click(value, rowData) : undefined,\r\n };\r\n const display = item.meta.display[field];\r\n // Display\r\n if (typeof htmlTemplate === 'function') {\r\n display.isHtml = true;\r\n display.data = htmlTemplate(value, rowData);\r\n } else if (typeof transform === 'function') {\r\n const newValue = transform(value, rowData);\r\n if (newValue instanceof Promise) {\r\n display.data = await newValue;\r\n } else {\r\n display.data = newValue;\r\n }\r\n } else {\r\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'time') {\r\n const date = Date.toFormat(value, 'dd/MM/yyyy');\r\n let time = Date.toFormat(value, 'HH:mm:ss');\r\n if (time?.endsWith('00')) {\r\n time = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n if (column.type === 'datetime') {\r\n display.isHtml = true;\r\n display.data = `<span class=\"d-block T14R text-black400\">${time}</span><span class=\"d-block T14R\">${date}</span>`;\r\n } else {\r\n display.data = date;\r\n }\r\n }\r\n if (column.type === 'time') {\r\n display.data = time;\r\n }\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n if (column.type === 'lazy-values' && typeof column.option.mapValue === 'function') {\r\n const val = column.option.mapValue(value, rowData);\r\n const vals = (Array.isArray(val) ? val : [val]).filter(e => !!e?.toString());\r\n display.data = vals.map(val => this.#cacheObjValues[field]?.[val]?.[column.option.displayField] || val)?.join(', ');\r\n } else {\r\n const vals = (Array.isArray(value) ? value : [value]).filter(e => !!e?.toString());\r\n display.data = vals.map(val => this.#cacheObjValues[field]?.[val]?.[column.option.displayField] || val)?.join(', ');\r\n }\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n display.data = Number.toVNCurrency(value);\r\n }\r\n if (column.type === 'bool') {\r\n const { option } = column;\r\n if (value !== undefined && value !== null && value !== '') {\r\n display.data = value === true ? option?.displayOnTrue || 'True' : option?.displayOnFalse || 'False';\r\n } else {\r\n display.data = null;\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n display.badge = {\r\n type: !column?.badgeType ? 'icon' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column.badgeIcon?.(value, rowData),\r\n };\r\n } else if (column.type === 'bool') {\r\n display.badge = {\r\n type: 'circle',\r\n color: !!value ? 'success' : 'danger',\r\n icon: null,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n return items;\r\n };\r\n\r\n onOperatorChange = (column: SdTableColumn, operator: SdFilterOperator) => {\r\n this.tableOption?.filter?.operatorChange?.(column, operator);\r\n };\r\n\r\n trackBy = (index: number, item: SdTableItem) => {\r\n return item.meta.id;\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand, SdTableCommandNormal } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: SdTableItem, commands: SdTableCommand[]): Promise<SdTableCommand[]> {\r\n const results: SdTableCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item.data);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdTableCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item.data);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandDisable',\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: SdTableItem, command: SdTableCommand): boolean {\r\n if ('disabled' in command) {\r\n const { disabled } = command;\r\n if (typeof disabled === 'boolean') {\r\n return disabled;\r\n }\r\n return disabled(item.data);\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: SdTableItem): string {\r\n if (!command?.icon) {\r\n return undefined;\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item.data);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: SdTableItem): string {\r\n if (!command?.title) {\r\n return undefined;\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item.data);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableExternalFilter } from '../services/table-filter/table-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdTableExternalFilter[], field?: string): SdTableExternalFilter[] {\r\n const results: SdTableExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdTableColumn[], field?: string): SdTableColumn[] {\r\n const results: SdTableColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTableCommand } from '../../models/table-command.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-command',\r\n templateUrl: './desktop-command.component.html',\r\n styleUrls: ['./desktop-command.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCommand {\r\n @Input() item: SdTableItem;\r\n @Input() commands: SdTableCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdTableColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableItem } from '../models/table-item.model';\r\nimport { SdTableAction, SdTableActionNormal } from '../models/table-option-selector.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdTableAction): SdTableAction => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: SdTableItem[], actions: SdTableAction[]): SdTableAction[] => {\r\n const results: SdTableAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n const children: SdTableActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n children.push(childAction);\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n const key = hash(action);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdTableItem[], rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.meta.selector.selectable = true;\r\n return false;\r\n }\r\n rowData.meta.selector.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.meta.selector.selectable;\r\n }\r\n // Lọc các action theo selectedItems hiện tại\r\n const availableActions = actions.filter(action => {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n const key = hash(action);\r\n return selectedItems.every(e => e.meta.selector.actions.includes(key));\r\n }\r\n });\r\n // Kiểm tra rowData có action nào thỏa hay ko, nếu ko thì disabled\r\n for (const action of availableActions) {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n if(rowData.meta.selector.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.meta.selector.actions.includes(hash(action))) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdTableItem[], selection: SdTableOptionSelector): Promise<boolean> => {\r\n const { actions } = selection;\r\n if (!actions?.length) {\r\n return true;\r\n }\r\n if (!items.length) {\r\n return false;\r\n }\r\n if (actions.some(e => ('children' in e && e.children.some(e1 => e1.isGrouped)) || e.isGrouped)) {\r\n return false;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n const first = items.find(t => t.meta.selector.actions?.length);\r\n if (first) {\r\n for (const action of first.meta.selector.actions) {\r\n if (items.filter(t => t.meta.selector.actions?.length).every(e => e.meta.selector.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTabelCellDefDirective } from '../../directives/sd-table-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() value: any;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() cellDef: {\r\n [column: string]: SdTabelCellDefDirective\r\n } = {};\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\nimport { SdTabelCellDefDirective } from '../directives/sd-table-cell-def.directive';\r\nimport { TemplateRef } from '@angular/core';\r\n\r\nexport type SdTableColumn<T = any> =\r\n | SdTableColumnText<T>\r\n | SdTableColumnNumber<T>\r\n | SdTableColumnBool<T>\r\n | SdTableColumnDate<T>\r\n | SdTableColumnValues<T>\r\n | SdTableColumnLazyValues<T>\r\n | SdTableColumnChildren<T>;\r\n\r\nexport type SdFilterOperator =\r\n | 'EQUAL'\r\n | 'NOT_EQUAL'\r\n | 'CONTAIN'\r\n | 'NOT_CONTAIN'\r\n | 'IN'\r\n | 'NOT_IN'\r\n | 'START_WITH'\r\n | 'END_WITH'\r\n | 'GREATER_THAN'\r\n | 'LESS_THAN'\r\n | 'GREATER_OR_EQUAL'\r\n | 'LESS_OR_EQUAL'\r\n | 'NULL'\r\n | 'NOT_NULL';\r\n\r\nexport const SdFilterOperators: { value: SdFilterOperator; symbol?: string; display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi',\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi',\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong',\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong',\r\n },\r\n {\r\n value: 'NULL',\r\n symbol: 'motion_photos_off',\r\n display: 'Là rỗng',\r\n },\r\n {\r\n value: 'NOT_NULL',\r\n symbol: 'adjust',\r\n display: 'Không rỗng',\r\n },\r\n];\r\n\r\nexport type SdTableColumnTransformFunc<T = any> = (\r\n value: any,\r\n rowData: T,\r\n args?: {\r\n isExport?: boolean;\r\n }\r\n) => string | Promise<string>;\r\n\r\ninterface SdTableColumnBase<T = any> {\r\n field: Extract<keyof T, string>;\r\n title: string;\r\n titleHtml?: string;\r\n description?: string;\r\n width?: string;\r\n hidden?: boolean;\r\n invisible?: boolean;\r\n fixed?: boolean;\r\n cellStyle?: (value: any, rowData: T) => Record<string, string>;\r\n htmlTemplate?: (value: any, rowData: T) => string;\r\n transform?: SdTableColumnTransformFunc<T>;\r\n tooltip?: (value: any, rowData: T) => string;\r\n click?: (value: any, rowData: T) => void;\r\n sortable?: boolean;\r\n filter?: {\r\n disabled?: boolean;\r\n defaultShowing?: boolean;\r\n default?: any;\r\n // Chỉ dành cho filter inline column\r\n operator?: {\r\n default?:SdFilterOperator;\r\n enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n cellDef?: TemplateRef<SdTabelCellDefDirective>;\r\n}\r\n\r\ninterface SdTableColumnText<T = any> extends SdTableColumnBase<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n}\r\n\r\ninterface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {\r\n type: 'number';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n}\r\n\r\ninterface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n}\r\n\r\ninterface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n filter?: SdTableColumnBase['filter'] & { useFilterDate?: boolean }\r\n}\r\n\r\nexport interface SdTableColumnValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'values';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'icon' | 'circle' | 'round';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: any[] | (() => Promise<any[]>);\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n}\r\n\r\nexport interface SdTableColumnLazyValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'lazy-values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: (searchText: string) => Promise<any[]>; // Filter\r\n // Nếu không có tranform hay htmlTemplate cần khai báo views\r\n views?: (values: string[]) => Promise<any[]>; // Hiển thị\r\n mapValue?: (value: any, rowData?: T) => string | string[]; // Một số trường hợp dữ liệu của field là object hoặc muốn value lấy dữ liệu khác thì sử dụng hàm này\r\n selection?: 'MULTIPLE';\r\n };\r\n}\r\n\r\ntype SdTableColumnNormal<T> = Exclude<SdTableColumn<T>, SdTableColumnChildren<T>>;\r\n\r\nexport interface SdTableColumnChildren<T = any> extends SdTableColumnBase<T> {\r\n type: 'children';\r\n children: SdTableColumnNormal<T>[];\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdFilterOperator, SdFilterOperators, SdTableColumn } from '../../models/table-column.model';\r\n\r\n@Component({\r\n selector: 'sd-column-inline-filter',\r\n templateUrl: './column-inline-filter.component.html',\r\n styleUrls: ['./column-inline-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdColumnInlineFilter implements OnInit {\r\n value: any;\r\n @Input('value') _value(value: any) {\r\n this.value = value;\r\n this.#valueChanges.next();\r\n }\r\n inlineSymbol: string = 'filter_alt';\r\n #inlineOperator: SdFilterOperator;\r\n @Input('inlineOperator') set _inlineOperator(inlineOperator: SdFilterOperator) {\r\n if (this.#inlineOperator !== inlineOperator) {\r\n this.#inlineOperator = inlineOperator;\r\n this.inlineSymbol = SdFilterOperators.find(e => e.value === inlineOperator)?.symbol ?? 'filter_alt';\r\n }\r\n }\r\n @Output() inlineOperatorChange = new EventEmitter<SdFilterOperator>();\r\n @Output() operatorChange = new EventEmitter<SdFilterOperator>();\r\n\r\n\r\n columnFilter: Record<string, any> = {};\r\n @Input('columnFilter') set _columnFilter(columnFilter: Record<string, any>) {\r\n this.columnFilter = columnFilter || {};\r\n this.#valueChanges.next();\r\n }\r\n operators: { value: SdFilterOperator; display: string }[] = [];\r\n column: SdTableColumn;\r\n items: any[] | ((searchText: string) => Promise<any[]>) = [];\r\n @Input() cacheValues: Record<string, any[]>;\r\n @Input('column') set _column(column: SdTableColumn) {\r\n this.column = column;\r\n if (!column?.filter?.disabled && column?.filter?.operator?.enable) {\r\n this.operators = SdFilterOperators.filter(e => column.filter.operator.list?.includes?.(e.value));\r\n } else {\r\n this.operators = [];\r\n }\r\n if (this.column.type === 'values') {\r\n if (Array.isArray(this.column.option.items)) {\r\n this.items = this.column.option.items;\r\n } else {\r\n this.items = this.cacheValues?.[column.field] || []\r\n }\r\n } else if (this.column.type === 'lazy-values') {\r\n this.items = this.column.option.items;\r\n }\r\n } \r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(private ref: ChangeDetectorRef) {}\r\n ngOnInit() {\r\n this.#subcription.add(\r\n this.#valueChanges.pipe(startWith(this.columnFilter)).subscribe(() => {\r\n if (this.column.type === 'date' || this.column.type === 'time' || this.column.type === 'datetime') {\r\n if (!this.column?.filter?.useFilterDate) {\r\n this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {\r\n from: null,\r\n to: null,\r\n };\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n };\r\n\r\n onChangeOperator = (operator: { value: SdFilterOperator; symbol?: string; display: string }) => {\r\n if (operator) {\r\n this.#inlineOperator = operator.value;\r\n this.inlineSymbol = operator.symbol;\r\n } else {\r\n this.#inlineOperator = null;\r\n this.inlineSymbol = 'filter_alt';\r\n }\r\n this.inlineOperatorChange.emit(this.#inlineOperator);\r\n this.operatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.meta.selector.actions = rowData.meta.selector.actions || [];\r\n if (!actions?.length) {\r\n rowData.meta.selector.selectable = true;\r\n return rowData.meta.selector.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData.data)) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.meta.selector.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData.data)) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.meta.selector.selectable = !!rowData.meta.selector.actions?.length;\r\n if (!rowData.meta.selector.selectable || !groupedActions.length || rowData?.meta.group?.items?.length) {\r\n return rowData.meta.selector.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.meta.selector.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\nimport { SdTableAction } from '../../models/table-option-selector.model';\r\n\r\n@Component({\r\n selector: 'sd-table-quick-action',\r\n templateUrl: './quick-action.component.html',\r\n styleUrls: ['./quick-action.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTableQuickAction {\r\n @Input() tableOption: SdTableOption;\r\n @Input() selectedTableItems: SdTableItem[];\r\n @Output() clear = new EventEmitter();\r\n constructor() {}\r\n onClear = () => {\r\n this.clear.emit();\r\n };\r\n\r\n onClickAction = (action: SdTableAction) => {\r\n if ('click' in action) {\r\n action?.click(this.selectedTableItems.map(e => e.data));\r\n }\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { MapToSdTableItem, SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'sdGroup',\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: SdTableItem[], gridOption: SdTableOption): SdTableItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdTableItem[];\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] }),\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdTableItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n const result = MapToSdTableItem({});\r\n result.meta.group.items = groupItem[key];\r\n result.meta.group.htmlTemplate = htmlTemplate(groupItem[key]);\r\n results.push(result);\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdTable } from './table.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdTabelCellDefDirective } from './directives/sd-table-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdTableFilter } from './components/table-filter/table-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { SdTableQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\nimport { SdGroupModule } from '@sd-angular/core/group';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to}/${length}`;\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatChipsModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n SdCommonModule,\r\n SdGroupModule,\r\n ],\r\n declarations: [\r\n SdTableQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdTable,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdTabelCellDefDirective,\r\n SdTableFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdPopupConfiguration,\r\n SdTableFilter,\r\n SdPopupFilter,\r\n SdPopupExport,\r\n // Pipes\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnTooltipPipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionVisiblePipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionVisibleSelectAllPipe,\r\n SdGroupPipe,\r\n ],\r\n exports: [\r\n SdTable,\r\n SdMaterialFooterDefDirective,\r\n SdTabelCellDefDirective,\r\n SdTableFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdTableFilterService,\r\n SdTableConfigurationService,\r\n {\r\n provide: MatPaginatorIntl,\r\n useClass: MatPaginatorIntlCro,\r\n },\r\n ],\r\n})\r\nexport class SdTableModule {}\r\n","import { Observable } from 'rxjs';\r\nimport { SdFilterOperator, SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { TemplateRef } from '@angular/core';\r\n\r\nexport class SdTableQuickFilter {\r\n code: string;\r\n columnFilter: {\r\n [field: string]: any;\r\n };\r\n externalFilter: {\r\n [field: string]: any;\r\n };\r\n filterDef: {\r\n [field: string]: any;\r\n };\r\n}\r\n\r\nexport interface SdTableFilterConfiguration {\r\n // selectedQuickFilter: string;\r\n // quickFilters: SdGridMaterialQuickFilter[];\r\n\r\n inlineColumn: Record<string, boolean>; // Ẩn hiện filter column\r\n // columnFilter?: Record<string, any>; // Giá trị filter column\r\n\r\n inlineExternal: Record<string, boolean>; // Ẩn hiện filter external\r\n // externalFilter?: Record<string, any>; // Giá trị filter external\r\n\r\n inlineFilterDef: Record<string, boolean>; // Ẩn hiện filter def\r\n // filterDef?: Record<string, any>; // Giá trị filter def\r\n}\r\n\r\nexport interface SdTableFilterValue {\r\n columnOperator?: Record<string, SdFilterOperator>;\r\n\r\n columnFilter?: Record<string, any>; // Giá trị filter column\r\n\r\n externalFilter?: Record<string, any>; // Giá trị filter external\r\n\r\n filterDef?: Record<string, any>; // Giá trị filter def\r\n\r\n notReload?: boolean; // Để nhận biết là chỉ set giá trị, không trigger change\r\n}\r\n\r\nexport interface SdTableFilterRequest<T = any> {\r\n columnOperator: Record<string, SdFilterOperator>;\r\n rawColumnFilter: Record<keyof T, any>;\r\n rawExternalFilter: Record<string, any>;\r\n rawFilterDef: Record<string, any>;\r\n pageNumber: number;\r\n pageSize: number;\r\n orderBy: string;\r\n orderDirection: 'asc' | 'desc' | '';\r\n isExported?: boolean;\r\n}\r\n\r\nexport interface SdTableOptionFilter {\r\n key?: string;\r\n cacheFilter?: boolean;\r\n disabled?: boolean;\r\n hideInlineFilter?: boolean;\r\n externalFilters?: SdTableExternalFilter[];\r\n sorts?: string[];\r\n enableCollapse?: boolean;\r\n operatorChange?: (column?: SdTableColumn, operator?: SdFilterOperator) => void;\r\n}\r\n\r\nexport declare type SdTableExternalFilter =\r\n | TextFilter\r\n | DateFilter\r\n | DateTimeFilter\r\n | DateRangeFilter\r\n | NumberFilter\r\n | ValuesFilter\r\n | LazyValuesFilter\r\n | BoolFilter\r\n | CustomFilter;\r\n\r\ninterface BaseFilter {\r\n field: string;\r\n title: string;\r\n defaultShowing?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface TextFilter extends BaseFilter {\r\n type: 'string';\r\n default?: string;\r\n}\r\n\r\ninterface DateFilter extends BaseFilter {\r\n type: 'date';\r\n default?: Date | string;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n}\r\n\r\ninterface DateTimeFilter extends BaseFilter {\r\n type: 'datetime';\r\n default?: Date | string;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n}\r\n\r\ninterface DateRangeFilter extends BaseFilter {\r\n type: 'daterange';\r\n enableTime?: boolean;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n default?: {\r\n from?: Date | string;\r\n to?: Date | string;\r\n };\r\n}\r\n\r\ninterface NumberFilter extends BaseFilter {\r\n type: 'number';\r\n default?: number;\r\n}\r\n\r\ninterface ValuesFilter extends BaseFilter {\r\n type: 'values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: any[] | (() => Promise<any[]>);\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n default?: string | string[];\r\n}\r\n\r\ninterface LazyValuesFilter extends BaseFilter {\r\n type: 'lazy-values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: (searchText: string) => Promise<any[]>; // Filter\r\n selection?: 'MULTIPLE';\r\n };\r\n default?: string | string[];\r\n}\r\n\r\ninterface BoolFilter extends BaseFilter {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n default?: boolean;\r\n}\r\n\r\ninterface CustomFilter extends BaseFilter {\r\n type: 'custom';\r\n filterDef?: TemplateRef<SdTableFilterDefDirective>;\r\n default?: any;\r\n}\r\n\r\nexport interface SdTableFilterRegister {\r\n configuration: {\r\n get: () => SdTableFilterConfiguration;\r\n set: (configuration: Partial<SdTableFilterConfiguration>) => SdTableFilterConfiguration;\r\n remove: () => void;\r\n observer: Observable<SdTableFilterConfiguration>;\r\n };\r\n value: {\r\n get: () => SdTableFilterValue;\r\n set: (value: Partial<SdTableFilterValue>) => SdTableFilterValue;\r\n remove: () => void;\r\n observer: Observable<SdTableFilterValue>;\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SdColumnInlineFilter as ɵe} from './src/lib/components/column-inline-filter/column-inline-filter.component';\nexport {SdDesktopCellView as ɵc} from './src/lib/components/desktop-cell-view/desktop-cell-view.component';\nexport {SdDesktopCell as ɵb} from './src/lib/components/desktop-cell/desktop-cell.component';\nexport {SdDesktopCommand as ɵd} from './src/lib/components/desktop-command/desktop-command.component';\nexport {SdPopupConfiguration as ɵf} from './src/lib/components/popup-configuration/popup-configuration.component';\nexport {SdPopupExport as ɵj} from './src/lib/components/popup-export/popup-export.component';\nexport {SdPopupFilter as ɵl} from './src/lib/components/popup-filter/popup-filter.component';\nexport {SdTableQuickAction as ɵa} from './src/lib/components/quick-action/quick-action.component';\nexport {SdTableFilter as ɵk} from './src/lib/components/table-filter/table-filter.component';\nexport {SdMaterialSubInformationDefDirective as ɵm} from './src/lib/directives/sd-table-expand-def.directive';\nexport {SdMaterialFooterDefDirective as ɵn} from './src/lib/directives/sd-table-footer-def.directive';\nexport {ISdTableConfiguration as ɵh,TABLE_CONFIG as ɵi} from './src/lib/models/table-configuration.model';\nexport {SdColumnTooltipPipe as ɵt} from './src/lib/pipes/column-tooltip.pipe';\nexport {SdCommandDisablePipe as ɵq} from './src/lib/pipes/command-disable.pipe';\nexport {SdCommandFilterPipe as ɵp} from './src/lib/pipes/command-filter.pipe';\nexport {SdCommandIconPipe as ɵr} from './src/lib/pipes/command-icon.pipe';\nexport {SdCommandTitlePipe as ɵs} from './src/lib/pipes/command-title.pipe';\nexport {SdFilterColumnPipe as ɵu} from './src/lib/pipes/filter-column.pipe';\nexport {SdFilterExternalPipe as ɵv} from './src/lib/pipes/filter-external.pipe';\nexport {SdGroupPipe as ɵba} from './src/lib/pipes/sd-group.pipe';\nexport {SdSelectionActionFilterPipe as ɵw} from './src/lib/pipes/selection-action-filter.pipe';\nexport {SdSelectionDisablePipe as ɵy} from './src/lib/pipes/selection-disable.pipe';\nexport {SdSelectionVisibleSelectAllPipe as ɵz} from './src/lib/pipes/selection-visible-select-all.pipe';\nexport {SdSelectionVisiblePipe as ɵx} from './src/lib/pipes/selection-visible.pipe';\nexport {SdTableConfigurationService as ɵg} from './src/lib/services/table-configuration.service';\nexport {SdTableFilterService as ɵo} from './src/lib/services/table-filter/table-filter.service';"],"names":["hash","uuid.v4","_subscription","_initConfiguration","_getExportColumns"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-table.js","sources":["../../../../projects/sd-core/table/src/lib/directives/sd-table-cell-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-filter-def.directive.ts","../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/table/src/lib/components/table-filter/table-filter.component.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-expand-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-table-footer-def.directive.ts","../../../../projects/sd-core/table/src/lib/services/table-configuration.service.ts","../../../../projects/sd-core/table/src/lib/models/table-item.model.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.service.ts","../../../../projects/sd-core/table/src/lib/components/popup-configuration/popup-configuration.component.ts","../../../../projects/sd-core/table/src/lib/components/popup-export/popup-export.component.ts","../../../../projects/sd-core/table/src/lib/table.component.ts","../../../../projects/sd-core/table/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/table/src/lib/models/table-column.model.ts","../../../../projects/sd-core/table/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/table/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/table/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/table/src/lib/table.module.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.model.ts","../../../../projects/sd-core/table/sd-angular-core-table.ts"],"sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableCellDef]'\r\n})\r\nexport class SdTabelCellDefDirective {\r\n @Input() sdTableCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableFilterDef]'\r\n})\r\nexport class SdTableFilterDefDirective {\r\n @Input() sdTableFilterDef: string;\r\n defaultShowing: boolean;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator, SdTableColumn } from './table-column.model';\r\n\r\nexport interface ISdTableConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n defaultOperator?:{\r\n [key in SdTableColumn['type']]?:SdFilterOperator\r\n }\r\n };\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_TABLE_CONFIG: ISdTableConfiguration = {\r\n paginate: {\r\n pageSize: 20,\r\n pages: [20, 50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.configuration');\r\n","import { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableExternalFilter, SdTableFilterRegister } from '../../services/table-filter/table-filter.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild(SdModal) modal: SdModal;\r\n #filterRegister: SdTableFilterRegister;\r\n @Input() set filterRegister(value: SdTableFilterRegister) {\r\n this.#filterRegister = value;\r\n }\r\n @Input() externalFilters: SdTableExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdTableColumn[] = [];\r\n columnFilter: Record<string, any> = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n\r\n @Input() filterDefs: SdTableFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.filterDef));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onApply = () => {\r\n this.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onClear() {\r\n this.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdTableOptionFilter,\r\n SdTableExternalFilter,\r\n SdTableFilterRegister,\r\n} from '../../services/table-filter/table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'sd-table-filter',\r\n templateUrl: './table-filter.component.html',\r\n styleUrls: ['./table-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTableFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n filter: Readonly<SdTableOptionFilter>;\r\n @Input('filter') set _filter(filter: SdTableOptionFilter) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdTableColumn[] = [];\r\n externalFilters: SdTableExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdTableExternalFilter[]) {\r\n this.externalFilters = value || [];\r\n }\r\n @Input() filterDefs: SdTableFilterDefDirective[] = [];\r\n filterRegister: SdTableFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdTableFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdTableFilterRegister>(null);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n\r\n constructor(private ref: ChangeDetectorRef, private deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.filterRegisterChange.pipe(startWith(this.filterRegister)).subscribe(filterRegister => {\r\n if (this.filterRegister) {\r\n this.#subscription.add(\r\n this.filterRegister.configuration.observer.subscribe(configuration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n this.inlineColumn = inlineColumn;\r\n this.inlineExternal = inlineExternal;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.filterRegister.value.observer.subscribe(value => {\r\n const { columnFilter, externalFilter, filterDef } = value;\r\n this.columnFilter = columnFilter;\r\n this.externalFilter = externalFilter;\r\n this.filterDef = filterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdTableColumn | SdTableExternalFilter) => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n };\r\n\r\n updateFilter = () => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n notReload: true\r\n });\r\n };\r\n\r\n open = () => {\r\n this.popupFilter.open();\r\n };\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableExpandDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdTableFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdTableFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport {\r\n SdColumnConfiguration,\r\n SdTableConfiguration,\r\n SdTableConfigurationResult,\r\n} from '../models/table-option-config.model';\r\nimport { TABLE_CONFIG, ISdTableConfiguration } from '../models/table-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdTableConfigurationService {\r\n #COLUMNS = {\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup',\r\n };\r\n #prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) { }\r\n\r\n #getSetting = (option: SdTableOption): SdSetting<SdTableConfiguration> => {\r\n // Nếu không có key thì không lấy được setting\r\n if (!option?.key) {\r\n return null;\r\n }\r\n // Key của setting là tổ hợp từ key truyền vào và prefix để tránh chung key với các tính năng khác cũng dùng key trong core table\r\n return this.settingService.create<SdTableConfiguration>(\r\n { prefix: this.#prefix, key: option.key },\r\n {\r\n default: this.#default(option),\r\n }\r\n );\r\n };\r\n\r\n loadConfiguration = (option: SdTableOption) => {\r\n // Nếu không có key thì trả về thông tin mặc định\r\n if (!option?.key) {\r\n return this.#default(option);\r\n }\r\n const setting = this.#getSetting(option);\r\n return setting.get();\r\n };\r\n\r\n loadConfigurationResult = (option: SdTableOption, configuration: SdTableConfiguration) => {\r\n const result: SdTableConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false,\r\n };\r\n const { selector, commands, group } = option || {};\r\n if (selector?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns\r\n ?.filter(col => !col.invisible)\r\n .forEach(col => {\r\n // Kiểm tra column trong config có còn được khai báo trong option\r\n // Nếu không thì ẩn column đó đi\r\n const column = option?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n }\r\n }\r\n });\r\n // Nếu có thêm các column mới, chèn các column đó vào cuối\r\n option?.columns?.filter(column=> !configuration?.columns?.some(e=>e.origin.field === column.field))\r\n .forEach(column =>{\r\n result.firstColumns.push({\r\n ...column,\r\n title: column.title,\r\n width: column.width,\r\n });\r\n result.firstHeaders.push(column.field);\r\n result.displayedColumns.push(column.field);\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n }\r\n })\r\n if (option.expand) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n };\r\n\r\n init = (gridOption: SdTableOption) => {\r\n return this.#getSetting(gridOption);\r\n };\r\n\r\n #default = (gridOption: SdTableOption): SdTableConfiguration => {\r\n const columns: SdColumnConfiguration[] =\r\n gridOption?.columns\r\n ?.filter(e => !e.hidden)\r\n .map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible,\r\n },\r\n invisible: e.invisible,\r\n fixed: false,\r\n })) || [];\r\n return {\r\n columns,\r\n };\r\n };\r\n}\r\n","import * as hash from 'object-hash';\r\nimport { SdTableColumn } from './table-column.model';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\r\nexport interface SdTableMetaSelector {\r\n selectable?: boolean;\r\n isSelected?: boolean;\r\n actions?: string[];\r\n}\r\n\r\nexport interface SdTableMetaExpand {\r\n isExpanded?: boolean;\r\n isExpanding?: boolean;\r\n data?: any;\r\n}\r\n\r\nexport interface SdTableDisplay {\r\n tooltip: string;\r\n badge: {\r\n type: 'round' | 'circle' | 'icon';\r\n color: SdBadgeColor;\r\n icon: string;\r\n };\r\n cellStyle: Record<string, string>;\r\n data: string;\r\n isHtml: boolean;\r\n click: () => void;\r\n}\r\n\r\nexport interface SdTableMeta<T> {\r\n id?: string;\r\n display: Record<string, SdTableDisplay>;\r\n selector?: SdTableMetaSelector;\r\n expand?: SdTableMetaExpand;\r\n group?: {\r\n htmlTemplate?: string;\r\n items?: SdTableItem<T>[];\r\n };\r\n}\r\n\r\nexport interface SdTableItem<T = any> {\r\n meta: SdTableMeta<T>;\r\n data: T;\r\n}\r\n\r\nexport const MapToSdTableItem = <T = any>(item: T): SdTableItem<T> => ({\r\n data: item,\r\n meta: {\r\n id: hash(item),\r\n display: {},\r\n expand: {\r\n isExpanding: false,\r\n isExpanded: false,\r\n },\r\n group: {},\r\n selector: { actions: [], isSelected: false, selectable: false },\r\n },\r\n});\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdTableExternalFilter,\r\n SdTableFilterConfiguration,\r\n SdTableOptionFilter,\r\n SdTableFilterRegister,\r\n SdTableFilterValue,\r\n} from './table-filter.model';\r\nimport { SdFilterOperator, SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdTableFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, SdTableFilterRegister> = {};\r\n constructor(private settingService: SdSettingService) {}\r\n register = (\r\n filter: SdTableOptionFilter,\r\n args: {\r\n id: string;\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n columnOperator?:Record<string,SdFilterOperator>;\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdTableFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdTableFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdTableFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdTableFilterConfiguration>): SdTableFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdTableFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdTableFilterValue>): SdTableFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef, notReload } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!value?.notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdTableFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n columnOperator?:Record<string,SdFilterOperator>\r\n }): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const columnOperator:Record<string,SdFilterOperator> = args.columnOperator || {}\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n if (item?.filter?.operator?.enable && item?.filter?.operator?.default){\r\n columnOperator[item.field]=item.filter.operator.default;\r\n }\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdTableFilterDef] = undefined;\r\n }\r\n\r\n\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n // columnOperator\r\n columnOperator,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdTableFilterDef] = configuration?.inlineFilterDef?.[item.sdTableFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdTableFilterDefDirective[];\r\n columnOperator?:Record<string, SdFilterOperator>\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const columnOperator:Record<string, SdFilterOperator> = args.columnOperator || {};\r\n const { columns, externalFilters, filterDefs} = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n if (item?.filter?.operator?.enable && item?.filter?.operator?.default){\r\n columnOperator[item.field]=item.filter.operator.default;\r\n }\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdTableFilterDef] = value?.filterDef?.[item.sdTableFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n //column Operator\r\n columnOperator\r\n };\r\n };\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableConfigurationResult, SdTableConfiguration } from '../../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../../services/table-configuration.service';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdSetting } from '@sd-angular/core/setting';\r\n\r\n@Component({\r\n selector: 'sd-popup-configuration',\r\n templateUrl: './popup-configuration.component.html',\r\n styleUrls: ['./popup-configuration.component.scss'],\r\n})\r\nexport class SdPopupConfiguration implements OnInit {\r\n @Input() tableOption: SdTableOption;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdTableColumn>;\r\n readonly changes = new EventEmitter<SdTableConfigurationResult>();\r\n #setting: SdSetting<SdTableConfiguration>;\r\n configuration: SdTableConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private tableConfigurationService: SdTableConfigurationService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#setting = this.tableConfigurationService.init(this.tableOption);\r\n this.configuration = this.#setting.get();\r\n this.modal.open();\r\n };\r\n\r\n onSave = () => {\r\n this.#setting.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n };\r\n\r\n onReset = async () => {\r\n this.notifyService.confirm('Xác nhận đưa tất cả thiết lập về mặc định').then(() => {\r\n this.#setting.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n };\r\n\r\n dropTable(event: CdkDragDrop<SdTableColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n AfterViewInit,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n Input,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\n\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\n\r\nimport { SdLoadingService } from '@sd-angular/core/loading';\r\n\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatSelectionList } from '@angular/material/list';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdExportFile, SdExportService, SdExportColumn } from '@sd-angular/core/export';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdTableColumn, SdTableOption } from '../../models';\r\nimport { SdTableConfigurationResult } from '../../models/table-option-config.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-export',\r\n templateUrl: './popup-export.component.html',\r\n styleUrls: ['./popup-export.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupExport implements OnInit, AfterViewInit {\r\n tableOption: SdTableOption;\r\n columns: SdExportColumn[] = [];\r\n templateName: string;\r\n enableCreating = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('listGroups') listGroups: MatSelectionList;\r\n\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n files: SdExportFile[] = [];\r\n\r\n @Output() export = new EventEmitter<{ file: SdExportFile; columns: SdExportColumn[]; isCSV?: boolean }>();\r\n form = new FormGroup({});\r\n\r\n @Input('tableOption') set _tableOption(option: SdTableOption) {\r\n this.tableOption = option;\r\n this.columns = this.#getExportableColumns();\r\n }\r\n @Input() configuration: SdTableConfigurationResult;\r\n private get key(): string {\r\n const prefix = '93889e78-f971-4a1d-8c73-fe2321af9233';\r\n if (!this.tableOption?.export?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: this.tableOption?.export?.key,\r\n });\r\n }\r\n\r\n private get tableColumns() {\r\n const columns: SdExportColumn[] = [];\r\n this.tableOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns.map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width,\r\n }));\r\n }\r\n private get additionalColumns() {\r\n return (this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || []).map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width,\r\n }));\r\n }\r\n\r\n #getExportableColumns = (): SdExportColumn[] => {\r\n return [...this.tableColumns, ...this.additionalColumns];\r\n };\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n open = async () => {\r\n if (!this.key) {\r\n this.exportDefault();\r\n return;\r\n }\r\n this.loadFiles(null);\r\n this.selected = {};\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n };\r\n\r\n #getExportColumns = () => {\r\n if (this.configuration) {\r\n const columns = [...this.tableColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdTableColumn[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.tableOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children') {\r\n return [...first, column];\r\n }\r\n return [...first, ...column.children];\r\n }, []);\r\n const results = displayColumns\r\n .map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field),\r\n }))\r\n .filter(e => !!e.data)\r\n .map(e => e.data);\r\n return [...results, ...this.additionalColumns];\r\n } else {\r\n return this.columns;\r\n }\r\n };\r\n\r\n exportDefault = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: false,\r\n });\r\n };\r\n\r\n exportCSV = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: true,\r\n });\r\n };\r\n\r\n loadFiles = async (group: string = null) => {\r\n this.files = await this.exportService.filesInFolder({\r\n key: this.key,\r\n group,\r\n });\r\n this.ref.markForCheck();\r\n };\r\n\r\n #initTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateTemplate({\r\n fileName: fileName || this.tableOption?.export?.fileName,\r\n columns: this.columns,\r\n sheets,\r\n });\r\n };\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n await this.#initTemplate().finally(this.loadingService.stop);\r\n };\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption?.export?.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.tableOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets,\r\n },\r\n });\r\n };\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns,\r\n });\r\n this.ref.detectChanges();\r\n };\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n });\r\n if (file) {\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n };\r\n\r\n createTemplate = async () => {\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(`Vui lòng chọn cột dữ liệu để xuất`);\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName,\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n };\r\n\r\n templateNameValidator = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n };\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport { SdTableFilterRegister, SdTableFilterRequest } from './services/table-filter/table-filter.model';\r\nimport { SdTableOption } from './models/table-option.model';\r\nimport { TABLE_CONFIG, DEFAULT_TABLE_CONFIG, ISdTableConfiguration } from './models/table-configuration.model';\r\nimport { Subscription, isObservable, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdFilterOperator, SdTableColumn, SdTableColumnLazyValues, SdTableColumnValues } from './models/table-column.model';\r\nimport { SdTabelCellDefDirective } from './directives/sd-table-cell-def.directive';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdTableFilter } from './components/table-filter/table-filter.component';\r\nimport { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdTableConfigurationResult } from './models/table-option-config.model';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { SdTableOptionExportColumn } from './models/table-option-export.model';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { MapToSdTableItem, SdTableItem } from './models/table-item.model';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\nimport { SdLoadingService } from '@sd-angular/core/loading';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\n\r\n@Component({\r\n selector: 'sd-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\r\n state('expanded', style({ height: '*', visibility: 'visible' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class SdTable<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild(MatTable) table: MatTable<any>;\r\n @ViewChild(SdPopupConfiguration) popupConfiguration: SdPopupConfiguration;\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdTableFilterRegister;\r\n key = uuid.v4();\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n @ViewChild(SdTableFilter) tableFilter: SdTableFilter;\r\n tableOption: SdTableOption<T>;\r\n configuration: SdTableConfigurationResult;\r\n @Input() set option(option: SdTableOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.tableOption = option;\r\n this.#loadCompleted = false;\r\n const setting = this.tableConfigurationService.init(this.tableOption);\r\n if (setting) {\r\n this.#subscription.add(\r\n setting.observer.pipe(startWith(setting.subject.getValue())).subscribe(() => {\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, setting.get());\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.loadingService.start();\r\n this.ref.detectChanges();\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field)))\r\n .then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\r\n })\r\n .finally(() => {\r\n this.loadingService.stop();\r\n this.ref.detectChanges();\r\n });\r\n })\r\n );\r\n } else {\r\n const configuration = this.tableConfigurationService.loadConfiguration(this.tableOption);\r\n const configurationResult = this.tableConfigurationService.loadConfigurationResult(this.tableOption, configuration);\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n this.loadingService.start();\r\n this.ref.detectChanges();\r\n this.#loadValues(this.tableOption.columns.filter(column => displayColumns.includes(column.field)))\r\n .then(() => {\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.tableOption);\r\n })\r\n .finally(() => {\r\n this.loadingService.stop();\r\n this.ref.detectChanges();\r\n });\r\n }\r\n }\r\n }\r\n #optionChanges = new Subject<SdTableOption>();\r\n\r\n #localItems: SdTableItem<T>[] = [];\r\n items: SdTableItem<T>[] = [];\r\n selectedTableItems: SdTableItem<T>[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdTabelCellDefDirective) sdCellDefs = new QueryList<SdTabelCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdTabelCellDefDirective;\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective;\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdTableFilterDefDirective) sdFilterDefs = new QueryList<SdTableFilterDefDirective>();\r\n filterDefs: SdTableFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n cacheValues: Record<string, any[]> = {};\r\n #cacheObjValues: Record<string, Record<string, string>> = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n @Inject(TABLE_CONFIG)\r\n @Optional()\r\n public tableConfiguration: ISdTableConfiguration,\r\n private tableConfigurationService: SdTableConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private gridFilterService: SdTableFilterService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.#reload\r\n .pipe(\r\n debounceTime(200),\r\n switchMap(async data => {\r\n const filterInfo = this.#getFilter();\r\n const result = await this.#load(filterInfo, !this.#loadCompleted || data.force);\r\n this.#loadCompleted = true;\r\n return result;\r\n })\r\n )\r\n .subscribe(this.#render)\r\n );\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(\r\n combineLatest([\r\n this.#optionChanges.pipe(startWith(this.tableOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs || []) {\r\n if (cellDef.sdTableCellDef) {\r\n this.cellDef[cellDef.sdTableCellDef] = cellDef;\r\n }\r\n }\r\n };\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n };\r\n\r\n #initFooterDef = () => {\r\n // NOTE: ContentChildren nên subcribe trong AfterViewInit\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdTableFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdTableFooterDef] = footerDef;\r\n }\r\n }\r\n };\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true,\r\n };\r\n };\r\n\r\n #initConfiguration = (option: SdTableOption) => {\r\n // Init pagination\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.tableConfiguration?.paginate?.pageSize ?? DEFAULT_TABLE_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.tableConfiguration?.paginate?.pages ?? DEFAULT_TABLE_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false,\r\n };\r\n for (const column of option.columns || []) {\r\n if (column.filter?.operator?.enable) {\r\n if (!column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n\r\n this.columnOperator[column.field] = this.tableConfiguration?.filter?.operator?.defaultOperator?.[column.type] || undefined;\r\n if (column.filter.operator.default && column.filter.operator.list.some(el => el === column.filter.operator.default)) {\r\n this.columnOperator[column.field] = column.filter.operator.default;\r\n }\r\n }\r\n }\r\n return option;\r\n };\r\n\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.tableOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.tableOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.tableOption?.columns,\r\n externalFilters: this.tableOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n columnOperator: this.columnOperator,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator || {};\r\n this.columnFilter = columnFilter;\r\n if (!notReload) {\r\n if (this.#paginator) {\r\n this.#paginator.pageIndex = 0;\r\n }\r\n this.#reload.next({\r\n force: false,\r\n });\r\n }\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n };\r\n\r\n #filterLocal = (localItems: SdTableItem<T>[], filterInfo: SdTableFilterRequest) => {\r\n const { columns } = this.tableOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(tableItem => {\r\n const item = tableItem.data;\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field as string] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values' || type === 'lazy-values') {\r\n const columnType = column as SdTableColumnValues<T> | SdTableColumnLazyValues<T>;\r\n const isMultiple = ['MULTIPLE'].includes(columnType.option.selection);\r\n if (isMultiple) {\r\n const columnValues: string[] =\r\n (item[field] as any).map(i => (i[columnType.option.valueField] ?? '').toString().trim().toLowerCase()) ?? [];\r\n const filterValues: string[] = rawColumnFilter[field as string]?.map(v => (v ?? '').toString().trim().toLowerCase());\r\n if (filterValues?.length && filterValues.every(fv => !columnValues.includes(fv))) {\r\n return false;\r\n }\r\n } else {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate || toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((tableItemCurrent, tableItemNext) => {\r\n const data = tableItemCurrent.data;\r\n const next = tableItemNext.data;\r\n if (type === 'number') {\r\n return (data[field as string] || 0) - (next[field as string] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(data[field as string] || '').getTime();\r\n const d2 = new Date(data[field as string] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (data[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length,\r\n };\r\n };\r\n\r\n #getFilter = (): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.tableOption?.paginate?.pageSize || 50,\r\n visibledColumns: [...(this.configuration?.firstColumns || []), ...(this.configuration?.secondColumns || [])].union('field')\r\n };\r\n };\r\n\r\n #load = async (filterReq: SdTableFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n this.ref.detectChanges();\r\n if (this.tableOption.type === 'server') {\r\n const { items } = this.tableOption;\r\n const data = await items(filterReq).catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return {\r\n items: [] as T[],\r\n total: 0,\r\n };\r\n });\r\n return {\r\n items: await this.#format(data?.items, this.tableOption.columns).finally(() => {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }),\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.tableOption;\r\n const results = items();\r\n let data: T[] = [];\r\n if (results instanceof Promise) {\r\n data = await results.catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return [];\r\n });\r\n } else {\r\n data = results;\r\n }\r\n if (!Array.isArray(data)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n data = [];\r\n }\r\n this.#localItems = await this.#format(data, this.tableOption.columns);\r\n }\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n };\r\n\r\n #render = async (args: { items: SdTableItem<T>[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n await this.tableOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n setTimeout(() => {\r\n this.table?.updateStickyColumnStyles();\r\n }, 0);\r\n };\r\n\r\n reload = async (force: boolean = true) => {\r\n this.tableFilter?.updateFilter?.();\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.#render(data);\r\n };\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.tableOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.tableOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[]; total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.tableOption.type === 'server') {\r\n let result = this.tableOption.items(filterInfo);\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.tableOption.items === 'function') {\r\n const results = this.tableOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.tableOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n };\r\n\r\n #allColumns = (): SdTableColumn[] => {\r\n const columns: SdTableColumn[] = [];\r\n this.tableOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n };\r\n\r\n #allExportedColumns = (): SdTableOptionExportColumn[] => {\r\n return this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n onExport = async (args?: { file?: SdExportFile; columns?: SdExportColumn[]; isCSV?: boolean }) => {\r\n const { file, isCSV } = { ...args };\r\n try {\r\n let columns = this.#getExportColumns(args?.columns);\r\n const pageSize = this.tableOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.tableOption?.export?.batch || 1;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\r\n }\r\n if (this.tableOption.export?.mapping) {\r\n const results = this.tableOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 100.0) / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item, {\r\n isExport: true,\r\n });\r\n if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n obj[column.field] = obj[column.field] ?? '';\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n // Nếu là date thì convert theo đúng format ISO\r\n obj[column.field] = Date.toFormat(date, 'MM/dd/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'MM/dd/yyyy HH:mm:ss');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm');\r\n } else if (column.type === 'values' || column.type === 'lazy-values') {\r\n const value = item[column.field];\r\n if (column.type === 'lazy-values' && typeof column.option.mapValue === 'function') {\r\n const val = column.option.mapValue(value, item);\r\n const vals = (Array.isArray(val) ? val : [val]).filter(e => !!e?.toString());\r\n obj[column.field] = vals\r\n .map(val => this.#cacheObjValues[column.field]?.[val]?.[column.option.displayField] || val)\r\n ?.join(', ');\r\n } else {\r\n const vals = (Array.isArray(value) ? value : [value]).filter(e => !!e?.toString());\r\n obj[column.field] = vals\r\n .map(val => this.#cacheObjValues[column.field]?.[val]?.[column.option.displayField] || val)\r\n ?.join(', ');\r\n }\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (file?.filePath) {\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items,\r\n });\r\n return;\r\n }\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.tableOption?.export?.fileName,\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.tableOption?.export?.sheets)) {\r\n for (const sheet of this.tableOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.tableOption?.export?.fileName,\r\n sheets,\r\n });\r\n return;\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n #getExportColumns = (columns?: SdExportColumn[]) => {\r\n let tableColumns: SdExportColumn[] = [];\r\n // Lấy column từ option\r\n this.tableOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n tableColumns.push(childColumn);\r\n });\r\n return;\r\n }\r\n tableColumns.push({\r\n field: column.field,\r\n title: column.title,\r\n description: column.description,\r\n width: column.width,\r\n });\r\n });\r\n // Lấy columns từ configuration\r\n if (this.configuration) {\r\n const columns = [...tableColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdTableColumn[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.tableOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children') {\r\n return [...first, column];\r\n }\r\n const children = column.children;\r\n return [...first, ...children];\r\n }, []);\r\n tableColumns = displayColumns\r\n .map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field),\r\n }))\r\n .filter(e => !!e.data)\r\n .map(e => e.data);\r\n }\r\n // Chỉ lấy các columns được thiết lập\r\n const columnFields = columns?.map(e => e.field) || [];\r\n return [...tableColumns, ...(this.tableOption.export?.columns?.filter(e => !e.export?.disabled) || [])].filter(\r\n column => !columnFields?.length || columnFields.includes(column.field)\r\n );\r\n };\r\n\r\n exportExcel = () => {\r\n this.onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.onExport({ isCSV: true });\r\n };\r\n\r\n onFilterChange = () => {\r\n this.tableFilter?.updateFilter?.();\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator || {},\r\n columnFilter: this.columnFilter,\r\n });\r\n };\r\n\r\n onExpand = async (rowData: SdTableItem<T>) => {\r\n if (this.tableOption.expand?.always) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanding) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanded) {\r\n rowData.meta.expand.isExpanded = false;\r\n return;\r\n }\r\n const data = this.tableOption?.expand?.onExpand?.(rowData.data);\r\n if (!this.tableOption.expand?.multiple) {\r\n this.items.forEach(item => (item.meta.expand.isExpanding = item.meta.expand.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.meta.expand.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.meta.expand.data = res;\r\n rowData.meta.expand.isExpanded = true;\r\n })\r\n .finally(() => (rowData.meta.expand.isExpanding = false));\r\n } else {\r\n rowData.meta.expand.data = data;\r\n rowData.meta.expand.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdTableItem<T>) => {\r\n if (rowData.meta.group?.items?.length) {\r\n rowData.meta.group.items.forEach(e => (e.meta.selector.isSelected = rowData.meta.selector.isSelected));\r\n this.tableOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.tableOption.selector?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.tableOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.meta.selector.selectable && (!this.tableOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.tableOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.data));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdTableItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedTableItems = this.items.filter(item => item.meta.selector.isSelected);\r\n this.ref.detectChanges();\r\n };\r\n\r\n clearFilter = () => {\r\n this.filterRegister.value.remove();\r\n };\r\n\r\n setFilter = (args: { columnFilter?: Record<string, any>; externalFilter?: Record<string, any>; filterDef?: Record<string, any> }) => {\r\n const { columnFilter, externalFilter, filterDef } = args || {};\r\n if (columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\r\n };\r\n\r\n get dataItems(): T[] {\r\n return this.items.map(item => item.data);\r\n }\r\n\r\n get selectedItems(): T[] {\r\n return this.selectedTableItems.map(item => item.data);\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n #loadValues = async (columns: SdTableColumn[]) => {\r\n const promises: Promise<{\r\n key: string;\r\n valueField: string;\r\n displayField: string;\r\n data: any[];\r\n }>[] = [];\r\n for (const column of columns) {\r\n if (column.type === 'values' && !this.cacheValues[column.field]) {\r\n if (typeof column.option.items === 'function') {\r\n promises.push(\r\n column.option\r\n .items()\r\n .then(data => ({\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: Array.isArray(data) ? data : [],\r\n }))\r\n .catch(err => {\r\n console.error(err);\r\n return {\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: [],\r\n };\r\n })\r\n );\r\n } else {\r\n this.cacheValues[column.field] = column.option.items.map(e => ({\r\n [column.option.valueField]: e?.[column.option.valueField],\r\n [column.option.displayField]: e?.[column.option.displayField],\r\n }));\r\n this.#cacheObjValues[column.field] = Array.toObject(this.cacheValues[column.field], column.option.valueField);\r\n }\r\n }\r\n }\r\n if (promises.length) {\r\n const results = await Promise.all(promises);\r\n for (const result of results) {\r\n this.cacheValues[result.key] = result.data.map(e => ({\r\n [result.valueField]: e?.[result.valueField],\r\n [result.displayField]: e?.[result.displayField],\r\n }));\r\n this.#cacheObjValues[result.key] = Array.toObject(this.cacheValues[result.key], result.valueField);\r\n }\r\n }\r\n };\r\n\r\n #format = async <T = any>(rawItems: T[], columns: SdTableColumn[]) => {\r\n const items = rawItems.map(MapToSdTableItem);\r\n for (const column of columns) {\r\n // Clickable\r\n const { field, cellStyle, click, tooltip, htmlTemplate, transform } = column;\r\n if (!transform && !htmlTemplate && column.type === 'lazy-values' && typeof column.option.views === 'function') {\r\n const {\r\n option: { views, mapValue },\r\n } = column;\r\n this.#cacheObjValues[field] = this.#cacheObjValues[field] || {};\r\n const values = items\r\n .map(item => {\r\n if (typeof mapValue === 'function') {\r\n return mapValue(item.data?.[field], item.data);\r\n }\r\n return item.data?.[field];\r\n })\r\n .filter(val => !!val?.toString())\r\n .reduce<string[]>((current, next) => [...current, ...(Array.isArray(next) ? next : [next])], [])\r\n .filter(val => !Object.keys(this.#cacheObjValues[field]).includes(val))\r\n .union();\r\n\r\n if (values.length) {\r\n const lazyItems: any[] = (\r\n await views(values).catch(err => {\r\n console.error(err);\r\n return [];\r\n })\r\n )\r\n .filter(item => values.includes(item?.[column.option.valueField]))\r\n .map(e => ({\r\n [column.option.valueField]: e?.[column.option.valueField],\r\n [column.option.displayField]: e?.[column.option.displayField],\r\n }));\r\n Object.assign(this.#cacheObjValues[field], Array.toObject(lazyItems, column.option.valueField) || {});\r\n }\r\n }\r\n for (const item of items) {\r\n const rowData = item.data;\r\n const value = rowData?.[field];\r\n item.meta.display[field] = {\r\n badge: undefined,\r\n cellStyle: column.type === 'number' ? { 'text-align': 'right!important' } : undefined,\r\n data: value,\r\n isHtml: false,\r\n tooltip: typeof tooltip === 'function' ? tooltip(value, rowData) : undefined,\r\n click: typeof click === 'function' ? () => click(value, rowData) : undefined,\r\n };\r\n const display = item.meta.display[field];\r\n // Display\r\n if (typeof htmlTemplate === 'function') {\r\n display.isHtml = true;\r\n display.data = htmlTemplate(value, rowData);\r\n } else if (typeof transform === 'function') {\r\n const newValue = transform(value, rowData);\r\n if (newValue instanceof Promise) {\r\n display.data = await newValue;\r\n } else {\r\n display.data = newValue;\r\n }\r\n } else {\r\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'time') {\r\n const date = Date.toFormat(value, 'dd/MM/yyyy');\r\n let time = Date.toFormat(value, 'HH:mm:ss');\r\n if (time?.endsWith('00')) {\r\n time = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n if (column.type === 'datetime') {\r\n display.isHtml = true;\r\n display.data = `<span class=\"d-block T14R text-black400\">${time}</span><span class=\"d-block T14R\">${date}</span>`;\r\n } else {\r\n display.data = date;\r\n }\r\n }\r\n if (column.type === 'time') {\r\n display.data = time;\r\n }\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n if (column.type === 'lazy-values' && typeof column.option.mapValue === 'function') {\r\n const val = column.option.mapValue(value, rowData);\r\n const vals = (Array.isArray(val) ? val : [val]).filter(e => !!e?.toString());\r\n display.data = vals.map(val => this.#cacheObjValues[field]?.[val]?.[column.option.displayField] || val)?.join(', ');\r\n } else {\r\n const vals = (Array.isArray(value) ? value : [value]).filter(e => !!e?.toString());\r\n display.data = vals.map(val => this.#cacheObjValues[field]?.[val]?.[column.option.displayField] || val)?.join(', ');\r\n }\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n display.data = Number.toVNCurrency(value);\r\n }\r\n if (column.type === 'bool') {\r\n const { option } = column;\r\n if (value !== undefined && value !== null && value !== '') {\r\n display.data = value === true ? option?.displayOnTrue || 'True' : option?.displayOnFalse || 'False';\r\n } else {\r\n display.data = null;\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n display.badge = {\r\n type: !column?.badgeType ? 'icon' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column.badgeIcon?.(value, rowData),\r\n };\r\n } else if (column.type === 'bool') {\r\n display.badge = {\r\n type: 'circle',\r\n color: !!value ? 'success' : 'danger',\r\n icon: null,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n return items;\r\n };\r\n\r\n onOperatorChange = (column: SdTableColumn, operator: SdFilterOperator) => {\r\n this.tableOption?.filter?.operatorChange?.(column, operator);\r\n };\r\n\r\n trackBy = (index: number, item: SdTableItem) => {\r\n return item.meta.id;\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand, SdTableCommandNormal } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: SdTableItem, commands: SdTableCommand[]): Promise<SdTableCommand[]> {\r\n const results: SdTableCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item.data);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdTableCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item.data);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandDisable',\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: SdTableItem, command: SdTableCommand): boolean {\r\n if ('disabled' in command) {\r\n const { disabled } = command;\r\n if (typeof disabled === 'boolean') {\r\n return disabled;\r\n }\r\n return disabled(item.data);\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: SdTableItem): string {\r\n if (!command?.icon) {\r\n return undefined;\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item.data);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: SdTableItem): string {\r\n if (!command?.title) {\r\n return undefined;\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item.data);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableExternalFilter } from '../services/table-filter/table-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdTableExternalFilter[], field?: string): SdTableExternalFilter[] {\r\n const results: SdTableExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdTableColumn[], field?: string): SdTableColumn[] {\r\n const results: SdTableColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTableCommand } from '../../models/table-command.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-command',\r\n templateUrl: './desktop-command.component.html',\r\n styleUrls: ['./desktop-command.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCommand {\r\n @Input() item: SdTableItem;\r\n @Input() commands: SdTableCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdTableColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableItem } from '../models/table-item.model';\r\nimport { SdTableAction, SdTableActionNormal } from '../models/table-option-selector.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdTableAction): SdTableAction => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: SdTableItem[], actions: SdTableAction[]): SdTableAction[] => {\r\n const results: SdTableAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n const children: SdTableActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n children.push(childAction);\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n const key = hash(action);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdTableItem[], rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.meta.selector.selectable = true;\r\n return false;\r\n }\r\n rowData.meta.selector.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.meta.selector.selectable;\r\n }\r\n // Lọc các action theo selectedItems hiện tại\r\n const availableActions = actions.filter(action => {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n const key = hash(action);\r\n return selectedItems.every(e => e.meta.selector.actions.includes(key));\r\n }\r\n });\r\n // Kiểm tra rowData có action nào thỏa hay ko, nếu ko thì disabled\r\n for (const action of availableActions) {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n if(rowData.meta.selector.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.meta.selector.actions.includes(hash(action))) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdTableItem[], selection: SdTableOptionSelector): Promise<boolean> => {\r\n const { actions } = selection;\r\n if (!actions?.length) {\r\n return true;\r\n }\r\n if (!items.length) {\r\n return false;\r\n }\r\n if (actions.some(e => ('children' in e && e.children.some(e1 => e1.isGrouped)) || e.isGrouped)) {\r\n return false;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n const first = items.find(t => t.meta.selector.actions?.length);\r\n if (first) {\r\n for (const action of first.meta.selector.actions) {\r\n if (items.filter(t => t.meta.selector.actions?.length).every(e => e.meta.selector.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTabelCellDefDirective } from '../../directives/sd-table-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() value: any;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() cellDef: {\r\n [column: string]: SdTabelCellDefDirective\r\n } = {};\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\nimport { SdTabelCellDefDirective } from '../directives/sd-table-cell-def.directive';\r\nimport { TemplateRef } from '@angular/core';\r\n\r\nexport type SdTableColumn<T = any> =\r\n | SdTableColumnText<T>\r\n | SdTableColumnNumber<T>\r\n | SdTableColumnBool<T>\r\n | SdTableColumnDate<T>\r\n | SdTableColumnValues<T>\r\n | SdTableColumnLazyValues<T>\r\n | SdTableColumnChildren<T>;\r\n\r\nexport type SdFilterOperator =\r\n | 'EQUAL'\r\n | 'NOT_EQUAL'\r\n | 'CONTAIN'\r\n | 'NOT_CONTAIN'\r\n | 'IN'\r\n | 'NOT_IN'\r\n | 'START_WITH'\r\n | 'END_WITH'\r\n | 'GREATER_THAN'\r\n | 'LESS_THAN'\r\n | 'GREATER_OR_EQUAL'\r\n | 'LESS_OR_EQUAL'\r\n | 'NULL'\r\n | 'NOT_NULL';\r\n\r\nexport const SdFilterOperators: { value: SdFilterOperator; symbol?: string; display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi',\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi',\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong',\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong',\r\n },\r\n {\r\n value: 'NULL',\r\n symbol: 'motion_photos_off',\r\n display: 'Là rỗng',\r\n },\r\n {\r\n value: 'NOT_NULL',\r\n symbol: 'adjust',\r\n display: 'Không rỗng',\r\n },\r\n];\r\n\r\nexport type SdTableColumnTransformFunc<T = any> = (\r\n value: any,\r\n rowData: T,\r\n args?: {\r\n isExport?: boolean;\r\n }\r\n) => string | Promise<string>;\r\n\r\ninterface SdTableColumnBase<T = any> {\r\n field: Extract<keyof T, string>;\r\n title: string;\r\n titleHtml?: string;\r\n description?: string;\r\n width?: string;\r\n hidden?: boolean;\r\n invisible?: boolean;\r\n fixed?: boolean;\r\n cellStyle?: (value: any, rowData: T) => Record<string, string>;\r\n htmlTemplate?: (value: any, rowData: T) => string;\r\n transform?: SdTableColumnTransformFunc<T>;\r\n tooltip?: (value: any, rowData: T) => string;\r\n click?: (value: any, rowData: T) => void;\r\n sortable?: boolean;\r\n filter?: {\r\n disabled?: boolean;\r\n defaultShowing?: boolean;\r\n default?: any;\r\n // Chỉ dành cho filter inline column\r\n operator?: {\r\n default?:SdFilterOperator;\r\n enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n cellDef?: TemplateRef<SdTabelCellDefDirective>;\r\n}\r\n\r\ninterface SdTableColumnText<T = any> extends SdTableColumnBase<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n}\r\n\r\ninterface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {\r\n type: 'number';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n}\r\n\r\ninterface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n}\r\n\r\ninterface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n filter?: SdTableColumnBase['filter'] & { useFilterDate?: boolean }\r\n}\r\n\r\nexport interface SdTableColumnValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'values';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'icon' | 'circle' | 'round';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: any[] | (() => Promise<any[]>);\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n}\r\n\r\nexport interface SdTableColumnLazyValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'lazy-values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: (searchText: string) => Promise<any[]>; // Filter\r\n // Nếu không có tranform hay htmlTemplate cần khai báo views\r\n views?: (values: string[]) => Promise<any[]>; // Hiển thị\r\n mapValue?: (value: any, rowData?: T) => string | string[]; // Một số trường hợp dữ liệu của field là object hoặc muốn value lấy dữ liệu khác thì sử dụng hàm này\r\n selection?: 'MULTIPLE';\r\n };\r\n}\r\n\r\ntype SdTableColumnNormal<T> = Exclude<SdTableColumn<T>, SdTableColumnChildren<T>>;\r\n\r\nexport interface SdTableColumnChildren<T = any> extends SdTableColumnBase<T> {\r\n type: 'children';\r\n children: SdTableColumnNormal<T>[];\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdFilterOperator, SdFilterOperators, SdTableColumn } from '../../models/table-column.model';\r\n\r\n@Component({\r\n selector: 'sd-column-inline-filter',\r\n templateUrl: './column-inline-filter.component.html',\r\n styleUrls: ['./column-inline-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdColumnInlineFilter implements OnInit {\r\n value: any;\r\n @Input('value') _value(value: any) {\r\n this.value = value;\r\n this.#valueChanges.next();\r\n }\r\n inlineSymbol: string = 'filter_alt';\r\n #inlineOperator: SdFilterOperator;\r\n @Input('inlineOperator') set _inlineOperator(inlineOperator: SdFilterOperator) {\r\n if (this.#inlineOperator !== inlineOperator) {\r\n this.#inlineOperator = inlineOperator;\r\n this.inlineSymbol = SdFilterOperators.find(e => e.value === inlineOperator)?.symbol ?? 'filter_alt';\r\n }\r\n }\r\n @Output() inlineOperatorChange = new EventEmitter<SdFilterOperator>();\r\n @Output() operatorChange = new EventEmitter<SdFilterOperator>();\r\n\r\n\r\n columnFilter: Record<string, any> = {};\r\n @Input('columnFilter') set _columnFilter(columnFilter: Record<string, any>) {\r\n this.columnFilter = columnFilter || {};\r\n this.#valueChanges.next();\r\n }\r\n operators: { value: SdFilterOperator; display: string }[] = [];\r\n column: SdTableColumn;\r\n items: any[] | ((searchText: string) => Promise<any[]>) = [];\r\n @Input() cacheValues: Record<string, any[]>;\r\n @Input('column') set _column(column: SdTableColumn) {\r\n this.column = column;\r\n if (!column?.filter?.disabled && column?.filter?.operator?.enable) {\r\n this.operators = SdFilterOperators.filter(e => column.filter.operator.list?.includes?.(e.value));\r\n } else {\r\n this.operators = [];\r\n }\r\n if (this.column.type === 'values') {\r\n if (Array.isArray(this.column.option.items)) {\r\n this.items = this.column.option.items;\r\n } else {\r\n this.items = this.cacheValues?.[column.field] || []\r\n }\r\n } else if (this.column.type === 'lazy-values') {\r\n this.items = this.column.option.items;\r\n }\r\n } \r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(private ref: ChangeDetectorRef) {}\r\n ngOnInit() {\r\n this.#subcription.add(\r\n this.#valueChanges.pipe(startWith(this.columnFilter)).subscribe(() => {\r\n if (this.column.type === 'date' || this.column.type === 'time' || this.column.type === 'datetime') {\r\n if (!this.column?.filter?.useFilterDate) {\r\n this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {\r\n from: null,\r\n to: null,\r\n };\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n };\r\n\r\n onChangeOperator = (operator: { value: SdFilterOperator; symbol?: string; display: string }) => {\r\n if (operator) {\r\n this.#inlineOperator = operator.value;\r\n this.inlineSymbol = operator.symbol;\r\n } else {\r\n this.#inlineOperator = null;\r\n this.inlineSymbol = 'filter_alt';\r\n }\r\n this.inlineOperatorChange.emit(this.#inlineOperator);\r\n this.operatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.meta.selector.actions = rowData.meta.selector.actions || [];\r\n if (!actions?.length) {\r\n rowData.meta.selector.selectable = true;\r\n return rowData.meta.selector.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData.data)) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.meta.selector.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData.data)) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.meta.selector.selectable = !!rowData.meta.selector.actions?.length;\r\n if (!rowData.meta.selector.selectable || !groupedActions.length || rowData?.meta.group?.items?.length) {\r\n return rowData.meta.selector.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.meta.selector.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\nimport { SdTableAction } from '../../models/table-option-selector.model';\r\n\r\n@Component({\r\n selector: 'sd-table-quick-action',\r\n templateUrl: './quick-action.component.html',\r\n styleUrls: ['./quick-action.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTableQuickAction {\r\n @Input() tableOption: SdTableOption;\r\n @Input() selectedTableItems: SdTableItem[];\r\n @Output() clear = new EventEmitter();\r\n constructor() {}\r\n onClear = () => {\r\n this.clear.emit();\r\n };\r\n\r\n onClickAction = (action: SdTableAction) => {\r\n if ('click' in action) {\r\n action?.click(this.selectedTableItems.map(e => e.data));\r\n }\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { MapToSdTableItem, SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'sdGroup',\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: SdTableItem[], gridOption: SdTableOption): SdTableItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdTableItem[];\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] }),\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdTableItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n const result = MapToSdTableItem({});\r\n result.meta.group.items = groupItem[key];\r\n result.meta.group.htmlTemplate = htmlTemplate(groupItem[key]);\r\n results.push(result);\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdTable } from './table.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdTabelCellDefDirective } from './directives/sd-table-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdTableFilter } from './components/table-filter/table-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { SdTableQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\nimport { SdGroupModule } from '@sd-angular/core/group';\r\nimport { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to}/${length}`;\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatChipsModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n SdCommonModule,\r\n SdGroupModule,\r\n ],\r\n declarations: [\r\n SdTableQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdTable,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdTabelCellDefDirective,\r\n SdTableFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdPopupConfiguration,\r\n SdTableFilter,\r\n SdPopupFilter,\r\n SdPopupExport,\r\n // Pipes\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnTooltipPipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionVisiblePipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionVisibleSelectAllPipe,\r\n SdGroupPipe,\r\n ],\r\n exports: [\r\n SdTable,\r\n SdMaterialFooterDefDirective,\r\n SdTabelCellDefDirective,\r\n SdTableFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdTableFilterService,\r\n SdTableConfigurationService,\r\n {\r\n provide: MatPaginatorIntl,\r\n useClass: MatPaginatorIntlCro,\r\n },\r\n ],\r\n})\r\nexport class SdTableModule {}\r\n","import { Observable } from 'rxjs';\r\nimport { SdFilterOperator, SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableFilterDefDirective } from '../../directives/sd-table-filter-def.directive';\r\nimport { TemplateRef } from '@angular/core';\r\n\r\nexport class SdTableQuickFilter {\r\n code: string;\r\n columnFilter: {\r\n [field: string]: any;\r\n };\r\n externalFilter: {\r\n [field: string]: any;\r\n };\r\n filterDef: {\r\n [field: string]: any;\r\n };\r\n}\r\n\r\nexport interface SdTableFilterConfiguration {\r\n // selectedQuickFilter: string;\r\n // quickFilters: SdGridMaterialQuickFilter[];\r\n\r\n inlineColumn: Record<string, boolean>; // Ẩn hiện filter column\r\n // columnFilter?: Record<string, any>; // Giá trị filter column\r\n\r\n inlineExternal: Record<string, boolean>; // Ẩn hiện filter external\r\n // externalFilter?: Record<string, any>; // Giá trị filter external\r\n\r\n inlineFilterDef: Record<string, boolean>; // Ẩn hiện filter def\r\n // filterDef?: Record<string, any>; // Giá trị filter def\r\n}\r\n\r\nexport interface SdTableFilterValue {\r\n columnOperator?: Record<string, SdFilterOperator>;\r\n\r\n columnFilter?: Record<string, any>; // Giá trị filter column\r\n\r\n externalFilter?: Record<string, any>; // Giá trị filter external\r\n\r\n filterDef?: Record<string, any>; // Giá trị filter def\r\n\r\n notReload?: boolean; // Để nhận biết là chỉ set giá trị, không trigger change\r\n}\r\n\r\nexport interface SdTableFilterRequest<T = any> {\r\n columnOperator: Record<string, SdFilterOperator>;\r\n rawColumnFilter: Record<keyof T, any>;\r\n rawExternalFilter: Record<string, any>;\r\n rawFilterDef: Record<string, any>;\r\n pageNumber: number;\r\n pageSize: number;\r\n orderBy: string;\r\n orderDirection: 'asc' | 'desc' | '';\r\n isExported?: boolean;\r\n visibledColumns?: SdTableColumn[];\r\n}\r\n\r\nexport interface SdTableOptionFilter {\r\n key?: string;\r\n cacheFilter?: boolean;\r\n disabled?: boolean;\r\n hideInlineFilter?: boolean;\r\n externalFilters?: SdTableExternalFilter[];\r\n sorts?: string[];\r\n enableCollapse?: boolean;\r\n operatorChange?: (column?: SdTableColumn, operator?: SdFilterOperator) => void;\r\n}\r\n\r\nexport declare type SdTableExternalFilter =\r\n | TextFilter\r\n | DateFilter\r\n | DateTimeFilter\r\n | DateRangeFilter\r\n | NumberFilter\r\n | ValuesFilter\r\n | LazyValuesFilter\r\n | BoolFilter\r\n | CustomFilter;\r\n\r\ninterface BaseFilter {\r\n field: string;\r\n title: string;\r\n defaultShowing?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface TextFilter extends BaseFilter {\r\n type: 'string';\r\n default?: string;\r\n}\r\n\r\ninterface DateFilter extends BaseFilter {\r\n type: 'date';\r\n default?: Date | string;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n}\r\n\r\ninterface DateTimeFilter extends BaseFilter {\r\n type: 'datetime';\r\n default?: Date | string;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n}\r\n\r\ninterface DateRangeFilter extends BaseFilter {\r\n type: 'daterange';\r\n enableTime?: boolean;\r\n minDate?: string | Date;\r\n maxDate?: string | Date;\r\n default?: {\r\n from?: Date | string;\r\n to?: Date | string;\r\n };\r\n}\r\n\r\ninterface NumberFilter extends BaseFilter {\r\n type: 'number';\r\n default?: number;\r\n}\r\n\r\ninterface ValuesFilter extends BaseFilter {\r\n type: 'values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: any[] | (() => Promise<any[]>);\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n default?: string | string[];\r\n}\r\n\r\ninterface LazyValuesFilter extends BaseFilter {\r\n type: 'lazy-values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: (searchText: string) => Promise<any[]>; // Filter\r\n selection?: 'MULTIPLE';\r\n };\r\n default?: string | string[];\r\n}\r\n\r\ninterface BoolFilter extends BaseFilter {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n default?: boolean;\r\n}\r\n\r\ninterface CustomFilter extends BaseFilter {\r\n type: 'custom';\r\n filterDef?: TemplateRef<SdTableFilterDefDirective>;\r\n default?: any;\r\n}\r\n\r\nexport interface SdTableFilterRegister {\r\n configuration: {\r\n get: () => SdTableFilterConfiguration;\r\n set: (configuration: Partial<SdTableFilterConfiguration>) => SdTableFilterConfiguration;\r\n remove: () => void;\r\n observer: Observable<SdTableFilterConfiguration>;\r\n };\r\n value: {\r\n get: () => SdTableFilterValue;\r\n set: (value: Partial<SdTableFilterValue>) => SdTableFilterValue;\r\n remove: () => void;\r\n observer: Observable<SdTableFilterValue>;\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SdColumnInlineFilter as ɵe} from './src/lib/components/column-inline-filter/column-inline-filter.component';\nexport {SdDesktopCellView as ɵc} from './src/lib/components/desktop-cell-view/desktop-cell-view.component';\nexport {SdDesktopCell as ɵb} from './src/lib/components/desktop-cell/desktop-cell.component';\nexport {SdDesktopCommand as ɵd} from './src/lib/components/desktop-command/desktop-command.component';\nexport {SdPopupConfiguration as ɵf} from './src/lib/components/popup-configuration/popup-configuration.component';\nexport {SdPopupExport as ɵj} from './src/lib/components/popup-export/popup-export.component';\nexport {SdPopupFilter as ɵl} from './src/lib/components/popup-filter/popup-filter.component';\nexport {SdTableQuickAction as ɵa} from './src/lib/components/quick-action/quick-action.component';\nexport {SdTableFilter as ɵk} from './src/lib/components/table-filter/table-filter.component';\nexport {SdMaterialSubInformationDefDirective as ɵm} from './src/lib/directives/sd-table-expand-def.directive';\nexport {SdMaterialFooterDefDirective as ɵn} from './src/lib/directives/sd-table-footer-def.directive';\nexport {ISdTableConfiguration as ɵh,TABLE_CONFIG as ɵi} from './src/lib/models/table-configuration.model';\nexport {SdColumnTooltipPipe as ɵt} from './src/lib/pipes/column-tooltip.pipe';\nexport {SdCommandDisablePipe as ɵq} from './src/lib/pipes/command-disable.pipe';\nexport {SdCommandFilterPipe as ɵp} from './src/lib/pipes/command-filter.pipe';\nexport {SdCommandIconPipe as ɵr} from './src/lib/pipes/command-icon.pipe';\nexport {SdCommandTitlePipe as ɵs} from './src/lib/pipes/command-title.pipe';\nexport {SdFilterColumnPipe as ɵu} from './src/lib/pipes/filter-column.pipe';\nexport {SdFilterExternalPipe as ɵv} from './src/lib/pipes/filter-external.pipe';\nexport {SdGroupPipe as ɵba} from './src/lib/pipes/sd-group.pipe';\nexport {SdSelectionActionFilterPipe as ɵw} from './src/lib/pipes/selection-action-filter.pipe';\nexport {SdSelectionDisablePipe as ɵy} from './src/lib/pipes/selection-disable.pipe';\nexport {SdSelectionVisibleSelectAllPipe as ɵz} from './src/lib/pipes/selection-visible-select-all.pipe';\nexport {SdSelectionVisiblePipe as ɵx} from './src/lib/pipes/selection-visible.pipe';\nexport {SdTableConfigurationService as ɵg} from './src/lib/services/table-configuration.service';\nexport {SdTableFilterService as ɵo} from './src/lib/services/table-filter/table-filter.service';"],"names":["hash","uuid.v4","_subscription","_initConfiguration","_getExportColumns"],"mappings":"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"}
|