From a68e0e1215e8ad15110efdb47ad38b2078488299 Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 23 Aug 2021 11:29:05 -0600 Subject: [PATCH 01/11] Create modal for moving spaces --- src/components/Modals/MoveSpaceModal.vue | 33 ++++++++++++++++++++++++ src/components/Toolbar.vue | 13 ++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/components/Modals/MoveSpaceModal.vue diff --git a/src/components/Modals/MoveSpaceModal.vue b/src/components/Modals/MoveSpaceModal.vue new file mode 100644 index 00000000..51aab242 --- /dev/null +++ b/src/components/Modals/MoveSpaceModal.vue @@ -0,0 +1,33 @@ + + + + + + + \ No newline at end of file diff --git a/src/components/Toolbar.vue b/src/components/Toolbar.vue index e5fca127..47c45196 100644 --- a/src/components/Toolbar.vue +++ b/src/components/Toolbar.vue @@ -26,6 +26,9 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
+ +
@@ -172,6 +175,10 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND v-if="showSaveModal" @close="() => {showSaveModal = false;}" /> + import { mapState, mapGetters } from 'vuex'; import SaveAsModal from './Modals/SaveAsModal.vue'; +import MoveSpaceModal from './Modals/MoveSpaceModal.vue'; import Settings from './Modals/Settings.vue'; import PrettySelect from './PrettySelect.vue'; import applicationHelpers from './../store/modules/application/helpers'; @@ -203,6 +211,7 @@ export default { window_definitions: 'Window Definitions', }, showSaveModal: false, + showMoveSelectedSpaceModal: false, visibleComponentType: null, showGroundPropsModal: false, }; @@ -225,6 +234,9 @@ export default { localStorage.setItem("floorplan3DExport", JSON.stringify(application.$store.getters['exportData'])); window.open('3DViewer'); }, + moveSelectedSpace() { + this.showMoveSelectedSpaceModal = true; + }, importDataAsFile(event, type) { const file = event.target.files[0]; const reader = new FileReader(); @@ -409,6 +421,7 @@ export default { components: { PrettySelect, SaveAsModal, + MoveSpaceModal, Settings, RenderByDropdown, ComponentInstanceEditBar, From a16d54d73215ac7d07e00d92f46af3eaab1a68a1 Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 23 Aug 2021 13:28:59 -0600 Subject: [PATCH 02/11] Able to show current space x & y --- src/components/Modals/MoveSpaceModal.vue | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/components/Modals/MoveSpaceModal.vue b/src/components/Modals/MoveSpaceModal.vue index 51aab242..be6b3b67 100644 --- a/src/components/Modals/MoveSpaceModal.vue +++ b/src/components/Modals/MoveSpaceModal.vue @@ -11,15 +11,50 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND :title="`Move Selected Space`" @close="$emit('close')" > +
+

{{this.currentSpace.name}}

+ + + + + +
@@ -84,6 +110,9 @@ export default { } } } + .buttons { + display: flex; + } } // overflow: auto; // height: calc(100% - 5rem); diff --git a/src/components/Toolbar.vue b/src/components/Toolbar.vue index 47c45196..e5fca127 100644 --- a/src/components/Toolbar.vue +++ b/src/components/Toolbar.vue @@ -26,9 +26,6 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
- -
@@ -175,10 +172,6 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND v-if="showSaveModal" @close="() => {showSaveModal = false;}" /> - import { mapState, mapGetters } from 'vuex'; import SaveAsModal from './Modals/SaveAsModal.vue'; -import MoveSpaceModal from './Modals/MoveSpaceModal.vue'; import Settings from './Modals/Settings.vue'; import PrettySelect from './PrettySelect.vue'; import applicationHelpers from './../store/modules/application/helpers'; @@ -211,7 +203,6 @@ export default { window_definitions: 'Window Definitions', }, showSaveModal: false, - showMoveSelectedSpaceModal: false, visibleComponentType: null, showGroundPropsModal: false, }; @@ -234,9 +225,6 @@ export default { localStorage.setItem("floorplan3DExport", JSON.stringify(application.$store.getters['exportData'])); window.open('3DViewer'); }, - moveSelectedSpace() { - this.showMoveSelectedSpaceModal = true; - }, importDataAsFile(event, type) { const file = event.target.files[0]; const reader = new FileReader(); @@ -421,7 +409,6 @@ export default { components: { PrettySelect, SaveAsModal, - MoveSpaceModal, Settings, RenderByDropdown, ComponentInstanceEditBar, From a4314a0c03523adcebd9962a220506633b1860a2 Mon Sep 17 00:00:00 2001 From: Kyle Date: Wed, 25 Aug 2021 12:26:18 -0600 Subject: [PATCH 10/11] Add test for moving a space --- src/components/LibrarySelect.vue | 5 +---- src/components/Modals/MoveSpaceModal.vue | 6 +++--- test/e2e/specs/geometry.js | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/components/LibrarySelect.vue b/src/components/LibrarySelect.vue index 5c66a2ca..7d6fdf94 100644 --- a/src/components/LibrarySelect.vue +++ b/src/components/LibrarySelect.vue @@ -17,7 +17,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND {{item.name}}
- diff --git a/test/e2e/specs/geometry.js b/test/e2e/specs/geometry.js index 0f0f9b17..bb7a0547 100644 --- a/test/e2e/specs/geometry.js +++ b/test/e2e/specs/geometry.js @@ -92,4 +92,19 @@ module.exports = { .assert.containsText('.polygons', 'Space 2 - 2'); finish(browser); }, + 'able to move a selected space (issue #376)': (browser) => { + start(browser) + .perform(draw50By50Square) + .click('.move-selected-space') + .clearValue('#move-space-x') + .setValue('#move-space-x', -100) + .clearValue('#move-space-y') + .setValue('#move-space-y', -160) + .click('#save-move-space') + .execute('return window.application.$store.state.geometry[0].vertices', [], ({ value }) => { + browser.assert.equal(value[0].x, -100); + browser.assert.equal(value[0].y, -160); + }); + finish(browser); + }, }; From 93204c64d22e2186c4be4438453f94629ff25269 Mon Sep 17 00:00:00 2001 From: Kyle Date: Wed, 25 Aug 2021 12:34:27 -0600 Subject: [PATCH 11/11] Clean up --- .../geometry/actions/createFaceFromPoints.js | 3 +-- src/store/modules/geometry/mutations.js | 18 ------------------ 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/src/store/modules/geometry/actions/createFaceFromPoints.js b/src/store/modules/geometry/actions/createFaceFromPoints.js index c718849e..1b7de513 100644 --- a/src/store/modules/geometry/actions/createFaceFromPoints.js +++ b/src/store/modules/geometry/actions/createFaceFromPoints.js @@ -12,7 +12,6 @@ export default function createFaceFromPoints(context, payload) { const { model_id, points, - onAlreadyExists = 'union', } = payload; if (uniq(points).length < 3) { return; } @@ -24,7 +23,7 @@ export default function createFaceFromPoints(context, payload) { const existingFace = target.face_id ? geometryHelpers.faceForId(target.face_id, currentStoryGeometry) : null; let facePoints; - if (existingFace && onAlreadyExists === 'union') { + if (existingFace) { const existingFaceVertices = geometryHelpers.verticesForFaceId(existingFace.id, currentStoryGeometry); facePoints = geometryHelpers.setOperation('union', existingFaceVertices, points); if (facePoints.error) { diff --git a/src/store/modules/geometry/mutations.js b/src/store/modules/geometry/mutations.js index 4fe847a5..57954a32 100644 --- a/src/store/modules/geometry/mutations.js +++ b/src/store/modules/geometry/mutations.js @@ -163,21 +163,3 @@ export function updateClonedGeometry(state, payload) { newGeometry.faces = payload.newGeom.faces; newGeometry.vertices = payload.newGeom.vertices; } - -// export function updateFacePoints(state, payload) { -// console.log('mutation payload: ', payload); -// // determine diff of movement -// const xOffset = parseInt(payload.updateXTo, 10) - payload.face.edges[0].v1.x; -// console.log('detected an xoffset of :', xOffset); -// const yOffset = parseInt(payload.updateYTo, 10) - payload.face.edges[0].v1.y; -// console.log('detected an yoffset of :', yOffset); - -// for (const edge of Object.values(payload.face.edges)) { -// console.log('adjusting vertex v1', edge.v1.id); -// edge.v1.x += xOffset; -// edge.v1.y += yOffset; -// console.log('adjusting vertex v2', edge.v2.id); -// edge.v2.x += xOffset; -// edge.v2.y += yOffset; -// } -// }