????
Current Path : C:/inetpub/vhost/xaydung.gdtsolutions.vn/build/static/js/ |
Current File : C:/inetpub/vhost/xaydung.gdtsolutions.vn/build/static/js/5584.e1ba95a9.chunk.js.map |
{"version":3,"file":"static/js/5584.e1ba95a9.chunk.js","mappings":"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","sources":["components/table/Localization.js","components/table/Table.js","components/table/QueryUtils.js","components/table/DataTable.js","views/danh-muc/cau-hinh-chung/columns.js","service/category/common/ConfigSystemEndpoint.js","views/danh-muc/cau-hinh-chung/index.js"],"sourcesContent":["var LocalizationMTable = {\n body: {\n emptyDataSourceMessage: 'Không có dữ liệu để hiển thị',\n addTooltip: 'Thêm',\n editTooltip: 'Sửa',\n deleteTooltip: 'Xóa',\n editRow: {\n deleteText: 'Bạn có chắc chắn xóa dòng này không?',\n cancelTooltip: 'Hủy',\n saveTooltip: 'Lưu'\n }\n },\n toolbar: {\n exportTitle: 'Xuất file',\n searchTooltip: 'Tìm kiếm',\n showColumnsTitle: 'Hiện cột',\n addRemoveColumns: 'Thêm và hiển thị các cột',\n searchPlaceholder: 'Tìm kiếm'\n },\n pagination: {\n labelRowsPerPage: 'Số dòng cho 1 trang',\n labelRowsSelect: 'dòng',\n labelDisplayedRows: ' {from}-{to} của {count}',\n firstTooltip: 'Trang đầu tiên',\n previousTooltip: 'Trang trước',\n nextTooltip: 'Trang sau',\n lastTooltip: 'Trang cuối cùng'\n },\n header: {\n actions: 'Thao tác'\n }\n}\nexport default LocalizationMTable;","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport MTableLocalization from \"./Localization\";\n\nconst MaterialTable = React.lazy(() => import(\"./MTable/MaterialTable\"));\nconst MTableToolbar = React.lazy(() =>\n import(\"./MTable/components/MTableToolbar\")\n);\nconst MTableCell = React.lazy(() => import(\"./MTable/components/MTableCell\"));\n\nconst headerStyle = {\n color: \"#000\",\n padding: \"4px\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n textAlign: \"center\",\n backgroundColor: \"rgb(245, 247, 255)\",\n borderLeft: \"0.5px solid rgb(224, 224, 224)\"\n};\n\nconst rowStyle = {\n stripedRow: {\n even: \"#FFF\",\n odd: \"rgb(247, 248, 255)\"\n }\n};\n\nconst cellStyle = {\n fontSize: \"0.778rem\",\n borderLeft: \"0.5px solid rgba(224, 224, 224, 1)\"\n};\n\nexport default function Table(props) {\n const {\n addMoreRows,\n pageSize,\n search,\n CustumToolbar,\n CustumCell,\n SearchAdvanced,\n onRowClick,\n dataCount,\n rowStyle,\n rowsPerPage,\n page,\n ...attributes\n } = props;\n const onComponents = () => {\n let _components = {\n Toolbar: props => (\n <MTableToolbar {...props} SearchAdvanced={SearchAdvanced} />\n ),\n Cell: props => <MTableCell {...props} style={cellStyle} />\n };\n if (CustumToolbar) {\n _components[\"Toolbar\"] = CustumToolbar;\n }\n if (CustumCell) {\n _components[\"Cell\"] = CustumCell;\n }\n return _components;\n };\n return (\n <MaterialTable\n {...attributes}\n addMoreRows={addMoreRows}\n localization={MTableLocalization}\n options={{\n exportButton: false,\n search: search,\n actionsColumnIndex: -1,\n pageSize: pageSize,\n headerStyle: headerStyle,\n rowStyle: rowStyle\n }}\n onRowClick={\n onRowClick === undefined\n ? undefined\n : (evt, selectedRow) => onRowClick(evt, selectedRow)\n }\n components={onComponents()}\n />\n );\n}\n\nTable.propTypes = {\n pageSize: PropTypes.number.isRequired,\n search: PropTypes.bool.isRequired\n};\n\nTable.defaultProps = {\n rowStyle: (rowData, index, level) => ({\n backgroundColor:\n index % 2 === 0 ? rowStyle.stripedRow.even : rowStyle.stripedRow.odd\n }),\n pageSize: 10,\n search: true\n};\n","export const delimiter = \".\";\nexport const space = \"/\";\n// ====================================================================================\nexport const checkDelimiter = value => value && value.includes(delimiter);\nexport const convertDelimiter = value => value.split(delimiter).join(delimiter);\nexport const checkHasField = (hasField, column) =>\n hasField ? column.field : column;\n// ====================================================================================\n// Paginate\nexport const generatePaginate = (page, pageSize) =>\n `size=${pageSize}&page=${page}&count=true`;\n// Select\nexport const generateSelectURL = (columns, selectType, hasField = true) => {\n if (selectType) {\n if (selectType === \"withColumns\") {\n return `${columns.reduce((accum, current, index, array) => {\n if (current.customsRemote) {\n return \"\";\n }\n let field = checkHasField(hasField, current);\n let key_select = `${accum}`;\n if (checkDelimiter(field)) {\n key_select += `${\n current.dataRef === undefined ? \"\" : current.dataRef[0] + \",\"\n }${convertDelimiter(field)}`;\n } else {\n key_select += `${field}`;\n }\n return `${key_select}${index === array.length - 1 ? \"\" : \",\"}`;\n }, ``)}`;\n }\n } else {\n return `${columns\n .filter(column => checkDelimiter(column.field))\n .reduce(\n (accum, current) =>\n `${accum},${convertDelimiter(checkHasField(hasField, current))}`,\n `*`\n )}`;\n }\n return \"\";\n};\nexport const generateSelect = (columns, selectType, hasField = true) => {\n const select_value = generateSelectURL(columns, selectType, hasField);\n return select_value ? `&select=${select_value}` : \"\";\n};\n// ======================= OrderBy =======================\nexport const generateOrderBy = (field, orderDirection) => {\n return `&orderby=${checkDelimiter(field) ? convertDelimiter(field) : field} ${\n orderDirection === \"asc\" ? \"\" : orderDirection\n }`.trim();\n};\n\n// ======================= FILTER =======================\nexport const filterTypeField = (type, value) => {\n if (type === \"string\") {\n return `'${value}'`;\n }\n if (type === \"datetime\") {\n return `'${value}'`;\n }\n if (type === \"uuid\") {\n return `'${value}'`;\n }\n return `${value}`;\n};\n\nexport const filterField = (fieldName, type, value, isSearch = false) => {\n if (isSearch) {\n if (type === \"string\") {\n return `${fieldName} @like (string|${value})`;\n }\n return `${fieldName} @eq (${type}|${value})`;\n }\n return `${fieldName} eq ${filterTypeField(type, value)}`;\n};\n\nexport const filterURL = (query, columns) => {\n if (query.filters && query.filters.length > 0) {\n const querys = query.filters\n .filter(filter => filter.column.field && filter.column.type)\n .map(filter => {\n const key_filter = `${\n checkDelimiter(filter.column.field)\n ? filter.column.dataRef\n ? filter.column.dataRef[0]\n : convertDelimiter(filter.column.field)\n : filter.column.field\n }`;\n return filterField(key_filter, filter.column.type, filter.value);\n });\n return querys && querys.join(\" and \");\n }\n if (query.search && query.search.length >= 1) {\n const querys = columns\n .filter(column => column.searchable && column.field && column.type)\n .map(column => {\n const key_filter = `${\n checkDelimiter(column.field)\n ? convertDelimiter(column.field)\n : column.field\n }`;\n return filterField(key_filter, column.type, query.search, true);\n });\n return querys && querys.join(\" or \");\n }\n return \"\";\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Table from \"./Table\";\nimport * as QueryUtils from \"./QueryUtils\";\nimport { CHECK_ERROR, CHECK_WARNING, CHECK_SUCCESS } from \"../alert/Alert\";\n\n// Dấu phân cách\nexport const delimiter = \".\";\n\n// const typesMaterial = 'string' | 'boolean' | 'numeric' | 'date' | 'datetime' | 'time' | 'currency';\nexport default function DataTable(props) {\n // Props\n const {\n queryRemote,\n customQuery,\n selectType,\n tableRef,\n title,\n columns,\n pageSize,\n detailPanel,\n search,\n rowStyle,\n onRowClick,\n where,\n onRefresh,\n onAdd,\n onEdit,\n onDelete,\n onActions,\n SearchAdvanced,\n CustumToolbar,\n CustumCell, removeAlert,\n odata\n } = props;\n\n // Lấy ID của bảng\n const getDataID = columns => columns.filter(e => e.dataID)[0];\n const getDataValue = (columns, data) => data[getDataID(columns).field];\n //\n const checkFilterValue = newData =>\n columns\n .filter(\n column => QueryUtils.checkDelimiter(column.field) && column.dataRef\n )\n .map(column => ({ column: column, field_split: column.field.split(\".\") }))\n .forEach(reduce => {\n delete newData[reduce.field_split[0]];\n });\n\n const refreshTable = () =>\n tableRef.current && tableRef.current.onQueryChange();\n\n const generateURL = query => {\n let q = `?${QueryUtils.generatePaginate(query.page, query.pageSize)}`;\n // Expand - Select\n q += `${QueryUtils.generateSelect(columns, selectType)}`;\n // OrderBy\n if (\n query.orderBy &&\n query.orderBy !== undefined &&\n query.orderDirection &&\n query.orderDirection !== \"\"\n ) {\n q += QueryUtils.generateOrderBy(\n query.orderBy.field,\n query.orderDirection\n );\n }\n // Filter\n let str_filter = Array.of(where, QueryUtils.filterURL(query, columns)).filter(f => f);\n q += str_filter.length > 0 ? `&search=${encodeURIComponent(str_filter.join(\" and \"))}` : \"\";\n // const str_filter = QueryUtils.filterURL(query, columns);\n // if (str_filter) {\n // q += where\n // ? `&search=(${str_filter}) and ${where}`\n // : `&search=${str_filter}`;\n // } else {\n // q += where ? \"&search=\" + where : \"\";\n // }\n return q;\n };\n\n // Kiểm tra các cột đã nhập dữ liệu hay chưa\n const checkDataCheck = newData => {\n let columnsValue = columns.filter(column => column.dataCheck);\n for (var i = 0; i < columnsValue.length; i++) {\n if (\n QueryUtils.checkDelimiter(columnsValue[i].field) &&\n columnsValue[i].dataRef\n ) {\n if (\n newData[columnsValue[i].dataRef[0]] === null ||\n newData[columnsValue[i].dataRef[0]] === undefined\n ) {\n CHECK_WARNING(\"Vui lòng nhập dữ liệu cột \" + columnsValue[i].title);\n return false;\n }\n } else {\n if (\n newData[columnsValue[i].field] === undefined ||\n newData[columnsValue[i].field] === null\n ) {\n CHECK_WARNING(\"Vui lòng nhập dữ liệu cột \" + columnsValue[i].title);\n return false;\n }\n }\n }\n return true;\n };\n\n // Thêm, Sửa, Xóa - Gọi lên server\n const onEditable = () => {\n let editable = {};\n if (onAdd && onAdd.onClick === undefined) {\n editable[\"onRowAdd\"] = newData =>\n new Promise((resolve, reject) => {\n checkFilterValue(newData);\n if (onAdd.defaultValues) {\n onAdd.defaultValues.forEach(\n def => (newData[def.field] = def.value)\n );\n }\n if (!checkDataCheck(newData)) {\n reject();\n } else {\n onAdd\n .onRowAdd(newData)\n .then(() => {\n CHECK_SUCCESS(\"Thêm dữ liệu thành công !\");\n resolve();\n })\n .catch(err => {\n CHECK_ERROR(\"Thêm dữ liệu không thành công !\");\n reject(err);\n });\n }\n });\n }\n if (onEdit && onEdit.onClick === undefined) {\n // Kiểm tra nút sửa có ẩn đi không\n if (onEdit.hidden) {\n if (typeof onEdit.hidden === \"function\") {\n editable.onUpdateHidden = rowData => onEdit.hidden(rowData);\n } else {\n editable.onUpdateHidden = onEdit.hidden;\n }\n }\n // Kiểm tra nút sửa không được bật lên\n if (onEdit.disabled) {\n editable.isEditable = rowData => onEdit.disabled(rowData);\n }\n // Kiểm tra nút sửa có gọi mặc định\n editable.onRowUpdate = (newData, oldData) =>\n new Promise((resolve, reject) => {\n checkFilterValue(newData);\n if (!checkDataCheck(newData)) {\n reject();\n } else {\n onEdit\n .onRowUpdate(newData, oldData, getDataValue(columns, oldData))\n .then(() => {\n if (!removeAlert) {\n CHECK_SUCCESS(\"Sửa dữ liệu thành công !\");\n }\n resolve();\n })\n .catch(err => {\n CHECK_ERROR(\"Sửa dữ liệu không thành công !\");\n reject(err);\n });\n }\n });\n }\n if (onDelete && onDelete.onClick === undefined) {\n // Kiểm tra nút xóa có ẩn đi không\n if (onDelete.hidden) {\n if (typeof onDelete.hidden === \"function\") {\n editable.onDeleteHidden = rowData => onDelete.hidden(rowData);\n } else {\n editable.onDeleteHidden = onDelete.hidden;\n }\n }\n // Kiểm tra nút xóa không được bật lên\n if (onDelete.disabled) {\n editable.isDeletable = rowData => onDelete.disabled(rowData);\n }\n // Kiểm tra nút xóa có gọi mặc định\n editable.onRowDelete = oldData =>\n new Promise((resolve, reject) =>\n onDelete\n .onRowDelete(getDataValue(columns, oldData))\n .then(() => {\n CHECK_SUCCESS(\"Xóa dữ liệu thành công !\");\n resolve();\n })\n .catch(err => {\n CHECK_ERROR(\"Xóa dữ liệu không thành công !\");\n reject(err);\n })\n );\n }\n return editable;\n };\n\n const actions = () => {\n let _actions = [];\n if (onRefresh) {\n onRefresh.icon = \"refresh\";\n onRefresh.isRefresh = true;\n onRefresh.tooltip = \"Tải lại dữ liệu\";\n onRefresh.isFreeAction = true;\n _actions.push(onRefresh);\n } else {\n _actions.push({\n icon: \"refresh\",\n isRefresh: true,\n tooltip: \"Tải lại dữ liệu\",\n isFreeAction: true,\n onClick: () => refreshTable()\n });\n }\n if (onActions) {\n onActions.map(action => _actions.push(action));\n }\n if (onAdd && onAdd.onClick) {\n onAdd.icon = \"add_box\";\n onAdd.tooltip = \"Thêm\";\n onAdd.isAdd = true;\n onAdd.isFreeAction = true;\n _actions.push(onAdd);\n }\n if (onEdit && onEdit.onClick) {\n onEdit.icon = \"edit\";\n onEdit.tooltip = \"Sửa\";\n onEdit.isEdit = true;\n _actions.push(onEdit);\n }\n if (onDelete && onDelete.onClick) {\n onDelete.icon = \"delete\";\n onDelete.tooltip = \"Xóa\";\n onDelete.isDelete = true;\n _actions.push(onDelete);\n }\n return _actions;\n };\n return (\n <Table\n search={search}\n pageSize={pageSize}\n title={title}\n columns={columns}\n tableRef={tableRef}\n SearchAdvanced={SearchAdvanced}\n CustumToolbar={CustumToolbar}\n CustumCell={CustumCell}\n data={query =>\n customQuery\n ? customQuery(query, generateURL(query))\n : queryRemote(generateURL(query)).then(result => {\n const data = odata ? result?.value : result?.content || [];\n return {\n data,\n page: query.page,\n totalCount: Number(result[\"totalElements\"]) || data.length\n }\n })\n }\n rowStyle={rowStyle}\n detailPanel={detailPanel}\n editable={onEditable()}\n actions={actions()}\n onRowClick={onRowClick}\n />\n );\n}\n\nDataTable.propTypes = {\n queryRemote: PropTypes.func.isRequired,\n title: PropTypes.string.isRequired,\n columns: PropTypes.array.isRequired,\n pageSize: PropTypes.number.isRequired,\n search: PropTypes.bool.isRequired,\n tableRef: PropTypes.object.isRequired\n};\n\nDataTable.defaultProps = {\n title: \"\",\n columns: [],\n pageSize: 10,\n search: true,\n selectType: \"withColumns\",\n tableRef: React.createRef()\n};\n","export const columns = [\n {\n title: \"Mã\",\n field: \"code\",\n dataID: true,\n type: \"string\",\n editable:'never'\n },\n {\n title: \"Tên\",\n field: \"name\",\n type: \"string\",\n dataCheck: true,\n searchable: true,\n editable:'never'\n },\n {\n title: \"Giá trị tối thiểu\",\n field: \"minValue\",\n type: \"string\",\n dataCheck: true,\n searchable: true,\n },\n {\n title: \"Giá trị tối đa\",\n field: \"maxValue\",\n type: \"string\",\n dataCheck: true,\n searchable: true\n },\n]\n","import { Categories } from '../Categories';\n\nclass ConfigSystemEndpoint extends Categories {\n constructor() {\n super(\"/online/ConfigSystem\");\n }\n\n setPath = path => this.path = path\n\n update = (newData) => {\n this.setPath(\"/category/ConfigSystem\")\n return this.PutAuthenADMIN(\"/update\", newData)\n }\n\n getAll = () => {\n this.setPath(\"/online/ConfigSystem\")\n return this.GetAuthenPUBLIC(\"/listConfig\")\n .then(configList => ({ content: configList }))\n }\n\n}\n\n\nexport default new ConfigSystemEndpoint();\n","import React, { createRef, useCallback } from \"react\";\nimport DataTable from \"../../../components/table/DataTable\";\nimport \"./style.scss\"\nimport { columns } from \"./columns\";\n// import {ALERT, SwalFormManager} from \"../../../components/alert/Alert\";\n// import Swal from \"sweetalert2\"\nimport ConfigSystemEndpoint from \"../../../service/category/common/ConfigSystemEndpoint\";\n\nconst tableRef = createRef()\n\n// const swalAddFormHTML =\n// '<form id=\"add-form\">' +\n// '<input id=\"swal-input1\" class=\"swal2-input form-control\" name=\"name\" required placeholder=\"Nhập tên cấu hình\">' +\n// '</div>' +\n// '<input id=\"swal-input2\" class=\"swal2-input form-control\" name=\"minValue\" required placeholder=\"Nhập giá trị tối thiểu\">' +\n// '</div>' +\n// '<input id=\"swal-input3\" class=\"swal2-input form-control\" name=\"maxValue\" required placeholder=\"Nhập giá trị tối đa\">' +\n// '</div>' +\n// '<input id=\"swal-input4\" class=\"d-none\" name=\"code\" placeholder=\"Nhập giá trị tối đa\">' +\n// '</div>' +\n// '</form>'\n\nfunction CommonConfig() {\n\n // const reloadTable = useCallback(() => tableRef.current && tableRef.current.onQueryChange(), [])\n\n // const editConfigItem = useCallback((configItem) => {\n //\n // const swalFormManager = new SwalFormManager()\n //\n // const setSwalFormValue = () => {\n // swalFormManager.initFormElement(document.getElementById(\"add-form\"))\n // swalFormManager.setFormValue(configItem)\n // }\n //\n // const handlePreConfirm = (result) => {\n // if (!result) return\n // const formValue = swalFormManager.getFormValue()\n // if (Object.keys(formValue).length === 0) return Swal.showValidationMessage(\"Vui lòng nhập đầy đủ thông tin\")\n // ConfigSystemEndpoint.setPath(\"/category/ConfigSystem\")\n // return ConfigSystemEndpoint.PutAuthenADMIN(\"/update\", formValue)\n // }\n //\n // const call = ({value, isConfirmed}) => {\n // if (!isConfirmed) return\n // return value\n // }\n //\n // const handleRes = (configName) => {\n // if (!configName) return\n // return ALERT({\n // icon: \"success\",\n // title: \"Thành công\",\n // text: `${configName} đã được sửa lại`,\n // showCancelButton: false,\n // confirmButtonText: \"Xác nhận\",\n // })\n // }\n //\n // ALERT({\n // onOpen: setSwalFormValue,\n // title: \"Nhập thông tin cấu hình\",\n // html: swalAddFormHTML,\n // focusConfirm: true,\n // showLoaderOnConfirm: true,\n // allowOutsideClick: () => !Swal.isLoading(),\n // confirmButtonText: \"Sửa đổi\",\n // cancelButtonText: \"Hủy\",\n // cancelButtonColor: \"#d33\",\n // preConfirm: handlePreConfirm\n // })\n // .then(call)\n // .then(handleRes)\n // .then((res) => {\n // if (res) reloadTable()\n // })\n // }, [reloadTable])\n\n const ToolBar = useCallback(() => <div className={\"px-2 bg-primary rounded-top p-2\"}>\n <div className={\"d-flex justify-content-between align-items-center\"}>\n <h3 className={\"mb-0 text-white\"}>Các cấu hình của hệ thống</h3>\n </div>\n </div>, [])\n\n // const handleRowClick = useCallback((_, rowData) => editConfigItem(rowData), [editConfigItem])\n\n return <div>\n <DataTable\n\n onEdit={{ onRowUpdate: ConfigSystemEndpoint.update }}\n // onRowClick={handleRowClick}\n tableRef={tableRef}\n columns={columns}\n CustumToolbar={ToolBar}\n queryRemote={ConfigSystemEndpoint.getAll} />\n </div>\n}\n\nexport default CommonConfig\n"],"names":["body","emptyDataSourceMessage","addTooltip","editTooltip","deleteTooltip","editRow","deleteText","cancelTooltip","saveTooltip","toolbar","exportTitle","searchTooltip","showColumnsTitle","addRemoveColumns","searchPlaceholder","pagination","labelRowsPerPage","labelRowsSelect","labelDisplayedRows","firstTooltip","previousTooltip","nextTooltip","lastTooltip","header","actions","MaterialTable","React","MTableToolbar","MTableCell","headerStyle","color","padding","fontSize","fontWeight","textAlign","backgroundColor","borderLeft","rowStyle","even","odd","cellStyle","Table","props","addMoreRows","pageSize","search","CustumToolbar","CustumCell","SearchAdvanced","onRowClick","dataCount","rowsPerPage","page","attributes","_jsx","localization","MTableLocalization","options","exportButton","actionsColumnIndex","undefined","evt","selectedRow","components","onComponents","_components","Toolbar","Cell","style","defaultProps","rowData","index","level","checkDelimiter","value","includes","convertDelimiter","split","join","checkHasField","hasField","column","field","generatePaginate","generateSelect","columns","selectType","select_value","arguments","length","reduce","accum","current","array","customsRemote","key_select","dataRef","filter","generateSelectURL","generateOrderBy","orderDirection","trim","filterField","fieldName","type","filterTypeField","filterURL","query","filters","querys","map","key_filter","searchable","DataTable","queryRemote","customQuery","tableRef","title","detailPanel","where","onRefresh","onAdd","onEdit","onDelete","onActions","removeAlert","odata","getDataValue","data","e","dataID","getDataID","checkFilterValue","newData","QueryUtils","field_split","forEach","generateURL","q","orderBy","str_filter","Array","of","f","encodeURIComponent","checkDataCheck","columnsValue","dataCheck","i","CHECK_WARNING","then","result","content","totalCount","Number","editable","onEditable","onClick","Promise","resolve","reject","defaultValues","def","onRowAdd","CHECK_SUCCESS","catch","err","CHECK_ERROR","hidden","onUpdateHidden","disabled","isEditable","onRowUpdate","oldData","onDeleteHidden","isDeletable","onRowDelete","_actions","icon","isRefresh","tooltip","isFreeAction","push","onQueryChange","action","isAdd","isEdit","isDelete","ConfigSystemEndpoint","Categories","constructor","super","setPath","path","this","update","PutAuthenADMIN","getAll","GetAuthenPUBLIC","configList","createRef","ToolBar","useCallback","className","children"],"sourceRoot":""}