Feat: Display tags in config and add colors to tag

This commit is contained in:
2018-12-04 18:37:28 +01:00
parent 877c269ee4
commit bf788d2e9e
7 changed files with 107 additions and 31 deletions

View File

@@ -22,11 +22,15 @@ export default {
},
tags: (state) => {
return state.tags
},
tag: (state) => (tagname) => {
return state.tags[tagname.toLowerCase()]
}
},
mutations: {
SET_TAGS: (state, { tags }) => {
state.tags = tags
state.tags = Object.keys(tags)
.reduce((c, k) => (c[k.toLowerCase()] = tags[k], c), {})
}
},
actions: {
@@ -42,6 +46,9 @@ export default {
context.commit('SET_TAGS', { tags: parsed.tags })
}
})
},
edit_tag (context, tag) {
console.log(tag)
}
}
}

View File

@@ -1,4 +1,5 @@
import { readdir, readFile } from 'fs'
import Vue from 'vue'
import path from 'path'
import Papa from 'papaparse'
import moment from 'moment'
@@ -7,41 +8,45 @@ import { appendTag, formatDate } from '../../libs/data_processing'
export default {
namespaced: true,
state: {
csv_files: [],
rows: {
data: [],
meta: {
fields: []
}
},
csv: {},
start: moment().subtract(1, 'months'),
end: moment()
},
getters: {
csvs: (state) => {
return state.csv_files
// return array of csv filename
return Object.keys(state.csv)
},
rows: (state) => {
return state.rows.data
// return all data stored in csv
return [ ...new Set(Object.values(state.csv).map(csv => csv.data)
.reduce((acc, d) => acc.concat(d), [])
)]
},
present: (state) => {
return state.rows.data.length > 0
present: (state, getters) => {
// is there any datas
return getters.rows.length > 0
},
spending_rows: (state, getters) => {
// return data with negatives 'Montant'
return getters.rows.filter(x => x.Montant < 0)
},
start: (state) => {
// Start date
return state.start.format(moment.HTML5_FMT.DATE)
},
end: (state) => {
// End date
return state.end.format(moment.HTML5_FMT.DATE)
},
date_filter_rows: (state, getters) => {
// return rows filtered by date
return getters.spending_rows.filter(x => {
return (x.Date >= state.start) & (x.Date < state.end)
})
},
tag_filter_rows: (state, getters) => (tags, invert) => {
// return rows filtered by date then by tags
if (tags) {
return getters.date_filter_rows.filter(row => {
if (invert) {
@@ -65,6 +70,7 @@ export default {
}
},
libelle_filter_rows: (state, getters) => (words, invert) => {
// return rows filtered by present of words in 'Libellé'
if (!words) {
return getters.date_filter_rows
}
@@ -87,11 +93,8 @@ export default {
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_DATA: (state, { filename, data }) => {
Vue.set(state.csv, filename, data)
},
SET_START: (state, { start }) => {
state.start = start
@@ -129,11 +132,14 @@ export default {
header: true
}
var parsed = Papa.parse(content, parseConfig)
context.dispatch('clean_store_data', parsed)
context.dispatch('clean_store_data', {
filename: csv,
parsed: parsed
})
}
})
},
clean_store_data (context, parsed) {
clean_store_data (context, { filename, parsed }) {
var tags = Object.values(context.rootGetters['config/tags'])
parsed.data = parsed.data.filter(x => x.Libellé !== undefined)
parsed.data.forEach(row => {
@@ -141,13 +147,15 @@ export default {
formatDate(row, 'Date')
})
context.commit('SET_DATA', { data: parsed })
context.commit('SET_DATA',
{ filename: filename, data: parsed }
)
},
set_start (context, start) {
context.commit('SET_START', { start: moment(start)})
context.commit('SET_START', { start: moment(start) })
},
set_end (context, end) {
context.commit('SET_END', { end: moment(end)})
context.commit('SET_END', { end: moment(end) })
}
}
}