Skip to content

Commit

Permalink
feat: language configs
Browse files Browse the repository at this point in the history
  • Loading branch information
akdasa committed Nov 3, 2024
1 parent f2b361c commit f6b6792
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<template>
<InputField
:id="id"
:label="label"
:errors="errors"
>
<template #default="{ hasErrors }">
<MultiSelect
v-model="mvalue"
display="chip"
option-label="name"
placeholder="Language"
:options="languages"
:max-selected-labels="5"
:invalid="hasErrors"
/>
</template>
</InputField>
</template>


<script setup lang="ts">
import { ref, computed } from 'vue'
import MultiSelect from 'primevue/multiselect'
import { default as InputField, type Error } from './InputField.vue'
/* -------------------------------------------------------------------------- */
/* Interface */
/* -------------------------------------------------------------------------- */
defineProps<{
id: string,
label: string,
errors?: Error[]
}>()
/* -------------------------------------------------------------------------- */
/* State */
/* -------------------------------------------------------------------------- */
const languages = ref([
{ name: 'English', code: 'en' },
{ name: 'Russian', code: 'ru' },
{ name: 'Serbian', code: 'sr' },
]);
const value = defineModel<string[]>("value", { default: () => [] })
const mvalue = computed({
get: () => value.value.map((v) => languages.value.find((l) => l.code === v)),
set: (val: string[]) => value.value = val.map(x => x.code)
})
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,22 @@
<Divider />

<div class="grid gap-6">
<LanguageField
id="extractLanguages"
v-model:value="track.extract_languages"
label="Extract languages"
:errors="errors.extractLanguage"
/>

<LanguageField
id="translateInto"
v-model:value="track.translate_into"
label="Translate into"
:errors="errors.translateInto"
/>

<Divider />

<TitleField
v-model:title="track.title.normalized"
:errors="errors.title"
Expand Down Expand Up @@ -73,6 +89,7 @@ import AuthorField from "./Fields/AuthorField.vue"
import LocationField from "./Fields/LocationField.vue"
import ReferencesField from "./Fields/ReferencesField.vue"
import DateField from "./Fields/DateField.vue"
import LanguageField from "./Fields/LanguageField.vue"
import { type InboxTrack } from "@lectorium/dal/models"
/* -------------------------------------------------------------------------- */
Expand Down Expand Up @@ -113,7 +130,6 @@ function onSaveClicked() {
}
function onStartProcessingClicked() {
emit('save')
emit('startProcessing')
}
Expand Down
25 changes: 18 additions & 7 deletions src/library/inbox/containers/InboxTrackEditor.vue
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ const track = ref<InboxTrack>({
author: { original: '', normalized: '' },
location: { original: '', normalized: '' },
references: [ { original: '', normalized: [] } ],
extract_languages: [],
translate_into: [],
status: 'error'
})
const errors = ref<Record<string, { text: string; severity: 'warn' | 'error' }[]>>({})
Expand All @@ -86,17 +88,12 @@ watch(track, async (value: InboxTrack) => {
/* -------------------------------------------------------------------------- */
async function onSave() {
if (track.value.date.normalized?.every(x => x === undefined)) {
track.value.date.normalized = undefined
}
await inboxTracksService.updateOne(track.value._id, track.value)
await save()
visible.value = false
}
async function onStartProcessing() {
track.value.status = 'ready'
await inboxTracksService.updateOne(track.value._id, track.value)
await save("ready")
visible.value = false
}
Expand Down Expand Up @@ -134,4 +131,18 @@ async function getTrack(trackId: string) {
}
return track
}
async function save(
newStatus?: "new" | "error" | "ready" | "processing"
) {
if (newStatus) {
track.value.status = newStatus
}
if (track.value.date.normalized?.every(x => x === undefined)) {
track.value.date.normalized = undefined
}
await inboxTracksService.updateOne(track.value._id, track.value)
}
</script>
2 changes: 1 addition & 1 deletion submodules/lectorium-dal

0 comments on commit f6b6792

Please sign in to comment.