Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
ciur committed Oct 8, 2024
1 parent f2cf0de commit 1f12c33
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 11 deletions.
27 changes: 25 additions & 2 deletions ui2/src/features/document/apiSlice.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import {RootState} from "@/app/types"
import {ONE_DAY_IN_SECONDS} from "@/cconstants"
import {apiSlice} from "@/features/api/slice"
import type {CustomFieldValueType, DocumentCustomFieldValue} from "@/types"
import type {
AddCustomFieldValueType,
DocumentCustomFieldValue,
UpdateCustomFieldValueType
} from "@/types"
import {DocumentType, ExtractStrategyType, TransferStrategyType} from "@/types"
import {getBaseURL, getDefaultHeaders, imageEncode} from "@/utils"

Expand Down Expand Up @@ -46,7 +50,15 @@ type UpdateDocumentCustomFields = {
documentID: string
body: {
document_type_id: string
custom_fields: Array<CustomFieldValueType>
custom_fields: Array<UpdateCustomFieldValueType>
}
}

type AddDocumentCustomFields = {
documentID: string
body: {
document_type_id: string
custom_fields: Array<AddCustomFieldValueType>
}
}

Expand Down Expand Up @@ -139,6 +151,16 @@ export const apiSliceWithDocuments = apiSlice.injectEndpoints({
]
}
}),
addDocumentCustomFields: builder.mutation<void, AddDocumentCustomFields>({
query: data => ({
url: `/documents/${data.documentID}/custom-fields`,
method: "POST",
body: data.body
}),
invalidatesTags: (_result, _error, arg) => {
return [{type: "DocumentCustomField", id: arg.documentID}]
}
}),
updateDocumentCustomFields: builder.mutation<
void,
UpdateDocumentCustomFields
Expand Down Expand Up @@ -170,5 +192,6 @@ export const {
useMovePagesMutation,
useExtractPagesMutation,
useUpdateDocumentCustomFieldsMutation,
useAddDocumentCustomFieldsMutation,
useGetDocumentCustomFieldsQuery
} = apiSliceWithDocuments
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,16 @@ import {
useGetDocumentTypesQuery
} from "@/features/document-types/apiSlice"
import {
useAddDocumentCustomFieldsMutation,
useGetDocumentCustomFieldsQuery,
useUpdateDocumentCustomFieldsMutation
} from "@/features/document/apiSlice"
import {selectCurrentNodeID} from "@/features/ui/uiSlice"
import type {DocumentCustomFieldValue, PanelMode} from "@/types"
import {Button, ComboboxItem, Select, Skeleton, TextInput} from "@mantine/core"

type CustomFieldsOperation = "add" | "update"

export default function CustomFields() {
const [showSaveButton, setShowSaveButton] = useState<boolean>(false)
const {data: allDocumentTypes = [], isSuccess: isSuccessAllDocumentTypes} =
Expand All @@ -34,6 +37,8 @@ export default function CustomFields() {
>([])
const [updateDocumentCustomFields, {error}] =
useUpdateDocumentCustomFieldsMutation()
const [addDocumentCustomFields, {error: erroraddDocumentCustomFields}] =
useAddDocumentCustomFieldsMutation()
const {data: documentCustomFields, isSuccess: isSuccessDocumentCustomFields} =
useGetDocumentCustomFieldsQuery(docID ?? skipToken)

Expand Down Expand Up @@ -120,17 +125,34 @@ export default function CustomFields() {
}

const onSave = async () => {
const data = {
documentID: docID!,
body: {
document_type_id: documentTypeID?.value!,
custom_fields: customFieldValues.map(i => {
return {custom_field_id: i.field_id!, value: i.value}
})
if (documentCustomFields && customFieldValues.length > 0) {
// document already has custom fields associated
// we need to update existing custom field value
const data = {
documentID: docID!,
body: {
document_type_id: documentTypeID?.value!,
custom_fields: customFieldValues.map(i => {
return {custom_field_value_id: i.id, value: i.value}
})
}
}
await updateDocumentCustomFields(data)
} else {
// document does not have custom field values associated
// create new ones based on field_id
const data = {
documentID: docID!,
body: {
document_type_id: documentTypeID?.value!,
custom_fields: customFieldValues.map(i => {
return {custom_field_id: i.field_id!, value: i.value}
})
}
}
}

await updateDocumentCustomFields(data)
await addDocumentCustomFields(data)
}

setShowSaveButton(false)
}
Expand Down
10 changes: 10 additions & 0 deletions ui2/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,16 @@ export interface CustomFieldValueType {
value: string
}

export interface AddCustomFieldValueType {
custom_field_id: string
value: string
}

export interface UpdateCustomFieldValueType {
custom_field_value_id: string
value: string
}

export type DocumentCustomFieldValue = {
id: string
name: string
Expand Down

0 comments on commit 1f12c33

Please sign in to comment.