diff --git a/package-lock.json b/package-lock.json
index e1493d1..d6d3ddd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4079,6 +4079,16 @@
"integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
"dev": true
},
+ "bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
"bl": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
@@ -7207,6 +7217,13 @@
}
}
},
+ "file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "dev": true,
+ "optional": true
+ },
"filesize": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
@@ -15753,6 +15770,7 @@
"dev": true,
"optional": true,
"requires": {
+ "bindings": "^1.5.0",
"nan": "^2.12.1"
}
},
@@ -16469,6 +16487,7 @@
"dev": true,
"optional": true,
"requires": {
+ "bindings": "^1.5.0",
"nan": "^2.12.1"
}
},
diff --git a/quasar.conf.js b/quasar.conf.js
index b43d75c..b147396 100644
--- a/quasar.conf.js
+++ b/quasar.conf.js
@@ -80,7 +80,8 @@ module.exports = function (ctx) {
// Quasar plugins
plugins: [
- 'Notify'
+ 'Notify',
+ 'LocalStorage'
]
},
diff --git a/src/components/AddAssets.vue b/src/components/AddAssets.vue
index 44debdc..ad7707d 100644
--- a/src/components/AddAssets.vue
+++ b/src/components/AddAssets.vue
@@ -39,6 +39,7 @@
:ratio="16 / 9"
:src="asset.url"
@click="asset.isSelected = !asset.isSelected"
+ contain
basic>
diff --git a/src/components/Camera.vue b/src/components/Camera.vue
index f002e20..ced6925 100644
--- a/src/components/Camera.vue
+++ b/src/components/Camera.vue
@@ -97,6 +97,11 @@ export default {
})
}
},
+ beforeDestroy () {
+ this.$refs.video.pause()
+ this.$refs.video.src = ''
+ this.$refs.video.srcObject.getTracks()[0].stop()
+ },
methods: {
/**
* Capture the image
diff --git a/src/components/dialogs/AssetsManager.vue b/src/components/dialogs/AssetsManager.vue
index 994eb54..bf6ad24 100644
--- a/src/components/dialogs/AssetsManager.vue
+++ b/src/components/dialogs/AssetsManager.vue
@@ -33,7 +33,7 @@ input[type='file']
:key="index"
class="card col-2 q-ma-md"
>
-
+
@@ -133,6 +136,8 @@
class="q-ma-md bg-white"
:value="tab.hexColor"
@input="setHexColor"
+ @keyup.enter="$event.target.blur()"
+ @blur="onSaveTabElement('couleur')"
filled
>
@@ -371,6 +376,18 @@ export default {
})
})
},
+ onSaveTabElement (message) {
+ let notif = message ? 'enregistrement ' + message : 'changement enregistré'
+ this.$store.dispatch('tabEditor/saveTabWithoutItem', (tab) => {
+ /* Toast message */
+ const path = `/tabs/${tab.get(SLUG_KEY)}`
+ if (this.$route.path !== path) this.$router.push(path)
+ this.$q.notify({
+ message: notif,
+ color: 'purple'
+ })
+ })
+ },
/**
* Call to remove tab
*/
@@ -396,9 +413,11 @@ export default {
},
setLanguage (language) {
this.$store.commit('tabEditor/setLanguage', this.options.indexOf(language))
+ this.onSaveTabElement('langue')
},
setSpeed (speed) {
this.$store.commit('tabEditor/setSpeed', this.speeds.indexOf(speed))
+ this.onSaveTabElement('vitesse')
},
/**
* Call to open the item dialog in new item mode
diff --git a/src/store/devices/actions.js b/src/store/devices/actions.js
index 80cf38b..1f0bd76 100644
--- a/src/store/devices/actions.js
+++ b/src/store/devices/actions.js
@@ -1,7 +1,6 @@
import Parse from 'parse'
import DeviceUser, { USERNAME_KEY } from '~/models/DeviceUser'
-
/**
* Load devices
* @param {Context} ctx
diff --git a/src/store/tab-editor/actions.js b/src/store/tab-editor/actions.js
index 461ef4b..a74bdd4 100644
--- a/src/store/tab-editor/actions.js
+++ b/src/store/tab-editor/actions.js
@@ -33,6 +33,49 @@ export const loadBySlug = ({ commit, dispatch }, slug) => {
})
}
+export const loadBySlugWithoutItem = ({ commit, dispatch }, slug) => {
+ new Parse.Query(TabModel)
+ .equalTo(SLUG_KEY, slug)
+ .equalTo('user', localStorage.id)
+ .first()
+ .then((tabModel) => {
+ commit('setTab', tabModel)
+ console.log('tab changed')
+ })
+ .catch((err) => {
+ commit('setError', err)
+ })
+}
+
+export const saveTabWithoutItem = ({ commit, dispatch, getters: { tab } }, callback) => {
+ tabToModel(tab)
+ .then((tabModel) => {
+ const promises = []
+ /**
+ * Save basic changes
+ */
+ tabModel.set(NAME_KEY, tab.name)
+ tabModel.set(HEX_COLOR_KEY, tab.hexColor)
+ tabModel.set(SLUG_KEY, slugify(tab.name))
+ tabModel.set(SPEED_KEY, tab.speed)
+ tabModel.set(LANGUAGE_KEY, tab.language)
+
+ /* Save the tabmodel */
+ promises.push(tabModel.save())
+
+ return Promise.all(promises)
+ })
+ .then(([tabModel]) => {
+ return Promise.all([
+ dispatch('loadBySlugWithoutItem', tabModel.get(SLUG_KEY)),
+ callback(tabModel)
+ ])
+ })
+ .catch((err) => {
+ commit('setError', err)
+ })
+}
+
/**
* Load every items for the loaded tab
* @param {Context} ctx
diff --git a/src/store/tab-editor/utils.js b/src/store/tab-editor/utils.js
index 3d9fcb0..0f70ce3 100644
--- a/src/store/tab-editor/utils.js
+++ b/src/store/tab-editor/utils.js
@@ -8,7 +8,6 @@ import {
HIDDEN_KEY as ITEM_HIDDEN_KEY,
ORDER_KEY as ITEM_ORDER_KEY
} from '~/models/TabItem'
-
/**
* Set something in the tab from its key
* @param {State} state