lesli_calendar 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/lesli_calendar/application.js +1 -4658
- data/app/assets/stylesheets/lesli_calendar/application.css +1 -574
- data/app/controllers/lesli_calendar/agendas_controller.rb +60 -0
- data/app/helpers/lesli_calendar/agendas_helper.rb +4 -0
- data/app/models/lesli_calendar/agenda.rb +5 -0
- data/app/services/lesli_calendar/calendar_service.rb +13 -1
- data/app/services/lesli_calendar/event_service.rb +12 -12
- data/app/views/lesli_calendar/agendas/edit.html.erb +10 -0
- data/app/views/lesli_calendar/agendas/index.html.erb +14 -0
- data/app/views/lesli_calendar/agendas/new.html.erb +9 -0
- data/app/views/lesli_calendar/agendas/show.html.erb +1 -0
- data/app/views/lesli_calendar/partials/_engine-navigation.html.erb +3 -2
- data/config/locales/translations.en.yml +2 -0
- data/config/locales/translations.es.yml +2 -0
- data/config/locales/translations.fr.yml +2 -0
- data/config/locales/translations.it.yml +2 -0
- data/config/locales/translations.pt.yml +2 -0
- data/config/routes.rb +3 -0
- data/db/migrate/v1.0/0301110110_create_lesli_calendar_events.rb +3 -3
- data/db/seed/development.rb +47 -17
- data/db/seed/seeds.json +83 -0
- data/lib/lesli_calendar/version.rb +2 -2
- data/lib/scss/agenda.scss +101 -0
- data/lib/scss/application.scss +11 -0
- data/lib/scss/calendar.scss +9 -55
- data/lib/scss/dashboard.scss +31 -0
- data/lib/vue/application.js +8 -0
- data/lib/vue/apps/agendas/show.vue +71 -0
- data/lib/vue/apps/calendars/show.vue +26 -20
- data/lib/vue/apps/dashboards/show.vue +102 -0
- data/lib/vue/components/agenda.vue +75 -54
- data/lib/vue/components/calendar.vue +39 -4
- data/lib/vue/stores/calendar.js +3 -26
- data/lib/vue/stores/translations.json +10 -0
- metadata +14 -4
- data/app/views/lesli_calendar/calendars/_calendar.html.erb +0 -2
- data/app/views/lesli_calendar/calendars/_form.html.erb +0 -17
@@ -0,0 +1,71 @@
|
|
1
|
+
<script setup>
|
2
|
+
/*
|
3
|
+
Lesli
|
4
|
+
|
5
|
+
Copyright (c) 2023, Lesli Technologies, S. A.
|
6
|
+
|
7
|
+
This program is free software: you can redistribute it and/or modify
|
8
|
+
it under the terms of the GNU General Public License as published by
|
9
|
+
the Free Software Foundation, either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
This program is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU General Public License
|
18
|
+
along with this program. If not, see http://www.gnu.org/licenses/.
|
19
|
+
|
20
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
21
|
+
|
22
|
+
Made with ♥ by LesliTech
|
23
|
+
Building a better future, one line of code at a time.
|
24
|
+
|
25
|
+
@contact hello@lesli.tech
|
26
|
+
@website https://www.lesli.tech
|
27
|
+
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
28
|
+
|
29
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
30
|
+
// ·
|
31
|
+
*/
|
32
|
+
|
33
|
+
|
34
|
+
// · import vue tools
|
35
|
+
import { ref, reactive, onMounted, watch, computed, inject } from "vue"
|
36
|
+
import { useRouter, useRoute } from "vue-router"
|
37
|
+
|
38
|
+
|
39
|
+
// ·
|
40
|
+
import { useCalendar } from "LesliCalendar/vue/stores/calendar.js"
|
41
|
+
|
42
|
+
|
43
|
+
// ·
|
44
|
+
const storeCalendar = useCalendar()
|
45
|
+
const date = inject("date")
|
46
|
+
|
47
|
+
|
48
|
+
// · Import components
|
49
|
+
import componentCalendar from "LesliCalendar/vue/components/calendar.vue"
|
50
|
+
import componentAgenda from "LesliCalendar/vue/components/agenda.vue"
|
51
|
+
import componentPanelEvent from "LesliCalendar/vue/components/event.vue"
|
52
|
+
|
53
|
+
onMounted(() => {
|
54
|
+
storeCalendar.getCalendar()
|
55
|
+
})
|
56
|
+
|
57
|
+
</script>
|
58
|
+
<template>
|
59
|
+
<lesli-application-container>
|
60
|
+
<lesli-header :title="date.dateWords()">
|
61
|
+
<lesli-button solid icon="add">
|
62
|
+
Add event
|
63
|
+
</lesli-button>
|
64
|
+
</lesli-header>
|
65
|
+
|
66
|
+
<component-agenda>
|
67
|
+
</component-agenda>
|
68
|
+
|
69
|
+
<component-panel-event></component-panel-event>
|
70
|
+
</lesli-application-container>
|
71
|
+
</template>
|
@@ -1,18 +1,32 @@
|
|
1
1
|
<script setup>
|
2
2
|
/*
|
3
|
-
|
3
|
+
Lesli
|
4
4
|
|
5
|
-
|
6
|
-
industrial property, intellectual property, copyright and relative international laws.
|
7
|
-
All intellectual or industrial property rights of the code, texts, trade mark, design,
|
8
|
-
pictures and any other information belongs to the owner of this platform.
|
5
|
+
Copyright (c) 2023, Lesli Technologies, S. A.
|
9
6
|
|
10
|
-
|
11
|
-
|
7
|
+
This program is free software: you can redistribute it and/or modify
|
8
|
+
it under the terms of the GNU General Public License as published by
|
9
|
+
the Free Software Foundation, either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
12
11
|
|
13
|
-
|
12
|
+
This program is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU General Public License for more details.
|
14
16
|
|
15
|
-
|
17
|
+
You should have received a copy of the GNU General Public License
|
18
|
+
along with this program. If not, see http://www.gnu.org/licenses/.
|
19
|
+
|
20
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
21
|
+
|
22
|
+
Made with ♥ by LesliTech
|
23
|
+
Building a better future, one line of code at a time.
|
24
|
+
|
25
|
+
@contact hello@lesli.tech
|
26
|
+
@website https://www.lesli.tech
|
27
|
+
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
28
|
+
|
29
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
16
30
|
// ·
|
17
31
|
*/
|
18
32
|
|
@@ -42,7 +56,7 @@ onMounted(() => {
|
|
42
56
|
|
43
57
|
</script>
|
44
58
|
<template>
|
45
|
-
<lesli-application-container
|
59
|
+
<lesli-application-container>
|
46
60
|
<lesli-header :title="date.dateWords()">
|
47
61
|
<div class="field has-addons m-0">
|
48
62
|
<div class="control">
|
@@ -71,16 +85,8 @@ onMounted(() => {
|
|
71
85
|
</lesli-button>
|
72
86
|
</lesli-header>
|
73
87
|
|
74
|
-
<
|
75
|
-
|
76
|
-
<component-agenda>
|
77
|
-
</component-agenda>
|
78
|
-
</div>
|
79
|
-
<div class="column">
|
80
|
-
<component-calendar class="mt-4">
|
81
|
-
</component-calendar>
|
82
|
-
</div>
|
83
|
-
</div>
|
88
|
+
<component-calendar class="mt-4">
|
89
|
+
</component-calendar>
|
84
90
|
|
85
91
|
<component-panel-event></component-panel-event>
|
86
92
|
</lesli-application-container>
|
@@ -0,0 +1,102 @@
|
|
1
|
+
<script setup>
|
2
|
+
/*
|
3
|
+
Lesli
|
4
|
+
|
5
|
+
Copyright (c) 2023, Lesli Technologies, S. A.
|
6
|
+
|
7
|
+
This program is free software: you can redistribute it and/or modify
|
8
|
+
it under the terms of the GNU General Public License as published by
|
9
|
+
the Free Software Foundation, either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
This program is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU General Public License
|
18
|
+
along with this program. If not, see http://www.gnu.org/licenses/.
|
19
|
+
|
20
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
21
|
+
|
22
|
+
Made with ♥ by LesliTech
|
23
|
+
Building a better future, one line of code at a time.
|
24
|
+
|
25
|
+
@contact hello@lesli.tech
|
26
|
+
@website https://www.lesli.tech
|
27
|
+
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
28
|
+
|
29
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
30
|
+
// ·
|
31
|
+
*/
|
32
|
+
|
33
|
+
|
34
|
+
// · import vue tools
|
35
|
+
import { ref, reactive, onMounted, watch, computed, inject } from "vue"
|
36
|
+
import { useRouter, useRoute } from "vue-router"
|
37
|
+
|
38
|
+
|
39
|
+
// ·
|
40
|
+
import { useCalendar } from "LesliCalendar/vue/stores/calendar.js"
|
41
|
+
|
42
|
+
|
43
|
+
// ·
|
44
|
+
const date = inject("date")
|
45
|
+
const storeCalendar = useCalendar()
|
46
|
+
|
47
|
+
|
48
|
+
// · Import components
|
49
|
+
import componentAgenda from "LesliCalendar/vue/components/agenda.vue"
|
50
|
+
import componentCalendar from "LesliCalendar/vue/components/calendar.vue"
|
51
|
+
import componentPanelEvent from "LesliCalendar/vue/components/event.vue"
|
52
|
+
|
53
|
+
|
54
|
+
// ·
|
55
|
+
onMounted(() => {
|
56
|
+
storeCalendar.getCalendar()
|
57
|
+
})
|
58
|
+
</script>
|
59
|
+
<template>
|
60
|
+
<lesli-application-container dashboard>
|
61
|
+
<lesli-header :title="date.dateWords()">
|
62
|
+
<div class="field has-addons m-0">
|
63
|
+
<div class="control">
|
64
|
+
<lesli-button icon="arrow_back_ios">
|
65
|
+
prev
|
66
|
+
</lesli-button>
|
67
|
+
</div>
|
68
|
+
<div class="control">
|
69
|
+
<lesli-button>
|
70
|
+
today
|
71
|
+
</lesli-button>
|
72
|
+
</div>
|
73
|
+
<div class="control">
|
74
|
+
<button class="button is-primary is-light is-outlined">
|
75
|
+
<span>next</span>
|
76
|
+
<span class="icon">
|
77
|
+
<span class="material-icons">
|
78
|
+
arrow_forward_ios
|
79
|
+
</span>
|
80
|
+
</span>
|
81
|
+
</button>
|
82
|
+
</div>
|
83
|
+
</div>
|
84
|
+
<lesli-button solid icon="add">
|
85
|
+
Add event
|
86
|
+
</lesli-button>
|
87
|
+
</lesli-header>
|
88
|
+
|
89
|
+
<!-- <pre><code>{{ storeCalendar.calendar }}</code></pre> -->
|
90
|
+
|
91
|
+
<div class="columns">
|
92
|
+
<div class="column is-3">
|
93
|
+
<component-agenda></component-agenda>
|
94
|
+
</div>
|
95
|
+
<div class="column">
|
96
|
+
<component-calendar></component-calendar>
|
97
|
+
</div>
|
98
|
+
</div>
|
99
|
+
|
100
|
+
<component-panel-event></component-panel-event>
|
101
|
+
</lesli-application-container>
|
102
|
+
</template>
|
@@ -19,7 +19,7 @@ along with this program. If not, see http://www.gnu.org/licenses/.
|
|
19
19
|
|
20
20
|
Lesli · Ruby on Rails SaaS Development Framework.
|
21
21
|
|
22
|
-
Made with ♥ by
|
22
|
+
Made with ♥ by LesliTech
|
23
23
|
Building a better future, one line of code at a time.
|
24
24
|
|
25
25
|
@contact hello@lesli.tech
|
@@ -34,18 +34,21 @@ Building a better future, one line of code at a time.
|
|
34
34
|
// ·
|
35
35
|
import { onMounted, watch, ref, inject } from "vue"
|
36
36
|
|
37
|
+
|
38
|
+
// ·
|
37
39
|
import dayjs from "dayjs"
|
38
40
|
import isSameOrAfter from "dayjs/plugin/isSameOrAfter"
|
39
|
-
dayjs.extend(isSameOrAfter)
|
40
41
|
|
41
|
-
// ·
|
42
42
|
|
43
|
+
// ·
|
44
|
+
dayjs.extend(isSameOrAfter)
|
43
45
|
|
44
46
|
|
45
47
|
// · import lesli stores
|
46
48
|
import { useCalendar } from "LesliCalendar/vue/stores/calendar"
|
47
49
|
|
48
50
|
|
51
|
+
// ·
|
49
52
|
const date = inject("date")
|
50
53
|
|
51
54
|
|
@@ -58,80 +61,98 @@ const agenda = ref([])
|
|
58
61
|
const today = dayjs()
|
59
62
|
|
60
63
|
|
61
|
-
//
|
62
|
-
function
|
64
|
+
// Function to merge and group events by date
|
65
|
+
function mergeAndGroupEvents() {
|
63
66
|
|
64
|
-
|
65
|
-
|
66
|
-
...storeCalendar.calendarData.events_support
|
67
|
-
]
|
68
|
-
|
69
|
-
let count = 0
|
67
|
+
// Get current date and time
|
68
|
+
const currentDate = dayjs();
|
70
69
|
|
71
|
-
events
|
70
|
+
// Combine events and support events into one array
|
71
|
+
const mergedEvents = [
|
72
|
+
...storeCalendar.calendar.events,
|
73
|
+
...storeCalendar.calendar.events_support
|
74
|
+
];
|
72
75
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
76
|
+
// Filter out past events
|
77
|
+
const filteredEvents = mergedEvents.filter(event => {
|
78
|
+
return !dayjs(event.start).isBefore(currentDate, "day");
|
79
|
+
});
|
80
|
+
|
81
|
+
// Group events by date
|
82
|
+
const groupedEvents = filteredEvents.reduce((acc, event) => {
|
77
83
|
|
78
84
|
let eventDate = dayjs(event.start)
|
79
|
-
|
80
|
-
// Do not process past events
|
81
|
-
if (eventDate.isBefore(today, "day")) {
|
82
|
-
return
|
83
|
-
}
|
84
|
-
|
85
|
-
// show today event description by default
|
86
|
-
event.dayName = "Today"
|
87
|
-
event.dayNumber = eventDate.format("HH:mm")
|
88
|
-
|
89
|
-
// If the event is NOT today, show only the time
|
90
|
-
if (!eventDate.isSame(today, "day")) {
|
91
|
-
event.dayName = eventDate.format("ddd")
|
92
|
-
event.dayNumber = eventDate.format("DD")
|
93
|
-
}
|
94
85
|
|
86
|
+
// Extract date key from event start date
|
87
|
+
const dateKey = eventDate.format('YYYY-MM-DD');
|
88
|
+
|
89
|
+
// Create array for the date key if it doesn't exist
|
90
|
+
if (!acc[dateKey]) {
|
91
|
+
|
92
|
+
let dayName = "Today"
|
93
|
+
let dayNumber = eventDate.format("HH:mm")
|
94
|
+
|
95
|
+
if (!eventDate.isSame(currentDate, "day")) {
|
96
|
+
dayName = eventDate.format("ddd")
|
97
|
+
dayNumber = eventDate.format("DD")
|
98
|
+
}
|
99
|
+
|
100
|
+
acc[dateKey] = {
|
101
|
+
dayName: dayName,
|
102
|
+
dayNumber: dayNumber,
|
103
|
+
events: []
|
104
|
+
}
|
105
|
+
}
|
95
106
|
|
96
107
|
if (event.description) {
|
97
108
|
event.description = event.description
|
98
109
|
.replace(/<[^>]*>?/gm, '') // remove html tags from string
|
99
|
-
.substring(0,
|
110
|
+
.substring(0, 35) + '...' // get a excerpt of the description
|
100
111
|
}
|
101
112
|
|
102
|
-
event
|
113
|
+
// Add event to the array corresponding to its date
|
114
|
+
acc[dateKey].events.push(event);
|
103
115
|
|
104
|
-
|
116
|
+
return acc;
|
117
|
+
}, {});
|
105
118
|
|
106
|
-
|
119
|
+
// Sort the groups by date
|
120
|
+
const sortedGroupedEvents = Object.keys(groupedEvents)
|
121
|
+
.sort()
|
122
|
+
.reduce((acc, key) => {
|
123
|
+
acc[key] = groupedEvents[key];
|
124
|
+
return acc;
|
125
|
+
}, {});
|
107
126
|
|
108
|
-
|
109
|
-
|
110
|
-
events = events.sort((a,b) => a.time > b.time)
|
111
|
-
|
112
|
-
agenda.value = events
|
127
|
+
agenda.value = sortedGroupedEvents;
|
113
128
|
}
|
114
129
|
|
130
|
+
onMounted(() => {
|
131
|
+
mergeAndGroupEvents()
|
132
|
+
})
|
115
133
|
|
116
134
|
// ·
|
117
|
-
watch(() => storeCalendar.
|
135
|
+
watch(() => storeCalendar.calendar.id, (a,b) => {
|
136
|
+
mergeAndGroupEvents()
|
137
|
+
})
|
118
138
|
|
119
139
|
</script>
|
120
140
|
<template>
|
121
|
-
<div class="lesli-calendar-agenda">
|
141
|
+
<div class="lesli-calendar-agenda box">
|
122
142
|
<h3>Upcoming events</h3>
|
123
|
-
<
|
124
|
-
class="is-flex is-align-items-center
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
<
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
143
|
+
<template v-for="day in agenda">
|
144
|
+
<div class="event is-flex is-align-items-center">
|
145
|
+
<div class="date">
|
146
|
+
<p class="day-name">{{ day.dayName }}</p>
|
147
|
+
<p class="day-number">{{ day.dayNumber }}</p>
|
148
|
+
</div>
|
149
|
+
<div class="description">
|
150
|
+
<div :class="event.classNames" v-for="(event, index) in day.events" :key="index">
|
151
|
+
<p>{{ event.title }}</p>
|
152
|
+
<p>{{ event.description }}</p>
|
153
|
+
</div>
|
154
|
+
</div>
|
134
155
|
</div>
|
135
|
-
</
|
156
|
+
</template>
|
136
157
|
</div>
|
137
158
|
</template>
|
@@ -32,7 +32,7 @@ Building a better future, one line of code at a time.
|
|
32
32
|
|
33
33
|
|
34
34
|
// · Import components, libraries and tools
|
35
|
-
import { onMounted, inject, ref } from "vue"
|
35
|
+
import { onMounted, watch, inject, ref } from "vue"
|
36
36
|
|
37
37
|
import { Calendar } from "@fullcalendar/core";
|
38
38
|
import listPlugin from "@fullcalendar/list";
|
@@ -51,6 +51,7 @@ const storeCalendar = useCalendar()
|
|
51
51
|
|
52
52
|
// ·
|
53
53
|
const date = inject("date")
|
54
|
+
const calendar = ref(false)
|
54
55
|
|
55
56
|
|
56
57
|
function onDateClick() {
|
@@ -104,10 +105,37 @@ function onEventContent(args) {
|
|
104
105
|
|
105
106
|
}
|
106
107
|
|
108
|
+
|
109
|
+
function loadEvents() {
|
110
|
+
|
111
|
+
// Add calendar events
|
112
|
+
storeCalendar.calendar.events.forEach(event => {
|
113
|
+
calendar.value.addEvent({
|
114
|
+
title: event.title,
|
115
|
+
start: event.date,
|
116
|
+
description: event.description,
|
117
|
+
classNames: event.classNames
|
118
|
+
})
|
119
|
+
})
|
120
|
+
|
121
|
+
// Add calendar events
|
122
|
+
storeCalendar.calendar.events_support.forEach(event => {
|
123
|
+
calendar.value.addEvent({
|
124
|
+
title: event.title,
|
125
|
+
start: event.date,
|
126
|
+
description: event.description,
|
127
|
+
classNames: event.classNames
|
128
|
+
})
|
129
|
+
})
|
130
|
+
|
131
|
+
}
|
132
|
+
|
133
|
+
|
134
|
+
|
107
135
|
// ·
|
108
136
|
onMounted(() => {
|
109
137
|
|
110
|
-
|
138
|
+
calendar.value = new Calendar(document.getElementById("lesli-calendar"), {
|
111
139
|
plugins: [
|
112
140
|
dayGridPlugin,
|
113
141
|
interactionPlugin,
|
@@ -126,10 +154,17 @@ onMounted(() => {
|
|
126
154
|
//eventContent: onEventContent
|
127
155
|
});
|
128
156
|
|
129
|
-
|
157
|
+
loadEvents()
|
158
|
+
|
159
|
+
setTimeout(() => { calendar.value.render(); }, 200)
|
160
|
+
})
|
130
161
|
|
162
|
+
|
163
|
+
// ·
|
164
|
+
watch(() => storeCalendar.calendar.id, (a,b) => {
|
165
|
+
loadEvents()
|
131
166
|
})
|
132
167
|
</script>
|
133
168
|
<template>
|
134
|
-
<div id="lesli-calendar"></div>
|
169
|
+
<div id="lesli-calendar" class="box"></div>
|
135
170
|
</template>
|
data/lib/vue/stores/calendar.js
CHANGED
@@ -34,8 +34,8 @@ export const useCalendar = defineStore("calendar.calendar", {
|
|
34
34
|
|
35
35
|
return {
|
36
36
|
title: "",
|
37
|
-
calendar: {},
|
38
|
-
|
37
|
+
calendar: { events: [], events_support: [] },
|
38
|
+
calendarObject: {},
|
39
39
|
|
40
40
|
|
41
41
|
|
@@ -94,30 +94,7 @@ export const useCalendar = defineStore("calendar.calendar", {
|
|
94
94
|
|
95
95
|
getCalendar() {
|
96
96
|
this.http.get(this.url.calendar("calendar")).then(result => {
|
97
|
-
this.
|
98
|
-
|
99
|
-
// Add calendar events
|
100
|
-
this.calendarData.events.forEach(event => {
|
101
|
-
this.calendar.addEvent({
|
102
|
-
title: event.title,
|
103
|
-
start: event.date,
|
104
|
-
description: event.description,
|
105
|
-
classNames: event.classNames
|
106
|
-
})
|
107
|
-
})
|
108
|
-
|
109
|
-
return
|
110
|
-
|
111
|
-
this.calendarData.events_support = this.calendarData.events.map(event => {
|
112
|
-
return {
|
113
|
-
title: event.subject,
|
114
|
-
start: event.deadline,
|
115
|
-
ticket: event.id,
|
116
|
-
description: event.description,
|
117
|
-
engine: "lesli-support",
|
118
|
-
classNames: "lesli-support"
|
119
|
-
}
|
120
|
-
})
|
97
|
+
this.calendar = result
|
121
98
|
}).catch(error => {
|
122
99
|
console.log(error)
|
123
100
|
})
|
@@ -20,6 +20,8 @@
|
|
20
20
|
"button_save": "Save",
|
21
21
|
"button_settings": "Settings",
|
22
22
|
"button_show": "Show",
|
23
|
+
"message_operation_error": "Operation failed. Please try again.",
|
24
|
+
"message_operation_success": "Operation completed successfully",
|
23
25
|
"toolbar_search": "Search...",
|
24
26
|
"view_discussions": "Discussions",
|
25
27
|
"view_files": "Files",
|
@@ -50,6 +52,8 @@
|
|
50
52
|
"button_save": "Guardar",
|
51
53
|
"button_settings": "Configuración",
|
52
54
|
"button_show": "Ver",
|
55
|
+
"message_operation_error": "Operación fallida. Por favor, inténtelo de nuevo.",
|
56
|
+
"message_operation_success": "Operacion realizada satisfactoriamente",
|
53
57
|
"toolbar_search": "Buscar...",
|
54
58
|
"view_discussions": "Discusiones",
|
55
59
|
"view_files": "Archivos",
|
@@ -80,6 +84,8 @@
|
|
80
84
|
"button_save": ":lesli.shared.button_save:",
|
81
85
|
"button_settings": ":lesli.shared.button_settings:",
|
82
86
|
"button_show": ":lesli.shared.button_show:",
|
87
|
+
"message_operation_error": ":lesli.shared.message_operation_error:",
|
88
|
+
"message_operation_success": ":lesli.shared.message_operation_success:",
|
83
89
|
"toolbar_search": ":lesli.shared.toolbar_search:",
|
84
90
|
"view_discussions": ":lesli.shared.view_discussions:",
|
85
91
|
"view_files": ":lesli.shared.view_files:",
|
@@ -110,6 +116,8 @@
|
|
110
116
|
"button_save": ":lesli.shared.button_save:",
|
111
117
|
"button_settings": ":lesli.shared.button_settings:",
|
112
118
|
"button_show": ":lesli.shared.button_show:",
|
119
|
+
"message_operation_error": ":lesli.shared.message_operation_error:",
|
120
|
+
"message_operation_success": ":lesli.shared.message_operation_success:",
|
113
121
|
"toolbar_search": ":lesli.shared.toolbar_search:",
|
114
122
|
"view_discussions": ":lesli.shared.view_discussions:",
|
115
123
|
"view_files": ":lesli.shared.view_files:",
|
@@ -140,6 +148,8 @@
|
|
140
148
|
"button_save": ":lesli.shared.button_save:",
|
141
149
|
"button_settings": ":lesli.shared.button_settings:",
|
142
150
|
"button_show": ":lesli.shared.button_show:",
|
151
|
+
"message_operation_error": ":lesli.shared.message_operation_error:",
|
152
|
+
"message_operation_success": ":lesli.shared.message_operation_success:",
|
143
153
|
"toolbar_search": ":lesli.shared.toolbar_search:",
|
144
154
|
"view_discussions": ":lesli.shared.view_discussions:",
|
145
155
|
"view_files": ":lesli.shared.view_files:",
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lesli_calendar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Lesli Development Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -50,10 +50,12 @@ files:
|
|
50
50
|
- app/assets/images/lesli_calendar/calendar-logo.svg
|
51
51
|
- app/assets/javascripts/lesli_calendar/application.js
|
52
52
|
- app/assets/stylesheets/lesli_calendar/application.css
|
53
|
+
- app/controllers/lesli_calendar/agendas_controller.rb
|
53
54
|
- app/controllers/lesli_calendar/application_controller.rb
|
54
55
|
- app/controllers/lesli_calendar/calendars_controller.rb
|
55
56
|
- app/controllers/lesli_calendar/dashboards_controller.rb
|
56
57
|
- app/controllers/lesli_calendar/events_controller.rb
|
58
|
+
- app/helpers/lesli_calendar/agendas_helper.rb
|
57
59
|
- app/helpers/lesli_calendar/application_helper.rb
|
58
60
|
- app/helpers/lesli_calendar/calendars_helper.rb
|
59
61
|
- app/helpers/lesli_calendar/dashboards_helper.rb
|
@@ -61,14 +63,17 @@ files:
|
|
61
63
|
- app/jobs/lesli_calendar/application_job.rb
|
62
64
|
- app/mailers/lesli_calendar/application_mailer.rb
|
63
65
|
- app/models/lesli_calendar/account.rb
|
66
|
+
- app/models/lesli_calendar/agenda.rb
|
64
67
|
- app/models/lesli_calendar/application_record.rb
|
65
68
|
- app/models/lesli_calendar/calendar.rb
|
66
69
|
- app/models/lesli_calendar/dashboard.rb
|
67
70
|
- app/models/lesli_calendar/event.rb
|
68
71
|
- app/services/lesli_calendar/calendar_service.rb
|
69
72
|
- app/services/lesli_calendar/event_service.rb
|
70
|
-
- app/views/lesli_calendar/
|
71
|
-
- app/views/lesli_calendar/
|
73
|
+
- app/views/lesli_calendar/agendas/edit.html.erb
|
74
|
+
- app/views/lesli_calendar/agendas/index.html.erb
|
75
|
+
- app/views/lesli_calendar/agendas/new.html.erb
|
76
|
+
- app/views/lesli_calendar/agendas/show.html.erb
|
72
77
|
- app/views/lesli_calendar/calendars/edit.html.erb
|
73
78
|
- app/views/lesli_calendar/calendars/index.html.erb
|
74
79
|
- app/views/lesli_calendar/calendars/new.html.erb
|
@@ -97,6 +102,7 @@ files:
|
|
97
102
|
- db/migrate/v1.0/0301110110_create_lesli_calendar_events.rb
|
98
103
|
- db/seed/development.rb
|
99
104
|
- db/seed/production.rb
|
105
|
+
- db/seed/seeds.json
|
100
106
|
- db/seed/test.rb
|
101
107
|
- db/seeds.rb
|
102
108
|
- db/tables/0301010210_create_lesli_driver_catalog_event_types.rb
|
@@ -109,11 +115,15 @@ files:
|
|
109
115
|
- lib/lesli_calendar.rb
|
110
116
|
- lib/lesli_calendar/engine.rb
|
111
117
|
- lib/lesli_calendar/version.rb
|
118
|
+
- lib/scss/agenda.scss
|
112
119
|
- lib/scss/application.scss
|
113
120
|
- lib/scss/calendar.scss
|
121
|
+
- lib/scss/dashboard.scss
|
114
122
|
- lib/tasks/lesli_calendar_tasks.rake
|
115
123
|
- lib/vue/application.js
|
124
|
+
- lib/vue/apps/agendas/show.vue
|
116
125
|
- lib/vue/apps/calendars/show.vue
|
126
|
+
- lib/vue/apps/dashboards/show.vue
|
117
127
|
- lib/vue/apps/events/index.vue
|
118
128
|
- lib/vue/components/agenda.vue
|
119
129
|
- lib/vue/components/calendar.vue
|