sintonia_webapp/resources/js/composables/content/archive_page.ts

90 lines
2.7 KiB
TypeScript

import axios from "axios";
import {ref, reactive, computed} from "vue";
export function archive_page() {
const items = ref([])
const selected = ref([])
const loading = ref(false)
const search = ref('')
const listData = reactive({
'itemsPerPage': 5,
'first_page': null,
'last_page': null,
'total_items': 0,
'page': 1,
})
const headers = [
// {title: '', key: 'artwork'},
{title: 'Titolo', value: 'track_title'},
{title: 'Artista', value: 'artist_name'},
{title: 'Genere', value: 'genre'},
{title: 'Tipologia', value: 'track_type.type_name'},
{title: 'Durata', value: 'length'},
{title: 'Caricato il', value: 'mtime'},
{title: 'Azioni', value: 'actions'}
];
/**
* @param page_info created by v-data-table-server on update
*/
const getItems = async (page_info) => {
loading.value = true;
return await axios.get(`/file`, {
params: {
page: page_info.page,
per_page: page_info.itemsPerPage,
all: search.value
}
}).then((response) => {
//console.log(response)
listData.itemsPerPage = response.data.per_page;
listData.first_page = response.data.from;
listData.last_page = response.data.last_page;
listData.page = response.data.current_page;
listData.total_items = response.data.total;
items.value = response.data.data.filter(el => el.import_status === 0)
loading.value = false;
}).catch((error) => {
console.log("Error: "+error);
})
}
const editItem = (item) => {
item['_method'] = 'PUT'
return axios.post(`file/${item.id}`, item
).then((response) => {
console.log(response)
})
}
const deleteItem = (id) => {
return axios.post(`file/${id}`, {
_method: 'DELETE'
}).then((response) => {
getItems(listData)
// items.value = response.status === 200 ? items.value.filter(obj => obj.id !== id) : items
})
}
const uploadItem = async (item): Promise<object> => {
return await axios.post('/file', item
).then(response => {
console.log(response)
if (response.status === 200) {
return response.data
}
return response.data
})
.catch((error) => {
console.log(error)
return {error: error}
})
}
return { items, listData, headers, selected, loading, search, getItems, editItem, deleteItem, uploadItem }
}