From bbe32b5528e79ced692fadb4a0f4fd524a769fb8 Mon Sep 17 00:00:00 2001 From: Maxime Nicolas <71704827+Maxime-UwU@users.noreply.github.com> Date: Thu, 8 Jun 2023 09:09:30 +0200 Subject: [PATCH 1/5] pdf working but need to modify sizes --- .../agility/UI/DefaultSelectionBox.vue | 42 ++++++++++++++++- .../agility/UI/MiroSelectionBox.vue | 46 ++++++++++++++++++- .../blueprint/pruneTheProjectTree.ts | 2 +- .../pixi-tools-v2/class/framedContainer.ts | 1 + .../pixi-tools-v2/class/genericContainer.ts | 1 + .../lib/pixi-tools-v2/class/lineContainer.ts | 1 + front-end/src/store/modules/project.store.ts | 2 +- 7 files changed, 91 insertions(+), 4 deletions(-) diff --git a/front-end/src/components/agility/UI/DefaultSelectionBox.vue b/front-end/src/components/agility/UI/DefaultSelectionBox.vue index 0b6260006..d29c59c15 100644 --- a/front-end/src/components/agility/UI/DefaultSelectionBox.vue +++ b/front-end/src/components/agility/UI/DefaultSelectionBox.vue @@ -34,7 +34,7 @@
{{ element.order }}
- +
@@ -51,6 +51,7 @@ text-style="text-black dark:text-white font-bold text-sm" background="bg-light-secondary hover:bg-light-tertiary dark:bg-dark-tertiary" class="w-32 min-w-[8rem]" + @click="exportToPdf()" />
@@ -71,6 +72,7 @@ import SvgSideBar from '@/components/common/svg/SideBar.vue'; import SvgShrink from '@/components/common/svg/Shrink.vue'; import { useProjectStore } from '@/store/modules/project.store'; import DefaultButton from '@/components/common/buttons/Default.vue'; +import pdfMake from 'pdfmake/build/pdfmake'; const projectStore = useProjectStore(); @@ -147,4 +149,42 @@ const decreaseZoom = () => { projectStore.decreaseZoom(); } +const exportToPdf = () => { + if (childImages.value.length === 0) return; + + const styles = { + first: { + marginBottom: 25 + }, + second: { + marginLeft: 160, + marginBottom: 25 + }, + }; + + const data = { + content: [], + styles: styles + }; + + for (let n = 0; n < childImages.value.length; n++) { + if (childImages.value[n].dimension.width > 520) { + data.content.push({ + style: 'first', + image: childImages.value[n].base64, + width: 520, + height: 300, + }); + } else { + data.content.push({ + style: 'second', + image: childImages.value[n].base64, + width: childImages.value[n].dimension.width, + height: childImages.value[n].dimension.height, + }); + } + } + + const pdfGenerator = pdfMake.createPdf(data).open(); +}; \ No newline at end of file diff --git a/front-end/src/components/agility/UI/MiroSelectionBox.vue b/front-end/src/components/agility/UI/MiroSelectionBox.vue index 94ff4bd44..dc2830ea5 100644 --- a/front-end/src/components/agility/UI/MiroSelectionBox.vue +++ b/front-end/src/components/agility/UI/MiroSelectionBox.vue @@ -118,7 +118,7 @@
{{ element.order }}
- +
@@ -135,6 +135,7 @@ text-style="text-black dark:text-white font-bold text-sm" background="bg-light-secondary hover:bg-light-tertiary dark:bg-dark-tertiary" class="w-32 min-w-[8rem]" + @click="exportToPdf()" />
@@ -187,6 +188,7 @@ import SvgTriangle from '@/components/common/svg/Triangle.vue'; import SvgSideBar from '@/components/common/svg/SideBar.vue'; import SvgShrink from '@/components/common/svg/Shrink.vue'; import { useAgilityStore } from '@/store/modules/agility.store'; +import pdfMake from 'pdfmake/build/pdfmake'; const projectStore = useProjectStore(); const agilityStore = useAgilityStore(); @@ -272,6 +274,48 @@ const decreaseZoom = () => { projectStore.decreaseZoom(); } +const exportToPdf = () => { + if(childImages.value.length === 0) return; + const data = { + // defaultStyle: {margin: [0, 0]}, + content:[] + }; + // const data = { content: [] }; + for(let n = 0; n < childImages.value.length; n++) { + if(childImages.value[n].dimension.width > 816){ + data.content.push({ + image: childImages.value[n].base64, + width: 520, + height: 300, + }) + } else { + data.content.push({ + image: childImages.value[n].base64, + width: childImages.value[n].dimension.width, + height: childImages.value[n].dimension.height, + }) + + } + } + + const pdfGenerator = pdfMake.createPdf(data) //.open() + pdfGenerator.open() + + // pdfGenerator.getBuffer((buffer: any) => { + + // }); +} + +const savePdf = (buffer: any, fileName: string) => { + const blob = new Blob([buffer], { type: "application/pdf" }); + const url = URL.createObjectURL(blob); + const link = document.createElement("a"); + link.href = url; + link.download = fileName; + link.click(); + URL.revokeObjectURL(url); +} + const setDefaultMode = () => { projectStore.default = true; projectStore.deferredGeometry = null; diff --git a/front-end/src/lib/pixi-tools-v2/blueprint/pruneTheProjectTree.ts b/front-end/src/lib/pixi-tools-v2/blueprint/pruneTheProjectTree.ts index e7a6b7e2a..38c046ab5 100644 --- a/front-end/src/lib/pixi-tools-v2/blueprint/pruneTheProjectTree.ts +++ b/front-end/src/lib/pixi-tools-v2/blueprint/pruneTheProjectTree.ts @@ -32,7 +32,7 @@ export const pruneTheProjectTree = ( properties: { cursor: 'pointer', eventMode: PixiEventMode.STATIC, - color: 0xff00ff, + color: 0xffffff, alpha: 0, borderWidth: 0, borderColor: 0x000000, diff --git a/front-end/src/lib/pixi-tools-v2/class/framedContainer.ts b/front-end/src/lib/pixi-tools-v2/class/framedContainer.ts index f2b46ed4e..4ab88dd25 100644 --- a/front-end/src/lib/pixi-tools-v2/class/framedContainer.ts +++ b/front-end/src/lib/pixi-tools-v2/class/framedContainer.ts @@ -246,6 +246,7 @@ export class FramedContainer extends PluginContainer { for (const element of this.mainContainer.children) { if (element instanceof Rectangle) { const clonedChild = element.clone(); + clonedChild.alpha = element.alpha; clonedChild.position.copyFrom(element.position); cloned.addChild(clonedChild); } else if (element instanceof GenericContainer) { diff --git a/front-end/src/lib/pixi-tools-v2/class/genericContainer.ts b/front-end/src/lib/pixi-tools-v2/class/genericContainer.ts index bcd49ad7d..afc20d98e 100644 --- a/front-end/src/lib/pixi-tools-v2/class/genericContainer.ts +++ b/front-end/src/lib/pixi-tools-v2/class/genericContainer.ts @@ -122,6 +122,7 @@ export class GenericContainer extends PluginContainer { for (const element of this.children) { const clonedChild = element.clone(); + clonedChild.alpha = element.alpha; clonedChild.position.copyFrom(element.position); cloned.addChild(clonedChild); } diff --git a/front-end/src/lib/pixi-tools-v2/class/lineContainer.ts b/front-end/src/lib/pixi-tools-v2/class/lineContainer.ts index 459ad540b..89bbc48a0 100644 --- a/front-end/src/lib/pixi-tools-v2/class/lineContainer.ts +++ b/front-end/src/lib/pixi-tools-v2/class/lineContainer.ts @@ -144,6 +144,7 @@ export class LineContainer extends PluginContainer { for (const element of this.children) { const clonedChild = element.clone(); + clonedChild.alpha = element.alpha; clonedChild.position.copyFrom(element.position); cloned.addChild(clonedChild); } diff --git a/front-end/src/store/modules/project.store.ts b/front-end/src/store/modules/project.store.ts index a2c74e16f..df9660352 100644 --- a/front-end/src/store/modules/project.store.ts +++ b/front-end/src/store/modules/project.store.ts @@ -54,7 +54,7 @@ export const useProjectStore = defineStore('project', { const { x, y } = cloneContainer.getBounds(); cloneContainer.position.set(-x, -y); - const renderer = new Renderer({ resolution: devicePixelRatio + 1, width: height, height: width, backgroundAlpha: 0 }); + const renderer = new Renderer({ resolution: devicePixelRatio + 1, width, height, backgroundAlpha: 0 }); renderer.render(cloneContainer); const canvas = renderer.view; From 50e88c4001ebe689f7740efefb97af42e7ca6d04 Mon Sep 17 00:00:00 2001 From: Maxime Nicolas <71704827+Maxime-UwU@users.noreply.github.com> Date: Thu, 8 Jun 2023 17:32:05 +0200 Subject: [PATCH 2/5] fix positions inside the pdf --- .../agility/UI/DefaultSelectionBox.vue | 33 ++++++++++++------- .../pixi-tools-v2/blueprint/elevatorPitch.ts | 1 + .../lib/pixi-tools-v2/blueprint/empathyMap.ts | 1 + .../pixi-tools-v2/blueprint/impactMapping.ts | 1 + .../lib/pixi-tools-v2/blueprint/personas.ts | 1 + .../blueprint/pruneTheProjectTree.ts | 1 + .../pixi-tools-v2/class/framedContainer.ts | 3 ++ .../src/lib/pixi-tools-v2/class/normalyzer.ts | 1 + .../lib/pixi-tools-v2/types/pixi-serialize.ts | 1 + .../src/store/interfaces/project.interface.ts | 2 +- front-end/src/store/modules/project.store.ts | 3 +- 11 files changed, 35 insertions(+), 13 deletions(-) diff --git a/front-end/src/components/agility/UI/DefaultSelectionBox.vue b/front-end/src/components/agility/UI/DefaultSelectionBox.vue index d29c59c15..12b69c765 100644 --- a/front-end/src/components/agility/UI/DefaultSelectionBox.vue +++ b/front-end/src/components/agility/UI/DefaultSelectionBox.vue @@ -72,7 +72,12 @@ import SvgSideBar from '@/components/common/svg/SideBar.vue'; import SvgShrink from '@/components/common/svg/Shrink.vue'; import { useProjectStore } from '@/store/modules/project.store'; import DefaultButton from '@/components/common/buttons/Default.vue'; -import pdfMake from 'pdfmake/build/pdfmake'; +import { elements } from 'chart.js'; +import { ClientRequest } from 'http'; +import { createPdf } from 'pdfmake/build/pdfmake'; +import * as _ from 'pdfmake/build/vfs_fonts.js'; + +const fonts = globalThis.pdfMake.vfs ?? _.pdfMake.vfs; const projectStore = useProjectStore(); @@ -153,12 +158,9 @@ const exportToPdf = () => { if (childImages.value.length === 0) return; const styles = { - first: { - marginBottom: 25 - }, - second: { - marginLeft: 160, - marginBottom: 25 + image: { + alignment: 'center', + marginBottom: 25, }, }; @@ -168,16 +170,23 @@ const exportToPdf = () => { }; for (let n = 0; n < childImages.value.length; n++) { - if (childImages.value[n].dimension.width > 520) { + if (childImages.value[n].isBlueprint == true) { data.content.push({ - style: 'first', + style: 'image', image: childImages.value[n].base64, width: 520, height: 300, }); + } else if (childImages.value[n].dimension.width > 520) { + data.content.push({ + style: 'image', + image: childImages.value[n].base64, + width: 520, + height: childImages.value[n].dimension.height, + }); } else { data.content.push({ - style: 'second', + style: 'image', image: childImages.value[n].base64, width: childImages.value[n].dimension.width, height: childImages.value[n].dimension.height, @@ -185,6 +194,8 @@ const exportToPdf = () => { } } - const pdfGenerator = pdfMake.createPdf(data).open(); + // @ts-ignore + const pdfGenerator = createPdf(data, null, null, fonts).open(); }; + \ No newline at end of file diff --git a/front-end/src/lib/pixi-tools-v2/blueprint/elevatorPitch.ts b/front-end/src/lib/pixi-tools-v2/blueprint/elevatorPitch.ts index a957c2b11..8ddbcb8da 100644 --- a/front-end/src/lib/pixi-tools-v2/blueprint/elevatorPitch.ts +++ b/front-end/src/lib/pixi-tools-v2/blueprint/elevatorPitch.ts @@ -43,6 +43,7 @@ export const elavatorPitch = ( isAttachedToFrame: false, frameNumber: frameNumber, disabled: false, + isBlueprint: true, }, childs: [], }; diff --git a/front-end/src/lib/pixi-tools-v2/blueprint/empathyMap.ts b/front-end/src/lib/pixi-tools-v2/blueprint/empathyMap.ts index ffea9fbcb..b4a635716 100644 --- a/front-end/src/lib/pixi-tools-v2/blueprint/empathyMap.ts +++ b/front-end/src/lib/pixi-tools-v2/blueprint/empathyMap.ts @@ -54,6 +54,7 @@ export const empathyMap = ( isAttachedToFrame: false, frameNumber: frameNumber, disabled: false, + isBlueprint: true, }, childs: [ { diff --git a/front-end/src/lib/pixi-tools-v2/blueprint/impactMapping.ts b/front-end/src/lib/pixi-tools-v2/blueprint/impactMapping.ts index 5b9dc859a..b4bdba623 100644 --- a/front-end/src/lib/pixi-tools-v2/blueprint/impactMapping.ts +++ b/front-end/src/lib/pixi-tools-v2/blueprint/impactMapping.ts @@ -56,6 +56,7 @@ export const impactMapping = ( isAttachedToFrame: false, frameNumber: frameNumber, disabled: false, + isBlueprint: true, }, childs: [ { diff --git a/front-end/src/lib/pixi-tools-v2/blueprint/personas.ts b/front-end/src/lib/pixi-tools-v2/blueprint/personas.ts index 351aeb07a..af5994fe4 100644 --- a/front-end/src/lib/pixi-tools-v2/blueprint/personas.ts +++ b/front-end/src/lib/pixi-tools-v2/blueprint/personas.ts @@ -56,6 +56,7 @@ export const personas = ( isAttachedToFrame: false, frameNumber: frameNumber, disabled: false, + isBlueprint: true, }, childs: [ { diff --git a/front-end/src/lib/pixi-tools-v2/blueprint/pruneTheProjectTree.ts b/front-end/src/lib/pixi-tools-v2/blueprint/pruneTheProjectTree.ts index 38c046ab5..2561562c7 100644 --- a/front-end/src/lib/pixi-tools-v2/blueprint/pruneTheProjectTree.ts +++ b/front-end/src/lib/pixi-tools-v2/blueprint/pruneTheProjectTree.ts @@ -51,6 +51,7 @@ export const pruneTheProjectTree = ( isAttachedToFrame: false, frameNumber: frameNumber, disabled: false, + isBlueprint: true, }, childs: [ /******************************* diff --git a/front-end/src/lib/pixi-tools-v2/class/framedContainer.ts b/front-end/src/lib/pixi-tools-v2/class/framedContainer.ts index 4ab88dd25..85c8d2ee3 100644 --- a/front-end/src/lib/pixi-tools-v2/class/framedContainer.ts +++ b/front-end/src/lib/pixi-tools-v2/class/framedContainer.ts @@ -45,6 +45,7 @@ export class FramedContainer extends PluginContainer { public tabNumberContext: number; public isAttachedToFrame: boolean; public frameNumber: number; + public isBlueprint: boolean; static registerContainer( viewport: ViewportUI, @@ -75,6 +76,7 @@ export class FramedContainer extends PluginContainer { this.tabNumberContext = properties.tabNumberContext; this.isAttachedToFrame = properties.isAttachedToFrame; this.frameNumber = properties.frameNumber; + this.isBlueprint = properties.isBlueprint; this.absMinX = anchors.absMinX; this.absMinY = anchors.absMinY; this.absMaxX = anchors.absMaxX; @@ -292,6 +294,7 @@ export class FramedContainer extends PluginContainer { isAttachedToFrame: this.isAttachedToFrame, frameNumber: this.frameNumber, disabled: this.disabled, + isBlueprint: this.isBlueprint, }, childs: genericContainerSerialized, }; diff --git a/front-end/src/lib/pixi-tools-v2/class/normalyzer.ts b/front-end/src/lib/pixi-tools-v2/class/normalyzer.ts index 3b3f474e2..8d3cb882b 100644 --- a/front-end/src/lib/pixi-tools-v2/class/normalyzer.ts +++ b/front-end/src/lib/pixi-tools-v2/class/normalyzer.ts @@ -107,6 +107,7 @@ export class Normalizer { isAttachedToFrame: false, tabNumberContext: tabContext ?? -1, disabled: false, + isBlueprint: false, }; } diff --git a/front-end/src/lib/pixi-tools-v2/types/pixi-serialize.ts b/front-end/src/lib/pixi-tools-v2/types/pixi-serialize.ts index 34e53fe93..7e7dfb4cc 100644 --- a/front-end/src/lib/pixi-tools-v2/types/pixi-serialize.ts +++ b/front-end/src/lib/pixi-tools-v2/types/pixi-serialize.ts @@ -87,6 +87,7 @@ export interface SerializedContainerProperties tabNumberContext: number; frameNumber?: number; disabled: boolean; + isBlueprint?: boolean; } export interface SerializedGraphicProperties extends SerializedProperties, ElementColorimetry { diff --git a/front-end/src/store/interfaces/project.interface.ts b/front-end/src/store/interfaces/project.interface.ts index 0db987947..c09daa08b 100644 --- a/front-end/src/store/interfaces/project.interface.ts +++ b/front-end/src/store/interfaces/project.interface.ts @@ -49,8 +49,8 @@ export interface ViewportDefaultPosition { export interface FramedPDF { id: string, order: number, - random?: number, base64: string, + isBlueprint: boolean, dimension: { width: number, height: number, diff --git a/front-end/src/store/modules/project.store.ts b/front-end/src/store/modules/project.store.ts index df9660352..8db495097 100644 --- a/front-end/src/store/modules/project.store.ts +++ b/front-end/src/store/modules/project.store.ts @@ -49,7 +49,7 @@ export const useProjectStore = defineStore('project', { const reactiveImages: Array = []; for(let n = 0; n < len; n++) { const container = frames[n]; - const { width, height } = container; + const { width, height, isBlueprint } = container; const cloneContainer = container.cloneToContainer(); const { x, y } = cloneContainer.getBounds(); cloneContainer.position.set(-x, -y); @@ -63,6 +63,7 @@ export const useProjectStore = defineStore('project', { reactiveImages.push({ id: container.uuid, order: n + 1, + isBlueprint, base64: imageData, dimension: { width: Math.floor(width), From 8cf7b835af236ab5ced769a4e385969d4bde6d4e Mon Sep 17 00:00:00 2001 From: Maxime Nicolas <71704827+Maxime-UwU@users.noreply.github.com> Date: Fri, 9 Jun 2023 10:23:34 +0200 Subject: [PATCH 3/5] add text on top of blueprints in the pdf --- .../agility/UI/DefaultSelectionBox.vue | 36 +++++++++++++++++-- .../pixi-tools-v2/blueprint/elevatorPitch.ts | 3 +- .../lib/pixi-tools-v2/blueprint/empathyMap.ts | 3 +- .../pixi-tools-v2/blueprint/impactMapping.ts | 3 +- .../lib/pixi-tools-v2/blueprint/personas.ts | 3 +- .../blueprint/pruneTheProjectTree.ts | 3 +- .../pixi-tools-v2/class/framedContainer.ts | 3 ++ .../src/lib/pixi-tools-v2/class/normalyzer.ts | 1 + .../src/lib/pixi-tools-v2/types/pixi-enums.ts | 18 ++++++++++ .../lib/pixi-tools-v2/types/pixi-serialize.ts | 1 + .../src/store/interfaces/project.interface.ts | 1 + front-end/src/store/modules/project.store.ts | 3 +- 12 files changed, 69 insertions(+), 9 deletions(-) diff --git a/front-end/src/components/agility/UI/DefaultSelectionBox.vue b/front-end/src/components/agility/UI/DefaultSelectionBox.vue index 12b69c765..fb68cf203 100644 --- a/front-end/src/components/agility/UI/DefaultSelectionBox.vue +++ b/front-end/src/components/agility/UI/DefaultSelectionBox.vue @@ -76,6 +76,7 @@ import { elements } from 'chart.js'; import { ClientRequest } from 'http'; import { createPdf } from 'pdfmake/build/pdfmake'; import * as _ from 'pdfmake/build/vfs_fonts.js'; +import { TypeBlueprintText } from '@/lib/pixi-tools-v2/types/pixi-enums'; const fonts = globalThis.pdfMake.vfs ?? _.pdfMake.vfs; @@ -162,6 +163,9 @@ const exportToPdf = () => { alignment: 'center', marginBottom: 25, }, + text: { + alignment: 'center', + }, }; const data = { @@ -171,8 +175,35 @@ const exportToPdf = () => { for (let n = 0; n < childImages.value.length; n++) { if (childImages.value[n].isBlueprint == true) { - data.content.push({ - style: 'image', + if(childImages.value[n].typeBlueprint == 1){ + data.content.push({ + style: 'text', + text: TypeBlueprintText["1"] + }) + }else if(childImages.value[n].typeBlueprint == 2){ + data.content.push({ + style: 'text', + text: TypeBlueprintText["2"] + }) + }else if(childImages.value[n].typeBlueprint == 3){ + data.content.push({ + style: 'text', + text: TypeBlueprintText["3"] + }) + }else if(childImages.value[n].typeBlueprint == 4){ + data.content.push({ + style: 'text', + text: TypeBlueprintText["4"] + }) + }else if(childImages.value[n].typeBlueprint == 5){ + data.content.push({ + style: 'text', + text: TypeBlueprintText["5"] + }) + }else { + } + data.content.push({ + style: 'image', image: childImages.value[n].base64, width: 520, height: 300, @@ -197,5 +228,4 @@ const exportToPdf = () => { // @ts-ignore const pdfGenerator = createPdf(data, null, null, fonts).open(); }; - \ No newline at end of file diff --git a/front-end/src/lib/pixi-tools-v2/blueprint/elevatorPitch.ts b/front-end/src/lib/pixi-tools-v2/blueprint/elevatorPitch.ts index 8ddbcb8da..128362da2 100644 --- a/front-end/src/lib/pixi-tools-v2/blueprint/elevatorPitch.ts +++ b/front-end/src/lib/pixi-tools-v2/blueprint/elevatorPitch.ts @@ -3,7 +3,7 @@ import { FramedContainer } from '../class/framedContainer'; import { lowestNumberFinder } from '../utils/numberFinder'; import { ViewportUI } from '../viewportUI'; import { SerializedContainer } from '../types/pixi-serialize'; -import { PixiEventMode } from '../types/pixi-enums'; +import { PixiEventMode, TypeBlueprint } from '../types/pixi-enums'; export const elavatorPitch = ( viewport: ViewportUI, @@ -44,6 +44,7 @@ export const elavatorPitch = ( frameNumber: frameNumber, disabled: false, isBlueprint: true, + typeBlueprint: TypeBlueprint.ELEVATOR_PITCH, }, childs: [], }; diff --git a/front-end/src/lib/pixi-tools-v2/blueprint/empathyMap.ts b/front-end/src/lib/pixi-tools-v2/blueprint/empathyMap.ts index b4a635716..4dc56ed9f 100644 --- a/front-end/src/lib/pixi-tools-v2/blueprint/empathyMap.ts +++ b/front-end/src/lib/pixi-tools-v2/blueprint/empathyMap.ts @@ -3,7 +3,7 @@ import { FramedContainer } from '../class/framedContainer'; import { lowestNumberFinder } from '../utils/numberFinder'; import { ViewportUI } from '../viewportUI'; import { SerializedContainer } from '../types/pixi-serialize'; -import { PixiEventMode } from '../types/pixi-enums'; +import { PixiEventMode, TypeBlueprint } from '../types/pixi-enums'; export const empathyMap = ( viewport: ViewportUI, @@ -55,6 +55,7 @@ export const empathyMap = ( frameNumber: frameNumber, disabled: false, isBlueprint: true, + typeBlueprint: TypeBlueprint.EMPATHY_MAP, }, childs: [ { diff --git a/front-end/src/lib/pixi-tools-v2/blueprint/impactMapping.ts b/front-end/src/lib/pixi-tools-v2/blueprint/impactMapping.ts index b4bdba623..6c0965f6b 100644 --- a/front-end/src/lib/pixi-tools-v2/blueprint/impactMapping.ts +++ b/front-end/src/lib/pixi-tools-v2/blueprint/impactMapping.ts @@ -3,7 +3,7 @@ import { FramedContainer } from '../class/framedContainer'; import { lowestNumberFinder } from '../utils/numberFinder'; import { ViewportUI } from '../viewportUI'; import { SerializedContainer } from '../types/pixi-serialize'; -import { PixiEventMode } from '../types/pixi-enums'; +import { PixiEventMode, TypeBlueprint } from '../types/pixi-enums'; export const impactMapping = ( viewport: ViewportUI, @@ -57,6 +57,7 @@ export const impactMapping = ( frameNumber: frameNumber, disabled: false, isBlueprint: true, + typeBlueprint: TypeBlueprint.IMPACT_MAPPING, }, childs: [ { diff --git a/front-end/src/lib/pixi-tools-v2/blueprint/personas.ts b/front-end/src/lib/pixi-tools-v2/blueprint/personas.ts index af5994fe4..8a25ddf7e 100644 --- a/front-end/src/lib/pixi-tools-v2/blueprint/personas.ts +++ b/front-end/src/lib/pixi-tools-v2/blueprint/personas.ts @@ -3,7 +3,7 @@ import { FramedContainer } from '../class/framedContainer'; import { lowestNumberFinder } from '../utils/numberFinder'; import { ViewportUI } from '../viewportUI'; import { SerializedContainer } from '../types/pixi-serialize'; -import { PixiEventMode } from '../types/pixi-enums'; +import { PixiEventMode, TypeBlueprint } from '../types/pixi-enums'; export const personas = ( viewport: ViewportUI, @@ -57,6 +57,7 @@ export const personas = ( frameNumber: frameNumber, disabled: false, isBlueprint: true, + typeBlueprint: TypeBlueprint.PERSONA, }, childs: [ { diff --git a/front-end/src/lib/pixi-tools-v2/blueprint/pruneTheProjectTree.ts b/front-end/src/lib/pixi-tools-v2/blueprint/pruneTheProjectTree.ts index 2561562c7..662e29064 100644 --- a/front-end/src/lib/pixi-tools-v2/blueprint/pruneTheProjectTree.ts +++ b/front-end/src/lib/pixi-tools-v2/blueprint/pruneTheProjectTree.ts @@ -3,7 +3,7 @@ import { FramedContainer } from '../class/framedContainer'; import { lowestNumberFinder } from '../utils/numberFinder'; import { ViewportUI } from '../viewportUI'; import { SerializedContainer } from '../types/pixi-serialize'; -import { PixiEventMode } from '../types/pixi-enums'; +import { PixiEventMode, TypeBlueprint } from '../types/pixi-enums'; export const pruneTheProjectTree = ( viewport: ViewportUI, @@ -52,6 +52,7 @@ export const pruneTheProjectTree = ( frameNumber: frameNumber, disabled: false, isBlueprint: true, + typeBlueprint: TypeBlueprint.PRUNE_THE_PROJECT_TREE, }, childs: [ /******************************* diff --git a/front-end/src/lib/pixi-tools-v2/class/framedContainer.ts b/front-end/src/lib/pixi-tools-v2/class/framedContainer.ts index 85c8d2ee3..ee9c85e34 100644 --- a/front-end/src/lib/pixi-tools-v2/class/framedContainer.ts +++ b/front-end/src/lib/pixi-tools-v2/class/framedContainer.ts @@ -46,6 +46,7 @@ export class FramedContainer extends PluginContainer { public isAttachedToFrame: boolean; public frameNumber: number; public isBlueprint: boolean; + public typeBlueprint: number; static registerContainer( viewport: ViewportUI, @@ -77,6 +78,7 @@ export class FramedContainer extends PluginContainer { this.isAttachedToFrame = properties.isAttachedToFrame; this.frameNumber = properties.frameNumber; this.isBlueprint = properties.isBlueprint; + this.typeBlueprint = properties.typeBlueprint ?? 0; this.absMinX = anchors.absMinX; this.absMinY = anchors.absMinY; this.absMaxX = anchors.absMaxX; @@ -295,6 +297,7 @@ export class FramedContainer extends PluginContainer { frameNumber: this.frameNumber, disabled: this.disabled, isBlueprint: this.isBlueprint, + typeBlueprint: this.typeBlueprint, }, childs: genericContainerSerialized, }; diff --git a/front-end/src/lib/pixi-tools-v2/class/normalyzer.ts b/front-end/src/lib/pixi-tools-v2/class/normalyzer.ts index 8d3cb882b..b439868ab 100644 --- a/front-end/src/lib/pixi-tools-v2/class/normalyzer.ts +++ b/front-end/src/lib/pixi-tools-v2/class/normalyzer.ts @@ -108,6 +108,7 @@ export class Normalizer { tabNumberContext: tabContext ?? -1, disabled: false, isBlueprint: false, + typeBlueprint: 0, }; } diff --git a/front-end/src/lib/pixi-tools-v2/types/pixi-enums.ts b/front-end/src/lib/pixi-tools-v2/types/pixi-enums.ts index 1a0cc9b58..29983c4e1 100644 --- a/front-end/src/lib/pixi-tools-v2/types/pixi-enums.ts +++ b/front-end/src/lib/pixi-tools-v2/types/pixi-enums.ts @@ -85,3 +85,21 @@ export enum PixiEventMode { STATIC = 'static', DYNAMIC = 'dynamic', } + +export enum TypeBlueprint { + EMPATHY_MAP = 1, + PERSONA = 2, + IMPACT_MAPPING = 3, + PRUNE_THE_PROJECT_TREE = 4, + ELEVATOR_PITCH = 5, +} + +export const TypeBlueprintText = { + "0": "Null", + "1": "Empathy Map", + "2": "Persona", + "3": "Impact mapping", + "4": "Prune the project tree", + "5": "Elevator pitch", +} as const; + diff --git a/front-end/src/lib/pixi-tools-v2/types/pixi-serialize.ts b/front-end/src/lib/pixi-tools-v2/types/pixi-serialize.ts index 7e7dfb4cc..99a376819 100644 --- a/front-end/src/lib/pixi-tools-v2/types/pixi-serialize.ts +++ b/front-end/src/lib/pixi-tools-v2/types/pixi-serialize.ts @@ -88,6 +88,7 @@ export interface SerializedContainerProperties frameNumber?: number; disabled: boolean; isBlueprint?: boolean; + typeBlueprint?: number; } export interface SerializedGraphicProperties extends SerializedProperties, ElementColorimetry { diff --git a/front-end/src/store/interfaces/project.interface.ts b/front-end/src/store/interfaces/project.interface.ts index c09daa08b..c97300740 100644 --- a/front-end/src/store/interfaces/project.interface.ts +++ b/front-end/src/store/interfaces/project.interface.ts @@ -51,6 +51,7 @@ export interface FramedPDF { order: number, base64: string, isBlueprint: boolean, + typeBlueprint: number, dimension: { width: number, height: number, diff --git a/front-end/src/store/modules/project.store.ts b/front-end/src/store/modules/project.store.ts index 8db495097..018f2ff81 100644 --- a/front-end/src/store/modules/project.store.ts +++ b/front-end/src/store/modules/project.store.ts @@ -49,7 +49,7 @@ export const useProjectStore = defineStore('project', { const reactiveImages: Array = []; for(let n = 0; n < len; n++) { const container = frames[n]; - const { width, height, isBlueprint } = container; + const { width, height, isBlueprint, typeBlueprint } = container; const cloneContainer = container.cloneToContainer(); const { x, y } = cloneContainer.getBounds(); cloneContainer.position.set(-x, -y); @@ -64,6 +64,7 @@ export const useProjectStore = defineStore('project', { id: container.uuid, order: n + 1, isBlueprint, + typeBlueprint, base64: imageData, dimension: { width: Math.floor(width), From 2c8b9bf9ad2f6a74ea561fe5231bd81542360bcc Mon Sep 17 00:00:00 2001 From: Maxime Nicolas <71704827+Maxime-UwU@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:44:08 +0200 Subject: [PATCH 4/5] move the pdf creation to generatePdf in utils folder and import it in MiroSelectionBox --- .../agility/UI/DefaultSelectionBox.vue | 81 +------------------ .../agility/UI/MiroSelectionBox.vue | 51 ++---------- .../lib/pixi-tools-v2/utils/generatePdf.ts | 79 ++++++++++++++++++ 3 files changed, 90 insertions(+), 121 deletions(-) create mode 100644 front-end/src/lib/pixi-tools-v2/utils/generatePdf.ts diff --git a/front-end/src/components/agility/UI/DefaultSelectionBox.vue b/front-end/src/components/agility/UI/DefaultSelectionBox.vue index fb68cf203..3dbf8c924 100644 --- a/front-end/src/components/agility/UI/DefaultSelectionBox.vue +++ b/front-end/src/components/agility/UI/DefaultSelectionBox.vue @@ -51,7 +51,7 @@ text-style="text-black dark:text-white font-bold text-sm" background="bg-light-secondary hover:bg-light-tertiary dark:bg-dark-tertiary" class="w-32 min-w-[8rem]" - @click="exportToPdf()" + @click="generatePdf()" /> @@ -61,7 +61,6 @@ \ No newline at end of file diff --git a/front-end/src/components/agility/UI/MiroSelectionBox.vue b/front-end/src/components/agility/UI/MiroSelectionBox.vue index dc2830ea5..88b237b51 100644 --- a/front-end/src/components/agility/UI/MiroSelectionBox.vue +++ b/front-end/src/components/agility/UI/MiroSelectionBox.vue @@ -112,7 +112,6 @@ :style="drawerOpen ? 'width: 550px;' : 'width: 0;' " >
- {{ childImages.length }}