@erpsquad/common 1.8.99 → 1.8.100
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/dist/_virtual/index/index.esm10.js +3 -3
- package/dist/_virtual/index/index.esm11.js +4 -2
- package/dist/_virtual/index/index.esm11.js.map +1 -1
- package/dist/_virtual/index/index.esm2.js +3 -3
- package/dist/_virtual/index/index.esm3.js +2 -4
- package/dist/_virtual/index/index.esm3.js.map +1 -1
- package/dist/_virtual/index/index.esm4.js +3 -3
- package/dist/_virtual/index/index.esm5.js +3 -3
- package/dist/_virtual/index/index.esm6.js +3 -3
- package/dist/_virtual/index/index.esm7.js +3 -3
- package/dist/_virtual/index/index.esm8.js +3 -3
- package/dist/_virtual/index/index.esm9.js +3 -3
- package/dist/_virtual/index/index10.js +1 -1
- package/dist/_virtual/index/index11.js +1 -1
- package/dist/_virtual/index/index2.js +1 -1
- package/dist/_virtual/index/index3.js +1 -1
- package/dist/_virtual/index/index4.js +1 -1
- package/dist/_virtual/index/index5.js +1 -1
- package/dist/_virtual/index/index6.js +1 -1
- package/dist/_virtual/index/index7.js +1 -1
- package/dist/_virtual/index/index8.js +1 -1
- package/dist/_virtual/index/index9.js +1 -1
- package/dist/components/action-bar/action-bar/index.esm.js +9 -12
- package/dist/components/action-bar/action-bar/index.esm.js.map +1 -1
- package/dist/components/action-bar/action-bar/index.js +24 -24
- package/dist/components/action-bar/action-bar/index.js.map +1 -1
- package/dist/components/filter/filter/index.esm.js +7 -10
- package/dist/components/filter/filter/index.esm.js.map +1 -1
- package/dist/components/filter/filter/index.js +21 -21
- package/dist/components/filter/filter/index.js.map +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -3
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js.map +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -3
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.js.map +1 -1
- package/dist/index.esm.js +3 -1
- package/dist/index.js +1 -1
- package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.esm.js +1 -1
- package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.js +1 -1
- package/dist/node_modules/@asseinfo/react-kanban/dist/index/index.js.map +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.esm.js +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js.map +1 -1
- package/dist/node_modules/@mui/system/colorManipulator/index.esm.js +2 -2
- package/dist/node_modules/@mui/system/colorManipulator/index.js +1 -1
- package/dist/node_modules/@mui/system/colorManipulator/index.js.map +1 -1
- package/dist/node_modules/@mui/system/createStyled/index.esm.js +6 -6
- package/dist/node_modules/@mui/system/createStyled/index.js +1 -1
- package/dist/node_modules/@mui/system/useThemeWithoutDefault/index.esm.js +1 -1
- package/dist/node_modules/@mui/system/useThemeWithoutDefault/index.js +1 -1
- package/dist/src/utils/api-config.d.ts +15 -0
- package/dist/style.css +77 -77
- package/dist/utils/api/index.esm.js +13 -5
- package/dist/utils/api/index.esm.js.map +1 -1
- package/dist/utils/api/index.js +1 -1
- package/dist/utils/api/index.js.map +1 -1
- package/dist/utils/api-config/index.esm.js +20 -0
- package/dist/utils/api-config/index.esm.js.map +1 -1
- package/dist/utils/api-config/index.js +1 -1
- package/dist/utils/api-config/index.js.map +1 -1
- package/dist/utils/api-config.d.ts +15 -0
- package/dist/utils/index.esm.js +3 -1
- package/dist/utils/index.js +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.esm.js +1 -3
- package/dist/views/form-builder/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.js +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.js.map +1 -1
- package/dist/views/template-editor/templates/index.esm.js +0 -3
- package/dist/views/template-editor/templates/index.esm.js.map +1 -1
- package/dist/views/template-editor/templates/index.js +5 -5
- package/dist/views/template-editor/templates/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/filter/filter.tsx"],"sourcesContent":["/* eslint-disable */\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { RuleGroupType } from \"react-querybuilder\";\nimport \"react-querybuilder/dist/query-builder.scss\";\nimport { QueryBuilder /* , formatQuery */ } from \"react-querybuilder\";\nimport { QueryBuilderMaterial } from \"@react-querybuilder/material\";\nimport {\n Box,\n IconButton,\n MenuItem,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n OutlinedInput,\n InputAdornment,\n Alert,\n} from \"@mui/material\";\nimport \"./filter.scss\";\nimport Select from \"../select/select\";\nimport Typography from \"../typography/typography\";\nimport { Close } from \"@mui/icons-material\";\nimport CombinatorSelect from \"./components/combinator-select\";\nimport RemoveAction from \"./components/remove-action\";\nimport FieldSelect from \"./components/field-select\";\nimport AddFilterButton from \"./components/add-filter\";\nimport AddGroupButton from \"./components/add-group\";\nimport ValueEditor from \"./components/value-editor\";\nimport OperatorSelect from \"./components/operator-select\";\nimport Button from \"../button/button\";\nimport RemoveGroupAction from \"./components/delete-group\";\nimport SearchBar from \"../search-bar/search-bar\";\nimport SaveFilterModal from \"../save-filter-modal/save-filter-modal\";\n\nimport {\n setBaseUrl,\n putV1FilterId,\n deleteV1FilterId,\n} from \"../../api-client/api.system-feature/api\";\nimport type * as Types from \"../../api-client/api.system-feature/api-types\";\nimport { auth } from \"../../constants/auth\";\nimport { generateFields, generateQueryString, getErrorMessage } from \"../../utils/common\";\nimport { usePages } from \"../../hooks/use-pages\";\nimport _ from \"lodash\";\nimport { Edit, Trash } from \"../icons\";\nimport { enqueueSnackbar } from \"notistack\";\nimport { IResources, routeToResourceMap } from \"../../constants/route-page-map\";\nimport { useLocation } from \"react-router-dom\";\nimport { useLanguage } from \"../../hooks/useLangauge\";\nimport { getApiConfig } from \"@/utils\";\n\nsetBaseUrl(`${getApiConfig()?.backendBaseUrl}/system-feature`);\n\ninterface IFilter {\n open: boolean;\n onClose: () => void;\n activeView?: string;\n savedFilters?: SavedFilter[];\n fetchSavedFilters?: () => Promise<void>;\n setFilterBar?: any;\n onSaveFilter?: (query: RuleGroupType) => void;\n onSelectedFilter?: (filterName: string) => void;\n fields: any;\n applyFilter: any;\n isUseFields?: boolean;\n}\n\ninterface SavedFilter {\n id: string;\n name: string;\n query: RuleGroupType;\n}\n\nconst initialQuery: RuleGroupType = { combinator: \"and\", rules: [] };\n\nconst Filter = ({\n open,\n onClose,\n // activeView,\n savedFilters,\n fetchSavedFilters,\n onSaveFilter,\n onSelectedFilter,\n applyFilter,\n fields = [],\n isUseFields = false\n}: IFilter) => {\n const location = useLocation();\n\n const token = localStorage.getItem(auth.storageTokenKeyName);\n const { updatePageInfo, activePage, schemaFields, setActivePage } = usePages()\n\n fields = isUseFields ? generateFields(fields) : (schemaFields.length ? generateFields(schemaFields) : fields)\n const [query, setQuery] = useState<RuleGroupType>(initialQuery);\n const [filteredSavedFilters, setFilteredSavedFilters] = useState<\n SavedFilter[]\n >(savedFilters ?? []);\n const [selectedFilter, setSelectedFilter] = useState<any>(null);\n const [openRenameFilter, setIsOpenRenameFilter] = useState<any>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const { isRtl } = useLanguage();\n const resources: IResources = useMemo(() => routeToResourceMap[location.pathname] || null, [location.pathname])\n\n useEffect(() => {\n savedFilters && setFilteredSavedFilters(savedFilters);\n }, [savedFilters]);\n\n\n const handleApplyFilter = useCallback((clear: boolean = false) => {\n let q = query\n const isInvalid = isDuplicatedFilters(q)\n if (isInvalid) {\n setErrorMessage(\"Invalid filter\")\n return\n }\n if (clear) {\n q = initialQuery\n setQuery(q)\n } else {\n const generatedSQLQuery = q ? generateQueryString(q) : q;\n updatePageInfo({ filters: q, filterQueryString: generatedSQLQuery })\n // applyFilter(generatedSQLQuery);\n onClose();\n }\n }, [query, applyFilter, onClose]);\n\n const handleQueryChange = (q: RuleGroupType) => {\n const updatedRules = q.rules.map((rule, i) => ({\n ...rule,\n value: rule.field !== query.rules?.[i]?.field || ['null', 'notNull'].includes(rule.operator) ? \"\" : rule.value\n }));\n let isValid = true;\n let errorMessage = '';\n\n // // Helper function to check for invalid aggregate usage, considering parent combinators\n // const checkForInvalidAggregateUsage = (rules: any[], combinator: string, parentCombinator: string | null): boolean => {\n // let hasAggregateField = false;\n // let hasNonAggregateField = false;\n\n // rules.forEach(rule => {\n // // Check nested groups\n // if (rule.rules) {\n // // If the current group or any parent has an 'OR', pass it down\n // const currentCombinator = combinator === 'or' || parentCombinator === 'or' ? 'or' : combinator;\n // checkForInvalidAggregateUsage(rule.rules, rule.combinator, currentCombinator);\n // } else {\n // // Find the field in the fields array and check if it's an aggregate\n // const field = fields.find((f: any) => f.name === rule.field);\n\n // if (field?.is_aggregate) {\n // hasAggregateField = true;\n // } else {\n // hasNonAggregateField = true;\n // }\n // }\n // });\n\n // // If any parent or current rule uses 'OR' with a mix of aggregate and non-aggregate fields, it's invalid\n // if ((combinator === 'or' || parentCombinator === 'or') && hasAggregateField && hasNonAggregateField) {\n // isValid = false;\n // errorMessage = 'Mixing aggregate and non-aggregate fields in OR conditions may lead to unexpected results.';\n // }\n\n // return isValid;\n // };\n\n // Start checking from the root level (no parent combinator initially)\n\n\n // Always set the query, regardless of validity\n setQuery({ ...q, rules: updatedRules });\n\n // Set error message if invalid, otherwise clear it\n if (!isValid) {\n setErrorMessage(errorMessage);\n } else {\n setErrorMessage(null);\n }\n\n // Always call onSaveFilter, if it exists\n if (onSaveFilter) {\n onSaveFilter(q);\n }\n };\n\n const handleFilterSwitch = (sf?: any) => {\n if (sf) {\n setSelectedFilter(sf);\n setQuery(sf.query);\n if (onSelectedFilter) {\n onSelectedFilter(sf);\n }\n } else {\n setSelectedFilter(null);\n setQuery(initialQuery);\n if (onSelectedFilter) {\n onSelectedFilter(null);\n }\n }\n };\n\n const handleSearchEvent = (searchText: string) => {\n const filteredFilters = savedFilters?.filter((filter: any) =>\n filter.name.toLowerCase().includes(searchText.toLowerCase())\n );\n if (filteredFilters) {\n setFilteredSavedFilters(filteredFilters);\n }\n };\n\n const handleRenameFilter = async (filterId: string, newName: string) => {\n const putFilterRequest: Types.PutV1FilterIdRequest = {\n \"x-token\": token,\n id: filterId,\n name: newName,\n module: resources?.fieldResource || resources?.pageResource\n };\n\n try {\n await putV1FilterId(putFilterRequest)\n // setSelectedFilter(newName);\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n enqueueSnackbar('Filters renamed successfully.')\n } catch (error) {\n let m: string = 'Something went wrong on saving filters'\n if (error instanceof Error) {\n m = getErrorMessage(error.message)\n }\n enqueueSnackbar(m, { variant: 'error' })\n return false\n }\n return true\n };\n const handleUpdateSelectedFilterQuery = async () => {\n if (selectedFilter) {\n\n const putFilterRequest: Types.PutV1FilterIdRequest = {\n \"x-token\": token,\n id: selectedFilter.id,\n data: query,\n };\n\n putV1FilterId(putFilterRequest)\n .then((response: any) => {\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n setActivePage((prev: any) => ({\n ...prev,\n filters: {\n ...prev.filters,\n rules: query.rules,\n combinator: query.combinator,\n name: selectedFilter.name\n\n }\n }));\n })\n .catch((err: any) => enqueueSnackbar(\"Error renaming saved filters:\", { variant: 'error' }));\n }\n };\n\n const handleSubmitRename = (name: string) => {\n if (openRenameFilter) {\n return handleRenameFilter(openRenameFilter.id, name);\n }\n };\n\n const handleDeleteFilter = async (filterId: string) => {\n const deleteFilterRequest: Types.DeleteV1FilterIdRequest = {\n \"x-token\": token,\n id: filterId,\n };\n\n deleteV1FilterId(deleteFilterRequest)\n .then((response: any) => {\n setSelectedFilter(null);\n setQuery(initialQuery);\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n\n })\n .catch((err: any) => console.log(\"Error deleting saved filters:\", err));\n };\n\n useEffect(() => {\n let q = initialQuery\n if (!_.isEmpty(activePage.filters)) {\n q = activePage.filters\n }\n setQuery(q)\n const selectedFilter = savedFilters?.find((f: any) => f.name === activePage?.filters?.name);\n setSelectedFilter(selectedFilter || null);\n }, [activePage?.filters, savedFilters]);\n\n const isDuplicatedFilters = (rule) => {\n let uniques: string[] = []\n rule?.rules?.forEach((r: any) => {\n if (uniques.includes(r.field) && rule.combinator == 'and') {\n return true\n }\n uniques.push(r.field)\n })\n return uniques.length !== rule?.rules?.length\n }\n\n\n const isRuleInvalid = (rule: any): boolean => {\n // If it's a group (has nested rules), recurse\n if (Array.isArray(rule.rules)) {\n return rule.rules.length ? rule.rules.some(isRuleInvalid) : !rule.rules.length;\n }\n\n // Otherwise, validate individual rule\n return (\n !rule.field ||\n (_.isEmpty(rule.value) && !['null', 'notNull'].includes(rule.operator))\n );\n };\n\n const disabled = useMemo(() => isRuleInvalid(query) || errorMessage, [query, errorMessage])\n // const disabled = isRuleInvalid(query) || errorMessage;\n\n return (\n <div>\n <Dialog\n open={open}\n onClose={onClose}\n maxWidth='md'\n fullWidth={true}\n PaperProps={{\n sx: { borderRadius: 2 }\n }}\n >\n <DialogTitle className=\"filter-header\">\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n Filters\n </Typography>\n <Box gap={1} display={\"flex\"}>\n <Select\n fullWidth\n size=\"small\"\n className=\"filter-dropdown\"\n value={selectedFilter ? selectedFilter.name : \"Saved Filters\"}\n onChange={(event: any) => {\n const sf = savedFilters?.find(f => f.name == event.target.value)\n handleFilterSwitch(sf)\n }}\n variant=\"outlined\"\n onClose={() => {\n setTimeout(() => {\n handleSearchEvent(\"\")\n }, 500);\n }}\n input={\n selectedFilter ? (\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n <IconButton\n aria-label='clear selection'\n onClick={() => {\n handleFilterSwitch()\n }}\n edge='end'\n sx={{ mr: 1.5 }}\n size='small'>\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n </InputAdornment>\n }\n />\n ) : undefined\n }\n >\n <div className=\"searchbar-box-list\">\n <SearchBar\n placeholder={\"Search Filters\"}\n handleSearch={(e) => handleSearchEvent(e)}\n />\n </div>\n {/* <Typography\n color=\"theme.secondary.1000\"\n type=\"s4\"\n className=\"filter-title\"\n >\n Saved Filters\n </Typography> */}\n {filteredSavedFilters?.map((savedFilter: SavedFilter) => (\n <MenuItem\n key={savedFilter.id}\n value={savedFilter?.name}\n className=\"menu-list\"\n selected={selectedFilter?.name == savedFilter?.name}\n >\n <Typography color=\"theme.secondary.1000\" type=\"s3\">\n {savedFilter?.name}\n </Typography>\n\n <div className=\"icon-list\">\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n setIsOpenRenameFilter(savedFilter)\n }}>\n <Edit fontSize=\"small\" color={selectedFilter?.name == savedFilter?.name ? \"theme.primary.800\" : 'inherit'} />\n </IconButton>\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n handleDeleteFilter(savedFilter.id)\n }} color=\"error\">\n <Trash fontSize=\"small\" color=\"theme.error.600\" />\n </IconButton>\n </div>\n </MenuItem>\n ))}\n </Select>\n <SaveFilterModal\n open={openRenameFilter !== null}\n onClose={() => setIsOpenRenameFilter(null)}\n handleSubmit={(name) => handleSubmitRename(name)}\n oldName={openRenameFilter?.name}\n />\n <Box>\n <IconButton size=\"small\" onClick={onClose}>\n <Close fontSize=\"small\" />\n </IconButton>\n </Box>\n </Box>\n </DialogTitle>\n <DialogContent className=\"content\">\n {/* Display error message */}\n {errorMessage && (\n <Alert severity=\"error\" sx={{ px: 1, pt: 0.5, mb: 1 }}>\n <Typography\n color=\"error\"\n type=\"s4\"\n >\n {errorMessage}\n </Typography>\n </Alert>\n )}\n <QueryBuilderMaterial>\n <QueryBuilder\n fields={fields || []}\n query={query}\n onQueryChange={handleQueryChange}\n showCombinatorsBetweenRules={true}\n controlClassnames={{\n header: \"actions\",\n }}\n controlElements={{\n addRuleAction: AddFilterButton,\n addGroupAction: AddGroupButton,\n combinatorSelector: CombinatorSelect,\n fieldSelector: FieldSelect,\n operatorSelector: OperatorSelect,\n removeRuleAction: RemoveAction,\n valueEditor: ValueEditor,\n removeGroupAction: RemoveGroupAction,\n }}\n />\n <Button\n variant=\"text\"\n className={isRtl ? 'remove-filters_rtl' : 'remove-filters'}\n onClick={() => {\n handleApplyFilter(true)\n }}\n disabled={disabled}\n >\n Clear all filters\n </Button>\n </QueryBuilderMaterial>\n </DialogContent>\n <DialogActions className=\"filter-footer\">\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: selectedFilter ? 'space-between' : 'flex-end', width: '100%' }}>\n {selectedFilter &&\n <Box>\n <Button onClick={handleUpdateSelectedFilterQuery}>\n Update Seleted filter\n </Button>\n </Box>\n }\n <Box sx={{ display: 'flex', gap: 1 }}>\n <Button className=\"cancel-filter-btn\" onClick={onClose}>\n Cancel\n </Button>\n <Button\n disabled={disabled}\n onClick={() => handleApplyFilter()}\n >\n Apply\n </Button>\n </Box>\n </Box>\n </DialogActions>\n </Dialog>\n </div>\n );\n};\n\nexport { Filter };\nexport default Filter;\n"],"names":["setBaseUrl","getApiConfig","backendBaseUrl","initialQuery","combinator","rules","Filter","open","onClose","savedFilters","fetchSavedFilters","onSaveFilter","onSelectedFilter","applyFilter","fields","isUseFields","location","useLocation","token","localStorage","getItem","auth","storageTokenKeyName","updatePageInfo","activePage","schemaFields","setActivePage","usePages","generateFields","length","query","setQuery","useState","filteredSavedFilters","setFilteredSavedFilters","selectedFilter","setSelectedFilter","openRenameFilter","setIsOpenRenameFilter","errorMessage","setErrorMessage","isRtl","useLanguage","resources","useMemo","routeToResourceMap","pathname","useEffect","handleApplyFilter","useCallback","clear","q","isDuplicatedFilters","generatedSQLQuery","generateQueryString","filters","filterQueryString","handleFilterSwitch","sf","handleSearchEvent","searchText","filteredFilters","filter","name","toLowerCase","includes","_","isEmpty","find","f","_a","rule","uniques","forEach","r","field","push","_b","isRuleInvalid","Array","isArray","some","value","operator","disabled","children","jsxs","Dialog","maxWidth","fullWidth","PaperProps","sx","borderRadius","DialogTitle","className","jsx","Typography","type","weight","color","Box","gap","display","Select","size","onChange","event","target","variant","setTimeout","input","OutlinedInput","label","endAdornment","InputAdornment","position","IconButton","onClick","edge","mr","Close","fontSize","SearchBar","placeholder","handleSearch","e","map","savedFilter","MenuItem","selected","preventDefault","stopPropagation","Edit","async","filterId","deleteFilterRequest","id","deleteV1FilterId","then","response","catch","err","handleDeleteFilter","Trash","SaveFilterModal","handleSubmit","newName","putFilterRequest","module","fieldResource","pageResource","putV1FilterId","enqueueSnackbar","error","m","Error","getErrorMessage","message","handleRenameFilter","handleSubmitRename","oldName","DialogContent","Alert","severity","px","pt","mb","QueryBuilderMaterial","QueryBuilder","onQueryChange","updatedRules","i","showCombinatorsBetweenRules","controlClassnames","header","controlElements","addRuleAction","AddFilterButton","addGroupAction","AddGroupButton","combinatorSelector","CombinatorSelect","fieldSelector","FieldSelect","operatorSelector","OperatorSelect","removeRuleAction","RemoveAction","valueEditor","ValueEditor","removeGroupAction","RemoveGroupAction","Button","DialogActions","alignItems","justifyContent","width","data","prev"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/filter/filter.tsx"],"sourcesContent":["/* eslint-disable */\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { RuleGroupType } from \"react-querybuilder\";\nimport \"react-querybuilder/dist/query-builder.scss\";\nimport { QueryBuilder /* , formatQuery */ } from \"react-querybuilder\";\nimport { QueryBuilderMaterial } from \"@react-querybuilder/material\";\nimport {\n Box,\n IconButton,\n MenuItem,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n OutlinedInput,\n InputAdornment,\n Alert,\n} from \"@mui/material\";\nimport \"./filter.scss\";\nimport Select from \"../select/select\";\nimport Typography from \"../typography/typography\";\nimport { Close } from \"@mui/icons-material\";\nimport CombinatorSelect from \"./components/combinator-select\";\nimport RemoveAction from \"./components/remove-action\";\nimport FieldSelect from \"./components/field-select\";\nimport AddFilterButton from \"./components/add-filter\";\nimport AddGroupButton from \"./components/add-group\";\nimport ValueEditor from \"./components/value-editor\";\nimport OperatorSelect from \"./components/operator-select\";\nimport Button from \"../button/button\";\nimport RemoveGroupAction from \"./components/delete-group\";\nimport SearchBar from \"../search-bar/search-bar\";\nimport SaveFilterModal from \"../save-filter-modal/save-filter-modal\";\n\nimport {\n putV1FilterId,\n deleteV1FilterId,\n} from \"../../api-client/api.system-feature/api\";\nimport type * as Types from \"../../api-client/api.system-feature/api-types\";\nimport { auth } from \"../../constants/auth\";\nimport { generateFields, generateQueryString, getErrorMessage } from \"../../utils/common\";\nimport { usePages } from \"../../hooks/use-pages\";\nimport _ from \"lodash\";\nimport { Edit, Trash } from \"../icons\";\nimport { enqueueSnackbar } from \"notistack\";\nimport { IResources, routeToResourceMap } from \"../../constants/route-page-map\";\nimport { useLocation } from \"react-router-dom\";\nimport { useLanguage } from \"../../hooks/useLangauge\";\n\ninterface IFilter {\n open: boolean;\n onClose: () => void;\n activeView?: string;\n savedFilters?: SavedFilter[];\n fetchSavedFilters?: () => Promise<void>;\n setFilterBar?: any;\n onSaveFilter?: (query: RuleGroupType) => void;\n onSelectedFilter?: (filterName: string) => void;\n fields: any;\n applyFilter: any;\n isUseFields?: boolean;\n}\n\ninterface SavedFilter {\n id: string;\n name: string;\n query: RuleGroupType;\n}\n\nconst initialQuery: RuleGroupType = { combinator: \"and\", rules: [] };\n\nconst Filter = ({\n open,\n onClose,\n // activeView,\n savedFilters,\n fetchSavedFilters,\n onSaveFilter,\n onSelectedFilter,\n applyFilter,\n fields = [],\n isUseFields = false\n}: IFilter) => {\n const location = useLocation();\n\n const token = localStorage.getItem(auth.storageTokenKeyName);\n const { updatePageInfo, activePage, schemaFields, setActivePage } = usePages()\n\n fields = isUseFields ? generateFields(fields) : (schemaFields.length ? generateFields(schemaFields) : fields)\n const [query, setQuery] = useState<RuleGroupType>(initialQuery);\n const [filteredSavedFilters, setFilteredSavedFilters] = useState<\n SavedFilter[]\n >(savedFilters ?? []);\n const [selectedFilter, setSelectedFilter] = useState<any>(null);\n const [openRenameFilter, setIsOpenRenameFilter] = useState<any>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const { isRtl } = useLanguage();\n const resources: IResources = useMemo(() => routeToResourceMap[location.pathname] || null, [location.pathname])\n\n useEffect(() => {\n savedFilters && setFilteredSavedFilters(savedFilters);\n }, [savedFilters]);\n\n\n const handleApplyFilter = useCallback((clear: boolean = false) => {\n let q = query\n const isInvalid = isDuplicatedFilters(q)\n if (isInvalid) {\n setErrorMessage(\"Invalid filter\")\n return\n }\n if (clear) {\n q = initialQuery\n setQuery(q)\n } else {\n const generatedSQLQuery = q ? generateQueryString(q) : q;\n updatePageInfo({ filters: q, filterQueryString: generatedSQLQuery })\n // applyFilter(generatedSQLQuery);\n onClose();\n }\n }, [query, applyFilter, onClose]);\n\n const handleQueryChange = (q: RuleGroupType) => {\n const updatedRules = q.rules.map((rule, i) => ({\n ...rule,\n value: rule.field !== query.rules?.[i]?.field || ['null', 'notNull'].includes(rule.operator) ? \"\" : rule.value\n }));\n let isValid = true;\n let errorMessage = '';\n\n // // Helper function to check for invalid aggregate usage, considering parent combinators\n // const checkForInvalidAggregateUsage = (rules: any[], combinator: string, parentCombinator: string | null): boolean => {\n // let hasAggregateField = false;\n // let hasNonAggregateField = false;\n\n // rules.forEach(rule => {\n // // Check nested groups\n // if (rule.rules) {\n // // If the current group or any parent has an 'OR', pass it down\n // const currentCombinator = combinator === 'or' || parentCombinator === 'or' ? 'or' : combinator;\n // checkForInvalidAggregateUsage(rule.rules, rule.combinator, currentCombinator);\n // } else {\n // // Find the field in the fields array and check if it's an aggregate\n // const field = fields.find((f: any) => f.name === rule.field);\n\n // if (field?.is_aggregate) {\n // hasAggregateField = true;\n // } else {\n // hasNonAggregateField = true;\n // }\n // }\n // });\n\n // // If any parent or current rule uses 'OR' with a mix of aggregate and non-aggregate fields, it's invalid\n // if ((combinator === 'or' || parentCombinator === 'or') && hasAggregateField && hasNonAggregateField) {\n // isValid = false;\n // errorMessage = 'Mixing aggregate and non-aggregate fields in OR conditions may lead to unexpected results.';\n // }\n\n // return isValid;\n // };\n\n // Start checking from the root level (no parent combinator initially)\n\n\n // Always set the query, regardless of validity\n setQuery({ ...q, rules: updatedRules });\n\n // Set error message if invalid, otherwise clear it\n if (!isValid) {\n setErrorMessage(errorMessage);\n } else {\n setErrorMessage(null);\n }\n\n // Always call onSaveFilter, if it exists\n if (onSaveFilter) {\n onSaveFilter(q);\n }\n };\n\n const handleFilterSwitch = (sf?: any) => {\n if (sf) {\n setSelectedFilter(sf);\n setQuery(sf.query);\n if (onSelectedFilter) {\n onSelectedFilter(sf);\n }\n } else {\n setSelectedFilter(null);\n setQuery(initialQuery);\n if (onSelectedFilter) {\n onSelectedFilter(null);\n }\n }\n };\n\n const handleSearchEvent = (searchText: string) => {\n const filteredFilters = savedFilters?.filter((filter: any) =>\n filter.name.toLowerCase().includes(searchText.toLowerCase())\n );\n if (filteredFilters) {\n setFilteredSavedFilters(filteredFilters);\n }\n };\n\n const handleRenameFilter = async (filterId: string, newName: string) => {\n const putFilterRequest: Types.PutV1FilterIdRequest = {\n \"x-token\": token,\n id: filterId,\n name: newName,\n module: resources?.fieldResource || resources?.pageResource\n };\n\n try {\n await putV1FilterId(putFilterRequest)\n // setSelectedFilter(newName);\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n enqueueSnackbar('Filters renamed successfully.')\n } catch (error) {\n let m: string = 'Something went wrong on saving filters'\n if (error instanceof Error) {\n m = getErrorMessage(error.message)\n }\n enqueueSnackbar(m, { variant: 'error' })\n return false\n }\n return true\n };\n const handleUpdateSelectedFilterQuery = async () => {\n if (selectedFilter) {\n\n const putFilterRequest: Types.PutV1FilterIdRequest = {\n \"x-token\": token,\n id: selectedFilter.id,\n data: query,\n };\n\n putV1FilterId(putFilterRequest)\n .then((response: any) => {\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n setActivePage((prev: any) => ({\n ...prev,\n filters: {\n ...prev.filters,\n rules: query.rules,\n combinator: query.combinator,\n name: selectedFilter.name\n\n }\n }));\n })\n .catch((err: any) => enqueueSnackbar(\"Error renaming saved filters:\", { variant: 'error' }));\n }\n };\n\n const handleSubmitRename = (name: string) => {\n if (openRenameFilter) {\n return handleRenameFilter(openRenameFilter.id, name);\n }\n };\n\n const handleDeleteFilter = async (filterId: string) => {\n const deleteFilterRequest: Types.DeleteV1FilterIdRequest = {\n \"x-token\": token,\n id: filterId,\n };\n\n deleteV1FilterId(deleteFilterRequest)\n .then((response: any) => {\n setSelectedFilter(null);\n setQuery(initialQuery);\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n\n })\n .catch((err: any) => console.log(\"Error deleting saved filters:\", err));\n };\n\n useEffect(() => {\n let q = initialQuery\n if (!_.isEmpty(activePage.filters)) {\n q = activePage.filters\n }\n setQuery(q)\n const selectedFilter = savedFilters?.find((f: any) => f.name === activePage?.filters?.name);\n setSelectedFilter(selectedFilter || null);\n }, [activePage?.filters, savedFilters]);\n\n const isDuplicatedFilters = (rule) => {\n let uniques: string[] = []\n rule?.rules?.forEach((r: any) => {\n if (uniques.includes(r.field) && rule.combinator == 'and') {\n return true\n }\n uniques.push(r.field)\n })\n return uniques.length !== rule?.rules?.length\n }\n\n\n const isRuleInvalid = (rule: any): boolean => {\n // If it's a group (has nested rules), recurse\n if (Array.isArray(rule.rules)) {\n return rule.rules.length ? rule.rules.some(isRuleInvalid) : !rule.rules.length;\n }\n\n // Otherwise, validate individual rule\n return (\n !rule.field ||\n (_.isEmpty(rule.value) && !['null', 'notNull'].includes(rule.operator))\n );\n };\n\n const disabled = useMemo(() => isRuleInvalid(query) || errorMessage, [query, errorMessage])\n // const disabled = isRuleInvalid(query) || errorMessage;\n\n return (\n <div>\n <Dialog\n open={open}\n onClose={onClose}\n maxWidth='md'\n fullWidth={true}\n PaperProps={{\n sx: { borderRadius: 2 }\n }}\n >\n <DialogTitle className=\"filter-header\">\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n Filters\n </Typography>\n <Box gap={1} display={\"flex\"}>\n <Select\n fullWidth\n size=\"small\"\n className=\"filter-dropdown\"\n value={selectedFilter ? selectedFilter.name : \"Saved Filters\"}\n onChange={(event: any) => {\n const sf = savedFilters?.find(f => f.name == event.target.value)\n handleFilterSwitch(sf)\n }}\n variant=\"outlined\"\n onClose={() => {\n setTimeout(() => {\n handleSearchEvent(\"\")\n }, 500);\n }}\n input={\n selectedFilter ? (\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n <IconButton\n aria-label='clear selection'\n onClick={() => {\n handleFilterSwitch()\n }}\n edge='end'\n sx={{ mr: 1.5 }}\n size='small'>\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n </InputAdornment>\n }\n />\n ) : undefined\n }\n >\n <div className=\"searchbar-box-list\">\n <SearchBar\n placeholder={\"Search Filters\"}\n handleSearch={(e) => handleSearchEvent(e)}\n />\n </div>\n {/* <Typography\n color=\"theme.secondary.1000\"\n type=\"s4\"\n className=\"filter-title\"\n >\n Saved Filters\n </Typography> */}\n {filteredSavedFilters?.map((savedFilter: SavedFilter) => (\n <MenuItem\n key={savedFilter.id}\n value={savedFilter?.name}\n className=\"menu-list\"\n selected={selectedFilter?.name == savedFilter?.name}\n >\n <Typography color=\"theme.secondary.1000\" type=\"s3\">\n {savedFilter?.name}\n </Typography>\n\n <div className=\"icon-list\">\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n setIsOpenRenameFilter(savedFilter)\n }}>\n <Edit fontSize=\"small\" color={selectedFilter?.name == savedFilter?.name ? \"theme.primary.800\" : 'inherit'} />\n </IconButton>\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n handleDeleteFilter(savedFilter.id)\n }} color=\"error\">\n <Trash fontSize=\"small\" color=\"theme.error.600\" />\n </IconButton>\n </div>\n </MenuItem>\n ))}\n </Select>\n <SaveFilterModal\n open={openRenameFilter !== null}\n onClose={() => setIsOpenRenameFilter(null)}\n handleSubmit={(name) => handleSubmitRename(name)}\n oldName={openRenameFilter?.name}\n />\n <Box>\n <IconButton size=\"small\" onClick={onClose}>\n <Close fontSize=\"small\" />\n </IconButton>\n </Box>\n </Box>\n </DialogTitle>\n <DialogContent className=\"content\">\n {/* Display error message */}\n {errorMessage && (\n <Alert severity=\"error\" sx={{ px: 1, pt: 0.5, mb: 1 }}>\n <Typography\n color=\"error\"\n type=\"s4\"\n >\n {errorMessage}\n </Typography>\n </Alert>\n )}\n <QueryBuilderMaterial>\n <QueryBuilder\n fields={fields || []}\n query={query}\n onQueryChange={handleQueryChange}\n showCombinatorsBetweenRules={true}\n controlClassnames={{\n header: \"actions\",\n }}\n controlElements={{\n addRuleAction: AddFilterButton,\n addGroupAction: AddGroupButton,\n combinatorSelector: CombinatorSelect,\n fieldSelector: FieldSelect,\n operatorSelector: OperatorSelect,\n removeRuleAction: RemoveAction,\n valueEditor: ValueEditor,\n removeGroupAction: RemoveGroupAction,\n }}\n />\n <Button\n variant=\"text\"\n className={isRtl ? 'remove-filters_rtl' : 'remove-filters'}\n onClick={() => {\n handleApplyFilter(true)\n }}\n disabled={disabled}\n >\n Clear all filters\n </Button>\n </QueryBuilderMaterial>\n </DialogContent>\n <DialogActions className=\"filter-footer\">\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: selectedFilter ? 'space-between' : 'flex-end', width: '100%' }}>\n {selectedFilter &&\n <Box>\n <Button onClick={handleUpdateSelectedFilterQuery}>\n Update Seleted filter\n </Button>\n </Box>\n }\n <Box sx={{ display: 'flex', gap: 1 }}>\n <Button className=\"cancel-filter-btn\" onClick={onClose}>\n Cancel\n </Button>\n <Button\n disabled={disabled}\n onClick={() => handleApplyFilter()}\n >\n Apply\n </Button>\n </Box>\n </Box>\n </DialogActions>\n </Dialog>\n </div>\n );\n};\n\nexport { Filter };\nexport default Filter;\n"],"names":["initialQuery","combinator","rules","Filter","open","onClose","savedFilters","fetchSavedFilters","onSaveFilter","onSelectedFilter","applyFilter","fields","isUseFields","location","useLocation","token","localStorage","getItem","auth","storageTokenKeyName","updatePageInfo","activePage","schemaFields","setActivePage","usePages","generateFields","length","query","setQuery","useState","filteredSavedFilters","setFilteredSavedFilters","selectedFilter","setSelectedFilter","openRenameFilter","setIsOpenRenameFilter","errorMessage","setErrorMessage","isRtl","useLanguage","resources","useMemo","routeToResourceMap","pathname","useEffect","handleApplyFilter","useCallback","clear","q","isDuplicatedFilters","generatedSQLQuery","generateQueryString","filters","filterQueryString","handleFilterSwitch","sf","handleSearchEvent","searchText","filteredFilters","filter","name","toLowerCase","includes","_","isEmpty","find","f","_a","rule","uniques","forEach","r","field","push","_b","isRuleInvalid","Array","isArray","some","value","operator","disabled","children","jsxs","Dialog","maxWidth","fullWidth","PaperProps","sx","borderRadius","DialogTitle","className","jsx","Typography","type","weight","color","Box","gap","display","Select","size","onChange","event","target","variant","setTimeout","input","OutlinedInput","label","endAdornment","InputAdornment","position","IconButton","onClick","edge","mr","Close","fontSize","SearchBar","placeholder","handleSearch","e","map","savedFilter","MenuItem","selected","preventDefault","stopPropagation","Edit","async","filterId","deleteFilterRequest","id","deleteV1FilterId","then","response","catch","err","handleDeleteFilter","Trash","SaveFilterModal","handleSubmit","newName","putFilterRequest","module","fieldResource","pageResource","putV1FilterId","enqueueSnackbar","error","m","Error","getErrorMessage","message","handleRenameFilter","handleSubmitRename","oldName","DialogContent","Alert","severity","px","pt","mb","QueryBuilderMaterial","QueryBuilder","onQueryChange","updatedRules","i","showCombinatorsBetweenRules","controlClassnames","header","controlElements","addRuleAction","AddFilterButton","addGroupAction","AddGroupButton","combinatorSelector","CombinatorSelect","fieldSelector","FieldSelect","operatorSelector","OperatorSelect","removeRuleAction","RemoveAction","valueEditor","ValueEditor","removeGroupAction","RemoveGroupAction","Button","DialogActions","alignItems","justifyContent","width","data","prev"],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { getToken } from "../../../../utils/common/index.esm.js";
|
|
2
2
|
import { createAsyncThunk } from "@reduxjs/toolkit";
|
|
3
|
-
import { getV1Company
|
|
3
|
+
import { getV1Company } from "../../../../api-client/api.rbac/api/index.esm.js";
|
|
4
4
|
import { getV1InventoryItems, getV1WarehouseLocation, getV1AssemblyItems } from "../../../../api-client/api.inventory/api/index.esm.js";
|
|
5
5
|
import { getV1BillsOfMaterials } from "../../../../api-client/api.manufacturing/api/index.esm.js";
|
|
6
|
-
import { getApiConfig } from "../../../../utils/api-config/index.esm.js";
|
|
7
|
-
setBaseUrl(`${getApiConfig().backendBaseUrl}/rbac`);
|
|
8
6
|
const fetchOptions = createAsyncThunk(
|
|
9
7
|
"reports-title/fetchOptions",
|
|
10
8
|
async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../../../src/components/inventory-reports-title-bar/redux/actionCreator.ts"],"sourcesContent":["import { getToken } from '../../../utils/common';\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\n\nimport {\n getV1Company,\n
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../../src/components/inventory-reports-title-bar/redux/actionCreator.ts"],"sourcesContent":["import { getToken } from '../../../utils/common';\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\n\nimport {\n getV1Company,\n} from \"../../../api-client/api.rbac/api\";\nimport { getV1AssemblyItems, getV1InventoryItems, getV1WarehouseLocation } from \"../../../api-client/api.inventory/api\";\nimport { getV1BillsOfMaterials } from \"../../../api-client/api.manufacturing/api\";\n\n\n\nexport const fetchOptions = createAsyncThunk(\n \"reports-title/fetchOptions\",\n async () => {\n const i = await handleFetchItem();\n const c = await handleFetchCompanies();\n const wl = await handleFetchWarehouseLocations();\n const ai = await fetchAssemblyItems();\n return { i, c, wl, ai };\n }\n);\nexport const fetchBom = createAsyncThunk(\n \"reports-title/fetchBom\",\n async () => {\n const bom = await fetchBomData();\n return bom\n }\n);\n\nexport const handleFetchCompanies = async () => {\n try {\n const response = await getV1Company({ ...getToken() });\n\n return response?.data?.company\n } catch (error) {\n return [];\n }\n};\n\nexport const handleFetchItem = async () => {\n try {\n const response = await getV1InventoryItems({\n ...getToken(),\n skip: 0,\n limit: 999,\n filters: `(type.eq=inventory|type.eq=assembly&is_variant.eq=false|self_variant.eq=true)`,\n });\n\n return response?.data?.inventoryItemsList\n } catch (error) {\n return [];\n }\n};\n\nexport const handleFetchWarehouseLocations = async () => {\n try {\n const response = await getV1WarehouseLocation({\n ...getToken(),\n skip: 0,\n limit: 999,\n });\n\n\n return response?.data?.warehouseLocationList\n } catch (error) {\n return [];\n }\n};\n\n\nexport const fetchAssemblyItems = async () => {\n try {\n const response: any = await getV1AssemblyItems({\n ...getToken(),\n skip: 0,\n limit: 999,\n }\n )\n return response?.data?.assemblyItemsList\n } catch (error: any) {\n return []\n }\n}\n\nconst fetchBomData = async () => {\n try {\n const response: any = await getV1BillsOfMaterials({\n skip: 0,\n limit: 99999,\n ...getToken()\n })\n\n return response?.data?.bom_list\n } catch (error) {\n return []\n }\n}"],"names":[],"mappings":";;;;;AAWO,MAAM,eAAe;AAAA,EAC1B;AAAA,EACA,YAAY;AACV,UAAM,IAAI,MAAM,gBAAA;AAChB,UAAM,IAAI,MAAM,qBAAA;AAChB,UAAM,KAAK,MAAM,8BAAA;AACjB,UAAM,KAAK,MAAM,mBAAA;AACjB,WAAO,EAAE,GAAG,GAAG,IAAI,GAAA;AAAA,EACrB;AACF;AACO,MAAM,WAAW;AAAA,EACtB;AAAA,EACA,YAAY;AACV,UAAM,MAAM,MAAM,aAAA;AAClB,WAAO;AAAA,EACT;AACF;AAEO,MAAM,uBAAuB,YAAY;;AAC9C,MAAI;AACF,UAAM,WAAW,MAAM,aAAa,EAAE,GAAG,SAAA,GAAY;AAErD,YAAO,0CAAU,SAAV,mBAAgB;AAAA,EACzB,SAAS,OAAO;AACd,WAAO,CAAA;AAAA,EACT;AACF;AAEO,MAAM,kBAAkB,YAAY;;AACzC,MAAI;AACF,UAAM,WAAW,MAAM,oBAAoB;AAAA,MACzC,GAAG,SAAA;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,IAAA,CACV;AAED,YAAO,0CAAU,SAAV,mBAAgB;AAAA,EACzB,SAAS,OAAO;AACd,WAAO,CAAA;AAAA,EACT;AACF;AAEO,MAAM,gCAAgC,YAAY;;AACvD,MAAI;AACF,UAAM,WAAW,MAAM,uBAAuB;AAAA,MAC5C,GAAG,SAAA;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,IAAA,CACR;AAGD,YAAO,0CAAU,SAAV,mBAAgB;AAAA,EACzB,SAAS,OAAO;AACd,WAAO,CAAA;AAAA,EACT;AACF;AAGO,MAAM,qBAAqB,YAAY;;AAC5C,MAAI;AACF,UAAM,WAAgB,MAAM;AAAA,MAAmB;AAAA,QAC7C,GAAG,SAAA;AAAA,QACH,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAEA,YAAO,0CAAU,SAAV,mBAAgB;AAAA,EACzB,SAAS,OAAY;AACnB,WAAO,CAAA;AAAA,EACT;AACF;AAEA,MAAM,eAAe,YAAY;;AAC/B,MAAI;AACF,UAAM,WAAgB,MAAM,sBAAsB;AAAA,MAChD,MAAM;AAAA,MACN,OAAO;AAAA,MACP,GAAG,SAAA;AAAA,IAAS,CACb;AAED,YAAO,0CAAU,SAAV,mBAAgB;AAAA,EACzB,SAAS,OAAO;AACd,WAAO,CAAA;AAAA,EACT;AACF;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("../../../../utils/common/index.js"),e=require("@reduxjs/toolkit"),a=require("../../../../api-client/api.rbac/api/index.js"),i=require("../../../../api-client/api.inventory/api/index.js"),n=require("../../../../api-client/api.manufacturing/api/index.js")
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("../../../../utils/common/index.js"),e=require("@reduxjs/toolkit"),a=require("../../../../api-client/api.rbac/api/index.js"),i=require("../../../../api-client/api.inventory/api/index.js"),n=require("../../../../api-client/api.manufacturing/api/index.js");const r=e.createAsyncThunk("reports-title/fetchOptions",async()=>({i:await c(),c:await o(),wl:await l(),ai:await u()})),s=e.createAsyncThunk("reports-title/fetchBom",async()=>await p()),o=async()=>{var e;try{const i=await a.getV1Company({...t.getToken()});return null==(e=null==i?void 0:i.data)?void 0:e.company}catch(i){return[]}},c=async()=>{var e;try{const a=await i.getV1InventoryItems({...t.getToken(),skip:0,limit:999,filters:"(type.eq=inventory|type.eq=assembly&is_variant.eq=false|self_variant.eq=true)"});return null==(e=null==a?void 0:a.data)?void 0:e.inventoryItemsList}catch(a){return[]}},l=async()=>{var e;try{const a=await i.getV1WarehouseLocation({...t.getToken(),skip:0,limit:999});return null==(e=null==a?void 0:a.data)?void 0:e.warehouseLocationList}catch(a){return[]}},u=async()=>{var e;try{const a=await i.getV1AssemblyItems({...t.getToken(),skip:0,limit:999});return null==(e=null==a?void 0:a.data)?void 0:e.assemblyItemsList}catch(a){return[]}},p=async()=>{var e;try{const a=await n.getV1BillsOfMaterials({skip:0,limit:99999,...t.getToken()});return null==(e=null==a?void 0:a.data)?void 0:e.bom_list}catch(a){return[]}};exports.fetchAssemblyItems=u,exports.fetchBom=s,exports.fetchOptions=r,exports.handleFetchCompanies=o,exports.handleFetchItem=c,exports.handleFetchWarehouseLocations=l;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/inventory-reports-title-bar/redux/actionCreator.ts"],"sourcesContent":["import { getToken } from '../../../utils/common';\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\n\nimport {\n getV1Company,\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/inventory-reports-title-bar/redux/actionCreator.ts"],"sourcesContent":["import { getToken } from '../../../utils/common';\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\n\nimport {\n getV1Company,\n} from \"../../../api-client/api.rbac/api\";\nimport { getV1AssemblyItems, getV1InventoryItems, getV1WarehouseLocation } from \"../../../api-client/api.inventory/api\";\nimport { getV1BillsOfMaterials } from \"../../../api-client/api.manufacturing/api\";\n\n\n\nexport const fetchOptions = createAsyncThunk(\n \"reports-title/fetchOptions\",\n async () => {\n const i = await handleFetchItem();\n const c = await handleFetchCompanies();\n const wl = await handleFetchWarehouseLocations();\n const ai = await fetchAssemblyItems();\n return { i, c, wl, ai };\n }\n);\nexport const fetchBom = createAsyncThunk(\n \"reports-title/fetchBom\",\n async () => {\n const bom = await fetchBomData();\n return bom\n }\n);\n\nexport const handleFetchCompanies = async () => {\n try {\n const response = await getV1Company({ ...getToken() });\n\n return response?.data?.company\n } catch (error) {\n return [];\n }\n};\n\nexport const handleFetchItem = async () => {\n try {\n const response = await getV1InventoryItems({\n ...getToken(),\n skip: 0,\n limit: 999,\n filters: `(type.eq=inventory|type.eq=assembly&is_variant.eq=false|self_variant.eq=true)`,\n });\n\n return response?.data?.inventoryItemsList\n } catch (error) {\n return [];\n }\n};\n\nexport const handleFetchWarehouseLocations = async () => {\n try {\n const response = await getV1WarehouseLocation({\n ...getToken(),\n skip: 0,\n limit: 999,\n });\n\n\n return response?.data?.warehouseLocationList\n } catch (error) {\n return [];\n }\n};\n\n\nexport const fetchAssemblyItems = async () => {\n try {\n const response: any = await getV1AssemblyItems({\n ...getToken(),\n skip: 0,\n limit: 999,\n }\n )\n return response?.data?.assemblyItemsList\n } catch (error: any) {\n return []\n }\n}\n\nconst fetchBomData = async () => {\n try {\n const response: any = await getV1BillsOfMaterials({\n skip: 0,\n limit: 99999,\n ...getToken()\n })\n\n return response?.data?.bom_list\n } catch (error) {\n return []\n }\n}"],"names":["fetchOptions","createAsyncThunk","async","i","handleFetchItem","c","handleFetchCompanies","wl","handleFetchWarehouseLocations","ai","fetchAssemblyItems","fetchBom","fetchBomData","response","getV1Company","getToken","_a","data","company","error","getV1InventoryItems","skip","limit","filters","inventoryItemsList","getV1WarehouseLocation","warehouseLocationList","getV1AssemblyItems","assemblyItemsList","getV1BillsOfMaterials","bom_list"],"mappings":"iVAWO,MAAMA,EAAeC,EAAAA,iBAC1B,6BACAC,UAKS,CAAEC,QAJOC,IAIJC,QAHIC,IAGDC,SAFEC,IAEEC,SADFC,OAIRC,EAAWV,EAAAA,iBACtB,yBACAC,eACoBU,KAKTN,EAAuBJ,gBAClC,IACE,MAAMW,QAAiBC,EAAAA,aAAa,IAAKC,EAAAA,aAEzC,OAAO,OAAAC,EAAA,MAAAH,OAAA,EAAAA,EAAUI,WAAV,EAAAD,EAAgBE,OACzB,OAASC,GACP,MAAO,EACT,GAGWf,EAAkBF,gBAC7B,IACE,MAAMW,QAAiBO,sBAAoB,IACtCL,aACHM,KAAM,EACNC,MAAO,IACPC,QAAS,kFAGX,OAAO,OAAAP,EAAA,MAAAH,OAAA,EAAAA,EAAUI,WAAV,EAAAD,EAAgBQ,kBACzB,OAASL,GACP,MAAO,EACT,GAGWX,EAAgCN,gBAC3C,IACE,MAAMW,QAAiBY,yBAAuB,IACzCV,aACHM,KAAM,EACNC,MAAO,MAIT,OAAO,OAAAN,EAAA,MAAAH,OAAA,EAAAA,EAAUI,WAAV,EAAAD,EAAgBU,qBACzB,OAASP,GACP,MAAO,EACT,GAIWT,EAAqBR,gBAChC,IACE,MAAMW,QAAsBc,EAAAA,mBAAmB,IAC1CZ,aACHM,KAAM,EACNC,MAAO,MAGT,OAAO,OAAAN,EAAA,MAAAH,OAAA,EAAAA,EAAUI,WAAV,EAAAD,EAAgBY,iBACzB,OAAST,GACP,MAAO,EACT,GAGIP,EAAeV,gBACnB,IACE,MAAMW,QAAsBgB,wBAAsB,CAChDR,KAAM,EACNC,MAAO,SACJP,EAAAA,aAGL,OAAO,OAAAC,EAAA,MAAAH,OAAA,EAAAA,EAAUI,WAAV,EAAAD,EAAgBc,QACzB,OAASX,GACP,MAAO,EACT"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { createAsyncThunk } from "@reduxjs/toolkit";
|
|
2
2
|
import { getToken } from "../../../../utils/common/index.esm.js";
|
|
3
|
-
import { getV1Company
|
|
4
|
-
import { getApiConfig } from "../../../../utils/api-config/index.esm.js";
|
|
5
|
-
setBaseUrl(`${getApiConfig().backendBaseUrl}/rbac`);
|
|
3
|
+
import { getV1Company } from "../../../../api-client/api.rbac/api/index.esm.js";
|
|
6
4
|
const fetchCompanies = createAsyncThunk(
|
|
7
5
|
"reports-title/fetchCompanies",
|
|
8
6
|
async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../../../src/components/reports-title-bar/redux/actionCreator.ts"],"sourcesContent":["import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { getToken } from '../../../utils/common';\nimport {\n getV1Company,\n
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../../src/components/reports-title-bar/redux/actionCreator.ts"],"sourcesContent":["import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { getToken } from '../../../utils/common';\nimport {\n getV1Company,\n} from \"../../../api-client/api.rbac/api\";\n\n\n\nexport const fetchCompanies = createAsyncThunk(\n \"reports-title/fetchCompanies\",\n async () => {\n const response = await getV1Company({ ...getToken() });\n return response;\n }\n);\n"],"names":[],"mappings":";;;AAQO,MAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA,YAAY;AACV,UAAM,WAAW,MAAM,aAAa,EAAE,GAAG,SAAA,GAAY;AACrD,WAAO;AAAA,EACT;AACF;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@reduxjs/toolkit"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@reduxjs/toolkit"),t=require("../../../../utils/common/index.js"),i=require("../../../../api-client/api.rbac/api/index.js");const r=e.createAsyncThunk("reports-title/fetchCompanies",async()=>await i.getV1Company({...t.getToken()}));exports.fetchCompanies=r;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/components/reports-title-bar/redux/actionCreator.ts"],"sourcesContent":["import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { getToken } from '../../../utils/common';\nimport {\n getV1Company,\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/reports-title-bar/redux/actionCreator.ts"],"sourcesContent":["import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { getToken } from '../../../utils/common';\nimport {\n getV1Company,\n} from \"../../../api-client/api.rbac/api\";\n\n\n\nexport const fetchCompanies = createAsyncThunk(\n \"reports-title/fetchCompanies\",\n async () => {\n const response = await getV1Company({ ...getToken() });\n return response;\n }\n);\n"],"names":["fetchCompanies","createAsyncThunk","async","getV1Company","getToken"],"mappings":"+MAQO,MAAMA,EAAiBC,EAAAA,iBAC5B,+BACAC,eACyBC,EAAAA,aAAa,IAAKC,EAAAA"}
|
package/dist/index.esm.js
CHANGED
|
@@ -438,7 +438,7 @@ import { createDarkTheme, createLightTheme, themes } from "./theme/theme-impl/in
|
|
|
438
438
|
import { primaryFont, pxToRem, remToPx, responsiveFontSizes, secondaryFont, typography } from "./theme/typography/index.esm.js";
|
|
439
439
|
import { default as default181 } from "i18next";
|
|
440
440
|
import { apiConfigurations, fetchApi, initializeApiBaseUrls } from "./utils/api/index.esm.js";
|
|
441
|
-
import { getApiConfig, initializeApiConfig, isApiConfigInitialized, resetApiConfig } from "./utils/api-config/index.esm.js";
|
|
441
|
+
import { getApiConfig, getApiConfigSafe, initializeApiConfig, isApiConfigInitialized, onApiConfigReady, resetApiConfig } from "./utils/api-config/index.esm.js";
|
|
442
442
|
import { calculateEntries } from "./utils/calculation/index.esm.js";
|
|
443
443
|
import { getFileNamesFromUrls, getFileNamesFromUrlsAsLink, renderEmptyRowsFallback, renderValueField, transformTableColumns } from "./utils/common-utility/index.esm.js";
|
|
444
444
|
import { InvoiceStatus, addOrEditArray, appendConditionSafely, calculateAmountData, calculatePeriods, checkDuplicateTracking, checkForDuplicate, checkSkuAndItemName, createdOnAndBy, defaultCompany, defaultCurrencyFormat, defaultCurrencySymbol, displayPhone, downloadDoc, downloadFile, fetchAssemblyItemData, fetchCompanyLocations, fetchDataLocally, fetchExchageRate, fetchItems, fetchRentalResponseItems, fetchRfqItemsByIdForResponse, filterAccessibleModules, filterCoaByCompanyIdOrNull, findById, formatAmount, formatAmountWithCurrency, formatAmountWithCurrencyData, formatDateForPayload, formatDateTimeForPayload, formatEmptyDataToNull, formatResponseDatesToDayJS, formatResponseOnlyDatesToDayJS, formatTimeForPayload, generateAndFormatStringFromObj, generateFields, generateQueryString, generateRandomId, getAccessibleModules, getCountryIdByName, getErrorMessage, getExcelExportTemplate, getExcelTemplateGenerateTemplate, getFieldFilters, getFileName, getLabelValuePairs, getName, getNestedValue, getNextScheduleDate, getOperatorLabel, getOptionsData, getPartyDependentData, getPartyName, getSlicedValue, getTaxAmountDataFromMultipleTaxCodes, getTaxAmountFromMultipleTaxCodes, getToken, handleRegularUpload, hasValue, isBetweenTheDates, isJSONString, isJsonParse, manageItems, mapApiPayload, mapAsyncApiPayload, matchedMaterialCostingTypeLabel, omitDataKeys, partyDuplicateCheck, partyEmailIds, postImportSheet, remainingMaterialCostingTypes, removeIdFromObject, removeIdStaticIdsFromMongoObject, setRateBasedOnPriceRules, showSnackBar, skuGenerator, toFixedWithNumbers, updateFieldsDisabledState, uploadAttachments, uploadFiles, validateDiscountValidity } from "./utils/common/index.esm.js";
|
|
@@ -1119,6 +1119,7 @@ export {
|
|
|
1119
1119
|
getAccessibleModules,
|
|
1120
1120
|
getAllUserAndDepartmentDropdown,
|
|
1121
1121
|
getApiConfig,
|
|
1122
|
+
getApiConfigSafe,
|
|
1122
1123
|
getAvailableSteelTypes,
|
|
1123
1124
|
getAvailableTubeTypes,
|
|
1124
1125
|
getConfigFunction,
|
|
@@ -1190,6 +1191,7 @@ export {
|
|
|
1190
1191
|
navigateToRouteWithId,
|
|
1191
1192
|
navigateWithId,
|
|
1192
1193
|
omitDataKeys,
|
|
1194
|
+
onApiConfigReady,
|
|
1193
1195
|
pageViewChangeCurrentPage,
|
|
1194
1196
|
default187 as pageViewSlice,
|
|
1195
1197
|
partyDuplicateCheck,
|