Skip to content

Commit e149577

Browse files
V13AxelHaxxer
andauthored
Events Manager (#159)
* Initializing Events_Manager for empty Pull Request * proof of concept event manager * fix ungrouped filter * First things first, catch up to our modern practices (mostly) * Experimental, probably not the final idea * Changelog * wip, but looking a lot better * Delegate the searching down into the actual paginated bits, which fixes everything * Adjustments * Rework basically the whole thing to look and work nicer * more better * Get The buttons properly opening the events * Not open by default --BETA * Initial implementation of a new alpinized event list * wip * wip, but working * Sorting sorted * Cleaning house * SortableJS is GOAT * Cleaned up event manager implementation click events, fixed viewing event * Whatever it is, it's better than what we had before * Release ready!? --BETA * Provide and use way to use the ID property of an event to open the modal * Same for editing event --BETA * Don't open this by default * Fix issues * Various little mobile improvements * Hide filters on mobile * Bunch of mobile improvements * Undebug it --BETA * Print visibility toggling * Evaluate save button after any changes * Update these triggers to look for `event_id` * Removed unused code * Fix access token creation * Rerender calendar * Naming consistency * Remove unnecessary property * Add event and cancel buttons at the bottom of the window * Responsive work * remove debugging flags * Fix delete to use absolute ID instead of index * opacity * shorten highlight length * Undebug it --------- Co-authored-by: Haxxer <[email protected]>
1 parent aeb47f8 commit e149577

27 files changed

+17376
-5485
lines changed

.php-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
8.1
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
use Illuminate\Database\Migrations\Migration;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Support\Facades\Schema;
6+
7+
return new class extends Migration
8+
{
9+
/**
10+
* Run the migrations.
11+
*/
12+
public function up(): void
13+
{
14+
Schema::table('personal_access_tokens', function (Blueprint $table) {
15+
$table->timestamp('expires_at')->nullable();
16+
});
17+
}
18+
19+
/**
20+
* Reverse the migrations.
21+
*/
22+
public function down(): void
23+
{
24+
Schema::table('personal_access_tokens', function (Blueprint $table) {
25+
//
26+
});
27+
}
28+
};

package-lock.json

Lines changed: 11215 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
"serverless-s3-sync": "^1.14.4",
5757
"simplebar": "^6.2.4",
5858
"sortable": "^2.0.0",
59+
"sortablejs": "^1.15.0",
5960
"sweetalert": "^2.1.2",
6061
"sweetalert2": "^9.17.4",
6162
"tailwindcss": "^3.2.4",

public/changelog.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,11 +262,12 @@
262262
* Fixed - Calendar export being broken on some calendars
263263

264264
### 2.0.14 - Time-traveling Efreet
265-
#### January 23, 2021
265+
#### January 28, 2021
266266
* Tweaked - Cycle condition dropdown now includes which cycle family the condition is point to
267267
* Tweaked - Enable season day color will now generate a new set of colors and sequence them properly
268268
* Fixed - Events landing on intercalary leap days that happen at the end of a month not appearing
269269
* Fixed - Nesting normal event groups inside of number event groups caused events to appear when they shouldn't
270+
* Updated - Dependency updates for security
270271

271272
### 2.0.13 - Squashing Efreet
272273
#### January 18, 2021

resources/js/app.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ window.Perms = require('./perms');
1313
window.RenderDataGenerator = require('./render-data-generator')
1414
window.CalendarRenderer = require('./calendar-renderer')
1515
window.CalendarLayouts = require('./calendar-layouts')
16+
window.EventsManager = require('./events-manager')
1617
window.CalendarEventEditor = require('./calendar-events-editor')
1718
window.CalendarEventViewer = require('./calendar-events-viewer')
1819
window.CalendarHTMLEditor = require('./calendar-html-editor')
@@ -21,3 +22,6 @@ window.CalendarYearHeader = require('./calendar-year-header')
2122
// Calendar specific modules
2223
import IntervalsCollection from "./fantasycalendar/Collections/IntervalsCollection.js";
2324
window.IntervalsCollection = IntervalsCollection;
25+
26+
import Sortable from 'sortablejs';
27+
window.Sortable = Sortable;

resources/js/calendar-events-editor.js

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,13 @@ const calendar_events_editor = {
351351

352352
this.creation_type = "Editing Event"
353353

354-
this.event_id = $event.detail.event_id;
354+
let event_index = $event.detail.event_id;
355+
356+
if ($event.detail.event_db_id !== undefined) {
357+
event_index = events.findIndex((item) => item.id === $event.detail.event_db_id);
358+
}
359+
360+
this.event_id = event_index;
355361

356362
this.working_event = clone(events[this.event_id]);
357363

@@ -384,9 +390,7 @@ const calendar_events_editor = {
384390
let not_view_page = window.location.pathname.indexOf('/edit') > -1 || window.location.pathname.indexOf('/calendars/create') > -1;
385391

386392
if (not_view_page) {
387-
if (this.new_event) {
388-
add_event_to_sortable(events_sortable, this.event_id, events[this.event_id]);
389-
} else {
393+
if (!this.new_event) {
390394
$(`.events_input[index="${this.event_id}"]`).find(".event_name").text(`Edit - ${sanitizeHtml(events[this.event_id].name)}`);
391395
}
392396

@@ -400,6 +404,8 @@ const calendar_events_editor = {
400404
}
401405
}
402406

407+
window.dispatchEvent(new CustomEvent("events-changed"));
408+
403409
this.close();
404410

405411
},
@@ -556,12 +562,12 @@ const calendar_events_editor = {
556562
icon: "warning",
557563
}).then((result) => {
558564
if (!result.dismiss) {
559-
window.dispatchEvent(new CustomEvent('event-viewer-modal-view-event', { detail: { id: this.event_id, era: false, epoch: this.epoch } }));
565+
window.dispatchEvent(new CustomEvent('event-viewer-modal-view-event', { detail: { event_id: this.event_id, era: false, epoch: this.epoch } }));
560566
this.close();
561567
}
562568
});
563569
} else {
564-
window.dispatchEvent(new CustomEvent('event-viewer-modal-view-event', { detail: { id: this.event_id, era: false, epoch: this.epoch } }));
570+
window.dispatchEvent(new CustomEvent('event-viewer-modal-view-event', { detail: { event_id: this.event_id, era: false, epoch: this.epoch } }));
565571
this.close();
566572
}
567573

@@ -2213,10 +2219,12 @@ const calendar_events_editor = {
22132219

22142220
confirm_delete_event($event) {
22152221

2216-
let event_editor_ui = this;
2217-
22182222
let delete_event_id = $event.detail.event_id;
22192223

2224+
if ($event.detail.event_db_id !== undefined) {
2225+
delete_event_id = events.findIndex((item) => item.id === $event.detail.event_db_id);
2226+
}
2227+
22202228
let warnings = [];
22212229

22222230
for (let eventId = 0; eventId < events.length; eventId++) {
@@ -2268,26 +2276,21 @@ const calendar_events_editor = {
22682276

22692277
if (!result.dismiss) {
22702278

2271-
if ($('#events_sortable').length) {
2272-
2273-
this.delete_event(delete_event_id);
2279+
let not_view_page = window.location.pathname.indexOf('/edit') > -1 || window.location.pathname.indexOf('/calendars/create') > -1;
22742280

2275-
events_sortable.children(`[index='${delete_event_id}']`).remove();
2281+
if (not_view_page) {
22762282

2277-
events_sortable.children().each(function(i) {
2278-
events[i].sort_by = i;
2279-
$(this).attr('index', i);
2280-
});
2283+
this.delete_event(delete_event_id);
22812284

22822285
evaluate_save_button();
22832286

22842287
} else {
22852288

22862289
let event_id = events[delete_event_id].id;
22872290

2288-
submit_delete_event(event_id, function() {
2289-
event_editor_ui.delete_event(delete_event_id);
2290-
});
2291+
submit_delete_event(event_id, () => {
2292+
this.delete_event(delete_event_id);
2293+
})
22912294

22922295
}
22932296

@@ -2303,10 +2306,11 @@ const calendar_events_editor = {
23032306

23042307
for (let eventId = 0; eventId < events.length; eventId++) {
23052308
if (events[eventId].data.connected_events !== undefined) {
2306-
for (let connectedId of events[eventId].data.connected_events) {
2307-
let number = Number(connectedId)
2308-
if (number > delete_event_id) {
2309-
events[eventId].data.connected_events[connectedId] = String(number - 1)
2309+
const connectedEvents = events[eventId].data.connected_events;
2310+
for (let connectedIndex = 0; connectedIndex < connectedEvents.length; connectedIndex++) {
2311+
let connectedIdNumber = Number(connectedEvents[connectedIndex])
2312+
if (connectedIdNumber > delete_event_id) {
2313+
events[eventId].data.connected_events[connectedIndex] = connectedIdNumber - 1;
23102314
}
23112315
}
23122316
}
@@ -2318,6 +2322,8 @@ const calendar_events_editor = {
23182322

23192323
rerender_calendar();
23202324

2325+
window.dispatchEvent(new CustomEvent("events-changed"));
2326+
23212327
},
23222328

23232329
build_seasons: false,

resources/js/calendar-events-viewer.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,14 @@ const calendar_events_viewer = {
2323
},
2424

2525
view_event($event){
26+
let event_index = $event.detail.event_id;
2627

27-
this.id = $event.detail.id;
28-
this.era = $event.detail.era;
28+
if ($event.detail.event_db_id !== undefined) {
29+
event_index = events.findIndex((item) => item.id === $event.detail.event_db_id);
30+
}
31+
32+
this.id = event_index;
33+
this.era = $event.detail.era ?? false;
2934
this.epoch = $event.detail.epoch;
3035

3136
if(this.era){

resources/js/calendar-html-editor.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,12 @@ const calendar_html_editor = {
9494
icon: "warning",
9595
}).then((result) => {
9696
if (!result.dismiss) {
97-
window.dispatchEvent(new CustomEvent('event-viewer-modal-view-event', { detail: { id: this.era_id, era: true } }));
97+
window.dispatchEvent(new CustomEvent('event-viewer-modal-view-event', { detail: { event_id: this.era_id, era: true } }));
9898
this.close();
9999
}
100100
});
101101
} else {
102-
window.dispatchEvent(new CustomEvent('event-viewer-modal-view-event', { detail: { id: this.era_id, era: true } }));
102+
window.dispatchEvent(new CustomEvent('event-viewer-modal-view-event', { detail: { event_id: this.era_id, era: true } }));
103103
this.close();
104104
}
105105

resources/js/calendar/calendar_functions.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1704,3 +1704,4 @@ function has_year_ending_era(static_data, year){
17041704
}
17051705

17061706

1707+

0 commit comments

Comments
 (0)