diff --git a/src/i18n/en-ca/index.ts b/src/i18n/en-ca/index.ts
index 61cd1d9..10ac12f 100644
--- a/src/i18n/en-ca/index.ts
+++ b/src/i18n/en-ca/index.ts
@@ -21,9 +21,13 @@ export default {
access_label: "access",
details_label: "details",
schedule_label: "schedule",
+ enter_delete_input: "type 'DELETE' to remove",
schedule_presets: {
preset_list_placeholder: "Select a schedule",
preset_name_placeholder: "schedule preset name",
+ delete_warning: "",
+ delete_warning_employee_1: "This schedule is used by",
+ delete_warning_employee_2: "Deleting this preset will not affect previous timesheets, but they will no longer be able to apply this preset to their timesheets going forward.",
},
module_access: {
dashboard: "Dashboard",
diff --git a/src/i18n/fr-ca/index.ts b/src/i18n/fr-ca/index.ts
index 402646e..459feab 100644
--- a/src/i18n/fr-ca/index.ts
+++ b/src/i18n/fr-ca/index.ts
@@ -21,9 +21,13 @@ export default {
access_label: "accès",
details_label: "détails",
schedule_label: "horaire",
+ enter_delete_input: "tappez 'SUPPRIMER' pour confirmer",
schedule_presets: {
preset_list_placeholder: "Sélectionner un horaire",
preset_name_placeholder: "nom de l'horaire",
+ delete_warning: "Êtes-vous certain de vouloir supprimer cet horaire?",
+ delete_warning_employee_1: "Cet horaire est présentement utilisé par",
+ delete_warning_employee_2: "La suppression n'affectera pas leurs feuilles de temps antérieures, mais ils ne pourront plus appliquer cet horaire à leurs feuilles de temps à partir de maintenant.",
},
module_access: {
dashboard: "Accueil",
diff --git a/src/modules/employee-list/components/add-modify-dialog-schedule-preview.vue b/src/modules/employee-list/components/add-modify-dialog-schedule-preview.vue
index 65c761a..631909e 100644
--- a/src/modules/employee-list/components/add-modify-dialog-schedule-preview.vue
+++ b/src/modules/employee-list/components/add-modify-dialog-schedule-preview.vue
@@ -2,7 +2,7 @@
setup
lang="ts"
>
- import { date } from 'quasar';
+ // import { date } from 'quasar';
import { useSchedulePresetsStore } from 'src/stores/schedule-presets.store';
const schedule_preset_store = useSchedulePresetsStore();
@@ -27,7 +27,7 @@ import { useSchedulePresetsStore } from 'src/stores/schedule-presets.store';
{{
$t(`shared.weekday.${weekday.day.toLowerCase()}`) }}
diff --git a/src/modules/employee-list/components/add-modify-dialog-schedule.vue b/src/modules/employee-list/components/add-modify-dialog-schedule.vue
index 237d286..2cf2c51 100644
--- a/src/modules/employee-list/components/add-modify-dialog-schedule.vue
+++ b/src/modules/employee-list/components/add-modify-dialog-schedule.vue
@@ -3,13 +3,14 @@
lang="ts"
>
import HorizontalSlideTransition from 'src/modules/shared/components/horizontal-slide-transition.vue';
- import SchedulePresetsDialog from 'src/modules/employee-list/components/schedule_presets_dialog.vue';
+ import SchedulePresetsDialog from 'src/modules/employee-list/components/schedule-presets-dialog.vue';
import AddModifyDialogSchedulePreview from './add-modify-dialog-schedule-preview.vue';
- import { onMounted, ref } from 'vue';
+ import { onMounted, ref, watch } from 'vue';
import { useSchedulePresetsStore } from 'src/stores/schedule-presets.store';
import { useEmployeeStore } from 'src/stores/employee-store';
-import { useEmployeeListApi } from '../composables/use-employee-api';
+ import { useEmployeeListApi } from '../composables/use-employee-api';
+ import type { PresetManagerMode } from 'src/modules/employee-list/models/schedule-presets.models';
const schedule_preset_store = useSchedulePresetsStore();
const employee_store = useEmployeeStore();
@@ -17,6 +18,7 @@ import { useEmployeeListApi } from '../composables/use-employee-api';
const preset_options = ref<{ label: string, value: number }[]>([]);
const current_preset = ref<{ label: string | undefined, value: number }>({ label: undefined, value: -1 });
+ const manager_watcher = ref(schedule_preset_store.is_manager_open);
const getPresetOptions = (): { label: string, value: number }[] => {
const options = schedule_preset_store.schedule_presets.map(preset => { return { label: preset.name, value: preset.id } });
@@ -24,16 +26,31 @@ import { useEmployeeListApi } from '../composables/use-employee-api';
return options;
};
- onMounted(() => {
+ const onClickSchedulePresetManager = (mode: PresetManagerMode, preset_id?: number) => {
+ schedule_preset_store.schedule_preset_dialog_mode = mode;
+ console.log('preset id: ', preset_id);
+ schedule_preset_store.openSchedulePresetManager(preset_id ?? current_preset.value.value);
+ }
+
+ const loadSelectedPresetOption = () => {
preset_options.value = getPresetOptions();
const current_option = preset_options.value.find(option => option.value === employee_store.employee.preset_id);
current_preset.value = current_option ?? { label: undefined, value: -1 };
schedule_preset_store.setCurrentSchedulePreset(current_preset.value.value);
+ };
+
+ onMounted(() => {
+ loadSelectedPresetOption();
});
+
+ watch(manager_watcher, loadSelectedPresetOption)
-
+
@@ -72,26 +89,31 @@ import { useEmployeeListApi } from '../composables/use-employee-api';
icon="add"
color="accent"
class="col-auto q-px-sm q-ml-sm"
- @click="schedule_preset_store.openSchedulePresetManager(-1)"
+ @click="onClickSchedulePresetManager('create', -1)"
/>
-
+
-
+
+
+
diff --git a/src/modules/employee-list/components/schedule-presets-dialog-delete.vue b/src/modules/employee-list/components/schedule-presets-dialog-delete.vue
new file mode 100644
index 0000000..23e82b7
--- /dev/null
+++ b/src/modules/employee-list/components/schedule-presets-dialog-delete.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+ {{ $t('shared.label.remove') }}
+
+
+
+ {{ $t('employee_management.schedule_presets.delete_warning_employee_1') }}
+ {{ employee_amount_using_preset
+ }}
+ {{ $t('employee_management.module_access.preset_employee') +
+ (employee_amount_using_preset > 1 ? 's' : '') }}
+ {{ $t('employee_management.schedule_presets.delete_warning_employee_2') }}
+
+
+
+ {{ $t('employee_management.schedule_presets.delete_warning')
+ }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/modules/employee-list/components/schedule_presets_dialog.vue b/src/modules/employee-list/components/schedule-presets-dialog.vue
similarity index 90%
rename from src/modules/employee-list/components/schedule_presets_dialog.vue
rename to src/modules/employee-list/components/schedule-presets-dialog.vue
index 0d33281..bef33f2 100644
--- a/src/modules/employee-list/components/schedule_presets_dialog.vue
+++ b/src/modules/employee-list/components/schedule-presets-dialog.vue
@@ -3,6 +3,7 @@
lang="ts"
>
import SchedulePresetsDialogRow from './schedule-presets-dialog-row.vue';
+ import SchedulePresetsDialogDelete from 'src/modules/employee-list/components/schedule-presets-dialog-delete.vue';
import { useEmployeeListApi } from '../composables/use-employee-api';
import { SchedulePresetShift } from '../models/schedule-presets.models';
@@ -17,7 +18,13 @@
v-model="schedule_preset_store.is_manager_open"
full-width
>
+
+
diff --git a/src/modules/employee-list/composables/use-employee-api.ts b/src/modules/employee-list/composables/use-employee-api.ts
index fb37bd3..97d293f 100644
--- a/src/modules/employee-list/composables/use-employee-api.ts
+++ b/src/modules/employee-list/composables/use-employee-api.ts
@@ -37,8 +37,16 @@ export const useEmployeeListApi = () => {
else success = await schedule_preset_store.updateSchedulePreset(backend_preset);
if (success) {
- schedule_preset_store.is_manager_open = false;
await schedule_preset_store.findSchedulePresetList();
+ schedule_preset_store.is_manager_open = false;
+ }
+ }
+
+ const deleteSchedulePreset = async(preset_id: number) => {
+ const success = await schedule_preset_store.deleteSchedulePreset(preset_id);
+ if (success) {
+ await schedule_preset_store.findSchedulePresetList();
+ schedule_preset_store.is_manager_open = false;
}
}
@@ -47,5 +55,6 @@ export const useEmployeeListApi = () => {
getEmployeeDetails,
setSchedulePreset,
saveSchedulePreset,
+ deleteSchedulePreset,
};
};
\ No newline at end of file
diff --git a/src/modules/employee-list/models/schedule-presets.models.ts b/src/modules/employee-list/models/schedule-presets.models.ts
index 58696fe..ffd5b15 100644
--- a/src/modules/employee-list/models/schedule-presets.models.ts
+++ b/src/modules/employee-list/models/schedule-presets.models.ts
@@ -2,7 +2,9 @@ import type { ShiftType } from "src/modules/timesheets/models/shift.models";
export type Weekday = 'SUN' | 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT';
-export const WEEKDAYS: Weekday[] = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']
+export const WEEKDAYS: Weekday[] = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];
+
+export type PresetManagerMode = 'create' | 'update' | 'copy' | 'delete';
export class SchedulePreset {
id: number;
diff --git a/src/modules/employee-list/services/schedule-presets-service.ts b/src/modules/employee-list/services/schedule-presets-service.ts
index bc000d9..b288363 100644
--- a/src/modules/employee-list/services/schedule-presets-service.ts
+++ b/src/modules/employee-list/services/schedule-presets-service.ts
@@ -13,7 +13,7 @@ export const SchedulePresetsService = {
return response.data;
},
- deleteSchedulePresets: async (preset_id: number) => {
+ deleteSchedulePresets: async (preset_id: number): Promise
> => {
const response = await api.delete(`/schedule-presets/delete/${preset_id}`);
return response.data;
},
diff --git a/src/pages/dashboard-page.vue b/src/pages/dashboard-page.vue
index 0c502fe..6071010 100644
--- a/src/pages/dashboard-page.vue
+++ b/src/pages/dashboard-page.vue
@@ -5,6 +5,10 @@
import { ref } from 'vue';
import { Notify } from 'quasar';
+ const click_number = ref(1);
+ const icon = ref('las la-hand-peace');
+ const color = ref('accent');
+
const LOREM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et \
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip \
ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu \
@@ -14,10 +18,22 @@
const slide = ref('welcome');
const clickNotify = () => {
+ if (click_number.value % 7 === 0) {
+ icon.value = 'las la-hand-middle-finger';
+ color.value = 'negative';
+ }
+ else {
+ icon.value = 'las la-hand-peace';
+ color.value = 'accent';
+ }
Notify.create({
- message: 'You clicked the little click button!',
- color: 'info'
- })
+ color: color.value,
+ icon: icon.value,
+ iconSize: '5em',
+ iconColor: 'white',
+ });
+
+ click_number.value += 1;
}
diff --git a/src/stores/schedule-presets.store.ts b/src/stores/schedule-presets.store.ts
index 434db22..267ba84 100644
--- a/src/stores/schedule-presets.store.ts
+++ b/src/stores/schedule-presets.store.ts
@@ -2,12 +2,13 @@
import { ref } from "vue";
import { defineStore } from "pinia";
import { SchedulePresetsService } from "src/modules/employee-list/services/schedule-presets-service";
-import { SchedulePreset, SchedulePresetFrontend } from "src/modules/employee-list/models/schedule-presets.models";
+import { type PresetManagerMode, SchedulePreset, SchedulePresetFrontend } from "src/modules/employee-list/models/schedule-presets.models";
export const useSchedulePresetsStore = defineStore('schedule_presets_store', () => {
const schedule_presets = ref([new SchedulePreset]);
const current_schedule_preset = ref(new SchedulePresetFrontend);
+ const schedule_preset_dialog_mode = ref('create');
const is_manager_open = ref(false);
const openSchedulePresetManager = (preset_id: number) => {
@@ -51,11 +52,11 @@ export const useSchedulePresetsStore = defineStore('schedule_presets_store', ()
const deleteSchedulePreset = async (preset_id: number): Promise => {
try {
- await SchedulePresetsService.deleteSchedulePresets(preset_id);
- return true;
+ const response = await SchedulePresetsService.deleteSchedulePresets(preset_id);
+ return response.success;
} catch (error) {
console.error('DEV ERROR || error while deleting schedule preset: ', error);
- return false
+ return false;
}
};
@@ -84,6 +85,7 @@ export const useSchedulePresetsStore = defineStore('schedule_presets_store', ()
return {
schedule_presets,
current_schedule_preset,
+ schedule_preset_dialog_mode,
is_manager_open,
setCurrentSchedulePreset,
openSchedulePresetManager,