Skip to content
Snippets Groups Projects
Commit 55a97cc5 authored by Adam Procter's avatar Adam Procter
Browse files

Merge branch 'fixnogg' into main

parents cbfd273d 0b393d48
No related branches found
No related tags found
No related merge requests found
...@@ -8,30 +8,29 @@ ...@@ -8,30 +8,29 @@
"lint": "vue-cli-service lint" "lint": "vue-cli-service lint"
}, },
"dependencies": { "dependencies": {
"core-js": "^3.17.2", "core-js": "^3.29.0",
"focus-trap-vue": "3",
"freeze-dry": "^0.2.5", "freeze-dry": "^0.2.5",
"marked": "^3.0.2", "marked": "^3.0.7",
"pouchdb": "^7.2.2", "pouchdb": "^7.2.2",
"vue": "^3.2.8", "vue": "^3.2.47",
"vue-router": "^4.0.0", "vue-router": "^4.0.0",
"vue3-swatches": "^1.0.3", "vue3-swatches": "^1.0.3",
"vuemoji-picker": "^0.0.7", "vuemoji-picker": "^0.0.7",
"vuex": "^4.0.0" "vuex": "^4.0.0"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "^4.5.12", "@vue/cli-plugin-babel": "~5.0.8",
"@vue/cli-plugin-eslint": "^4.5.12", "@vue/cli-plugin-eslint": "~5.0.8",
"@vue/cli-plugin-router": "^4.5.12", "@vue/cli-plugin-router": "~5.0.8",
"@vue/cli-plugin-vuex": "^4.5.12", "@vue/cli-plugin-vuex": "~5.0.8",
"@vue/cli-service": "^4.5.12", "@vue/cli-service": "~5.0.8",
"@vue/compiler-sfc": "^3.2.8", "@vue/compiler-sfc": "^3.2.20",
"@vue/eslint-config-prettier": "^6.0.0", "@vue/eslint-config-prettier": "^6.0.0",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"eslint": "^7.32.0", "eslint": "^7.32.0",
"eslint-plugin-prettier": "^4.0.0", "eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-vue": "^7.17.0", "eslint-plugin-vue": "^7.19.1",
"prettier": "^2.3.2" "prettier": "^2.4.1"
}, },
"eslintConfig": { "eslintConfig": {
"root": true, "root": true,
...@@ -53,4 +52,4 @@ ...@@ -53,4 +52,4 @@
"last 2 versions", "last 2 versions",
"not dead" "not dead"
] ]
} }
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<router-link to="/">Start</router-link> | <router-link to="/">Start</router-link> |
<router-link to="/credits">Credits</router-link> | <router-link to="/credits">Credits</router-link> |
<router-link to="/collect">Collect</router-link> | <router-link to="/collect">Collect</router-link> |
<router-link to="/cards">Cards</router-link> | <router-link to="/allnodes">All Nodes</router-link> |
<router-link to="/spatial">Spatial</router-link> <router-link to="/spatial">Spatial</router-link>
</div> </div>
<router-view /> <router-view />
......
<template> <template>
<div></div> <svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 1000 1000"
width="450px"
ref="myref"
>
<g class="draggable-group" v-for="(nodes, index) in myArray" :key="index">
<rect width="150" height="200" style="fill: rgb(255, 0, 100)" />
<foreignObject id="x" x="10" width="131" height="100">
<textarea rows="3" cols="30" v-model="nodes.node_text"></textarea>
</foreignObject>
</g>
</svg>
</template> </template>
<script> <script>
// @ is an alias to /src // @ is an alias to /src
import { mapState } from 'vuex' import { mapState } from 'vuex'
// import drag from '@/mixins/drag'
export default { export default {
name: 'SpaceBase', name: 'SpaceBase',
components: {}, components: {},
data() { data() {
return {} return {
myArray: [],
}
}, },
computed: { computed: {
...mapState({ ...mapState({
myNodes: (state) => state.myNodes,
otherNodes: (state) => state.otherNodes, otherNodes: (state) => state.otherNodes,
allEmoji: (state) => state.allEmoji, allEmoji: (state) => state.allEmoji,
}), }),
}, },
props: {
added: Boolean,
},
watch: {
added: function () {
setTimeout(this.loadData, 500)
},
},
methods: {
loadData() {
var nodesFiltered = this.myNodes.myNodes.filter(
(nodes) => nodes.node_deleted == false
)
// this should probably be on the tool bar NOT HERE really
this.$store.dispatch('getMynodes')
this.$store.dispatch('getEmoji')
this.$store.dispatch('getPositions')
this.myArray = nodesFiltered.reverse()
},
},
// mixins: [
// drag(this.$refs.svg, function () {
// // drag
// }),
// ],
mounted() { mounted() {
this.$store.dispatch('getPositions') makeDraggable(this.$refs.myref)
setTimeout(this.loadData, 500)
if (localStorage.nogg_name && localStorage.nogg_microcosm) {
var devicename = localStorage.nogg_name
var microcosm = localStorage.nogg_microcosm
this.$store.dispatch('setMicrocosm', { devicename, microcosm })
// this.$store.dispatch('getEmoji')
// this.$store.dispatch('getPositions')
} else {
console.log('no')
// go home
}
}, },
} }
// THIS IS PLAIN JS should be a mixin
function makeDraggable(svg) {
// var svg = evt.target
svg.addEventListener('mousedown', startDrag)
svg.addEventListener('mousemove', drag)
svg.addEventListener('mouseup', endDrag)
svg.addEventListener('mouseleave', endDrag)
svg.addEventListener('touchstart', startDrag)
svg.addEventListener('touchmove', drag)
svg.addEventListener('touchend', endDrag)
svg.addEventListener('touchleave', endDrag)
svg.addEventListener('touchcancel', endDrag)
function getMousePosition(evt) {
var CTM = svg.getScreenCTM()
if (evt.touches) {
evt = evt.touches[0]
}
return {
x: (evt.clientX - CTM.e) / CTM.a,
y: (evt.clientY - CTM.f) / CTM.d,
}
}
var selectedElement, offset, transform
function initialiseDragging(evt) {
offset = getMousePosition(evt)
// Make sure the first transform on the element is a translate transform
var transforms = selectedElement.transform.baseVal
if (
transforms.length === 0 ||
transforms.getItem(0).type !== SVGTransform.SVG_TRANSFORM_TRANSLATE
) {
// Create an transform that translates by (0, 0)
var translate = svg.createSVGTransform()
translate.setTranslate(0, 0)
selectedElement.transform.baseVal.insertItemBefore(translate, 0)
}
// Get initial translation
transform = transforms.getItem(0)
offset.x -= transform.matrix.e
offset.y -= transform.matrix.f
}
function startDrag(evt) {
if (evt.target.classList.contains('draggable')) {
selectedElement = evt.target
initialiseDragging(evt)
} else if (evt.target.parentNode.classList.contains('draggable-group')) {
selectedElement = evt.target.parentNode
initialiseDragging(evt)
}
}
function drag(evt) {
if (selectedElement) {
evt.preventDefault()
var coord = getMousePosition(evt)
transform.setTranslate(coord.x - offset.x, coord.y - offset.y)
}
}
function endDrag() {
selectedElement = false
}
}
</script> </script>
<style scoped></style> <style scoped>
.draggable-group {
cursor: move;
max-width: 150px;
}
.static {
cursor: not-allowed;
}
</style>
<template> <template>
<div> <div>
<button @click="addNode()">Add Node</button> <button @click="addNode()">+ Add Node</button>
<button>Select Node</button> <!-- <button>Select Node</button>
<button>Make Connections</button> <button>Make Connections</button>
<UploadMedia /> <UploadMedia /> -->
<button @click="exitMicrocosm()">Exit</button> <button class="leave" @click="exitMicrocosm()">
<p>{{ microcosm }}</p> &lt;- Leave Microcosm
</button>
<!-- <p>{{ microcosm }}</p> -->
</div> </div>
</template> </template>
<script> <script>
// @ is an alias to /src // @ is an alias to /src
import UploadMedia from '@/components/UploadMedia.vue' // import UploadMedia from '@/components/UploadMedia.vue'
import shortcuts from '@/mixins/shortcuts' import shortcuts from '@/mixins/shortcuts'
export default { export default {
name: 'ToolBar', name: 'ToolBar',
components: { components: {
UploadMedia, // UploadMedia,
}, },
data() { data() {
return { return {
...@@ -57,4 +59,8 @@ export default { ...@@ -57,4 +59,8 @@ export default {
} }
</script> </script>
<style scoped></style> <style scoped>
.leave {
/* background-color: red; */
}
</style>
export default function makeDraggable(evt) {
var svg = evt.target
svg.addEventListener('mousedown', startDrag)
svg.addEventListener('mousemove', drag)
svg.addEventListener('mouseup', endDrag)
svg.addEventListener('mouseleave', endDrag)
svg.addEventListener('touchstart', startDrag)
svg.addEventListener('touchmove', drag)
svg.addEventListener('touchend', endDrag)
svg.addEventListener('touchleave', endDrag)
svg.addEventListener('touchcancel', endDrag)
function getMousePosition(evt) {
var CTM = svg.getScreenCTM()
if (evt.touches) {
evt = evt.touches[0]
}
return {
x: (evt.clientX - CTM.e) / CTM.a,
y: (evt.clientY - CTM.f) / CTM.d,
}
}
var selectedElement, offset, transform
function initialiseDragging(evt) {
offset = getMousePosition(evt)
// Make sure the first transform on the element is a translate transform
var transforms = selectedElement.transform.baseVal
if (
transforms.length === 0 ||
transforms.getItem(0).type !== SVGTransform.SVG_TRANSFORM_TRANSLATE
) {
// Create an transform that translates by (0, 0)
var translate = svg.createSVGTransform()
translate.setTranslate(0, 0)
selectedElement.transform.baseVal.insertItemBefore(translate, 0)
}
// Get initial translation
transform = transforms.getItem(0)
offset.x -= transform.matrix.e
offset.y -= transform.matrix.f
}
function startDrag(evt) {
if (evt.target.classList.contains('draggable')) {
selectedElement = evt.target
initialiseDragging(evt)
} else if (evt.target.parentNode.classList.contains('draggable-group')) {
selectedElement = evt.target.parentNode
initialiseDragging(evt)
}
}
function drag(evt) {
if (selectedElement) {
evt.preventDefault()
var coord = getMousePosition(evt)
transform.setTranslate(coord.x - offset.x, coord.y - offset.y)
}
}
function endDrag(evt) {
selectedElement = false
}
}
...@@ -39,14 +39,14 @@ const routes = [ ...@@ -39,14 +39,14 @@ const routes = [
}, },
{ {
path: '/cards', path: '/allnodes',
name: 'Cards', name: 'All Nodes',
beforeEnter: guardMyroute, beforeEnter: guardMyroute,
// route level code-splitting // route level code-splitting
// this generates a separate chunk (credits.[hash].js) for this route // this generates a separate chunk (credits.[hash].js) for this route
// which is lazy-loaded when the route is visited. // which is lazy-loaded when the route is visited.
component: () => component: () =>
import(/* webpackChunkName: "cards" */ '../views/Cards.vue'), import(/* webpackChunkName: "cards" */ '../views/Nodes.vue'),
}, },
{ {
path: '/spatial', path: '/spatial',
......
...@@ -14,7 +14,7 @@ export default { ...@@ -14,7 +14,7 @@ export default {
mounted() { mounted() {
this.$store.dispatch('getMicrocosm') this.$store.dispatch('getMicrocosm')
}, },
name: 'Collect', name: 'Nodes',
components: { components: {
ToolBar, ToolBar,
......
<template> <template>
<ToolBar @added-node="addedNode" /> <ToolBar @added-node="addedNode" />
<SpaceBase /> <SpaceBase :added="added" />
</template> </template>
<script> <script>
...@@ -22,6 +22,12 @@ export default { ...@@ -22,6 +22,12 @@ export default {
added: false, added: false,
} }
}, },
methods: {
addedNode() {
this.added = !this.added
},
},
} }
</script> </script>
......
Source diff could not be displayed: it is too large. Options to address this: view the blob.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment