Fix SelectMultipleEnumComponent as ti should be (generate array of integers)

This commit is contained in:
Jérémy Munsch 2023-09-06 15:42:40 +02:00
parent 16fe3773a9
commit cc24e547d2
No known key found for this signature in database
GPG key ID: 18361AF3BFEC0FEC
2 changed files with 19 additions and 17 deletions

View file

@ -82,13 +82,13 @@
</template>
<script lang="ts">
import { defineComponent } from "vue";
import type VueTagsInput from "@sipec/vue3-tags-input";
import { VueTagsInput as VueTagsInputCls } from "@sipec/vue3-tags-input";
import slugify from "slugify";
import { defineComponent } from "vue";
import parseLaravelErrorMessages from "./../modules/parseLaravelErrorMessages";
import route from "./../modules/route";
import trans from "./../modules/trans";
import parseLaravelErrorMessages from "./../modules/parseLaravelErrorMessages";
export default defineComponent({
name: "SelectMultipleEnumComponent",
@ -145,7 +145,7 @@ export default defineComponent({
this.intName = data.name;
this.intLabel = data.label;
this.intHelper = data.helper;
this.intAllItems = this.parseTags(data.itemsList);
this.intAllItems = (data.itemsList as CustomTag[]).map(item => {item.text = item.label; return item;});
this.intSelectedItem = this.parseTags(data.itemsSelected);
this.intPlaceholder = data.placeholder;
this.intItemLimit = data.itemLimit;
@ -156,18 +156,20 @@ export default defineComponent({
this.checkSpecificItem();
},
methods: {
parseTags(intSelectedItem: CustomTag[]): CustomTag[] {
return intSelectedItem.map((intItem: CustomTag) => {
if (!intItem.value)
intItem = this.intAllItems
.filter((intItemEnum) => {
return intItemEnum.value == intItem.id;
})
.shift() as CustomTag;
intItem.id = String(intItem.value);
intItem.text = String(intItem.label);
return intItem;
parseTags(intSelectedItem: number[]): CustomTag[] {
const out: CustomTag[] = [];
intSelectedItem.forEach((intItem: number) => {
const selectedItem = this.intAllItems.find(item=> item.value === intItem);
if (!selectedItem) {
throw new Error(`Could not find enum ${intItem}`);
}
out.push({
id: String(selectedItem.value),
value: String(selectedItem.value),
text: String(selectedItem.text)
} as LaravelModel as CustomTag);
});
return out;
},
/**
* Add item

View file

@ -1,7 +1,7 @@
export {};
export { };
import { AxiosStatic } from "axios";
import type VueTagsInput from "@sipec/vue3-tags-input";
import { AxiosStatic } from "axios";
// * Recursive List<string>
type StringList = Record<PropertyKey, string>;
@ -30,7 +30,7 @@ type NestedNumberList = NestedNumberListInterface | NumberList | number;
type ModelList = Array<Model>;
declare global {
type CustomTag = LaravelModel & VueTagsInput.ITag;
type CustomTag = LaravelModel & VueTagsInput.ITag & {name:string,label:string, value:number|string};
type LaravelModel = Model;
type LaravelModelList = ModelList;