Page MenuHomec4science

result.js
No OneTemporary

File Metadata

Created
Wed, Aug 14, 16:08

result.js

import axios from 'axios';
import { defineStore } from 'pinia';
import { ref, computed } from 'vue';
import { upload, genericFetch, genericAdd, genericRemove } from './utils';
const uploadResult = async ({ url, ...rest }) => {
const relPath = await upload('result', 'result', url);
return { ...rest, url: relPath };
};
export const useResultStore = defineStore('result', () => {
const results = ref([]);
const experiences = ref([]);
// not process.env because we use VITE and not vue cli
const endpointURL = import.meta.env.VITE_API_URL + '/results';
const expURL = import.meta.env.VITE_API_URL + '/experiences';
const fetchResults = genericFetch(endpointURL, results);
const fetchExperiences = genericFetch(expURL, experiences);
const getResultsByExp = computed(() =>
(expId) => results.value.filter(res => res.ExperienceId === expId)
);
const getDateStirng = computed(() =>
id => {
const res = results.value.find(res => res.id === id);
if (!res) return ''
return (new Date(res.timestamp))
.toLocaleString('fr-CH',{ dateStyle: 'short', timeStyle: 'short' })
}
);
return {
results, experiences, fetchResults, fetchExperiences, getResultsByExp,
getDateStirng,
add: genericAdd(endpointURL, fetchResults, uploadResult),
remove: genericRemove(endpointURL, fetchResults)
};
});

Event Timeline