From 6c43dfea18a690c9410de8290e30170339576d98 Mon Sep 17 00:00:00 2001 From: KerollesFathy Date: Wed, 24 Sep 2025 14:22:07 +0000 Subject: [PATCH] feat: Add work mode filter and selection to job opportunities --- frontend/src/pages/Jobs.vue | 28 ++++++++++++++++++++++++++++ lms/lms/api.py | 2 ++ 2 files changed, 30 insertions(+) diff --git a/frontend/src/pages/Jobs.vue b/frontend/src/pages/Jobs.vue index a5363fc7..1bf7e7e6 100644 --- a/frontend/src/pages/Jobs.vue +++ b/frontend/src/pages/Jobs.vue @@ -65,6 +65,15 @@ :placeholder="__('Type')" @change="updateJobs" /> + +
@@ -103,6 +112,7 @@ import EmptyState from '@/components/EmptyState.vue' const user = inject('$user') const jobType = ref(null) +const workMode = ref(null) const { brand } = sessionStore() const searchQuery = ref('') const country = ref(null) @@ -116,6 +126,9 @@ onMounted(() => { if (queries.has('type')) { jobType.value = queries.get('type') } + if (queries.has('work_mode')) { + workMode.value = queries.get('work_mode') + } updateJobs() }) @@ -145,6 +158,12 @@ const updateFilters = () => { delete filters.value.type } + if (workMode.value) { + filters.value.work_mode = workMode.value + } else { + delete filters.value.work_mode + } + if (searchQuery.value) { orFilters.value = { job_title: ['like', `%${searchQuery.value}%`], @@ -180,6 +199,15 @@ const jobTypes = computed(() => { ] }) +const workModes = computed(() => { + return [ + '', + { label: 'On site', value: 'On-site' }, + { label: 'Hybrid', value: 'Hybrid' }, + { label: 'Remote', value: 'Remote' }, + ] +}) + usePageMeta(() => { return { title: __('Jobs'), diff --git a/lms/lms/api.py b/lms/lms/api.py index f962bd47..3ceedc90 100644 --- a/lms/lms/api.py +++ b/lms/lms/api.py @@ -253,6 +253,7 @@ def get_job_details(job): "location", "country", "type", + "work_mode", "company_name", "company_logo", "company_website", @@ -279,6 +280,7 @@ def get_job_opportunities(filters=None, orFilters=None): "location", "country", "type", + "work_mode", "company_name", "company_logo", "name",