mm-m3-list
Version:
Created as a helper for H5-SDK in order to display a panel B of an M3 panel whether via Bookmark or SearchRequest. Do not use this library to load a transactional program or programs that will require to load thousands of data at one go. By default this
1 lines • 20.7 kB
Source Map (JSON)
{"version":3,"file":"mm-m3-list.mjs","sources":["../../../projects/mm-m3-list/src/lib/mm-m3-list.service.ts","../../../projects/mm-m3-list/src/lib/mm-m3-list.component.ts","../../../projects/mm-m3-list/src/lib/mm-m3-list.module.ts","../../../projects/mm-m3-list/src/public-api.ts","../../../projects/mm-m3-list/src/mm-m3-list.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MMM3ListService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component, OnInit, ViewChild, Input, EventEmitter, Output } from '@angular/core';\r\nimport { IFormResponse, IBookmark, ISearchRequest, Panel } from '@infor-up/m3-odin';\r\nimport { FormService } from '@infor-up/m3-odin-angular';\r\nimport { SohoDataGridComponent, SohoMessageService } from 'ids-enterprise-ng';\r\nimport { Observable } from 'rxjs';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nclass ProgramInstance {\r\n formService: FormService;\r\n instanceId: string;\r\n constructor(formService: FormService, instanceId: string) {\r\n this.formService = formService;\r\n this.instanceId = instanceId;\r\n }\r\n\r\n executeCommand(commandType: string, commandValue: string, params?: string): Observable<IFormResponse> {\r\n const request = {\r\n commandType,\r\n commandValue,\r\n params,\r\n instanceId: this.instanceId\r\n };\r\n\r\n return this.formService.executeRequest(request);\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'mm-m3-list',\r\n template: `\r\n <div soho-busyindicator [activated]=\"isBusy\" [displayDelay]=\"0\">\r\n <div soho-datagrid [gridOptions]=\"gridOptions\" [data]=\"data | async\"></div>\r\n </div>`\r\n})\r\nexport class MMM3ListComponent implements OnInit {\r\n /**\r\n * Busy indicator\r\n */\r\n isBusy = false;\r\n\r\n /**\r\n * Instance id. Will be used to close the running instance of a bookmark list in the server\r\n */\r\n private instanceId: string;\r\n\r\n /**\r\n * Bookmark definition to open\r\n */\r\n @Input() bookmark: IBookmark;\r\n\r\n /**\r\n * Search definition to open\r\n */\r\n @Input() searchRequest: ISearchRequest;\r\n\r\n /**\r\n * Custom gridOptions. Column definitions will not be overrwitten\r\n */\r\n @Input() gridOptions: SohoDataGridOptions = undefined;\r\n\r\n /**\r\n * Additional columns\r\n */\r\n @Input() additionalColumns: SohoDataGridColumn[];\r\n\r\n /**\r\n * Columns to be ignored\r\n */\r\n @Input() ignoredColumns: string[] = [];\r\n\r\n /**\r\n * Key-value pair to overwrite the column heading. Key would be the column name and value will be the overriding column label\r\n */\r\n @Input() columnHeadings = {};\r\n\r\n /**\r\n * Flag if to add the default filterable column from bookmark\r\n */\r\n @Input() useDefaultFilter = true;\r\n\r\n /**\r\n * List of columns that will have a filter\r\n */\r\n @Input() filterables: string[] = [];\r\n\r\n /**\r\n * List of columns that are editable\r\n */\r\n @Input() editables: string[] = [];\r\n\r\n /**\r\n * Number of page down request for a bookmark. Default would load upto 99 rows\r\n */\r\n @Input() requestCount = 3;\r\n\r\n /**\r\n * If selection checkbox will be added as a column\r\n */\r\n @Input() enableCheckbox = false;\r\n\r\n /**\r\n * Emits when first set of data has been loaded\r\n */\r\n @Output() firstDataRetrieved = new EventEmitter();\r\n\r\n /**\r\n * Emits when data has been loaded\r\n */\r\n @Output() dataRetrieved = new EventEmitter();\r\n\r\n /**\r\n * Data grid instance\r\n */\r\n @ViewChild(SohoDataGridComponent) dataGrid: SohoDataGridComponent;\r\n\r\n /**\r\n * Subject and observable for shown records\r\n */\r\n private dataSubject$ = new BehaviorSubject([]);\r\n data = this.dataSubject$.asObservable();\r\n\r\n /**\r\n * Will contain the complete data after all records has been loaded.\r\n * Used for when the gridOption groupable is enabled\r\n */\r\n private allItems = [];\r\n\r\n /**\r\n * Default gridOptions\r\n */\r\n defaultOptions: SohoDataGridOptions = {\r\n columns: [], // Cannot be overwritten from here\r\n selectable: 'mixed',\r\n disableRowDeactivation: true,\r\n filterable: false,\r\n paging: false,\r\n rowHeight: 'short'\r\n };\r\n\r\n constructor(private readonly formService: FormService, private messageService: SohoMessageService, private http: HttpClient) {\r\n }\r\n\r\n ngOnInit() {\r\n this.allItems = [];\r\n if (!this.gridOptions) {\r\n this.gridOptions = this.defaultOptions;\r\n } else {\r\n this.gridOptions = {...this.defaultOptions, ...this.gridOptions};\r\n }\r\n }\r\n\r\n private onResponse(response: IFormResponse): void {\r\n this.instanceId = response.instanceId;\r\n\r\n if (response.result !== 0) {\r\n this.onError(response);\r\n return;\r\n }\r\n\r\n if (response.panel.list) {\r\n const panel = response.panel;\r\n const items = panel.list.items;\r\n\r\n this.createColumns(panel);\r\n\r\n this.allItems = [...this.allItems, ...items];\r\n\r\n // Do not show initial data if groupable is used.\r\n // All data needs to be retrieved before showing data.\r\n if (!this.gridOptions.groupable) {\r\n this.dataSubject$.next(items);\r\n }\r\n\r\n // Emit event that first set of records has been fetched\r\n setTimeout(() => {\r\n this.firstDataRetrieved.emit();\r\n });\r\n\r\n if (this.searchRequest) {\r\n this.dataLoaded();\r\n return;\r\n }\r\n\r\n if (this.bookmark && !this.searchRequest) {\r\n if (items.length < 33) {\r\n this.dataLoaded();\r\n return;\r\n }\r\n\r\n const programInstance = new ProgramInstance(this.formService, this.instanceId);\r\n this.loadAllRows(programInstance, 1);\r\n }\r\n } else {\r\n this.dataLoaded();\r\n }\r\n }\r\n\r\n private createColumns(panel: Panel) {\r\n const columns: SohoDataGridColumn[] = [];\r\n if (this.gridOptions.columns.length === 0) {\r\n if (this.enableCheckbox) {\r\n columns.push({\r\n id: 'selectionCheckbox',\r\n sortable: false,\r\n resizable: false,\r\n width: 50,\r\n formatter: Soho.Formatters.SelectionCheckbox,\r\n align: 'center'});\r\n }\r\n\r\n panel.list.columns.forEach((col: any) => {\r\n if (this.ignoredColumns.indexOf(col.fullName) === -1) {\r\n columns.push({\r\n id: col.fullName,\r\n field: col.fullName,\r\n name: this.columnHeadings[col.fullName] ? this.columnHeadings[col.fullName] : col.header,\r\n align: col.isRight ? 'right' : 'left',\r\n filterType: col.positionField && this.useDefaultFilter || this.filterables.indexOf(col.fullName) > -1 ?\r\n col.isRight ? 'integer' : 'text' : null,\r\n editor: this.editables.indexOf(col.fullName) > -1 ? Soho.Editors.Input : null\r\n });\r\n }\r\n });\r\n if (this.additionalColumns) {\r\n this.additionalColumns.forEach((column: SohoDataGridColumn | any) => {\r\n if (column.idx) {\r\n columns.splice(column.idx, 0, column);\r\n } else {\r\n columns.push(column);\r\n }\r\n });\r\n }\r\n this.dataGrid.updateColumns(columns, null);\r\n }\r\n }\r\n\r\n /**\r\n * Recursive funciton to load all rows\r\n */\r\n private loadAllRows(programInstance: ProgramInstance, count: number) {\r\n if (count > this.requestCount) {\r\n this.dataLoaded();\r\n return;\r\n }\r\n\r\n programInstance.executeCommand('PAGE', 'DOWN').subscribe(response => {\r\n const panel = response.panel;\r\n if (panel.list.items.length === 0) {\r\n\r\n this.dataLoaded();\r\n return;\r\n }\r\n\r\n // Add new data to existing\r\n const newItems = [...this.allItems, ...panel.list.items];\r\n\r\n this.allItems = [...newItems];\r\n if (!this.gridOptions.groupable) {\r\n this.dataSubject$.next(newItems);\r\n }\r\n\r\n this.loadAllRows(programInstance, ++count);\r\n });\r\n }\r\n\r\n openBookmark() {\r\n this.allItems = [];\r\n const defaultBookmark: IBookmark = {\r\n isStateless: false,\r\n values: {}\r\n };\r\n\r\n this.isBusy = true;\r\n this.formService\r\n .executeBookmark({...defaultBookmark, ...this.bookmark})\r\n .subscribe((r: IFormResponse) => this.onResponse(r),\r\n (r) => this.onError(r),\r\n () => {\r\n if (!this.gridOptions.groupable) {\r\n this.isBusy = false;\r\n }\r\n });\r\n }\r\n\r\n executeSearch() {\r\n this.isBusy = true;\r\n this.formService.executeSearch(this.searchRequest).subscribe((r: IFormResponse) => {\r\n this.onResponse(r);\r\n }, (r) => {\r\n this.onError(r);\r\n }, () => {\r\n this.isBusy = false;\r\n });\r\n }\r\n\r\n selectedRows() {\r\n const selectedRows = [];\r\n this.dataGrid.selectedRows().forEach(item => {\r\n selectedRows.push(item.data);\r\n });\r\n return selectedRows;\r\n }\r\n\r\n getItems() {\r\n return this.dataGrid.dataset;\r\n }\r\n\r\n updateItems(items: any) {\r\n this.dataSubject$.next(items);\r\n }\r\n\r\n private dataLoaded() {\r\n if (this.gridOptions.groupable) {\r\n this.dataSubject$.next(this.allItems);\r\n }\r\n\r\n this.closeInstance();\r\n }\r\n\r\n private closeInstance() {\r\n this.formService\r\n .executeCommand('CLOSE', this.instanceId)\r\n .pipe(\r\n finalize(() => {\r\n this.isBusy = false;\r\n setTimeout(() => {\r\n this.dataRetrieved.emit();\r\n });\r\n })\r\n )\r\n .subscribe();\r\n return;\r\n }\r\n\r\n private onError(response: IFormResponse): void {\r\n const message = response.message || 'Unable to open bookmark';\r\n const buttons = [{ text: 'OK', click: (e: any, modal: any) => { modal.close(); } }];\r\n this.messageService.error()\r\n .title('Bookmark error')\r\n .message(message)\r\n .buttons(buttons)\r\n .open();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { SohoComponentsModule } from 'ids-enterprise-ng';\r\nimport { MMM3ListComponent } from './mm-m3-list.component';\r\n\r\n@NgModule({\r\n declarations: [MMM3ListComponent],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n SohoComponentsModule\r\n ],\r\n exports: [MMM3ListComponent]\r\n})\r\nexport class MMM3ListModule { }\r\n","/*\r\n * Public API Surface of mm-m3-list\r\n */\r\n\r\nexport * from './lib/mm-m3-list.service';\r\nexport * from './lib/mm-m3-list.component';\r\nexport * from './lib/mm-m3-list.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}