71 lines
1.9 KiB
JavaScript
71 lines
1.9 KiB
JavaScript
import { readFile } from 'fs'
|
|
import Vue from 'vue'
|
|
import path from 'path'
|
|
import yaml from 'js-yaml'
|
|
|
|
export default {
|
|
namespaced: true,
|
|
state: {
|
|
data_dir: '/home/lafrite/scripts/comptes/data/',
|
|
config_dir: '/home/lafrite/scripts/comptes/config/',
|
|
config_filename: 'config.yml',
|
|
tags: {},
|
|
categories: {}
|
|
},
|
|
getters: {
|
|
data_dir: (state) => {
|
|
return state.data_dir
|
|
},
|
|
config_dir: (state) => {
|
|
return state.config_dir
|
|
},
|
|
config_filename: (state) => {
|
|
return state.config_filename
|
|
},
|
|
tags: (state) => {
|
|
return state.tags
|
|
},
|
|
tag: (state) => (tagname) => {
|
|
return state.tags[tagname.toLowerCase()]
|
|
},
|
|
categories: (state) => {
|
|
return state.categories
|
|
},
|
|
categorie: (state) => (categorieName) => {
|
|
return state.categories[categorieName.toLowerCase()]
|
|
}
|
|
},
|
|
mutations: {
|
|
SET_TAGS: (state, { tags }) => {
|
|
state.tags = Object.keys(tags)
|
|
.reduce((c, k) => (c[k.toLowerCase()] = tags[k], c), {})
|
|
},
|
|
APPEND_TAG: (state, { tag }) => {
|
|
Vue.set(state.tags, tag.name.toLowerCase(), tag)
|
|
},
|
|
SET_CATEGORIES: (state, { categories }) => {
|
|
state.categories = Object.keys(categories)
|
|
.reduce((c, k) => (c[k.toLowerCase()] = categories[k], c), {})
|
|
}
|
|
},
|
|
actions: {
|
|
load (context) {
|
|
readFile(path.join(context.getters.config_dir, context.getters.config_filename), 'utf8', (err, content) => {
|
|
if (err) {
|
|
console.log(err)
|
|
} else {
|
|
var parseConfig = {
|
|
header: true
|
|
}
|
|
var parsed = yaml.safeLoad(content, parseConfig)
|
|
context.commit('SET_TAGS', { tags: parsed.tags })
|
|
context.commit('SET_CATEGORIES', { categories: parsed.categories })
|
|
}
|
|
})
|
|
},
|
|
edit_tag (context, tag) {
|
|
context.commit('APPEND_TAG', { tag: tag })
|
|
}
|
|
}
|
|
}
|