????

Your IP : 216.73.216.152


Current Path : C:/inetpub/vhost/xaydung.gdtsolutions.vn/build/static/js/
Upload File :
Current File : C:/inetpub/vhost/xaydung.gdtsolutions.vn/build/static/js/4095.9af30e7b.chunk.js.map

{"version":3,"file":"static/js/4095.9af30e7b.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/quan-tri/DanhSachQuyen/DanhSachQuyen.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","import React from \"react\";\nimport { DataTable } from \"../../../components/table\";\nimport { MethodHttp } from \"../../../others\";\n\n// Services\nimport { Row, Col } from \"../../../components/gird\";\nimport { HttpEndpoints } from \"../../../service/Identities\";\n\n/**\n * @author Nguyễn Đình Tạo\n */\nexport default function DanhSachQuyen() {\n  return (\n    <DataTable\n      odata={true}\n      title=\"Danh sách quyền hệ thống\"\n      columns={[\n        {\n          field: \"uuid\",\n          dataID: true,\n          type: \"uuid\",\n          hidden: true\n        },\n        {\n          title: \"Tên\",\n          field: \"summary\",\n          type: \"string\",\n          hidden: true\n        },\n        {\n          title: \"Phương thức\",\n          field: \"method\",\n          type: \"string\",\n          hidden: true\n        },\n        {\n          title: \"Thuộc Mã Nhóm\",\n          field: \"groupName\",\n          type: \"string\",\n          defaultSort: 'asc',\n          hidden: true\n        },\n        {\n          title: \"Thuộc Nhóm\",\n          field: \"groupDescription\",\n          type: \"string\",\n          searchable: true,\n          render: rowData => (\n            <div>\n              <div style={{ textTransform: \"capitalize\", fontWeight: \"bold\" }}>{rowData[\"GroupName\"]}</div>\n              <small style={{ textTransform: \"capitalize\" }}>{rowData[\"GroupDescription\"]}</small>\n            </div>\n          )\n        },\n        {\n          title: \"Tên\",\n          field: \"pattern\",\n          type: \"string\",\n          searchable: true,\n          render: rowData => (\n            <Row>\n              <Col md={2}>\n                <MethodHttp method={rowData[\"Method\"]} />\n              </Col>\n              <Col md={10}>\n                <div>\n                  <div style={{ textTransform: \"capitalize\", fontWeight: \"bold\" }}>{rowData[\"Summary\"]}</div>\n                  <small>{rowData[\"Pattern\"]}</small>\n                </div>\n              </Col>\n            </Row>\n          )\n        },\n        {\n          title: \"Công khai\",\n          field: \"isPublic\",\n          type: \"boolean\"\n        },\n        {\n          title: \"Yêu cầu đăng nhập\",\n          field: \"isSecurity\",\n          type: \"boolean\"\n        },\n        {\n          title: \"Server\",\n          field: \"ServerName\",\n          searchable: true,\n          type: \"string\"\n        }\n      ]}\n      queryRemote={generateParam => HttpEndpoints.GetAuthenADMINODATA(generateParam)}\n    />\n  );\n}\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","DanhSachQuyen","defaultSort","render","_jsxs","children","textTransform","Row","Col","md","MethodHttp","method","generateParam","HttpEndpoints","GetAuthenADMINODATA"],"sourceRoot":""}