mirror of
https://github.com/inventree/InvenTree.git
synced 2025-12-17 01:38:19 +00:00
Add data import for parameter table
This commit is contained in:
@@ -17,6 +17,7 @@ export enum ModelType {
|
|||||||
buildline = 'buildline',
|
buildline = 'buildline',
|
||||||
builditem = 'builditem',
|
builditem = 'builditem',
|
||||||
company = 'company',
|
company = 'company',
|
||||||
|
parameter = 'parameter',
|
||||||
parametertemplate = 'parametertemplate',
|
parametertemplate = 'parametertemplate',
|
||||||
purchaseorder = 'purchaseorder',
|
purchaseorder = 'purchaseorder',
|
||||||
purchaseorderlineitem = 'purchaseorderlineitem',
|
purchaseorderlineitem = 'purchaseorderlineitem',
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import {
|
import {
|
||||||
AddItemButton,
|
|
||||||
ApiEndpoints,
|
ApiEndpoints,
|
||||||
type ModelType,
|
ModelType,
|
||||||
RowDeleteAction,
|
RowDeleteAction,
|
||||||
RowEditAction,
|
RowEditAction,
|
||||||
YesNoButton,
|
YesNoButton,
|
||||||
@@ -11,8 +10,12 @@ import {
|
|||||||
import type { TableFilter } from '@lib/types/Filters';
|
import type { TableFilter } from '@lib/types/Filters';
|
||||||
import type { TableColumn } from '@lib/types/Tables';
|
import type { TableColumn } from '@lib/types/Tables';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
|
import { IconFileUpload, IconPlus } from '@tabler/icons-react';
|
||||||
import { useCallback, useMemo, useState } from 'react';
|
import { useCallback, useMemo, useState } from 'react';
|
||||||
|
import ImporterDrawer from '../../components/importer/ImporterDrawer';
|
||||||
|
import { ActionDropdown } from '../../components/items/ActionDropdown';
|
||||||
import { useParameterFields } from '../../forms/CommonForms';
|
import { useParameterFields } from '../../forms/CommonForms';
|
||||||
|
import { dataImporterSessionFields } from '../../forms/ImporterForms';
|
||||||
import {
|
import {
|
||||||
useCreateApiFormModal,
|
useCreateApiFormModal,
|
||||||
useDeleteApiFormModal,
|
useDeleteApiFormModal,
|
||||||
@@ -125,6 +128,35 @@ export function ParameterTable({
|
|||||||
undefined
|
undefined
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const [importOpened, setImportOpened] = useState<boolean>(false);
|
||||||
|
|
||||||
|
const [selectedSession, setSelectedSession] = useState<number | undefined>(
|
||||||
|
undefined
|
||||||
|
);
|
||||||
|
|
||||||
|
const importSessionFields = useMemo(() => {
|
||||||
|
const fields = dataImporterSessionFields({
|
||||||
|
modelType: ModelType.parameter
|
||||||
|
});
|
||||||
|
|
||||||
|
fields.field_overrides.value = {
|
||||||
|
model_type: modelType,
|
||||||
|
model_id: modelId
|
||||||
|
};
|
||||||
|
|
||||||
|
return fields;
|
||||||
|
}, [modelType, modelId]);
|
||||||
|
|
||||||
|
const importParameters = useCreateApiFormModal({
|
||||||
|
url: ApiEndpoints.import_session_list,
|
||||||
|
title: t`Import Parameters`,
|
||||||
|
fields: importSessionFields,
|
||||||
|
onFormSuccess: (response: any) => {
|
||||||
|
setSelectedSession(response.pk);
|
||||||
|
setImportOpened(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const newParameter = useCreateApiFormModal({
|
const newParameter = useCreateApiFormModal({
|
||||||
url: ApiEndpoints.parameter_list,
|
url: ApiEndpoints.parameter_list,
|
||||||
title: t`Add Parameter`,
|
title: t`Add Parameter`,
|
||||||
@@ -149,13 +181,31 @@ export function ParameterTable({
|
|||||||
|
|
||||||
const tableActions = useMemo(() => {
|
const tableActions = useMemo(() => {
|
||||||
return [
|
return [
|
||||||
<AddItemButton
|
<ActionDropdown
|
||||||
key='add-parameter'
|
key='add-parameter-actions'
|
||||||
|
tooltip={t`Add Parameters`}
|
||||||
|
position='bottom-start'
|
||||||
|
icon={<IconPlus />}
|
||||||
hidden={!user.hasAddPermission(modelType)}
|
hidden={!user.hasAddPermission(modelType)}
|
||||||
onClick={() => {
|
actions={[
|
||||||
setSelectedParameter(undefined);
|
{
|
||||||
newParameter.open();
|
name: t`Create Parameter`,
|
||||||
}}
|
icon: <IconPlus />,
|
||||||
|
tooltip: t`Create a new parameter`,
|
||||||
|
onClick: () => {
|
||||||
|
setSelectedParameter(undefined);
|
||||||
|
newParameter.open();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: t`Import from File`,
|
||||||
|
icon: <IconFileUpload />,
|
||||||
|
tooltip: t`Import parameters from a file`,
|
||||||
|
onClick: () => {
|
||||||
|
importParameters.open();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]}
|
||||||
/>
|
/>
|
||||||
];
|
];
|
||||||
}, [user]);
|
}, [user]);
|
||||||
@@ -189,6 +239,7 @@ export function ParameterTable({
|
|||||||
{newParameter.modal}
|
{newParameter.modal}
|
||||||
{editParameter.modal}
|
{editParameter.modal}
|
||||||
{deleteParameter.modal}
|
{deleteParameter.modal}
|
||||||
|
{importParameters.modal}
|
||||||
<InvenTreeTable
|
<InvenTreeTable
|
||||||
url={apiUrl(ApiEndpoints.parameter_list)}
|
url={apiUrl(ApiEndpoints.parameter_list)}
|
||||||
tableState={table}
|
tableState={table}
|
||||||
@@ -206,6 +257,15 @@ export function ParameterTable({
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
<ImporterDrawer
|
||||||
|
sessionId={selectedSession ?? -1}
|
||||||
|
opened={selectedSession !== undefined && importOpened}
|
||||||
|
onClose={() => {
|
||||||
|
setSelectedSession(undefined);
|
||||||
|
setImportOpened(false);
|
||||||
|
table.refreshTable();
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user