feat(scheduler): migrate resource timeline to EventCalendar (MIT) — replace FullCalendar Premium plugins#220
Merged
roncodes merged 1 commit intodev-v0.6.39from Apr 6, 2026
Conversation
Replace FullCalendar Premium resource-timeline views with the new EventCalendar component backed by @event-calendar/core (MIT licensed). This resolves the 'viewType resourceTimelineWeek is not available' error which was caused by FullCalendar Premium plugins (@fullcalendar/ resource-timeline, @fullcalendar/resource) being required but not registered — and which cannot be included in Fleetbase due to the dual-license commercial restriction. Changes: - Template: replace <FullCalendar> with <EventCalendar>; fix callback arg names to match EventCalendar API (@Eventdrop → @onEventDrop, @eventClick → @onEventClick); replace <FullCalendar::Draggable> wrappers with native HTML5 draggable="true" + dragstart handlers; add dragover/drop listeners on the timeline container div - Controller: replace all FullCalendar-specific API calls with @event-calendar/core equivalents: calendar.today() → calendar.setOption('date', new Date()) calendar.getDate() → calendar.getOption('date') calendar.changeView(name) → calendar.setOption('view', name) event.getResources()[0].id → event.resourceIds[0] event.remove() → calendar.removeEventById(event.id) event.setProp(k, v) → calendar.updateEvent({...event, [k]: v}) Add onSidebarDragStart / onCalendarDragOver / onCalendarDrop actions for native HTML5 external drag-and-drop using calendar.dateFromPoint() Depends on: fleetbase/ember-ui#PR feat/event-calendar-component
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Migrates the order scheduler's resource timeline from FullCalendar (Premium) to the new
EventCalendarcomponent backed by@event-calendar/core(MIT licensed).Why this change is necessary
The
resourceTimelineDay/resourceTimelineWeekviews require FullCalendar's@fullcalendar/resource-timelineand@fullcalendar/resourcePremium plugins. These plugins are not MIT licensed — they are tri-licensed (Commercial / CC Non-Commercial / GPLv3). Because Fleetbase is dual-licensed (AGPL v3 + Commercial), shipping FullCalendar Premium plugins would create a license conflict. This was surfacing at runtime as:Depends on
Changes
addon/templates/operations/scheduler/index.hbs<FullCalendar … /><EventCalendar … />@eventDrop={{…}}@onEventDrop={{…}}@eventClick={{…}}@onEventClick={{…}}<FullCalendar::Draggable>wrappersdraggable="true"+{{on "dragstart" …}}on each sidebar card{{on "dragover" …}}+{{on "drop" …}}on the timeline containeraddon/controllers/operations/scheduler/index.js@event-calendar/coreAPI (added)calendar.today()calendar.setOption('date', new Date())calendar.getDate()calendar.getOption('date')calendar.changeView(name)calendar.setOption('view', name)event.getResources()[0]?.idevent.resourceIds[0]event.remove()calendar.removeEventById(event.id)event.setProp(key, val)calendar.updateEvent({...event, [key]: val})onDrop/eventReceive(FullCalendar external drag)onSidebarDragStart+onCalendarDragOver+onCalendarDropusingcalendar.dateFromPoint(x, y)Testing checklist
viewType not availableerror