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

52 lines
1.6 KiB
TypeScript

import {reactive, ref} from "vue";
import {deleteWebstream, getWebstreams, updateWebstream, type Webstream, webstreamTableHeader} from "@models/webstream.ts";
export function webstream_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 = webstreamTableHeader
const getItems = async (options) => {
loading.value = true;
return getWebstreams(options).then(webstreamList => {
items.value = webstreamList.data
loading.value = false;
}).catch(error => {
console.log("Error: " + error);
loading.value = false;
})
};
const editItem = (item: Webstream) => {
return updateWebstream(item)
.then((response) => {
console.log(response);
return response;
})
.catch(error => {
console.error("Error updating webstream:", error);
throw error;
});
}
const deleteItem = async (itemId: number | null = null) => {
const webstreamId = itemId ? [itemId] : selected.value.map(item => item.id)
await deleteWebstream(webstreamId).then(async () => {
await getItems(listData)
}).catch(error => {
console.error("Error deleting webstream:", error);
})
};
return {items, listData, headers, selected, loading, search, getItems, editItem, deleteItem}
}