This commit is contained in:
Kuchenpirat 2025-07-29 20:13:06 +00:00
commit 098a35f8de

View file

@ -414,11 +414,6 @@ function setFieldValues(field: FieldWithId, index: number, values: FieldValue[])
fields.value[index].values = values; fields.value[index].values = values;
} }
function setOrganizerValues(field: FieldWithId, index: number, values: OrganizerBase[]) {
setFieldValues(field, index, values.map(value => value.id.toString()));
fields.value[index].organizers = values;
}
function removeField(index: number) { function removeField(index: number) {
fields.value.splice(index, 1); fields.value.splice(index, 1);
state.datePickers.splice(index, 1); state.datePickers.splice(index, 1);
@ -442,13 +437,11 @@ const fieldsUpdater = useDebounceFn((/* newFields: typeof fields.value */) => {
watch(fields, fieldsUpdater, { deep: true }); watch(fields, fieldsUpdater, { deep: true });
async function hydrateOrganizers(field: FieldWithId, index: number) { async function hydrateOrganizers(field: FieldWithId, _index: number) {
if (!field.values?.length || !isOrganizerType(field.type)) { if (!field.values?.length || !isOrganizerType(field.type)) {
return; return;
} }
const newField = { ...field, organizers: [] as OrganizerBase[] };
const { store, actions } = storeMap[field.type]; const { store, actions } = storeMap[field.type];
if (!store.value.length) { if (!store.value.length) {
await actions.refresh(); await actions.refresh();
@ -462,8 +455,9 @@ async function hydrateOrganizers(field: FieldWithId, index: number) {
} }
return organizer; return organizer;
}); });
newField.organizers = organizers.filter(organizer => organizer !== undefined) as OrganizerBase[];
setOrganizerValues(newField, index, newField.organizers); field.organizers = organizers.filter(organizer => organizer !== undefined) as OrganizerBase[];
return field;
} }
function initFieldsError(error = "") { function initFieldsError(error = "") {
@ -477,14 +471,15 @@ function initFieldsError(error = "") {
} }
} }
function initializeFields() { async function initializeFields() {
if (!props.initialQueryFilter?.parts?.length) { if (!props.initialQueryFilter?.parts?.length) {
return initFieldsError(); return initFieldsError();
} }
const initFields: FieldWithId[] = []; const initFields: FieldWithId[] = [];
let error = false; let error = false;
props.initialQueryFilter.parts.forEach((part: QueryFilterJSONPart, index: number) => {
for (const [index, part] of props.initialQueryFilter.parts.entries()) {
const fieldDef = props.fieldDefs.find(fieldDef => fieldDef.name === part.attributeName); const fieldDef = props.fieldDefs.find(fieldDef => fieldDef.name === part.attributeName);
if (!fieldDef) { if (!fieldDef) {
error = true; error = true;
@ -517,7 +512,7 @@ function initializeFields() {
} }
if (isOrganizerType(field.type)) { if (isOrganizerType(field.type)) {
hydrateOrganizers(field, index); await hydrateOrganizers(field, index);
} }
} }
else if (field.type === "boolean") { else if (field.type === "boolean") {
@ -548,7 +543,7 @@ function initializeFields() {
} }
initFields.push(field); initFields.push(field);
}); }
if (initFields.length && !error) { if (initFields.length && !error) {
fields.value = initFields; fields.value = initFields;
@ -558,12 +553,15 @@ function initializeFields() {
} }
} }
try { (async () => {
initializeFields(); try {
} console.warn("Initializing fields with initial query filter");
catch (error) { await initializeFields();
initFieldsError(`Error initializing fields: ${(error || "").toString()}`); }
} catch (error) {
initFieldsError(`Error initializing fields: ${(error || "").toString()}`);
}
})();
function buildQueryFilterJSON(): QueryFilterJSON { function buildQueryFilterJSON(): QueryFilterJSON {
const parts = fields.value.map((field) => { const parts = fields.value.map((field) => {