diff --git a/public/site/blueprints/pages/virtual-sample.yml b/public/site/blueprints/pages/virtual-sample.yml index f47fafc..58c7e6a 100644 --- a/public/site/blueprints/pages/virtual-sample.yml +++ b/public/site/blueprints/pages/virtual-sample.yml @@ -16,14 +16,40 @@ options: tabs: contentTab: - sections: - tracksSection: - label: Piste - type: pages - layout: cards - template: track - fieldsSection: - type: fields - fields: - stepName: - type: hidden + columns: + - width: 1/2 + sections: + fieldsSection: + type: fields + fields: + staticHeadline: + label: Vue statique + type: headline + rawGlass: + label: Verre brut + type: files + multiple: false + accept: + extension: pdf + finishedGlass: + label: Verre parachevé + type: files + mutliple: false + accept: + extension: pdf + stepName: + type: hidden + + - width: 1/2 + sections: + rightColFieldsSection: + type: fields + fields: + dynamicHeadline: + label: Vue dynamique + type: headline + tracksSection: + label: Pistes + type: pages + layout: cards + template: track diff --git a/public/site/models/project.php b/public/site/models/project.php index a0efd8a..729d805 100644 --- a/public/site/models/project.php +++ b/public/site/models/project.php @@ -66,21 +66,35 @@ class ProjectPage extends Page { private function handleVirtualSampleStep($child, &$files, &$uri) { $uri = $child->parent()->uri() . '?dialog=' . $child->slug(); - - foreach ($child->children() as $key => $track) { + + if ($child->hasChildren()) { + $files['dynamic'] = []; - $trackData = [ - 'title' => (string) $track->title(), - 'slug' => (string) $track->slug(), - 'files' => [], - ]; - - foreach ($track->views()->toFiles() as $view) { - $trackData['files'][] = getFileData($view); + foreach ($child->children() as $key => $track) { + $trackData = [ + 'title' => (string) $track->title(), + 'slug' => (string) $track->slug(), + 'files' => [], + ]; + + foreach ($track->views()->toFiles() as $view) { + $trackData['files'][] = getFileData($view); + } + + $files['dynamic'][] = $trackData; } + } - $files[] = $trackData; + if ($child->rawGlass()->isNotEmpty() || $child->finishedGlass()->isNotEmpty()) { + $files['static'] = []; + } + if ($child->rawGlass()->isNotEmpty()) { + $files['static']['rawGlass'] = getFileData($child->rawGlass()->toFile()); + } + + if ($child->finishedGlass()->isNotEmpty()) { + $files['static']['finishedGlass'] = getFileData($child->finishedGlass()->toFile()); } } diff --git a/src/components/project/ProjectStep.vue b/src/components/project/ProjectStep.vue index 58628d1..0283cce 100644 --- a/src/components/project/ProjectStep.vue +++ b/src/components/project/ProjectStep.vue @@ -29,20 +29,21 @@ " > -
{ return item.value; }); +const mergedFiles = computed(() => { + if (step.id !== "virtualSample") return false; + + const staticFiles = step.files?.static ?? []; + const dynamicFiles = step.files?.dynamic ?? []; + + return [...staticFiles, ...dynamicFiles]; +}); + const status = setStatus(); function setStatus() { diff --git a/src/components/project/VirtualSample.vue b/src/components/project/VirtualSample.vue index 169898f..20932c4 100644 --- a/src/components/project/VirtualSample.vue +++ b/src/components/project/VirtualSample.vue @@ -143,7 +143,7 @@ const { page } = storeToRefs(usePageStore()); const { comments } = storeToRefs(useDialogStore()); const tracks = computed( - () => page.value.steps[page.value.steps.length - 1].files + () => page.value.steps[page.value.steps.length - 1].files.dynamic ); const activeTrack = ref(tracks.value[0]); diff --git a/src/views/Kanban.vue b/src/views/Kanban.vue index 0c0695f..b6c6814 100644 --- a/src/views/Kanban.vue +++ b/src/views/Kanban.vue @@ -5,8 +5,7 @@
- - +