From a5c68b50346e114aa193a6767111d73466cc4def Mon Sep 17 00:00:00 2001 From: Adam Procter <adamprocter@researchnot.es> Date: Sat, 6 Jun 2020 14:10:21 +0100 Subject: [PATCH] starting to add exit and offline --- app/src/experimental/ModeToolbar.vue | 49 ++++++++++++++++++++++++++++ app/src/experimental/modes/index.js | 11 +++++++ app/src/views/Sandbox.vue | 47 ++++++++++++++++++-------- 3 files changed, 94 insertions(+), 13 deletions(-) diff --git a/app/src/experimental/ModeToolbar.vue b/app/src/experimental/ModeToolbar.vue index caac947..aef1600 100644 --- a/app/src/experimental/ModeToolbar.vue +++ b/app/src/experimental/ModeToolbar.vue @@ -15,11 +15,16 @@ </template> <script> +var serverUrl = 'https://nodenogg.in' import { mapState, mapGetters } from 'vuex' import * as allModes from '@/experimental/modes' export default { + mounted() { + window.addEventListener('online', this.handleConnection) + window.addEventListener('offline', this.handleConnection) + }, computed: { ...mapState({ mode: (state) => state.ui.mode, @@ -34,6 +39,50 @@ export default { }, isActive(mode) { return this.mode === mode.name + + // if (mode.name == 'exit') { + // console.log('exit') + // } + }, + + removeLocal: function () { + localStorage.removeItem('myNNClient') + localStorage.removeItem('mylastMicrocosm') + + location.assign( + process.env.VUE_APP_HTTP + '://' + process.env.VUE_APP_URL + '/' + ) + }, + + handleConnection: function () { + var ref = this + if (navigator.onLine) { + this.isReachable(this.getServerUrl()).then(function (online) { + if (online) { + // handle online status + console.log('online') + location.reload() + } else { + console.log('no connectivity') + } + }) + } else { + // handle offline status + console.log('offline') + ref.$emit('offlineTriggered') + } + }, + isReachable: function (url) { + return fetch(url, { method: 'HEAD', mode: 'no-cors' }) + .then(function (resp) { + return resp && (resp.ok || resp.type === 'opaque') + }) + .catch(function (err) { + console.warn('[conn test failure]:', err) + }) + }, + getServerUrl: function () { + return serverUrl || window.location.origin }, }, data() { diff --git a/app/src/experimental/modes/index.js b/app/src/experimental/modes/index.js index 2fadf62..cbfbf50 100644 --- a/app/src/experimental/modes/index.js +++ b/app/src/experimental/modes/index.js @@ -63,3 +63,14 @@ export const upload = { cursor: 'copy', shortcut: false, } + +export const exit = { + name: 'exit', + view: { + pan: false, + zoom: false, + }, + icon: 'exit', + cursor: 'initial', + shortcut: false, +} diff --git a/app/src/views/Sandbox.vue b/app/src/views/Sandbox.vue index 26dd838..d823a24 100644 --- a/app/src/views/Sandbox.vue +++ b/app/src/views/Sandbox.vue @@ -11,19 +11,22 @@ v-bind:scale="scale" v-bind:translation="translation" > - <OtherNodeslayer - v-for="value in otherNodes" - v-bind:key="value.node_id" - v-bind:nodeid="value.node_id" - v-bind:nodetext="value.node_text" - /> - <NodesLayer - @editTrue="(e) => editTrue(e)" - v-for="value in myNodes" - v-bind:key="value.node_id" - v-bind:nodeid="value.node_id" - v-bind:nodetext="value.node_text" - /> + <div v-if="clientset"> + <OtherNodeslayer + v-for="value in otherNodes" + v-bind:key="value.node_id" + v-bind:nodeid="value.node_id" + v-bind:nodetext="value.node_text" + /> + <NodesLayer + @editTrue="(e) => editTrue(e)" + v-for="value in myNodes" + v-bind:key="value.node_id" + v-bind:nodeid="value.node_id" + v-bind:nodetext="value.node_text" + /> + </div> + <OnBoard v-else @clientAdded="clientAdded()" /> </PanZoomContainer> <!-- <SelectionLayer v-if="domContainerReady" @@ -41,6 +44,7 @@ import PanZoomContainer from '@/experimental/PanZoomContainer' import ConnectionsLayer from '@/experimental/layers/ConnectionsLayer' import NodesLayer from '@/components/NodesLayer' import OtherNodeslayer from '@/components/OtherNodeslayer.vue' +import OnBoard from '@/components/OnBoard.vue' import ModeToolbar from '@/experimental/ModeToolbar' import ViewToolbar from '@/experimental/ViewToolbar' // import SelectionLayer from '@/experimental/layers/SelectionLayer' @@ -56,6 +60,9 @@ export default { elementHeight: undefined, width: 2000, height: 2000, + clientset: false, + listview: false, + offline: false, } }, computed: { @@ -103,14 +110,27 @@ export default { this.elementHeight = offsetHeight }, + clientAdded() { + this.clientset = !this.clientset + }, + editTrue(e) { this.$store.dispatch('shortcutState', e) }, + + // This is here to support the shortcuts addNode() { this.$store.dispatch('addNode') }, + + offlineTriggered() { + this.offline = true + }, + onlineTriggered() { + this.offline = false + }, }, components: { ModeToolbar, @@ -120,6 +140,7 @@ export default { NodesLayer, OtherNodeslayer, ConnectionsLayer, + OnBoard, }, } </script> -- GitLab