From 5f391401ddffcfd586795a8ff8844b1883586ac8 Mon Sep 17 00:00:00 2001 From: njkim Date: Fri, 7 Mar 2025 14:17:19 -0800 Subject: [PATCH 1/2] Combine create Scheme & Concept apis, #244 --- arches_lingo/src/arches_lingo/api.ts | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/arches_lingo/src/arches_lingo/api.ts b/arches_lingo/src/arches_lingo/api.ts index c8420834..85fedf8c 100644 --- a/arches_lingo/src/arches_lingo/api.ts +++ b/arches_lingo/src/arches_lingo/api.ts @@ -150,28 +150,17 @@ export const deleteLingoTile = async ( } }; -export const createScheme = async (newScheme: SchemeInstance) => { - const response = await fetch(arches.urls.api_lingo_resources("scheme"), { - method: "POST", - headers: { - "X-CSRFTOKEN": getToken(), - "Content-Type": "application/json", - }, - body: JSON.stringify(newScheme), - }); - const parsed = await response.json(); - if (!response.ok) throw new Error(parsed.message || response.statusText); - return parsed; -}; - -export const createConcept = async (newConcept: ConceptInstance) => { - const response = await fetch(arches.urls.api_lingo_resources("concept"), { +export const createLingoResource = async ( + newResource: SchemeInstance | ConceptInstance, + graphSlug: string, +) => { + const response = await fetch(arches.urls.api_lingo_resources(graphSlug), { method: "POST", headers: { "X-CSRFTOKEN": getToken(), "Content-Type": "application/json", }, - body: JSON.stringify(newConcept), + body: JSON.stringify(newResource), }); const parsed = await response.json(); if (!response.ok) throw new Error(parsed.message || response.statusText); From 782bb49e32823d70c38fb723cd458ed14f91b6e3 Mon Sep 17 00:00:00 2001 From: njkim Date: Fri, 7 Mar 2025 14:17:58 -0800 Subject: [PATCH 2/2] Update api calls, #244 --- .../components/ConceptLabelEditor.vue | 19 +++++++++++-------- .../components/ConceptNoteEditor.vue | 11 +++++++---- .../components/SchemeLabelEditor.vue | 11 +++++++---- .../components/SchemeLicenseEditor.vue | 11 +++++++---- .../components/SchemeNamespaceEditor.vue | 11 +++++++---- .../components/SchemeNoteEditor.vue | 11 +++++++---- .../components/SchemeStandardEditor.vue | 11 +++++++---- 7 files changed, 53 insertions(+), 32 deletions(-) diff --git a/arches_lingo/src/arches_lingo/components/concept/ConceptLabel/components/ConceptLabelEditor.vue b/arches_lingo/src/arches_lingo/components/concept/ConceptLabel/components/ConceptLabelEditor.vue index 6d44bdb7..b1801b19 100644 --- a/arches_lingo/src/arches_lingo/components/concept/ConceptLabel/components/ConceptLabelEditor.vue +++ b/arches_lingo/src/arches_lingo/components/concept/ConceptLabel/components/ConceptLabelEditor.vue @@ -9,7 +9,7 @@ import NonLocalizedStringWidget from "@/arches_component_lab/widgets/NonLocalize import ReferenceSelectWidget from "@/arches_controlled_lists/widgets/ReferenceSelectWidget/ReferenceSelectWidget.vue"; import ResourceInstanceMultiSelectWidget from "@/arches_component_lab/widgets/ResourceInstanceMultiSelectWidget/ResourceInstanceMultiSelectWidget.vue"; -import { createConcept, upsertLingoTile } from "@/arches_lingo/api.ts"; +import { createLingoResource, upsertLingoTile } from "@/arches_lingo/api.ts"; import { EDIT } from "@/arches_lingo/constants.ts"; import type { Component, Ref } from "vue"; @@ -54,18 +54,21 @@ async function save(e: FormSubmitEvent) { let updatedTileId; if (!props.resourceInstanceId) { - const updatedScheme = await createConcept({ - [props.nodegroupAlias]: [formData], - }); + const updatedConcept = await createLingoResource( + { + [props.nodegroupAlias]: [formData], + }, + props.graphSlug, + ); await router.push({ name: props.graphSlug, - params: { id: updatedScheme.resourceinstanceid }, + params: { id: updatedConcept.resourceinstanceid }, }); - updatedTileId = updatedScheme[props.nodegroupAlias][0].tileid; + updatedTileId = updatedConcept[props.nodegroupAlias][0].tileid; } else { - const updatedScheme = await upsertLingoTile( + const updatedConcept = await upsertLingoTile( props.graphSlug, props.nodegroupAlias, { @@ -75,7 +78,7 @@ async function save(e: FormSubmitEvent) { }, ); - updatedTileId = updatedScheme.tileid; + updatedTileId = updatedConcept.tileid; } openEditor!(props.componentName, updatedTileId); diff --git a/arches_lingo/src/arches_lingo/components/concept/ConceptNote/components/ConceptNoteEditor.vue b/arches_lingo/src/arches_lingo/components/concept/ConceptNote/components/ConceptNoteEditor.vue index 8c6c100c..fae8829b 100644 --- a/arches_lingo/src/arches_lingo/components/concept/ConceptNote/components/ConceptNoteEditor.vue +++ b/arches_lingo/src/arches_lingo/components/concept/ConceptNote/components/ConceptNoteEditor.vue @@ -9,7 +9,7 @@ import NonLocalizedStringWidget from "@/arches_component_lab/widgets/NonLocalize import ReferenceSelectWidget from "@/arches_controlled_lists/widgets/ReferenceSelectWidget/ReferenceSelectWidget.vue"; import ResourceInstanceMultiSelectWidget from "@/arches_component_lab/widgets/ResourceInstanceMultiSelectWidget/ResourceInstanceMultiSelectWidget.vue"; -import { createConcept, upsertLingoTile } from "@/arches_lingo/api.ts"; +import { createLingoResource, upsertLingoTile } from "@/arches_lingo/api.ts"; import { EDIT } from "@/arches_lingo/constants.ts"; import type { Component, Ref } from "vue"; @@ -54,9 +54,12 @@ async function save(e: FormSubmitEvent) { let updatedTileId; if (!props.resourceInstanceId) { - const updatedConcept = await createConcept({ - [props.nodegroupAlias]: [formData], - }); + const updatedConcept = await createLingoResource( + { + [props.nodegroupAlias]: [formData], + }, + props.graphSlug, + ); await router.push({ name: props.graphSlug, diff --git a/arches_lingo/src/arches_lingo/components/scheme/SchemeLabel/components/SchemeLabelEditor.vue b/arches_lingo/src/arches_lingo/components/scheme/SchemeLabel/components/SchemeLabelEditor.vue index 4aa62972..44d5354f 100644 --- a/arches_lingo/src/arches_lingo/components/scheme/SchemeLabel/components/SchemeLabelEditor.vue +++ b/arches_lingo/src/arches_lingo/components/scheme/SchemeLabel/components/SchemeLabelEditor.vue @@ -9,7 +9,7 @@ import NonLocalizedStringWidget from "@/arches_component_lab/widgets/NonLocalize import ReferenceSelectWidget from "@/arches_controlled_lists/widgets/ReferenceSelectWidget/ReferenceSelectWidget.vue"; import ResourceInstanceMultiSelectWidget from "@/arches_component_lab/widgets/ResourceInstanceMultiSelectWidget/ResourceInstanceMultiSelectWidget.vue"; -import { createScheme, upsertLingoTile } from "@/arches_lingo/api.ts"; +import { createLingoResource, upsertLingoTile } from "@/arches_lingo/api.ts"; import { EDIT } from "@/arches_lingo/constants.ts"; import type { Component, Ref } from "vue"; @@ -54,9 +54,12 @@ async function save(e: FormSubmitEvent) { let updatedTileId; if (!props.resourceInstanceId) { - const updatedScheme = await createScheme({ - [props.nodegroupAlias]: [formData], - }); + const updatedScheme = await createLingoResource( + { + [props.nodegroupAlias]: [formData], + }, + props.graphSlug, + ); await router.push({ name: props.graphSlug, diff --git a/arches_lingo/src/arches_lingo/components/scheme/SchemeLicense/components/SchemeLicenseEditor.vue b/arches_lingo/src/arches_lingo/components/scheme/SchemeLicense/components/SchemeLicenseEditor.vue index 1df0bc06..a6ec2365 100644 --- a/arches_lingo/src/arches_lingo/components/scheme/SchemeLicense/components/SchemeLicenseEditor.vue +++ b/arches_lingo/src/arches_lingo/components/scheme/SchemeLicense/components/SchemeLicenseEditor.vue @@ -8,7 +8,7 @@ import NonLocalizedStringWidget from "@/arches_component_lab/widgets/NonLocalize import ReferenceSelectWidget from "@/arches_controlled_lists/widgets/ReferenceSelectWidget/ReferenceSelectWidget.vue"; import ResourceInstanceMultiSelectWidget from "@/arches_component_lab/widgets/ResourceInstanceMultiSelectWidget/ResourceInstanceMultiSelectWidget.vue"; -import { createScheme, upsertLingoTile } from "@/arches_lingo/api.ts"; +import { createLingoResource, upsertLingoTile } from "@/arches_lingo/api.ts"; import { EDIT } from "@/arches_lingo/constants.ts"; @@ -67,9 +67,12 @@ async function save(e: FormSubmitEvent) { let updatedTileId; if (!props.resourceInstanceId) { - const updatedScheme = await createScheme({ - [props.nodegroupAlias]: expectedTileShape, - }); + const updatedScheme = await createLingoResource( + { + [props.nodegroupAlias]: [formData], + }, + props.graphSlug, + ); await router.push({ name: props.graphSlug, diff --git a/arches_lingo/src/arches_lingo/components/scheme/SchemeNamespace/components/SchemeNamespaceEditor.vue b/arches_lingo/src/arches_lingo/components/scheme/SchemeNamespace/components/SchemeNamespaceEditor.vue index a47b1597..d2e8824a 100644 --- a/arches_lingo/src/arches_lingo/components/scheme/SchemeNamespace/components/SchemeNamespaceEditor.vue +++ b/arches_lingo/src/arches_lingo/components/scheme/SchemeNamespace/components/SchemeNamespaceEditor.vue @@ -6,7 +6,7 @@ import { Form } from "@primevue/forms"; import NonLocalizedStringWidget from "@/arches_component_lab/widgets/NonLocalizedStringWidget/NonLocalizedStringWidget.vue"; -import { createScheme, upsertLingoTile } from "@/arches_lingo/api.ts"; +import { createLingoResource, upsertLingoTile } from "@/arches_lingo/api.ts"; import { EDIT } from "@/arches_lingo/constants.ts"; import type { FormSubmitEvent } from "@primevue/forms"; @@ -50,9 +50,12 @@ async function save(e: FormSubmitEvent) { let updatedTileId; if (!props.resourceInstanceId) { - const updatedScheme = await createScheme({ - [props.nodegroupAlias]: formData, - }); + const updatedScheme = await createLingoResource( + { + [props.nodegroupAlias]: [formData], + }, + props.graphSlug, + ); await router.push({ name: props.graphSlug, diff --git a/arches_lingo/src/arches_lingo/components/scheme/SchemeNote/components/SchemeNoteEditor.vue b/arches_lingo/src/arches_lingo/components/scheme/SchemeNote/components/SchemeNoteEditor.vue index 5d1da6b7..1a740f1e 100644 --- a/arches_lingo/src/arches_lingo/components/scheme/SchemeNote/components/SchemeNoteEditor.vue +++ b/arches_lingo/src/arches_lingo/components/scheme/SchemeNote/components/SchemeNoteEditor.vue @@ -9,7 +9,7 @@ import NonLocalizedStringWidget from "@/arches_component_lab/widgets/NonLocalize import ReferenceSelectWidget from "@/arches_controlled_lists/widgets/ReferenceSelectWidget/ReferenceSelectWidget.vue"; import ResourceInstanceMultiSelectWidget from "@/arches_component_lab/widgets/ResourceInstanceMultiSelectWidget/ResourceInstanceMultiSelectWidget.vue"; -import { createScheme, upsertLingoTile } from "@/arches_lingo/api.ts"; +import { createLingoResource, upsertLingoTile } from "@/arches_lingo/api.ts"; import { EDIT } from "@/arches_lingo/constants.ts"; import type { Component, Ref } from "vue"; @@ -54,9 +54,12 @@ async function save(e: FormSubmitEvent) { let updatedTileId; if (!props.resourceInstanceId) { - const updatedScheme = await createScheme({ - [props.nodegroupAlias]: [formData], - }); + const updatedScheme = await createLingoResource( + { + [props.nodegroupAlias]: [formData], + }, + props.graphSlug, + ); await router.push({ name: props.graphSlug, diff --git a/arches_lingo/src/arches_lingo/components/scheme/SchemeStandard/components/SchemeStandardEditor.vue b/arches_lingo/src/arches_lingo/components/scheme/SchemeStandard/components/SchemeStandardEditor.vue index cee0aa21..3fac5178 100644 --- a/arches_lingo/src/arches_lingo/components/scheme/SchemeStandard/components/SchemeStandardEditor.vue +++ b/arches_lingo/src/arches_lingo/components/scheme/SchemeStandard/components/SchemeStandardEditor.vue @@ -6,7 +6,7 @@ import { Form } from "@primevue/forms"; import ResourceInstanceMultiSelectWidget from "@/arches_component_lab/widgets/ResourceInstanceMultiSelectWidget/ResourceInstanceMultiSelectWidget.vue"; -import { createScheme, upsertLingoTile } from "@/arches_lingo/api.ts"; +import { createLingoResource, upsertLingoTile } from "@/arches_lingo/api.ts"; import { EDIT } from "@/arches_lingo/constants.ts"; import type { FormSubmitEvent } from "@primevue/forms"; @@ -49,9 +49,12 @@ async function save(e: FormSubmitEvent) { let updatedTileId; if (!props.resourceInstanceId) { - const updatedScheme = await createScheme({ - [props.nodegroupAlias]: formData, - }); + const updatedScheme = await createLingoResource( + { + [props.nodegroupAlias]: [formData], + }, + props.graphSlug, + ); await router.push({ name: props.graphSlug,