From 1103831cd14ef905e266e95bdcd329c859ba3f4d Mon Sep 17 00:00:00 2001 From: Kode Date: Fri, 14 Feb 2020 16:27:50 +0000 Subject: [PATCH] work on tags and preview --- quasar.conf.js | 4 +- src/App.vue | 2 + src/components/AppItem.vue | 121 ++++++++++++++++++++++++++--------- src/components/MenuList.vue | 4 +- src/components/Tile.vue | 2 +- src/css/app.scss | 49 ++++++++++++-- src/layouts/MainLayout.vue | 41 +++++++++++- src/pages/Index.vue | 8 ++- src/store/index.js | 4 +- src/store/tags/actions.js | 10 +++ src/store/tags/getters.js | 4 ++ src/store/tags/index.js | 12 ++++ src/store/tags/mutations.js | 3 + src/store/tags/state.js | 5 ++ src/store/tiles/actions.js | 18 ++++++ src/store/tiles/mutations.js | 4 ++ src/store/tiles/state.js | 3 +- 17 files changed, 247 insertions(+), 47 deletions(-) create mode 100644 src/store/tags/actions.js create mode 100644 src/store/tags/getters.js create mode 100644 src/store/tags/index.js create mode 100644 src/store/tags/mutations.js create mode 100644 src/store/tags/state.js diff --git a/quasar.conf.js b/quasar.conf.js index 26e3598..c07bd98 100644 --- a/quasar.conf.js +++ b/quasar.conf.js @@ -48,7 +48,9 @@ module.exports = function (ctx) { directives: [], // Quasar plugins - plugins: [] + plugins: [ + 'LocalStorage' + ] }, // https://quasar.dev/quasar-cli/cli-documentation/supporting-ie diff --git a/src/App.vue b/src/App.vue index 6adb1be..b03272f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -13,6 +13,8 @@ export default { }, mounted () { this.$store.dispatch('tiles/getApps') + this.$store.dispatch('tags/getTags') + this.$store.dispatch('tiles/getPossibleApps') this.$store.dispatch('users/getUsers') } } diff --git a/src/components/AppItem.vue b/src/components/AppItem.vue index 01d6239..3a8717f 100644 --- a/src/components/AppItem.vue +++ b/src/components/AppItem.vue @@ -1,11 +1,11 @@ + diff --git a/src/pages/Index.vue b/src/pages/Index.vue index 4936664..8408f64 100644 --- a/src/pages/Index.vue +++ b/src/pages/Index.vue @@ -14,13 +14,19 @@ import Tile from 'components/Tile' export default { name: 'PageIndex', + props: ['filter'], + components: { Tile }, computed: { applications: function () { - return this.$store.state.tiles.active + if (this.filter === null) { + return this.$store.state.tiles.active + } else { + return this.$store.state.tiles.active.filter(a => a.tags.map(b => b.id).includes(this.filter)) + } } }, diff --git a/src/store/index.js b/src/store/index.js index 91785c6..726c6cc 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -4,6 +4,7 @@ import Vuex from 'vuex' // import example from './module-example' import tiles from './tiles' import users from './users' +import tags from './tags' Vue.use(Vuex) @@ -20,7 +21,8 @@ export default function (/* { ssrContext } */) { const Store = new Vuex.Store({ modules: { tiles, - users + users, + tags }, // enable strict mode (adds overhead!) diff --git a/src/store/tags/actions.js b/src/store/tags/actions.js new file mode 100644 index 0000000..8124509 --- /dev/null +++ b/src/store/tags/actions.js @@ -0,0 +1,10 @@ +import axios from 'axios' + +export function getTags (context) { + axios + .get(process.env.BACKEND_LOCATION + '/tags', { crossdomain: true }) + .then((response) => { + // console.log(response.data) + context.commit('all', response.data) + }) +} diff --git a/src/store/tags/getters.js b/src/store/tags/getters.js new file mode 100644 index 0000000..cc054a3 --- /dev/null +++ b/src/store/tags/getters.js @@ -0,0 +1,4 @@ +/* +export function someGetter (state) { +} +*/ diff --git a/src/store/tags/index.js b/src/store/tags/index.js new file mode 100644 index 0000000..b41a219 --- /dev/null +++ b/src/store/tags/index.js @@ -0,0 +1,12 @@ +import state from './state' +import * as getters from './getters' +import * as mutations from './mutations' +import * as actions from './actions' + +export default { + namespaced: true, + state, + getters, + mutations, + actions +} diff --git a/src/store/tags/mutations.js b/src/store/tags/mutations.js new file mode 100644 index 0000000..40b5eae --- /dev/null +++ b/src/store/tags/mutations.js @@ -0,0 +1,3 @@ +export function all (state, data) { + state.all = data +} diff --git a/src/store/tags/state.js b/src/store/tags/state.js new file mode 100644 index 0000000..c6b5f03 --- /dev/null +++ b/src/store/tags/state.js @@ -0,0 +1,5 @@ +export default function () { + return { + all: [] + } +} diff --git a/src/store/tiles/actions.js b/src/store/tiles/actions.js index dd6fa64..af9b972 100644 --- a/src/store/tiles/actions.js +++ b/src/store/tiles/actions.js @@ -1,4 +1,5 @@ import axios from 'axios' +import { LocalStorage } from 'quasar' export function getApps (context) { axios @@ -9,3 +10,20 @@ export function getApps (context) { context.commit('active', response.data.apps) }) } + +export function getPossibleApps (context, force = false) { + let key = 'heimdall.possibleapps' + let possibleapps = LocalStorage.getItem(key) + // console.log(possibleapps) + if (possibleapps === null || force === true) { + axios + .get('https://apps.heimdall.site/list', { crossdomain: true }) + .then((response) => { + // console.log(response.data) + context.commit('possibleapps', response.data.apps) + LocalStorage.set(key, response.data) + }) + } else { + context.commit('possibleapps', possibleapps.apps) + } +} diff --git a/src/store/tiles/mutations.js b/src/store/tiles/mutations.js index f07e279..f6808f3 100644 --- a/src/store/tiles/mutations.js +++ b/src/store/tiles/mutations.js @@ -5,3 +5,7 @@ export function all (state, data) { export function active (state, data) { state.active = data } + +export function possibleapps (state, data) { + state.possibleapps = data +} diff --git a/src/store/tiles/state.js b/src/store/tiles/state.js index 8ff3cc2..559a467 100644 --- a/src/store/tiles/state.js +++ b/src/store/tiles/state.js @@ -1,6 +1,7 @@ export default function () { return { all: [], - active: [] + active: [], + possibleapps: [] } }