diff --git a/app/javascript/dashboard/api/captain/document.js b/app/javascript/dashboard/api/captain/document.js index 165fa79b6..dc22b0c32 100644 --- a/app/javascript/dashboard/api/captain/document.js +++ b/app/javascript/dashboard/api/captain/document.js @@ -6,11 +6,12 @@ class CaptainDocument extends ApiClient { super('captain/documents', { accountScoped: true }); } - get({ page = 1, searchKey } = {}) { + get({ page = 1, searchKey, assistantId } = {}) { return axios.get(this.url, { params: { page, searchKey, + assistant_id: assistantId, }, }); } diff --git a/app/javascript/dashboard/components-next/captain/pageComponents/AssistantSelector.vue b/app/javascript/dashboard/components-next/captain/pageComponents/AssistantSelector.vue new file mode 100644 index 000000000..4998e4044 --- /dev/null +++ b/app/javascript/dashboard/components-next/captain/pageComponents/AssistantSelector.vue @@ -0,0 +1,68 @@ + + + diff --git a/app/javascript/dashboard/routes/dashboard/captain/documents/Index.vue b/app/javascript/dashboard/routes/dashboard/captain/documents/Index.vue index 5dca1e6d9..44850c5af 100644 --- a/app/javascript/dashboard/routes/dashboard/captain/documents/Index.vue +++ b/app/javascript/dashboard/routes/dashboard/captain/documents/Index.vue @@ -7,7 +7,8 @@ import DocumentCard from 'dashboard/components-next/captain/assistant/DocumentCa import PageLayout from 'dashboard/components-next/captain/PageLayout.vue'; import Spinner from 'dashboard/components-next/spinner/Spinner.vue'; import RelatedResponses from 'dashboard/components-next/captain/pageComponents/document/RelatedResponses.vue'; -import CreateDocumentDialog from '../../../../components-next/captain/pageComponents/document/CreateDocumentDialog.vue'; +import CreateDocumentDialog from 'dashboard/components-next/captain/pageComponents/document/CreateDocumentDialog.vue'; +import AssistantSelector from 'dashboard/components-next/captain/pageComponents/AssistantSelector.vue'; const store = useStore(); const uiFlags = useMapGetter('captainDocuments/getUIFlags'); @@ -15,6 +16,7 @@ const documents = useMapGetter('captainDocuments/getRecords'); const assistants = useMapGetter('captainAssistants/getRecords'); const isFetching = computed(() => uiFlags.value.fetchingList); const documentsMeta = useMapGetter('captainDocuments/getMeta'); +const selectedAssistant = ref('all'); const selectedDocument = ref(null); const deleteDocumentDialog = ref(null); @@ -60,7 +62,17 @@ const handleAction = ({ action, id }) => { }; const fetchDocuments = (page = 1) => { - store.dispatch('captainDocuments/get', { page }); + const filterParams = { page }; + + if (selectedAssistant.value !== 'all') { + filterParams.assistantId = selectedAssistant.value; + } + store.dispatch('captainDocuments/get', filterParams); +}; + +const handleAssistantFilterChange = assistant => { + selectedAssistant.value = assistant; + fetchDocuments(); }; const onPageChange = page => fetchDocuments(page); @@ -83,6 +95,12 @@ onMounted(() => { @update:current-page="onPageChange" @click="handleCreateDocument" > +
+ +
['all', 'pending', 'approved'].map(key => ({ @@ -49,29 +49,6 @@ const selectedStatusLabel = computed(() => { }); }); -const assistants = useMapGetter('captainAssistants/getRecords'); -const assistantOptions = computed(() => [ - { - label: t(`CAPTAIN.RESPONSES.FILTER.ALL_ASSISTANTS`), - value: 'all', - action: 'filter', - }, - ...assistants.value.map(assistant => ({ - value: assistant.id, - label: assistant.name, - action: 'filter', - })), -]); - -const selectedAssistantLabel = computed(() => { - const assistant = assistantOptions.value.find( - option => option.value === selectedAssistant.value - ); - return t('CAPTAIN.RESPONSES.FILTER.ASSISTANT', { - selected: assistant ? assistant.label : '', - }); -}); - const handleDelete = () => { deleteDialog.value.dialogRef.open(); }; @@ -122,14 +99,14 @@ const handleCreateClose = () => { }; const fetchResponses = (page = 1) => { - const filterParams = {}; + const filterParams = { page }; if (selectedStatus.value !== 'all') { filterParams.status = selectedStatus.value; } if (selectedAssistant.value !== 'all') { filterParams.assistantId = selectedAssistant.value; } - store.dispatch('captainResponses/get', { page, ...filterParams }); + store.dispatch('captainResponses/get', page); }; const onPageChange = page => fetchResponses(page); @@ -140,9 +117,8 @@ const handleStatusFilterChange = ({ value }) => { fetchResponses(); }; -const handleAssistantFilterChange = ({ value }) => { - selectedAssistant.value = value; - isAssistantFilterOpen.value = false; +const handleAssistantFilterChange = assistant => { + selectedAssistant.value = assistant; fetchResponses(); }; @@ -181,25 +157,10 @@ onMounted(() => { @action="handleStatusFilterChange" /> - - -