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"
/>
-
-
-
-
-
-
+