52 lines
1.6 KiB
TypeScript
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}
|
|
}
|