{"version":3,"sources":["webpack:////Users/owenli/Documents/workspace/awi-wool-fe/src/views/blocks/tableBlock/js/tableBlock.js","webpack:///./wool/numberFormatter.js","webpack:///./wool/operatingSystemDetector.js"],"names":["CLS","agGrid","require","TableBlock","element","_this","this","className","arguments","length","undefined","_classCallCheck","$element","$","$agThemeWool","children","numberFormatter","operatingSystemDetector","operatingSystem","getOS","setEmptyMessages","scrollbarWidth","columnDefs","rowData","noRowsTypes","error","empty","noRowsType","OperatingSystemItems","Windows","addClass","setCustomLoadingOverlay","setCustomNoRowsOverlay","setTableData","setGridOptions","loadGrid","gridOptions","api","showLoadingOverlay","on","concat","event","params","data","hideOverlay","find","removeClass","isEmpty","showNoRowsOverlay","updateRowData","key","value","emptyMessage","_","isNil","attr","errorMessage","_this2","CustomLoadingOverlay","prototype","init","eGui","document","createElement","innerHTML","getGui","_this3","CustomNoRowsOverlay","message","errorClass","_this4","domLayout","onGridReady","_event","resizeTable","window","throttle","suppressDragLeaveHidesColumns","context","components","customLoadingOverlay","customNoRowsOverlay","loadingOverlayComponent","noRowsOverlayComponent","extend","eGridDiv","Grid","items","add","resizeRows","resizeColumns","columns","columnApi","getAllColumns","columnIds","map","column","getColId","autoSizeColumns","sumBy","getActualWidth","outerWidth","sizeColumnsToFit","NumberFormatter","number","parts","toString","split","replace","join","OperatingSystemDetector","MacOS","Linux","Android","userAgent","navigator","platform","indexOf","iOS","test"],"mappings":"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","file":"block-28.430117f348aedc9992ce.js","sourcesContent":["const NS = 'TableBlock';\nconst CLS = 'tableBlock';\n\nlet agGrid = require('ag-grid-community');\n\nimport { numberFormatter } from '../../../../global/js/wool/numberFormatter';\nimport { operatingSystemDetector } from '../../../../global/js/wool/operatingSystemDetector';\n\nexport class TableBlock {\n\tconstructor(element, className = CLS) {\n\t\tthis.element = element;\n\t\tthis.$element = $(element);\n\t\tthis.$agThemeWool = this.$element.children('.ag-theme-wool');\n\t\tthis.numberFormatter = numberFormatter;\n\t\tthis.operatingSystemDetector = operatingSystemDetector;\n\t\tthis.operatingSystem = this.operatingSystemDetector.getOS();\n\n\t\tthis.setEmptyMessages();\n\t\tthis.scrollbarWidth = 8;\n\t\tthis.columnDefs = [];\n\t\tthis.rowData = [];\n\t\tthis.noRowsTypes = {\n\t\t\terror: 'error',\n\t\t\tempty: 'empty'\n\t\t};\n\t\tthis.noRowsType = this.noRowsTypes.empty;\n\n\t\tif(this.operatingSystem === this.operatingSystemDetector.OperatingSystemItems.Windows) {\n\t\t\tthis.$agThemeWool.addClass('ag-theme-windows');\n\t\t\tthis.scrollbarWidth = 17;\n\t\t}\n\n\t\tthis.setCustomLoadingOverlay();\n\t\tthis.setCustomNoRowsOverlay();\n\t\tthis.setTableData();\n\t\tthis.setGridOptions();\n\t\tthis.loadGrid();\n\t\tthis.gridOptions.api.showLoadingOverlay();\n\n\t\tthis.$element.on(`${className}.update`, (event, params) => {\n\t\t\tif(params.data && params.data.length > 0) {\n\t\t\t\tthis.gridOptions.api.hideOverlay();\n\t\t\t\tthis.$element.find('.ag-root').removeClass('ag-root--error');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif(params.isEmpty) {\n\t\t\t\t\tthis.noRowsType = this.noRowsTypes.empty;\n\t\t\t\t\tthis.$element.find('.ag-root').removeClass('ag-root--error');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.noRowsType = this.noRowsTypes.error;\n\t\t\t\t\tthis.$element.find('.ag-root').addClass('ag-root--error');\n\t\t\t\t}\n\t\t\t\tthis.gridOptions.api.showNoRowsOverlay();\n\t\t\t}\n\t\t\tthis.updateRowData(params.data);\n\t\t});\n\t}\n\n\t// Sets the generic error messages\n\tsetEmptyMessages() {\n\t\tthis.emptyMessage = !_.isNil(this.$element.attr('data-empty-message')) ? this.$element.attr('data-empty-message') : 'No items loaded';\n\t\tthis.errorMessage = !_.isNil(this.$element.attr('data-error-message')) ? this.$element.attr('data-error-message') : 'Error in loading tableā€¦';\n\t}\n\n\tsetCustomLoadingOverlay() {\n\t\tthis.CustomLoadingOverlay = () => {};\n\t\tthis.CustomLoadingOverlay.prototype.init = () => {\n\t\t\tthis.eGui = document.createElement('div');\n\t\t\tthis.eGui.innerHTML = `
\n\t\t\t\t
\n\t\t\t
`;\n\t\t};\n\n\t\tthis.CustomLoadingOverlay.prototype.getGui = () => {\n\t\t\treturn this.eGui;\n\t\t};\n\t}\n\n\tsetCustomNoRowsOverlay() {\n\t\tthis.CustomNoRowsOverlay = () => {};\n\t\tthis.CustomNoRowsOverlay.prototype.init = () => {\n\t\t\tlet message = this.emptyMessage;\n\t\t\tlet errorClass = this.noRowsType === this.noRowsTypes.error ? 'ag-overlay-loading-center-message--error' : '';\n\t\t\tif(this.noRowsType === this.noRowsTypes.error) {\n\t\t\t\tmessage = this.errorMessage;\n\t\t\t}\n\n\t\t\tthis.eGui = document.createElement('div');\n\t\t\tthis.eGui.innerHTML = `
\n\t\t\t\t
\n\t\t\t\t\t${message}\n\t\t\t\t
\n\t\t\t
`;\n\t\t};\n\n\t\tthis.CustomNoRowsOverlay.prototype.getGui = () => {\n\t\t\treturn this.eGui;\n\t\t};\n\t}\n\n\tsetTableData() {\n\t}\n\n\tsetGridOptions(gridOptions = {}) {\n\t\tthis.gridOptions = {\n\t\t\tcolumnDefs: this.columnDefs,\n\t\t\trowData: this.rowData,\n\t\t\tdomLayout: 'autoHeight',\n\t\t\tscrollbarWidth: this.scrollbarWidth,\n\t\t\tonGridReady: (_event) => {\n\t\t\t\tthis.resizeTable();\n\n\t\t\t\t$(window).on('resize', _.throttle(() => {\n\t\t\t\t\tthis.resizeTable();\n\t\t\t\t}, 250));\n\t\t\t},\n\t\t\tsuppressDragLeaveHidesColumns: true,\n\t\t\tcontext: {\n\t\t\t\tnumberFormatter: this.numberFormatter\n\t\t\t},\n\t\t\tcomponents: {\n\t\t\t\tcustomLoadingOverlay: this.CustomLoadingOverlay,\n\t\t\t\tcustomNoRowsOverlay: this.CustomNoRowsOverlay\n\t\t\t},\n\t\t\tloadingOverlayComponent: 'customLoadingOverlay',\n\t\t\tnoRowsOverlayComponent: 'customNoRowsOverlay'\n\t\t};\n\n\t\tthis.gridOptions = _.extend(this.gridOptions, gridOptions);\n\t}\n\n\tloadGrid() {\n\t\tthis.eGridDiv = this.$agThemeWool[0];\n\t\tthis.agGrid = new agGrid.Grid(this.eGridDiv, this.gridOptions);\n\t}\n\n\tupdateRowData(items) {\n\t\tthis.gridOptions.api.updateRowData({\n\t\t\tadd: items\n\t\t});\n\t}\n\n\tresizeTable() {\n\t\tthis.resizeRows();\n\t\tthis.resizeColumns();\n\t}\n\n\tresizeRows() {\n\t}\n\n\tresizeColumns() {\n\t\t// Retrieve column values\n\t\tlet columns = this.gridOptions.columnApi.getAllColumns();\n\n\t\tlet columnIds = _.map(columns, (column) => {\n\t\t\treturn column.getColId();\n\t\t});\n\n\t\t// Autosize the columns\n\t\tthis.gridOptions.columnApi.autoSizeColumns(columnIds);\n\n\t\t// Retrieve the totalWidth of the autosized columns\n\t\tlet totalAutosizedWidth = _.sumBy(columns, (column) => {\n\t\t\treturn column.getActualWidth();\n\t\t});\n\n\t\t// Retreive the totalWidth of the agGrid\n\t\tlet gridWidth = this.$element.outerWidth();\n\n\t\t// Fit the columns when the autosized columns is less than the acutal grid\n\t\tif(totalAutosizedWidth < gridWidth) {\n\t\t\tthis.gridOptions.api.sizeColumnsToFit();\n\t\t}\n\t\telse {\n\t\t\tthis.gridOptions.columnApi.autoSizeColumns(columnIds);\n\t\t}\n\t}\n}\n","class NumberFormatter {\n\tformatNumbersWithCommas(number) {\n\t\tlet parts = number.toString().split('.');\n\t\tparts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n\t\treturn parts.join('.');\n\t}\n}\n\nexport let numberFormatter = new NumberFormatter();\n","export class OperatingSystemDetector {\n\tconstructor() {\n\t\tthis.OperatingSystemItems = {\n\t\t\tMacOS: 'MacOS',\n\t\t\tWindows: 'Windows',\n\t\t\tLinux: 'Linux',\n\t\t\tAndroid: 'Android'\n\t\t};\n\t}\n\n\tgetOS() {\n\t\tlet userAgent = window.navigator.userAgent;\n\t\tlet platform = window.navigator.platform;\n\t\tlet macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'];\n\t\tlet windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'];\n\t\tlet iosPlatforms = ['iPhone', 'iPad', 'iPod'];\n\n\t\tif(macosPlatforms.indexOf(platform) !== -1) {\n\t\t\treturn this.OperatingSystemItems.MacOS;\n\t\t}\n\t\telse if(iosPlatforms.indexOf(platform) !== -1) {\n\t\t\treturn this.OperatingSystemItems.iOS;\n\t\t}\n\t\telse if(windowsPlatforms.indexOf(platform) !== -1) {\n\t\t\treturn this.OperatingSystemItems.Windows;\n\t\t}\n\t\telse if(/Linux/.test(platform)) {\n\t\t\treturn this.OperatingSystemItems.Linux;\n\t\t}\n\t\telse if(/Android/.test(userAgent)) {\n\t\t\treturn this.OperatingSystemItems.Android;\n\t\t}\n\t}\n}\n\nexport let operatingSystemDetector = new OperatingSystemDetector();\n"],"sourceRoot":""}