diff --git a/src/composables/getWeekdays.js b/src/composables/getWeekdays.js
new file mode 100644
index 000000000..d619103da
--- /dev/null
+++ b/src/composables/getWeekdays.js
@@ -0,0 +1,10 @@
+import { ref } from 'vue';
+import moment from 'moment';
+
+export default function useWeekdaysOrder() {
+
+ const firstDay = moment().weekday(1).day();
+ const weekdays = [...Array(7).keys()].map(i => (i + firstDay) % 7);
+
+ return ref(weekdays);
+}
diff --git a/src/css/app.scss b/src/css/app.scss
index dd5dbe247..351eeb599 100644
--- a/src/css/app.scss
+++ b/src/css/app.scss
@@ -343,3 +343,20 @@ input::-webkit-inner-spin-button {
.q-item__section--main ~ .q-item__section--side {
padding-inline: 0;
}
+
+.calendars-header {
+ height: 45px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ background-color: $primary;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+.calendars-container {
+ max-width: 800px;
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-evenly;
+}
\ No newline at end of file
diff --git a/src/pages/Entry/EntryPreAccount.vue b/src/pages/Entry/EntryPreAccount.vue
index cda2ffd5e..26683b6f4 100644
--- a/src/pages/Entry/EntryPreAccount.vue
+++ b/src/pages/Entry/EntryPreAccount.vue
@@ -133,6 +133,7 @@ const columns = computed(() => [
label: null,
name: 'supplierFk',
class: 'fit',
+ event: 'update',
},
},
{
@@ -472,6 +473,6 @@ en:
es:
IntraCommunity: Intracomunitaria
NonCommunity: Extracomunitaria
- CanaryIsland: Islas Canarias
+ CanaryIslands: Islas Canarias
National: Nacional
diff --git a/src/pages/Route/Vehicle/Card/VehicleEventInclusionForm.vue b/src/pages/Route/Vehicle/Card/VehicleEventInclusionForm.vue
new file mode 100644
index 000000000..06141736c
--- /dev/null
+++ b/src/pages/Route/Vehicle/Card/VehicleEventInclusionForm.vue
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ deleteVehicleEvent(),
+ )
+ "
+ />
+
+
+
+
+
+
+ es:
+ Started: Inicio
+ Finished: Fin
+ Add vehicle event: Agregar evento
+ Edit vehicle event: Editar evento
+
diff --git a/src/pages/Route/Vehicle/Card/VehicleEvents.vue b/src/pages/Route/Vehicle/Card/VehicleEvents.vue
new file mode 100644
index 000000000..5a90c9586
--- /dev/null
+++ b/src/pages/Route/Vehicle/Card/VehicleEvents.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('eventsInclusionForm.addEvent') }}
+
+
+
+
diff --git a/src/pages/Route/Vehicle/Card/VehicleEventsPanel.vue b/src/pages/Route/Vehicle/Card/VehicleEventsPanel.vue
new file mode 100644
index 000000000..e3f22e93b
--- /dev/null
+++ b/src/pages/Route/Vehicle/Card/VehicleEventsPanel.vue
@@ -0,0 +1,196 @@
+
+
+
+
+
+ {{
+ t('eventsPanel.events')
+ }}
+
+
+
+
+ ({{ toDateFormat(event.started) }} -
+ {{ toDateFormat(event.finished) }})
+
+ {{ t('globals.description') }}:
+ {{
+ dashIfEmpty(event.description)
+ }}
+
+ {{ t('globals.state') }}:
+ {{
+ getVehicleStateName(event.vehicleStateFk).state
+ }}
+
+
+
+ deleteEvent(event.id),
+ )
+ "
+ >
+ {{ t('eventsPanel.delete') }}
+
+
+
+
+ {{ t('globals.noResults') }}
+
+
+
+
+
+
diff --git a/src/pages/Route/Vehicle/VehicleCalendar.vue b/src/pages/Route/Vehicle/VehicleCalendar.vue
new file mode 100644
index 000000000..681bb966a
--- /dev/null
+++ b/src/pages/Route/Vehicle/VehicleCalendar.vue
@@ -0,0 +1,13 @@
+
+
+
+ emit('onDateSelected', e)"
+ />
+
\ No newline at end of file
diff --git a/src/pages/Route/Vehicle/VehicleCalendarGrid.vue b/src/pages/Route/Vehicle/VehicleCalendarGrid.vue
new file mode 100644
index 000000000..99b6602c8
--- /dev/null
+++ b/src/pages/Route/Vehicle/VehicleCalendarGrid.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/Route/Vehicle/locale/en.yml b/src/pages/Route/Vehicle/locale/en.yml
index af6f78fd1..aa1c6d185 100644
--- a/src/pages/Route/Vehicle/locale/en.yml
+++ b/src/pages/Route/Vehicle/locale/en.yml
@@ -15,6 +15,8 @@ vehicle:
remove: Vehicle removed
search: Search Vehicle
searchInfo: Search by id or number plate
+ deleteTitle: This item will be deleted
+ deleteSubtitle: Are you sure you want to continue?
params:
vehicleTypeFk: Type
vehicleStateFk: State
diff --git a/src/pages/Route/Vehicle/locale/es.yml b/src/pages/Route/Vehicle/locale/es.yml
index 9fd0d3e91..463784c55 100644
--- a/src/pages/Route/Vehicle/locale/es.yml
+++ b/src/pages/Route/Vehicle/locale/es.yml
@@ -15,6 +15,8 @@ vehicle:
remove: Vehículo eliminado
search: Buscar Vehículo
searchInfo: Buscar por id o matrícula
+ deleteTitle: Este elemento será eliminado
+ deleteSubtitle: ¿Seguro que quieres continuar?
params:
vehicleTypeFk: Tipo
vehicleStateFk: Estado
diff --git a/src/pages/Worker/Card/WorkerCalendarItem.vue b/src/pages/Worker/Card/WorkerCalendarItem.vue
index 86d227ad3..071fa06be 100644
--- a/src/pages/Worker/Card/WorkerCalendarItem.vue
+++ b/src/pages/Worker/Card/WorkerCalendarItem.vue
@@ -11,6 +11,7 @@ import '@quasar/quasar-ui-qcalendar/src/QCalendarVariables.scss';
import { useWeekdayStore } from 'src/stores/useWeekdayStore';
import useNotify from 'src/composables/useNotify.js';
import axios from 'axios';
+import useWeekdaysOrder from 'src/composables/getWeekdays';
const props = defineProps({
year: {
@@ -44,6 +45,7 @@ const { locale } = useI18n();
const calendarRef = ref(null);
const weekdayStore = useWeekdayStore();
+const weekDays = useWeekdaysOrder();
const selectedDate = ref();
const calendarEventDates = [];
const today = ref(date.formatDate(Date.vnNew(), 'YYYY-MM-DD'));
@@ -182,7 +184,7 @@ watch(_year, (newValue) => {
no-outside-days
:selected-dates="calendarEventDates"
no-active-date
- :weekdays="[1, 2, 3, 4, 5, 6, 0]"
+ :weekdays="weekDays"
short-weekday-label
:locale="locale"
:now="today"
diff --git a/src/pages/Worker/Card/WorkerTimeControlCalendar.vue b/src/pages/Worker/Card/WorkerTimeControlCalendar.vue
index 46ae4b698..e9b9cc915 100644
--- a/src/pages/Worker/Card/WorkerTimeControlCalendar.vue
+++ b/src/pages/Worker/Card/WorkerTimeControlCalendar.vue
@@ -4,6 +4,8 @@ import { useI18n } from 'vue-i18n';
import { QCalendarMonth } from '@quasar/quasar-ui-qcalendar/src/index.js';
import QCalendarMonthWrapper from 'src/components/ui/QCalendarMonthWrapper.vue';
+import useWeekdaysOrder from 'src/composables/getWeekdays';
+
const $props = defineProps({
modelValue: {
type: String,
@@ -32,6 +34,7 @@ const emit = defineEmits(['update:modelValue', 'clickDate', 'onMoved']);
const { locale } = useI18n();
const calendarRef = ref(null);
+const weekDays = useWeekdaysOrder();
const stateClasses = {
CONFIRMED: {
@@ -135,7 +138,7 @@ const paintWorkWeeks = async () => {
ref="calendarRef"
v-model="value"
show-work-weeks
- :weekdays="[1, 2, 3, 4, 5, 6, 0]"
+ :weekdays="weekDays"
:selected-dates="selectedDates"
:min-weekday-label="1"
:locale="locale"
diff --git a/src/pages/Zone/ZoneCalendar.vue b/src/pages/Zone/ZoneCalendar.vue
index 7cae59698..c2c66d753 100644
--- a/src/pages/Zone/ZoneCalendar.vue
+++ b/src/pages/Zone/ZoneCalendar.vue
@@ -10,6 +10,7 @@ import { QCalendarMonth } from '@quasar/quasar-ui-qcalendar/src/index.js';
import '@quasar/quasar-ui-qcalendar/src/QCalendarVariables.scss';
import { useWeekdayStore } from 'src/stores/useWeekdayStore';
+import useWeekdaysOrder from 'src/composables/getWeekdays';
import axios from 'axios';
const props = defineProps({
@@ -46,6 +47,7 @@ const route = useRoute();
const calendarRef = ref(null);
const weekdayStore = useWeekdayStore();
+const weekDays = useWeekdaysOrder();
const showZoneClosingTable = ref(false);
const zoneClosingData = ref(null);
const today = ref(date.formatDate(Date.vnNew(), 'YYYY-MM-DD'));
@@ -161,7 +163,7 @@ const handleDateClick = (timestamp) => {
show-work-weeks
no-outside-days
no-active-date
- :weekdays="[1, 2, 3, 4, 5, 6, 0]"
+ :weekdays="weekDays"
short-weekday-label
:locale="locale"
:now="today"
diff --git a/src/pages/Zone/ZoneCalendarGrid.vue b/src/pages/Zone/ZoneCalendarGrid.vue
index 1ef687b3f..026b15735 100644
--- a/src/pages/Zone/ZoneCalendarGrid.vue
+++ b/src/pages/Zone/ZoneCalendarGrid.vue
@@ -229,22 +229,3 @@ onUnmounted(() => arrayData.destroy());