diff --git a/resources/js/components/content/Blocks.vue b/resources/js/components/content/Blocks.vue new file mode 100644 index 0000000..e598bb0 --- /dev/null +++ b/resources/js/components/content/Blocks.vue @@ -0,0 +1,126 @@ + + + + + \ No newline at end of file diff --git a/resources/js/composables/content/blocks_page.ts b/resources/js/composables/content/blocks_page.ts new file mode 100644 index 0000000..a7ef27f --- /dev/null +++ b/resources/js/composables/content/blocks_page.ts @@ -0,0 +1,69 @@ +import {reactive, ref} from "vue"; +import axios from "axios"; + +export function blocks_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: 'Nome', value: 'name'}, + {title: 'Creato da', value: 'creator'}, + {title: 'Durata', value: 'length'}, + {title: 'Ultima modifica', value: 'utime'}, + {title: 'Azioni', value: 'actions'} + ]; + + const getItems = async (page_info) => { + loading.value = true; + return await axios.get(`/smartblock`, { + 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 + 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 + }) + } + + return { items, listData, headers, selected, loading, search, getItems, editItem, deleteItem } +} \ No newline at end of file diff --git a/resources/js/layouts/partials/Content.vue b/resources/js/layouts/partials/Content.vue index 17a7b81..2dbf1e7 100644 --- a/resources/js/layouts/partials/Content.vue +++ b/resources/js/layouts/partials/Content.vue @@ -14,6 +14,7 @@ const tabs = { dashboard: defineAsyncComponent(() => import('../../components/content/Dashboard.vue')), archive: defineAsyncComponent(() => import('../../components/content/Archive.vue')), playlist: defineAsyncComponent(() => import('../../components/content/Playlist.vue')), + blocks: defineAsyncComponent(() => import('../../components/content/Blocks.vue')), } diff --git a/resources/js/layouts/partials/Sidebar.vue b/resources/js/layouts/partials/Sidebar.vue index 5a86f0f..e70a57d 100644 --- a/resources/js/layouts/partials/Sidebar.vue +++ b/resources/js/layouts/partials/Sidebar.vue @@ -9,13 +9,18 @@ const pages = [ }, { id: 'archive', - name: 'Archive', - component: '../../components/content/Dashboard.vue', + name: 'Archivio', + component: '../../components/content/Archive.vue', }, { id: 'playlist', name: 'Playlist', component: '../../components/content/Playlist.vue', + }, + { + id: 'blocks', + name: 'Blocchi dinamici', + component: '../../components/content/Blocks.vue', } ];