fix(fe smartblock): fixed showing smart block criteria on edit
This commit is contained in:
parent
5daec331f8
commit
c2b1ebee80
2 changed files with 60 additions and 15 deletions
|
@ -1,33 +1,57 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {smartblockCriteria} from "@models/smartblock/smartblockCriteria.ts";
|
import {smartblockCriteria} from "@models/smartblock/smartblockCriteria.ts";
|
||||||
import {ref, watch} from "vue";
|
import {onMounted, ref, watch} from "vue";
|
||||||
import {trackType} from "@/composables/content/track_type.ts";
|
import {trackType} from "@/composables/content/track_type.ts";
|
||||||
|
|
||||||
const emit = defineEmits(['updateProperty'])
|
const emit = defineEmits(['updateProperty'])
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
criteria: Array
|
||||||
|
})
|
||||||
|
|
||||||
const { criteria, modifiers } = smartblockCriteria()
|
const { criteria, modifiers } = smartblockCriteria()
|
||||||
const trackTypes = trackType(false)
|
const trackTypes = trackType(false)
|
||||||
console.log(trackTypes)
|
|
||||||
|
|
||||||
const activeCriteria = ref([])
|
const activeCriteria = ref([])
|
||||||
const firstCriteria = activeCriteria.value.push({
|
|
||||||
criteria: '',
|
|
||||||
modifier: '',
|
|
||||||
value: ''
|
|
||||||
})
|
|
||||||
|
|
||||||
watch(activeCriteria.value, (newVal, oldVal) => {
|
|
||||||
console.log(newVal)
|
|
||||||
emit('updateProperty', newVal, 'criteria')
|
|
||||||
})
|
|
||||||
|
|
||||||
const addCriteria = () => {
|
const addCriteria = () => {
|
||||||
activeCriteria.value.push({
|
activeCriteria.value.push({
|
||||||
criteria: '',
|
criteria: '',
|
||||||
modifier: '',
|
modifier: '',
|
||||||
value: ''
|
value: '',
|
||||||
|
extra: ''
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const checkModifier = (index) => {
|
||||||
|
if (activeCriteria.value[index].modifier !== 'is in the range') {
|
||||||
|
activeCriteria.value[index].extra = ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
if (props.criteria.length > 0) {
|
||||||
|
props.criteria.forEach(criteria => {
|
||||||
|
if (criteria.criteria !== 'sort' &&
|
||||||
|
criteria.criteria !== 'limit' &&
|
||||||
|
criteria.criteria !== 'repeat_tracks' &&
|
||||||
|
criteria.criteria !== 'overflow_tracks') {
|
||||||
|
activeCriteria.value.push(criteria)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
activeCriteria.value.push({
|
||||||
|
criteria: '',
|
||||||
|
modifier: '',
|
||||||
|
value: '',
|
||||||
|
extra: ''
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
watch(activeCriteria.value, (newVal, oldVal) => {
|
||||||
|
emit('updateProperty', newVal, 'criteria')
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -54,6 +78,7 @@ const addCriteria = () => {
|
||||||
label="Seleziona il modificatore"
|
label="Seleziona il modificatore"
|
||||||
:items="modifiers
|
:items="modifiers
|
||||||
.filter(mod => mod.type === criteria.find(cri => cri.value === activeCriteria[index].criteria)?.type || mod.type === 'all')"
|
.filter(mod => mod.type === criteria.find(cri => cri.value === activeCriteria[index].criteria)?.type || mod.type === 'all')"
|
||||||
|
@update:modelValue="checkModifier(index)"
|
||||||
item-title="title"
|
item-title="title"
|
||||||
item-value="value"
|
item-value="value"
|
||||||
></v-select>
|
></v-select>
|
||||||
|
@ -61,7 +86,7 @@ const addCriteria = () => {
|
||||||
<v-col>
|
<v-col>
|
||||||
<v-text-field
|
<v-text-field
|
||||||
v-if="activeCriteria[index].criteria != 'track_type_id'"
|
v-if="activeCriteria[index].criteria != 'track_type_id'"
|
||||||
label="Valore scelto"
|
:label="activeCriteria[index].modifier === 'is in the range' ? 'Valore iniziale' : 'Valore scelto'"
|
||||||
v-model="activeCriteria[index].value"
|
v-model="activeCriteria[index].value"
|
||||||
:type="criteria.find(cri => cri.value === activeCriteria[index].criteria)?.type === 'number' ? 'number' : 'text'"
|
:type="criteria.find(cri => cri.value === activeCriteria[index].criteria)?.type === 'number' ? 'number' : 'text'"
|
||||||
></v-text-field>
|
></v-text-field>
|
||||||
|
@ -72,6 +97,12 @@ const addCriteria = () => {
|
||||||
item-title="type_name"
|
item-title="type_name"
|
||||||
item-value="id"
|
item-value="id"
|
||||||
></v-select>
|
></v-select>
|
||||||
|
<v-text-field
|
||||||
|
v-if="activeCriteria[index].modifier !== '' && activeCriteria[index].modifier === 'is in the range'"
|
||||||
|
label="Valore finale"
|
||||||
|
type="number"
|
||||||
|
v-model="activeCriteria[index].extra"
|
||||||
|
></v-text-field>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col
|
<v-col
|
||||||
v-if="index > 0"
|
v-if="index > 0"
|
||||||
|
|
|
@ -65,5 +65,19 @@ export function blocks_page() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return { items, listData, headers, selected, loading, search, getItems, editItem, deleteItem }
|
const getTracklist = async (item) => {
|
||||||
|
let params = null;
|
||||||
|
if (item.id === 0) {
|
||||||
|
params = item
|
||||||
|
}
|
||||||
|
return await axios.get(`/smartblock/${item.id}/tracks`, {
|
||||||
|
params: params
|
||||||
|
}).then((response) => {
|
||||||
|
return response.data
|
||||||
|
}).catch((error) => {
|
||||||
|
console.log("Error: "+error);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return { items, listData, headers, selected, loading, search, getItems, editItem, deleteItem, getTracklist }
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue