Skip to content

Commit

Permalink
Merge branch 'adg/146-scheme-names' into adg/146-genericize-label-viewer
Browse files Browse the repository at this point in the history
  • Loading branch information
aarongundel committed Jan 2, 2025
2 parents 0868230 + 78090f0 commit eb985a4
Show file tree
Hide file tree
Showing 10 changed files with 85 additions and 88 deletions.
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
<script setup lang="ts">
import { onBeforeUpdate, onUpdated, ref } from "vue";
import { onBeforeUpdate, ref, watch } from "vue";
import { useGettext } from "vue3-gettext";
import Button from "primevue/button";
import Tabs from "primevue/tabs";
import TabList from "primevue/tablist";
import Tab from "primevue/tab";
import TabPanels from "primevue/tabpanels";
import TabPanel from "primevue/tabpanel";
import SchemeNamespace from "@/arches_lingo/components/scheme/report/SchemeNamespace.vue";
import SchemeStandard from "@/arches_lingo/components/scheme/report/SchemeStandard.vue";
import SchemeLabel from "@/arches_lingo/components/scheme/report/SchemeLabel.vue";
Expand All @@ -18,33 +12,53 @@ const { $gettext } = useGettext();
const EDIT = "edit";
const props = defineProps<{
editorMax: boolean;
activeTab: string;
editorForm: string;
tileId?: string;
}>();
type SchemeComponent = {
component: SectionTypes;
id: string;
editorName: string;
};
const childRefs = ref<Array<SectionTypes>>([]);
const currentEditor = ref<SchemeComponent>();
const schemeComponents = [
{
component: SchemeLabel,
id: "label",
editorTabName: $gettext("Scheme Label"),
editorName: $gettext("Scheme Label"),
},
{
component: SchemeNamespace,
id: "namespace",
editorTabName: $gettext("Scheme Namespace"),
editorName: $gettext("Scheme Namespace"),
},
{
component: SchemeStandard,
id: "standard",
editorTabName: $gettext("Scheme Standards Followed"),
editorName: $gettext("Scheme Standards Followed"),
},
{
component: SchemeNote,
id: "note",
editorTabName: $gettext("Scheme Notes"),
editorName: $gettext("Scheme Notes"),
},
];
watch(
props,
(newValue) => {
if (newValue) {
currentEditor.value = schemeComponents.find((component) => {
return component.id === newValue.editorForm;
});
}
},
{ immediate: true },
);
const emit = defineEmits(["maximize", "side", "close", "updated"]);
onBeforeUpdate(() => {
Expand All @@ -59,17 +73,7 @@ function toggleSize() {
}
}
function getRef(el: object | null, index: number) {
if (el != null) childRefs.value[index] = el as SectionTypes;
}
async function updateScheme() {
await Promise.all(
childRefs.value.map(async (ref) => {
return ref.save();
}),
);
function onSectionUpdate() {
emit("updated");
}
</script>
Expand Down Expand Up @@ -104,38 +108,16 @@ async function updateScheme() {
</div>
</div>
</div>
<div class="content">
<Tabs :value="activeTab">
<TabList>
<template
v-for="component in schemeComponents"
:key="component.id"
>
<Tab :value="component.id">{{
component.editorTabName
}}</Tab>
</template>
</TabList>
<TabPanels>
<template
v-for="(component, index) in schemeComponents"
:key="component.id"
>
<TabPanel :value="component.id">
<component
:is="component.component"
v-bind="{ mode: EDIT, tileId: props.tileId }"
:ref="(el) => getRef(el, index)"
v-on="{ updated: onUpdated }"
/>
</TabPanel>
</template>
</TabPanels>
</Tabs>
<Button
:label="$gettext('Update')"
@click="updateScheme"
></Button>
<div
v-if="currentEditor"
class="content"
>
<h3>{{ currentEditor.editorName }}</h3>
<component
:is="currentEditor.component"
v-bind="{ mode: EDIT, tileId: tileId }"
v-on="{ updated: onSectionUpdate }"
/>
</div>
</template>
<style scoped>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,15 @@
import { useGettext } from "vue3-gettext";
import SchemeReportSection from "@/arches_lingo/components/scheme/report/SchemeSection.vue";
const { $gettext } = useGettext();
const save = () => {
console.log("save");
};
const getSectionValue = async () => {
console.log("update");
};
defineExpose({ save, getSectionValue });
defineExpose({ getSectionValue });
</script>

<template>
<SchemeReportSection :title-text="$gettext('Trusted Authorities')">
abc
todo
</SchemeReportSection>
</template>
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ withDefaults(
},
);
defineExpose({ save, getSectionValue });
defineExpose({ getSectionValue });
const emits = defineEmits([OPEN_EDITOR]);
Expand Down Expand Up @@ -100,9 +100,9 @@ function editSectionValue(tileId: string) {
}
}
async function save() {
// todo for Johnathan. This function will save the values of the form back to arches.
}
// async function save() {
// // todo for Johnathan. This function will save the values of the form back to arches.
// }
// async function update() {
// // todo for Johnathan. This function will handle the update emit when the user changes values in your form - you store those values in this section.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ const { $gettext } = useGettext();

<template>
<SchemeReportSection :title-text="$gettext('License')">
abc
todo
</SchemeReportSection>
</template>
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,26 @@
import { onMounted, ref } from "vue";
import { useRoute } from "vue-router";
import { useGettext } from "vue3-gettext";
import Button from "primevue/button";
import SchemeReportSection from "@/arches_lingo/components/scheme/report/SchemeSection.vue";
import NonLocalizedString from "@/arches_lingo/components/generic/NonLocalizedString.vue";
import {
fetchSchemeNamespace,
updateSchemeNamespace,
} from "@/arches_lingo/api.ts";
import {
VIEW,
EDIT,
OPEN_EDITOR,
ERROR,
UPDATED,
} from "@/arches_lingo/constants.ts";
import { useToast } from "primevue/usetoast";
import type {
DataComponentMode,
SchemeNamespaceUpdate,
SchemeInstance,
} from "@/arches_lingo/types";
import { VIEW, EDIT, OPEN_EDITOR, ERROR } from "@/arches_lingo/constants.ts";
import { useToast } from "primevue/usetoast";
const toast = useToast();
const { $gettext } = useGettext();
Expand All @@ -26,9 +32,9 @@ defineProps<{
mode?: DataComponentMode;
}>();
defineEmits([OPEN_EDITOR]);
const emit = defineEmits([OPEN_EDITOR, UPDATED]);
defineExpose({ save, getSectionValue });
defineExpose({ getSectionValue });
onMounted(async () => {
getSectionValue();
Expand All @@ -52,6 +58,7 @@ async function save() {
),
});
}
emit(UPDATED);
}
async function getSectionValue() {
Expand Down Expand Up @@ -91,7 +98,7 @@ function onNamespaceNameUpdate(val: string) {
<div v-if="!mode || mode === VIEW">
<SchemeReportSection
:title-text="$gettext('Scheme Namespace')"
@open-editor="$emit(OPEN_EDITOR)"
@open-editor="emit(OPEN_EDITOR)"
>
<NonLocalizedString
:value="schemeInstance?.namespace?.namespace_name"
Expand All @@ -107,6 +114,10 @@ function onNamespaceNameUpdate(val: string) {
:mode="EDIT"
@update="onNamespaceNameUpdate"
/>
<Button
:label="$gettext('Update')"
@click="save"
></Button>
</div>
</div>
</template>
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import { inject, onMounted, ref, type Ref } from "vue";
import { useRoute } from "vue-router";
import { useGettext } from "vue3-gettext";
import Button from "primevue/button";
import type {
DataComponentMode,
ResourceInstanceReference,
Expand All @@ -20,6 +21,7 @@ import {
VIEW,
EDIT,
OPEN_EDITOR,
UPDATED,
ERROR,
} from "@/arches_lingo/constants.ts";
import type { Language } from "@/arches_vue_utils/types.ts";
Expand All @@ -36,9 +38,9 @@ const { mode = VIEW } = defineProps<{
mode?: DataComponentMode;
}>();
const emits = defineEmits([OPEN_EDITOR]);
const emits = defineEmits([OPEN_EDITOR, UPDATED]);
defineExpose({ save, getSectionValue });
defineExpose({ getSectionValue });
onMounted(async () => {
getSectionValue();
Expand Down Expand Up @@ -154,14 +156,13 @@ function onCreationUpdate(val: string[]) {
</script>

<template>
<div v-if="!mode || mode === VIEW">
<div v-if="mode === VIEW">
<SchemeReportSection
:title-text="$gettext('Scheme Standards Followed')"
@open-editor="emits(OPEN_EDITOR)"
>
<ResourceInstanceRelationships
:value="schemeInstance?.creation?.creation_sources"
:mode="VIEW"
/>
<!-- Discussion of namespace_type indicated it should not be displayed or edited manually,
if this changes, the ControlledListItem widget can be used.-->
Expand All @@ -174,5 +175,9 @@ function onCreationUpdate(val: string[]) {
:mode="EDIT"
@update="onCreationUpdate"
/>
<Button
:label="$gettext('Update')"
@click="save"
></Button>
</div>
</template>
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ const { $gettext } = useGettext();

<template>
<SchemeReportSection :title-text="$gettext('Scheme URI')">
abc
todo
</SchemeReportSection>
</template>
1 change: 1 addition & 0 deletions arches_lingo/src/arches_lingo/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export const CONTRAST = "contrast";
export const EDIT = "edit";
export const VIEW = "view";
export const OPEN_EDITOR = "openEditor";
export const UPDATED = "updated";

export const DEFAULT_ERROR_TOAST_LIFE = 8000;
export const SEARCH_RESULTS_PER_PAGE = 25;
Expand Down
10 changes: 5 additions & 5 deletions arches_lingo/src/arches_lingo/pages/SchemePage.vue
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import type { SectionTypes } from "@/arches_lingo/types.ts";
const editorVisible = ref(false);
const sectionVisible = ref(true);
const editorTab = ref<string>();
const editorForm = ref<string>();
const editorTileId = ref<string>();
const childRefs = ref<Array<SectionTypes>>([]);
Expand All @@ -33,8 +33,8 @@ const onClose = () => {
sectionVisible.value = true;
};
const onOpenEditor = (tab: string, tileId: string) => {
editorTab.value = tab;
const onOpenEditor = (form: string, tileId: string) => {
editorForm.value = form;
editorVisible.value = true;
sectionVisible.value = true;
editorTileId.value = tileId;
Expand Down Expand Up @@ -86,9 +86,9 @@ const getRef = (el: object | null, index: number) => {
:size="25"
>
<SchemeEditor
v-if="editorTab"
v-if="editorForm"
:editor-max="sectionVisible"
:active-tab="editorTab"
:editor-form="editorForm"
:tile-id="editorTileId"
@maximize="onMaximize"
@side="onSide"
Expand Down
14 changes: 7 additions & 7 deletions arches_lingo/src/arches_lingo/types.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import type { Ref } from "vue";
import type { TreeNode } from "primevue/treenode";
import type { Label } from "@/arches_vue_utils/types.ts";
import SchemeLabel from "@/arches_lingo/components/scheme/report/SchemeLabel.vue";
import SchemeNamespace from "@/arches_lingo/components/scheme/report/SchemeNamespace.vue";
import SchemeLicense from "@/arches_lingo/components/scheme/report/SchemeLicense.vue";
import SchemeStandard from "@/arches_lingo/components/scheme/report/SchemeStandard.vue";
import SchemeAuthority from "@/arches_lingo/components/scheme/report/SchemeAuthority.vue";
import SchemeNote from "@/arches_lingo/components/scheme/report/SchemeNote.vue";
import type { EDIT, VIEW } from "@/constants.ts";
import type { EDIT, VIEW } from "./constants";
import SchemeNamespace from "@/arches_lingo/src/arches_lingo/components/scheme/report/SchemeNamespace.vue";
import SchemeLabel from "@/arches_lingo/src/arches_lingo/components/scheme/report/SchemeLabel.vue";
import SchemeLicense from "@/arches_lingo/src/arches_lingo/components/scheme/report/SchemeLicense.vue";
import SchemeStandard from "@/arches_lingo/src/arches_lingo/components/scheme/report/SchemeStandard.vue";
import SchemeAuthority from "@/arches_lingo/src/arches_lingo/components/scheme/report/SchemeAuthority.vue";
import SchemeNote from "@/arches_lingo/src/arches_lingo/components/scheme/report/SchemeNote.vue";

export interface User {
first_name: string;
Expand Down

0 comments on commit eb985a4

Please sign in to comment.