From 68529ed503ace5c179d8975b5a748ff9b1297317 Mon Sep 17 00:00:00 2001 From: Bachir Soussi Chiadmi Date: Mon, 24 Aug 2020 12:53:09 +0200 Subject: [PATCH] getting data from api, displaying projects as cubes --- assets/css/app.scss | 2 +- src/App.vue | 74 ++++++++++++++++++++++++------ src/api/rest-axios.js | 27 +++++++++++ src/components/mixins.js | 8 ++++ src/components/objects/Cube.vue | 17 +++++-- src/components/objects/Plan.vue | 38 +++++++++++++++ src/components/objects/Project.vue | 34 ++++++++++++++ src/index.js | 5 +- src/store/index.js | 11 +++++ src/store/modules/projects.js | 37 +++++++++++++++ 10 files changed, 233 insertions(+), 20 deletions(-) create mode 100644 src/api/rest-axios.js create mode 100644 src/components/mixins.js create mode 100644 src/components/objects/Plan.vue create mode 100644 src/components/objects/Project.vue create mode 100644 src/store/index.js create mode 100644 src/store/modules/projects.js diff --git a/assets/css/app.scss b/assets/css/app.scss index 6eb57aa..edc2427 100644 --- a/assets/css/app.scss +++ b/assets/css/app.scss @@ -8,7 +8,7 @@ body{ - color: #1a1a1a; + color: #ff00ff; } #root{ diff --git a/src/App.vue b/src/App.vue index acffb90..78e4f7f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -11,16 +11,32 @@ -->
- - - + + + + - + + + +
@@ -30,8 +46,13 @@ diff --git a/src/api/rest-axios.js b/src/api/rest-axios.js new file mode 100644 index 0000000..e2b7f22 --- /dev/null +++ b/src/api/rest-axios.js @@ -0,0 +1,27 @@ +import axios from 'axios' + +// TODO: make this one as settings (or find an other solution) +// https://dev.to/sanfra1407/how-to-use-env-file-in-javascript-applications-with-webpack-18df +// switch (app_env) { +// case 'dev': +// let path = `http://${window.location.hostname}:8984` +// break; +// case 'prod': +// let path = `http://${window.location.hostname}/api` +// break; +// } +// let path = 'http://dev.api.gdp.fr' +// let path = 'http://localhost:8984' +// const +// let path = 'http://' + window.location.hostname + (window.env === 'prod' ? '/api' : ':8984') + +export const REST = axios.create({ + baseURL: 'https://api.anarchive-muntadas.figli.io/', + // withCredentials: true, + crossorigin: true, + headers: { + 'Accept': 'application/json' + // 'Access-Control-Allow-Origin': '*' + // 'Access-Control-Allow-Credentials': + } +}) diff --git a/src/components/mixins.js b/src/components/mixins.js new file mode 100644 index 0000000..1f2ae52 --- /dev/null +++ b/src/components/mixins.js @@ -0,0 +1,8 @@ +// https://forum.vuejs.org/t/how-to-use-helper-functions-for-imported-modules-in-vuejs-vue-template/6266/5 +export default { + methods: { + deg2rad: function (deg) { + return deg * (Math.PI / 180) + } + } +} diff --git a/src/components/objects/Cube.vue b/src/components/objects/Cube.vue index 2a7b81d..42cc567 100644 --- a/src/components/objects/Cube.vue +++ b/src/components/objects/Cube.vue @@ -1,15 +1,24 @@ diff --git a/src/components/objects/Plan.vue b/src/components/objects/Plan.vue new file mode 100644 index 0000000..5c12425 --- /dev/null +++ b/src/components/objects/Plan.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/components/objects/Project.vue b/src/components/objects/Project.vue new file mode 100644 index 0000000..f4c0fc1 --- /dev/null +++ b/src/components/objects/Project.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/index.js b/src/index.js index 4653385..1160c72 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,6 @@ import Vue from 'vue' // import router from './router' -// import store from './store' +import store from './store' // import { sync } from 'vuex-router-sync' import Meta from 'vue-meta' import * as VueThreejs from 'vue-threejs' @@ -15,9 +15,10 @@ Vue.use(Meta) Vue.use(VueThreejs) // sync(store, router) // done. Returns an unsync callback fn +// sync(store) new Vue({ // router, - // store, + store, render: h => h(App) }).$mount('#app') diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..68ee5ae --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,11 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +import Projects from './modules/projects' + +Vue.use(Vuex) +export default new Vuex.Store({ + modules: { + Projects + } +}) diff --git a/src/store/modules/projects.js b/src/store/modules/projects.js new file mode 100644 index 0000000..0a521e1 --- /dev/null +++ b/src/store/modules/projects.js @@ -0,0 +1,37 @@ +import { REST } from 'api/rest-axios' + +export default { + namespaced: true, + + // initial state + state: { + projects: [] + }, + + // getters + getters: {}, + + // mutations + mutations: { + setProjects (state, projects) { + state.projects = projects + } + }, + + // actions + actions: { + // async get authors + getProjects ({ dispatch, commit, state }) { + REST.get(`projects`, {}) + .then(({ data }) => { + console.log('projects getProjects REST: data', data) + commit('setProjects', data) + }) + .catch((error) => { + console.warn('Issue with getProjects', error) + Promise.reject(error) + }) + } + } + +}