Files
aritmija/resources/js/projects-renderer.js
2026-05-13 17:11:09 +02:00

41 lines
1.5 KiB
JavaScript

import { createApp } from 'vue';
import ProjectPageRenderer from './projects-renderer/ProjectPageRenderer.vue';
import ProjectStructureEditor from './projects-renderer/ProjectStructureEditor.vue';
import { buildInitialProject } from './projects-renderer/schema/projectSchema';
const readPayload = (element) => {
const targetId = element.dataset.payloadTarget;
const payloadNode = targetId ? document.getElementById(targetId) : null;
if (!payloadNode) {
return {};
}
try {
return JSON.parse(payloadNode.textContent || '{}');
} catch (error) {
console.error('Unable to parse project renderer payload.', error);
return {};
}
};
document.querySelectorAll('[data-project-structure-editor]').forEach((element) => {
const payload = readPayload(element);
createApp(ProjectStructureEditor, {
initialProject: payload,
fieldId: element.dataset.fieldId || 'project-structure-field',
uploadUrl: element.dataset.uploadUrl || null,
languages: payload.languages || [],
defaultLanguage: payload.defaultLanguage || '',
categories: payload.categories || [],
activeValue: payload.active ?? 'Y',
}).mount(element);
});
document.querySelectorAll('[data-project-page-renderer]').forEach((element) => {
const payload = readPayload(element);
createApp(ProjectPageRenderer, {
project: buildInitialProject(payload),
activeLang: payload.defaultLanguage || '',
}).mount(element);
});