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 @@