102 lines
2.9 KiB
Vue
102 lines
2.9 KiB
Vue
<template>
|
|
<div>
|
|
<section>
|
|
<app-boards-header
|
|
:h2data="compdata.title"
|
|
v-model="selectedSort"
|
|
:sortOptions="sortOptions"
|
|
/>
|
|
</section>
|
|
<div class="text-center">
|
|
<p v-if="!userLoggedIn">You are not logged in</p>
|
|
<p v-else>You are logged in for {{ userStore.userRole }}</p>
|
|
<button @click="verifySession">verifySession</button>
|
|
</div>
|
|
|
|
<app-board-list
|
|
v-model="selectedSort"
|
|
:title="compdata.title"
|
|
:sortOptions="sortOptions"
|
|
:userRole="userRole"
|
|
:current-page="currentPage"
|
|
:total-pages="totalPages"
|
|
:page-numbers="pageNumbers"
|
|
:show-select-boxes="showSelectBoxes"
|
|
:uploadRoute="currentUploadRoute"
|
|
@toggle-select-boxes="showSelectBoxes = !showSelectBoxes"
|
|
@delete-selected="onDeleteSelected"
|
|
@go-to-page="onGoToPage"
|
|
@prev-page="onPrevPage"
|
|
@next-page="onNextPage"
|
|
:isLoading="isLoading"
|
|
:loadingMessage="loadingMessage"
|
|
>
|
|
<template #list>
|
|
<app-board-list-single
|
|
v-for="item in currentItems"
|
|
:key="item.docId"
|
|
:userId="item.userId"
|
|
:item="item"
|
|
:showSelectBox="showSelectBoxes"
|
|
@select="onToggleSelect(item)"
|
|
:iconName="['fas', 'bell']"
|
|
:routeName="currentBoardRouteName"
|
|
/>
|
|
</template>
|
|
</app-board-list>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import AppBoardsHeader from '@/components/boards/BoardHeader.vue';
|
|
import AppBoardList from '@/components/boards/BoardList.vue';
|
|
import AppBoardListSingle from '@/components/boards/wadiz/WadizListSingle.vue';
|
|
import type { OrderByDirection, BoardAccessMode, WadizBoard } from '@/types';
|
|
import { useUserStore } from '@/stores/user';
|
|
import { verifySession } from '@/utils/api/verifyFromFunction';
|
|
const userStore = useUserStore();
|
|
const userLoggedIn = computed(() => userStore.userLoggedIn);
|
|
|
|
//customize
|
|
const access: BoardAccessMode = 'public';
|
|
const currentCollection = 'wadizes';
|
|
const currentUploadRoute = '/wadiz/upload';
|
|
const currentBoardRouteName = '/wadiz';
|
|
const compData = {
|
|
title: '와디즈 관리',
|
|
itemsPerPage: 20,
|
|
defaultSort: 'desc' as OrderByDirection,
|
|
};
|
|
const loading = '게시물을 불러오는 중입니다...';
|
|
import { useBoardList } from '@/composables/useBoardList';
|
|
|
|
// destructure only the things you actually need
|
|
const {
|
|
isLoading,
|
|
loadingMessage,
|
|
compdata,
|
|
currentItems,
|
|
currentPage,
|
|
pageNumbers,
|
|
selectedSort,
|
|
sortOptions,
|
|
userRole,
|
|
totalPages,
|
|
selectedItems,
|
|
showSelectBoxes,
|
|
onToggleSelect,
|
|
onDeleteSelected,
|
|
onGoToPage,
|
|
onPrevPage,
|
|
onNextPage,
|
|
} = useBoardList<WadizBoard>(currentCollection, {
|
|
title: compData.title,
|
|
itemsPerPage: compData.itemsPerPage,
|
|
defaultSort: compData.defaultSort,
|
|
access: access,
|
|
loadingMessage: loading,
|
|
});
|
|
|
|
// no more fetchBoardsAndUpdateItems or onBeforeMount
|
|
</script>
|