🚧 Site > Add Vue store
This commit is contained in:
Generated
+5
@@ -7507,6 +7507,11 @@
|
|||||||
"integrity": "sha512-j3TBDtjqz7pC9XUzeSeqF5oekqPahxyUHsdG+kZKDH/V/DTexq5inYdLGstnqCUljoLC9LTj3H/5hmyToeSd1A==",
|
"integrity": "sha512-j3TBDtjqz7pC9XUzeSeqF5oekqPahxyUHsdG+kZKDH/V/DTexq5inYdLGstnqCUljoLC9LTj3H/5hmyToeSd1A==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"vuex": {
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/vuex/-/vuex-2.3.1.tgz",
|
||||||
|
"integrity": "sha1-zejpl8H5lXcZvH3qFU+appHZgaY="
|
||||||
|
},
|
||||||
"watchpack": {
|
"watchpack": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz",
|
||||||
|
|||||||
+3
-2
@@ -38,8 +38,9 @@
|
|||||||
"slug": "^0.9.1",
|
"slug": "^0.9.1",
|
||||||
"socket.io": "^2.0.3",
|
"socket.io": "^2.0.3",
|
||||||
"socket.io-client": "^2.0.3",
|
"socket.io-client": "^2.0.3",
|
||||||
"yargs": "^8.0.2",
|
"vue": "^2.3.3",
|
||||||
"vue": "^2.3.3"
|
"vuex": "^2.3.1",
|
||||||
|
"yargs": "^8.0.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"babel-core": "^6.22.1",
|
"babel-core": "^6.22.1",
|
||||||
|
|||||||
@@ -1,32 +1,33 @@
|
|||||||
import socketIoClient from 'socket.io-client'
|
import Connexion from '@/components/connexion'
|
||||||
|
import ProjectsHub from '@/components/projects-hub'
|
||||||
|
|
||||||
export default
|
export default
|
||||||
{
|
{
|
||||||
name: 'application',
|
name: 'application',
|
||||||
|
|
||||||
|
components:
|
||||||
|
{
|
||||||
|
Connexion,
|
||||||
|
ProjectsHub
|
||||||
|
},
|
||||||
|
|
||||||
data()
|
data()
|
||||||
{
|
{
|
||||||
return {
|
return {
|
||||||
counter: 0,
|
counter: 0
|
||||||
projects: { type: Object, value: {} }
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed:
|
||||||
|
{
|
||||||
|
projects()
|
||||||
|
{
|
||||||
|
return this.$store.state.projects
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted()
|
mounted()
|
||||||
{
|
{
|
||||||
const socketUrl = `${process.env.NODE_ENV === 'production' ? '' : 'http://localhost:1571'}/projects`
|
|
||||||
const socket = socketIoClient(socketUrl)
|
|
||||||
|
|
||||||
socket.on('connect', () =>
|
|
||||||
{
|
|
||||||
console.log('connected')
|
|
||||||
})
|
|
||||||
|
|
||||||
socket.on('update_projects', (data) =>
|
|
||||||
{
|
|
||||||
this.projects = data.all
|
|
||||||
})
|
|
||||||
|
|
||||||
window.setInterval(() =>
|
window.setInterval(() =>
|
||||||
{
|
{
|
||||||
this.counter++
|
this.counter++
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
#application
|
|
||||||
background #f0f
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
<div id="application">
|
<div id="application">
|
||||||
{{ counter }}
|
{{ counter }}
|
||||||
<div v-for="project in projects">
|
<connexion></connexion>
|
||||||
{{ project.name }}
|
<projects-hub></projects-hub>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<template src="./template.html"></template>
|
||||||
|
<script src="./script.js"></script>
|
||||||
|
<style src="./style.styl" lang="stylus"></style>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import socketIoClient from 'socket.io-client'
|
||||||
|
|
||||||
|
export default
|
||||||
|
{
|
||||||
|
name: 'connexion',
|
||||||
|
|
||||||
|
created()
|
||||||
|
{
|
||||||
|
this.url = `${process.env.NODE_ENV === 'production' ? '' : 'http://localhost:1571'}/projects`
|
||||||
|
this.socket = socketIoClient(this.url)
|
||||||
|
|
||||||
|
this.socket.on('connect', () =>
|
||||||
|
{
|
||||||
|
console.log('connected')
|
||||||
|
})
|
||||||
|
|
||||||
|
this.socket.on('update_projects', (data) =>
|
||||||
|
{
|
||||||
|
this.$store.commit('updateProjects', data.all)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
<div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<template src="./template.html"></template>
|
||||||
|
<script src="./script.js"></script>
|
||||||
|
<style src="./style.styl" lang="stylus"></style>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
export default
|
||||||
|
{
|
||||||
|
name: 'projects-hub',
|
||||||
|
|
||||||
|
computed:
|
||||||
|
{
|
||||||
|
projects()
|
||||||
|
{
|
||||||
|
return this.$store.state.projects
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
created()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<div>
|
||||||
|
<a :href="project.slug" v-for="project in projects">
|
||||||
|
{{ project.name }}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
@@ -2,12 +2,14 @@
|
|||||||
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
|
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import App from '@/components/application/'
|
import App from '@/components/application/'
|
||||||
|
import store from '@/store.js'
|
||||||
|
|
||||||
Vue.config.productionTip = false
|
Vue.config.productionTip = false
|
||||||
|
|
||||||
/* eslint-disable no-new */
|
/* eslint-disable no-new */
|
||||||
new Vue({
|
new Vue({
|
||||||
el: '#app',
|
el: '#app',
|
||||||
|
store,
|
||||||
template: '<App/>',
|
template: '<App/>',
|
||||||
components: { App }
|
components: { App }
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import Vuex from 'vuex'
|
||||||
|
Vue.use(Vuex)
|
||||||
|
|
||||||
|
export default new Vuex.Store({
|
||||||
|
state:
|
||||||
|
{
|
||||||
|
projects: [],
|
||||||
|
currentProject: null
|
||||||
|
},
|
||||||
|
|
||||||
|
mutations:
|
||||||
|
{
|
||||||
|
updateProjects(state, data)
|
||||||
|
{
|
||||||
|
for(const key in data)
|
||||||
|
{
|
||||||
|
const project = data[key]
|
||||||
|
state.projects.push(project)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
addProject(state, data)
|
||||||
|
{
|
||||||
|
state.projects.push(data)
|
||||||
|
},
|
||||||
|
|
||||||
|
removeProject(state, data)
|
||||||
|
{
|
||||||
|
console.log(data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user