From bce6dbaafb1c55775fd9f0eb2d259aa539dc1cad Mon Sep 17 00:00:00 2001
From: Adam Procter <adamprocter@researchnot.es>
Date: Wed, 3 Jun 2020 21:27:31 +0100
Subject: [PATCH] almost read mode in couchdb

---
 app/public/index.html             |  1 +
 app/src/components/NodesLayer.vue | 54 ++++++++++++++++---------------
 app/src/store/index.js            | 40 +++++++++++++++++++++++
 app/src/views/Sandbox.vue         |  1 +
 4 files changed, 70 insertions(+), 26 deletions(-)

diff --git a/app/public/index.html b/app/public/index.html
index 730b64f..41053a2 100644
--- a/app/public/index.html
+++ b/app/public/index.html
@@ -33,6 +33,7 @@
   <meta property="twitter:creator" content="@nodenoggin" />
 
   <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
+  <link rel="apple-touch-icon" href="<%= BASE_URL %>favicon.ico">
 
   <title><%= htmlWebpackPlugin.options.title %></title>
 </head>
diff --git a/app/src/components/NodesLayer.vue b/app/src/components/NodesLayer.vue
index 5088fdd..cc367d5 100644
--- a/app/src/components/NodesLayer.vue
+++ b/app/src/components/NodesLayer.vue
@@ -15,9 +15,9 @@
           style="background-color: rgb(205, 234, 255);"
         >
           <form>
-            <div v-if="readmode == false">
-              <div v-for="value in myNodes" v-bind:key="value.node_id">
-                <!-- <div v-if="readmode == false"> -->
+            <!-- <div v-if="readmode == false"> -->
+            <div v-for="value in myNodes" v-bind:key="value.node_id">
+              <div v-if="value.readmode == false">
                 <textarea
                   v-if="nodeid == value.node_id"
                   @focus="editTrue(true)"
@@ -31,14 +31,11 @@
                   placeholder="Idea goes here!"
                 ></textarea>
               </div>
+              <!-- FIXME: What is this doing below now ? Looks old -->
+              <div v-else>
+                <p :id="nodeid" :inner-html.prop="nodetext | marked"></p>
+              </div>
             </div>
-            <!-- FIXME: What is this doing below now ? Looks old -->
-            <div v-else>
-              <p :id="nodeid" :inner-html.prop="nodetext | marked">
-                {{ nodeid }}
-              </p>
-            </div>
-
             <h3>Reactions</h3>
 
             <div v-for="(emojis, index) in configEmoji" :key="index">
@@ -81,9 +78,8 @@
           style="background-color: rgb(205, 234, 255);"
         >
           <form>
-            <div v-if="readmode == false">
-              <div v-for="value in myNodes" v-bind:key="value.node_id">
-                <!-- <div v-if="readmode == false"> -->
+            <div v-for="value in myNodes" v-bind:key="value.node_id">
+              <div v-if="value.readmode == false">
                 <textarea
                   v-if="nodeid == value.node_id"
                   @focus="editTrue(true)"
@@ -97,14 +93,15 @@
                   placeholder="Idea goes here!"
                 ></textarea>
               </div>
-            </div>
-            <!-- FIXME: What is this doing below now ? Looks old -->
-            <div v-else>
-              <p :id="nodeid" :inner-html.prop="nodetext | marked">
-                {{ nodeid }}
-              </p>
-            </div>
 
+              <!-- </div> -->
+              <!-- FIXME: What is this doing below now ? Looks old -->
+              <div v-else>
+                <p :id="nodeid" :inner-html.prop="nodetext | marked">
+                  <!-- {{ nodeid }} -->
+                </p>
+              </div>
+            </div>
             <h3>Reactions</h3>
 
             <div v-for="(emojis, index) in configEmoji" :key="index">
@@ -135,6 +132,7 @@
 <script>
 import { mapState } from 'vuex'
 import marked from 'marked'
+var readmode
 
 export default {
   name: 'NodesLayer',
@@ -145,12 +143,13 @@ export default {
     nodewidth: Number,
     nodeheight: Number,
     deleted: Boolean,
+    readmode: Boolean,
   },
 
   data() {
     return {
       pickupz: 99,
-      readmode: false,
+      // localreadmode: this.readmode,
       mode: 'Read',
     }
   },
@@ -259,12 +258,16 @@ export default {
       e = this.nodeid
       this.$store.dispatch('deleteFlag', { e })
     },
-    readFlag() {
-      if (this.readmode == true) {
-        this.readmode = false
+    readFlag(e) {
+      e = this.nodeid
+
+      if (readmode == true) {
+        readmode = false
+        this.$store.dispatch('readFlag', { e, readmode })
         this.mode = 'Read'
       } else {
-        this.readmode = true
+        readmode = true
+        this.$store.dispatch('readFlag', { e, readmode })
         this.mode = 'Edit'
       }
     },
@@ -278,7 +281,6 @@ export default {
   position: relative;
 }
 
-
 .info {
   font-size: 0.8em;
 }
diff --git a/app/src/store/index.js b/app/src/store/index.js
index 520424d..262211b 100644
--- a/app/src/store/index.js
+++ b/app/src/store/index.js
@@ -36,6 +36,8 @@ var remote =
   microcosm +
   '/'
 
+//var remotetwo = 'http://127.0.0.1:5984/'
+
 console.log(remote)
 const store = new Vuex.Store({
   state: {
@@ -183,6 +185,7 @@ const store = new Vuex.Store({
                   content_type: 'sheet',
                   // NOTE: first node is hidden due to no position
                   deleted: true,
+                  readmode: false,
                   attachment_name: '',
                 },
               ],
@@ -322,6 +325,7 @@ const store = new Vuex.Store({
             node_owner: state.myclient,
             content_type: 'sheet',
             deleted: false,
+            readmode: false,
             attachment_name: e,
           })
         }
@@ -436,6 +440,38 @@ const store = new Vuex.Store({
           }
         })
     },
+
+    READ_FLAG(state, e) {
+      var i
+      for (i = 0; i < Object.keys(state.myNodes).length; i++) {
+        if (e.e == state.myNodes[i].node_id) {
+          state.myNodes[i].readmode = e.readmode
+        }
+      }
+      pouchdb
+        .get(state.myclient)
+        .then(function (doc) {
+          // put the store into pouchdb
+          return pouchdb.bulkDocs([
+            {
+              _id: state.myclient,
+              _rev: doc._rev,
+              _attachments: doc._attachments,
+              nodes: state.myNodes,
+            },
+          ])
+        })
+        .then(function () {
+          return pouchdb.get(state.myclient).then(function (doc) {
+            state.myNodes = doc.nodes
+          })
+        })
+        .catch(function (err) {
+          if (err.status == 404) {
+            // pouchdb.put({  })
+          }
+        })
+    },
     GET_EMOJI(state) {
       console.log
       pouchdb
@@ -561,6 +597,10 @@ const store = new Vuex.Store({
       // var text = e.target.value
       commit('DELETE_FLAG', e)
     },
+    readFlag: ({ commit }, e) => {
+      // var text = e.target.value
+      commit('READ_FLAG', e)
+    },
     addEmoji: ({ commit }, { nodeid, emojitext }) => {
       commit('ADD_EMOJI', {
         nodeid,
diff --git a/app/src/views/Sandbox.vue b/app/src/views/Sandbox.vue
index 7b69b74..00db019 100644
--- a/app/src/views/Sandbox.vue
+++ b/app/src/views/Sandbox.vue
@@ -24,6 +24,7 @@
         v-bind:key="value.node_id"
         v-bind:nodeid="value.node_id"
         v-bind:nodetext="value.node_text"
+        v-bind:readmode="value.readmode"
       />
     </PanZoomContainer>
     <!-- <SelectionLayer
-- 
GitLab