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: { data_dir: '/home/lafrite/scripts/comptes/data/', csv_files: [], rows: {}, dates_boundaries: [monthAgo, today] }, getters: { data_dir: (state) => { 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: { 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.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 }) } } }