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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/lesli_calendar/application.js +1 -4658
  3. data/app/assets/stylesheets/lesli_calendar/application.css +1 -574
  4. data/app/controllers/lesli_calendar/agendas_controller.rb +60 -0
  5. data/app/helpers/lesli_calendar/agendas_helper.rb +4 -0
  6. data/app/models/lesli_calendar/agenda.rb +5 -0
  7. data/app/services/lesli_calendar/calendar_service.rb +13 -1
  8. data/app/services/lesli_calendar/event_service.rb +12 -12
  9. data/app/views/lesli_calendar/agendas/edit.html.erb +10 -0
  10. data/app/views/lesli_calendar/agendas/index.html.erb +14 -0
  11. data/app/views/lesli_calendar/agendas/new.html.erb +9 -0
  12. data/app/views/lesli_calendar/agendas/show.html.erb +1 -0
  13. data/app/views/lesli_calendar/partials/_engine-navigation.html.erb +3 -2
  14. data/config/locales/translations.en.yml +2 -0
  15. data/config/locales/translations.es.yml +2 -0
  16. data/config/locales/translations.fr.yml +2 -0
  17. data/config/locales/translations.it.yml +2 -0
  18. data/config/locales/translations.pt.yml +2 -0
  19. data/config/routes.rb +3 -0
  20. data/db/migrate/v1.0/0301110110_create_lesli_calendar_events.rb +3 -3
  21. data/db/seed/development.rb +47 -17
  22. data/db/seed/seeds.json +83 -0
  23. data/lib/lesli_calendar/version.rb +2 -2
  24. data/lib/scss/agenda.scss +101 -0
  25. data/lib/scss/application.scss +11 -0
  26. data/lib/scss/calendar.scss +9 -55
  27. data/lib/scss/dashboard.scss +31 -0
  28. data/lib/vue/application.js +8 -0
  29. data/lib/vue/apps/agendas/show.vue +71 -0
  30. data/lib/vue/apps/calendars/show.vue +26 -20
  31. data/lib/vue/apps/dashboards/show.vue +102 -0
  32. data/lib/vue/components/agenda.vue +75 -54
  33. data/lib/vue/components/calendar.vue +39 -4
  34. data/lib/vue/stores/calendar.js +3 -26
  35. data/lib/vue/stores/translations.json +10 -0
  36. metadata +14 -4
  37. data/app/views/lesli_calendar/calendars/_calendar.html.erb +0 -2
  38. 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
- Copyright (c) 2023, all rights reserved.
3
+ Lesli
4
4
 
5
- All the information provided by this platform is protected by international laws related to
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
- Without the written permission of the owner, any replication, modification,
11
- transmission, publication is strictly forbidden.
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
- For more information read the license file including with this software.
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 dashboard>
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
- <div class="columns">
75
- <div class="column is-3">
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 https://www.lesli.tech
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 merge() {
64
+ // Function to merge and group events by date
65
+ function mergeAndGroupEvents() {
63
66
 
64
- let events = [
65
- ...storeCalendar.calendarData.events,
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 = events.filter(event => {
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
- // limit the number of events to show in the agenda
74
- if (count >= 6) {
75
- return
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, 40) + '...' // get a excerpt of the description
110
+ .substring(0, 35) + '...' // get a excerpt of the description
100
111
  }
101
112
 
102
- event.classNames = event.classNames
113
+ // Add event to the array corresponding to its date
114
+ acc[dateKey].events.push(event);
103
115
 
104
- count++
116
+ return acc;
117
+ }, {});
105
118
 
106
- return event
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.calendarData.events_support, () => merge())
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
- <div
124
- class="is-flex is-align-items-center event"
125
- v-for="(event, index) in agenda"
126
- :key="index">
127
- <div class="date">
128
- <p class="day-name">{{ event.dayName }}</p>
129
- <p class="day-number">{{ event.dayNumber }}</p>
130
- </div>
131
- <div :class="['description', event.classNames]">
132
- <p>{{ event.title }}</p>
133
- <p>{{ event.description }}</p>
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
- </div>
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
- storeCalendar.calendar = new Calendar(document.getElementById("lesli-calendar"), {
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
- setTimeout(() => { storeCalendar.calendar.render(); }, 200)
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>
@@ -34,8 +34,8 @@ export const useCalendar = defineStore("calendar.calendar", {
34
34
 
35
35
  return {
36
36
  title: "",
37
- calendar: {},
38
- calendarData: {},
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.calendarData = result
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.1
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-06-09 00:00:00.000000000 Z
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/calendars/_calendar.html.erb
71
- - app/views/lesli_calendar/calendars/_form.html.erb
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
@@ -1,2 +0,0 @@
1
- <div id="<%= dom_id calendar %>">
2
- </div>