Skip to content

Commit cd261a8

Browse files
authored
Merge pull request #131 from CivicDataLab/130-integrate-tags-in-metadata-form
feat: add query and update mutation to integrate tags in metadata form
2 parents 96b8fe6 + e2121d4 commit cd261a8

1 file changed

Lines changed: 47 additions & 6 deletions

File tree

  • app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components

app/[locale]/dashboard/organization/[organizationId]/dataset/[id]/edit/components/EditMetadata.tsx

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
TypeDataset,
88
TypeDatasetMetadata,
99
TypeMetadata,
10+
TypeTag,
1011
UpdateMetadataInput,
1112
} from '@/gql/generated/graphql';
1213
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
@@ -33,12 +34,25 @@ const categoriesListQueryDoc: any = graphql(`
3334
}
3435
`);
3536

37+
const tagsListQueryDoc: any = graphql(`
38+
query TagsList {
39+
tags {
40+
id
41+
value
42+
}
43+
}
44+
`);
45+
3646
const datasetMetadataQueryDoc: any = graphql(`
3747
query MetadataValues($filters: DatasetFilter) {
3848
datasets(filters: $filters) {
3949
title
4050
id
4151
description
52+
tags {
53+
id
54+
value
55+
}
4256
categories {
4357
id
4458
name
@@ -102,6 +116,11 @@ export function EditMetadata({ id }: { id: string }) {
102116
GraphQL(categoriesListQueryDoc, [])
103117
);
104118

119+
const getTagsList: { data: any; isLoading: boolean; error: any } = useQuery(
120+
[`tags_list_query`],
121+
() => GraphQL(tagsListQueryDoc, [])
122+
);
123+
105124
const getMetaDataListQuery: {
106125
data: any;
107126
isLoading: boolean;
@@ -164,14 +183,21 @@ export function EditMetadata({ id }: { id: string }) {
164183

165184
defaultVal['description'] = dataset.description || '';
166185

167-
defaultVal['categories'] = dataset.categories?.map(
168-
(category: TypeCategory) => {
186+
defaultVal['categories'] =
187+
dataset.categories?.map((category: TypeCategory) => {
169188
return {
170189
label: category.name,
171190
value: category.id,
172191
};
173-
}
174-
);
192+
}) || [];
193+
194+
defaultVal['tags'] =
195+
dataset.tags?.map((tag: TypeTag) => {
196+
return {
197+
label: tag.value,
198+
value: tag.id,
199+
};
200+
}) || [];
175201

176202
return defaultVal;
177203
};
@@ -180,6 +206,7 @@ export function EditMetadata({ id }: { id: string }) {
180206
<>
181207
<Form
182208
onSubmit={(values) => {
209+
// Call the mutation to save both the static and dynamic metadata
183210
updateMetadataMutation.mutate({
184211
UpdateMetadataInput: {
185212
dataset: id,
@@ -197,7 +224,7 @@ export function EditMetadata({ id }: { id: string }) {
197224
}),
198225
],
199226
description: values.description || '',
200-
tags: values.tags || [],
227+
tags: values.tags?.map((item: any) => item.label) || [],
201228
categories:
202229
values.categories?.map((item: any) => item.value) || [],
203230
},
@@ -229,7 +256,21 @@ export function EditMetadata({ id }: { id: string }) {
229256

230257
<div className="flex flex-wrap">
231258
<div className="w-full py-4 pr-4 sm:w-1/2 md:w-1/2 lg:w-1/2 xl:w-1/2">
232-
<Combobox name={'tags'} list={[]} label={'Tags'} />
259+
<Combobox
260+
displaySelected
261+
name="tags"
262+
list={
263+
getTagsList.isLoading || getTagsList.error
264+
? []
265+
: getTagsList.data?.tags?.map((item: TypeTag) => {
266+
return {
267+
label: item.value,
268+
value: item.id,
269+
};
270+
}) || []
271+
}
272+
label="Tags"
273+
/>
233274
</div>
234275
<div className="w-full py-4 pr-4 sm:w-1/2 md:w-1/2 lg:w-1/2 xl:w-1/2">
235276
<Combobox

0 commit comments

Comments
 (0)