From f33ca127faa761c7d95074f7fa22eca02816ce5d Mon Sep 17 00:00:00 2001 From: Nicolas Drolet Date: Thu, 14 Aug 2025 17:03:51 -0400 Subject: [PATCH] refactor(employees): finish connection to backend api, design cards to display employees, fine-tunning element placement --- src/i18n/en-ca/index.ts | 7 ++- src/i18n/fr-ca/index.ts | 7 ++- src/layouts/main-layout.vue | 2 +- .../supervisor/supervisor-crew-table-item.vue | 35 +++++++++++++ .../supervisor/supervisor-crew-table.vue | 52 +++++++++++-------- .../composables/use-employee-api.ts | 11 +--- .../pages/supervisor-crew-page.vue | 6 +-- .../services/services-employee-list.ts | 6 +-- .../types/employee-list-table-interface.ts | 3 +- ...esheet-approval-employee-overview-list.vue | 2 +- src/pages/test-page.vue | 2 +- src/stores/employee-store.ts | 10 ++-- 12 files changed, 90 insertions(+), 53 deletions(-) diff --git a/src/i18n/en-ca/index.ts b/src/i18n/en-ca/index.ts index 6e48610..77ddbae 100644 --- a/src/i18n/en-ca/index.ts +++ b/src/i18n/en-ca/index.ts @@ -140,16 +140,15 @@ export default { card_4: 'Customers', }, usersListPage: { - tableHeader: 'Users list', + tableHeader: 'Employee list', searchInput: 'Search', - UserListFirstName: 'First name', + userListFirstName: 'First name', userListLastName: 'Last name', userListEmail: 'Email', userListPhone: 'Phone number', userListRole: 'Role', userListSupervisor: 'Supervisor', - activeStatus: 'Active', - unActiveStatus: 'Unactive', + userListCompany: 'Company', addButton: 'Click here to add a new user', customer: 'Customer', dealer: 'Dealer', diff --git a/src/i18n/fr-ca/index.ts b/src/i18n/fr-ca/index.ts index c675590..ba465c4 100644 --- a/src/i18n/fr-ca/index.ts +++ b/src/i18n/fr-ca/index.ts @@ -372,16 +372,15 @@ export default { unlockToolTip: 'Déverrouiller la semaine', }, usersListPage: { - tableHeader: 'Liste d`employées', + tableHeader: 'Liste d’employées', searchInput: 'rechercher', - UserListFirstName: 'prénom', + userListFirstName: 'prénom', userListLastName: 'nom de famille', userListEmail: 'courriel', userListPhone: '# téléphone', userListRole: 'rôle', userListSupervisor: 'superviseur', - activeStatus: 'Actif', - unActiveStatus: 'Inactif', + userListCompany: 'Compagnie', addButton: 'Cliquez ici pour ajouter un nouvel utilisateur', customer: 'Client', dealer: 'Marchand', diff --git a/src/layouts/main-layout.vue b/src/layouts/main-layout.vue index 517723a..4ea70aa 100644 --- a/src/layouts/main-layout.vue +++ b/src/layouts/main-layout.vue @@ -10,7 +10,7 @@ - + diff --git a/src/modules/employee-list/components/supervisor/supervisor-crew-table-item.vue b/src/modules/employee-list/components/supervisor/supervisor-crew-table-item.vue index e69de29..3a5857d 100644 --- a/src/modules/employee-list/components/supervisor/supervisor-crew-table-item.vue +++ b/src/modules/employee-list/components/supervisor/supervisor-crew-table-item.vue @@ -0,0 +1,35 @@ + + + + + \ No newline at end of file diff --git a/src/modules/employee-list/components/supervisor/supervisor-crew-table.vue b/src/modules/employee-list/components/supervisor/supervisor-crew-table.vue index 525c5aa..49a9f9b 100644 --- a/src/modules/employee-list/components/supervisor/supervisor-crew-table.vue +++ b/src/modules/employee-list/components/supervisor/supervisor-crew-table.vue @@ -3,8 +3,10 @@ import { computed, onMounted, ref } from 'vue'; import { useEmployeeListApi } from 'src/modules/employee-list/composables/use-employee-api'; import { useEmployeeStore } from 'src/stores/employee-store'; import { useI18n } from 'vue-i18n'; -import type { employeeListTableItem } from '../../types/employee-list-table-interface'; -import { QTableColumn } from 'quasar'; + +import SupervisorCrewTableItem from './supervisor-crew-table-item.vue'; +import type { EmployeeListTableItem } from '../../types/employee-list-table-interface'; +import type { QTableColumn } from 'quasar'; const employeeListApi = useEmployeeListApi(); const employeeStore = useEmployeeStore(); @@ -12,30 +14,36 @@ const isLoadingList = ref(true); const { t } = useI18n(); -const employeeListColumns = computed((): QTableColumn[] => [ - {name: 'first_name', label: t('usersListPage.UserListFirstName'), field: 'first_name'}, - {name: 'last_name', label: 'last name', field: 'last_name'}, - {name: 'supervisor_full_name', label: 'supervisor', field: 'supervisor_full_name'}, - {name: 'company_name', label: 'company', field: 'company_name'}, - {name: 'job_title', label: 'title', field: 'job_title'}, +const employeeListColumns = computed((): QTableColumn[] => [ + {name: 'first_name', label: t('usersListPage.userListFirstName'), field: 'first_name'}, + {name: 'last_name', label: t('usersListPage.userListLastName'), field: 'last_name'}, + {name: 'email', label: t('usersListPage.userListEmail'), field: 'email'}, + {name: 'supervisor_full_name', label: t('usersListPage.userListSupervisor'), field: 'supervisor_full_name'}, + {name: 'company_name', label: t('usersListPage.userListCompany'), field: 'company_name'}, + {name: 'job_title', label: t('usersListPage.userListFirstName'), field: 'job_title'}, ]); - onMounted(async () => { - const response = await employeeListApi.getEmployeeList().catch(err => { - console.log("there was an error on the page fetching employee list: ", err); - }); - - if (response) isLoadingList.value = false; + onMounted( () => { + employeeListApi.getEmployeeList(); + isLoadingList.value = false; }) \ No newline at end of file diff --git a/src/modules/employee-list/composables/use-employee-api.ts b/src/modules/employee-list/composables/use-employee-api.ts index a0857b3..cddc3ac 100644 --- a/src/modules/employee-list/composables/use-employee-api.ts +++ b/src/modules/employee-list/composables/use-employee-api.ts @@ -3,17 +3,10 @@ import { useEmployeeStore } from "src/stores/employee-store"; export const useEmployeeListApi = () => { const employeeListStore = useEmployeeStore(); - const getEmployeeList = async (): Promise => { - const response = await employeeListStore.getEmployeeList().catch(err => { + const getEmployeeList = () => { + employeeListStore.getEmployeeList().catch(err => { console.log("Ran into an API error fetching employee list: ", err); }); - - if (response) { - console.log("employee api retrieved list successfully") - return true; - } else { - return false; - } }; return { diff --git a/src/modules/employee-list/pages/supervisor-crew-page.vue b/src/modules/employee-list/pages/supervisor-crew-page.vue index 62b135a..3b1560c 100644 --- a/src/modules/employee-list/pages/supervisor-crew-page.vue +++ b/src/modules/employee-list/pages/supervisor-crew-page.vue @@ -5,9 +5,9 @@ import SupervisorCrewTable from '../components/supervisor/supervisor-crew-table. \ No newline at end of file diff --git a/src/modules/employee-list/services/services-employee-list.ts b/src/modules/employee-list/services/services-employee-list.ts index 0c9d59c..0bffad4 100644 --- a/src/modules/employee-list/services/services-employee-list.ts +++ b/src/modules/employee-list/services/services-employee-list.ts @@ -1,10 +1,10 @@ // /* eslint-disable */ import { api } from 'src/boot/axios'; -import type { employeeListTableItem } from '../types/employee-list-table-interface'; +import type { EmployeeListTableItem } from '../types/employee-list-table-interface'; export const EmployeeListService = { - getEmployeeList: async (): Promise => { - const res = await api.get('/employees/employee-list'); + getEmployeeList: async (): Promise => { + const res = await api.get('/employees/employee-list'); console.log('response from backend: ', res.data); return res.data; } diff --git a/src/modules/employee-list/types/employee-list-table-interface.ts b/src/modules/employee-list/types/employee-list-table-interface.ts index 7aaf40f..43feb85 100644 --- a/src/modules/employee-list/types/employee-list-table-interface.ts +++ b/src/modules/employee-list/types/employee-list-table-interface.ts @@ -1,6 +1,7 @@ -export interface employeeListTableItem { +export interface EmployeeListTableItem { first_name: string; last_name: string; + email: string; supervisor_full_name: string | null; company_name: number; job_title: string; diff --git a/src/modules/timesheet-approval/components/timesheet-approval-employee-overview-list.vue b/src/modules/timesheet-approval/components/timesheet-approval-employee-overview-list.vue index b63112c..ee23bba 100644 --- a/src/modules/timesheet-approval/components/timesheet-approval-employee-overview-list.vue +++ b/src/modules/timesheet-approval/components/timesheet-approval-employee-overview-list.vue @@ -70,7 +70,7 @@
{{ props.row.employee_name }}
- {{ col.value }} + {{ col.value }} {{ col.label }}
diff --git a/src/pages/test-page.vue b/src/pages/test-page.vue index b5cd91a..5ab28f6 100644 --- a/src/pages/test-page.vue +++ b/src/pages/test-page.vue @@ -12,7 +12,7 @@