Refact: Split config and datas in store

This commit is contained in:
Bertrand Benjamin 2018-11-30 15:56:18 +01:00
parent c06b834580
commit 1f20caa95a
5 changed files with 106 additions and 147 deletions

View File

@ -1,11 +1,13 @@
import Vue from 'vue' import Vue from 'vue'
import Vuex from 'vuex' import Vuex from 'vuex'
import configModule from './modules/config' import configModule from './modules/config'
import datasModule from './modules/datas'
Vue.use(Vuex) Vue.use(Vuex)
export default new Vuex.Store({ export default new Vuex.Store({
modules: { modules: {
config: configModule config: configModule,
datas: datasModule
} }
}) })

View File

@ -1,53 +0,0 @@
import { readdir, readFile } from 'fs'
export default {
namespaced: true,
state: {
data_dir: '/home/lafrite/scripts/comptes/data/',
csv_files: [],
data: []
},
getters: {
data_dir: (state) => {
return state.data_dir
},
csvs: (state) => {
return state.csv_files
},
data: (state) => {
return state.data
}
},
mutations: {
APPEND_DATA: (state, { data }) => {
state.data.push(data)
},
SET_CSV_FILES: (state, { csvs }) => {
state.csv_files = csvs
}
},
actions: {
async find_csv (context) {
readdir(context.getters.data_dir, (err, list) => {
if (err) {
console.log(err)
} else {
var csvs = list.filter(x => {
return x.split('.').pop() == 'csv'
})
context.commit('SET_CSV_FILES', { csvs })
}
})
},
async load_csv (context, csv) {
readFile(path.join(context.getters.data_dir, csv) , (err, content) => {
if (err) {
console.log(err)
} else {
context.commit('APPEND_DATA', { content })
}
})
}
}
}

View File

@ -1,99 +1,15 @@
import Vue from 'vue'
import { readdir, readFile } from 'fs'
import path from 'path'
import Papa from 'papaparse'
var today = new Date()
var monthAgo = new Date()
monthAgo.setMonth(monthAgo.getMonth() - 1)
export default { export default {
namespaced: true, namespaced: true,
state: { state: {
data_dir: '/home/lafrite/scripts/comptes/data/', data_dir: '/home/lafrite/scripts/comptes/data/'
csv_files: [],
rows: {},
dates_boundaries: [monthAgo, today]
}, },
getters: { getters: {
data_dir: (state) => { data_dir: (state) => {
return state.data_dir return state.data_dir
},
csvs: (state) => {
return state.csv_files
},
rows: (state) => {
return state.rows.data
},
dates_boundaries: (state) => {
return state.dates_boundaries.map(x => x.toISOString().split('T')[0])
},
filter_rows: (state, getters) => {
if (state.rows.data) {
return state.rows.data.filter(x => {
return (new Date(x.Date) >= state.dates_boundaries[0]) & (new Date(x.Date) < state.dates_boundaries[1])
})
} else {
return []
}
} }
}, },
mutations: { mutations: {
SET_CSV_FILES: (state, { csvs }) => {
state.csv_files = csvs
},
SET_DATA: (state, { data }) => {
state.rows = data
},
APPEND_DATA: (state, { content }) => {
state.rows.push(content)
},
SET_START_DATE: (state, { start }) => {
Vue.set(state.dates_boundaries, 0, new Date(start))
},
SET_END_DATE: (state, { end }) => {
Vue.set(state.dates_boundaries, 1, new Date(end))
}
}, },
actions: { actions: {
async find_csv (context) {
try {
readdir(context.getters.data_dir, (err, list) => {
if (err) {
console.log(err)
} else {
var csvs = list.filter(x => {
return x.split('.').pop() === 'csv'
})
for (var i in csvs) {
context.dispatch('load_csv', csvs[i])
}
context.commit('SET_CSV_FILES', { csvs })
}
})
} catch (e) {
console.log(e)
}
},
async load_csv (context, csv) {
readFile(path.join(context.getters.data_dir, csv), 'utf8', (err, content) => {
if (err) {
console.log(err)
} else {
var parseConfig = {
header: true
}
var parsed = Papa.parse(content, parseConfig)
context.commit('SET_DATA', { data: parsed })
}
})
},
set_start_date (context, start) {
context.commit('SET_START_DATE', { start })
},
set_end_date (context, end) {
context.commit('SET_END_DATE', { end })
}
} }
} }

View File

@ -0,0 +1,95 @@
import Vue from 'vue'
import { readdir, readFile } from 'fs'
import path from 'path'
import Papa from 'papaparse'
var today = new Date()
var monthAgo = new Date()
monthAgo.setMonth(monthAgo.getMonth() - 1)
export default {
namespaced: true,
state: {
csv_files: [],
rows: {},
dates_boundaries: [monthAgo, today]
},
getters: {
csvs: (state) => {
return state.csv_files
},
rows: (state) => {
return state.rows.data
},
dates_boundaries: (state) => {
return state.dates_boundaries.map(x => x.toISOString().split('T')[0])
},
filter_rows: (state, getters) => {
if (state.rows.data) {
return state.rows.data.filter(x => {
return (new Date(x.Date) >= state.dates_boundaries[0]) & (new Date(x.Date) < state.dates_boundaries[1])
})
} else {
return []
}
}
},
mutations: {
SET_CSV_FILES: (state, { csvs }) => {
state.csv_files = csvs
},
SET_DATA: (state, { data }) => {
state.rows = data
},
APPEND_DATA: (state, { content }) => {
state.rows.push(content)
},
SET_START_DATE: (state, { start }) => {
Vue.set(state.dates_boundaries, 0, new Date(start))
},
SET_END_DATE: (state, { end }) => {
Vue.set(state.dates_boundaries, 1, new Date(end))
}
},
actions: {
async find_csv (context) {
try {
readdir(context.rootGetters['config/data_dir'], (err, list) => {
if (err) {
console.log(err)
} else {
var csvs = list.filter(x => {
return x.split('.').pop() === 'csv'
})
for (var i in csvs) {
context.dispatch('load_csv', csvs[i])
}
context.commit('SET_CSV_FILES', { csvs })
}
})
} catch (e) {
console.log(e)
}
},
async load_csv (context, csv) {
readFile(path.join(context.rootGetters['config/data_dir'], csv), 'utf8', (err, content) => {
if (err) {
console.log(err)
} else {
var parseConfig = {
header: true
}
var parsed = Papa.parse(content, parseConfig)
context.commit('SET_DATA', { data: parsed })
}
})
},
set_start_date (context, start) {
context.commit('SET_START_DATE', { start })
},
set_end_date (context, end) {
context.commit('SET_END_DATE', { end })
}
}
}

View File

@ -38,19 +38,18 @@ export default {
key: 'Libellé', key: 'Libellé',
sortable: true sortable: true
} }
], ],
spending: true spending: true
} }
}, },
mounted: function () { mounted: function () {
this.$store.dispatch('config/find_csv') this.$store.dispatch('datas/find_csv')
}, },
computed: { computed: {
...mapGetters({ ...mapGetters({
'csvs': 'config/csvs', 'csvs': 'datas/csvs',
'data_dir': 'config/data_dir', 'rows': 'datas/filter_rows',
'rows': 'config/filter_rows', 'date': 'datas/dates_boundaries'
'date': 'config/dates_boundaries'
}), }),
date_start () { date_start () {
return this.date[0] return this.date[0]
@ -68,10 +67,10 @@ export default {
}, },
methods: { methods: {
update_date_start (e) { update_date_start (e) {
this.$store.dispatch('config/set_start_date', e) this.$store.dispatch('datas/set_start_date', e)
}, },
update_date_end (e) { update_date_end (e) {
this.$store.dispatch('config/set_end_date', e) this.$store.dispatch('datas/set_end_date', e)
}, },
} }
} }