Zum Inhalt springen
SuperScheduler

ReferenzGilt fürLite und Pro

API-Referenz

Diese Seite führt die öffentliche API auf, die SuperScheduler 0.1.0 implementiert: die React-Komponenten, jede Option mit Typ und Standardwert, nach Bereichen gruppiert, die Callbacks mit ihren Argumenten und der Unterstützung für Abbruch oder asynchrone Bestätigung, die Methoden des Controls, die Subpath-Module von Pro und die Lite-API. Mitglieder, die typisiert, aber nicht implementiert sind, stehen gesondert unter Reservierte APIs: Sie warnen in Entwicklungs-Builds und bewirken nichts.

Geprüft mit v0.1.0 · überarbeitet am 7. Oktober 2026.md

Diese Referenz behandelt die API, die in diesen Anleitungen verwendet wird, so wie sie in Version 0.1.0 implementiert ist. Alles außer dem Abschnitt Lite-API gehört zu SuperScheduler Pro (super-scheduler). Standardwerte sind die Werte, die das Control verwendet, wenn Sie eine Option weglassen; „keiner“ bedeutet, dass die Option keinen Wert hat, bis Sie einen setzen. Die Anleitungen erklären, wie sich diese Bausteine kombinieren lassen; die Beispiele zeigen sie in funktionierenden Anwendungen.

Einige Konventionen gelten überall:

  • DateInput ist SuperScheduler.Date | string. Strings sind ISO-8601-Werte in bürgerlicher Zeit mit Sekunden ('2026-10-01T14:00:00') oder reine Datumsangaben ('2026-10-01'). Das Ende eines Ereignisses ist exklusiv.
  • IDs von Ressourcen, Ereignissen und Verknüpfungen sind string | number und werden strikt verglichen: 1 und '1' sind verschieden.
  • Optionen sind Props von SuperSchedulerComponent, Schlüssel von control.update(options) und Live-Eigenschaften des Controls.
  • Handler laufen mit this auf das Control gesetzt. Ihre Rückgabewerte werden ignoriert, und auf einen async-Handler wird nicht gewartet: Verwenden Sie das Protokoll aus async und loaded(), wo es existiert.

Einstiegspunkte

ImportEditionExporteAnleitung
super-schedulerProSuperSchedulerComponent, useSchedulerControl, der Namespace SuperScheduler, SchedulerDate, SchedulerEvent, version und die öffentlichen TypenReact-Integration
super-scheduler/styles.cssProDas Stylesheet (ein einziges @layer super-scheduler)Theming
super-scheduler/react-renderProSuperSchedulerComponent mit React-Render-PropsReact-Render-Slots
super-scheduler/historyProcreateHistoryRückgängig und Wiederholen
super-scheduler/minimapProcreateMinimap, SchedulerMinimap, eventDensityMinimap
super-scheduler/panesProSchedulerPanes, linkPanesBereiche und gespeicherte Ansichten
super-scheduler/zoom-uiProcreateZoomHud, createZoomSlider, createLodBadgeZeitskalen und Zoom
super-scheduler/viewsProgetViewState, applyViewStateBereiche und gespeicherte Ansichten
super-scheduler/rangesProcreateRangeLoaderBereichsweises Laden
super-scheduler/hooksProuseScheduler, useSchedulerState, subscribeScheduler, getSchedulerSnapshotKontrollierter Zustand
super-scheduler/tailwindProPreset für Tailwind CSS v3 (export =)Theming
super-scheduler/datasetsProgenerateDataset, generateScenario, toSuperSchedulerData, SCENARIOS, PrngPerformance
super-scheduler/coreProDOM-freie Hilfsmittel für Datumswerte, Dauern, Zeitleisten, Indizes und Layout
super-scheduler-liteLiteSuperSchedulerComponent, der Namespace SuperScheduler, SchedulerDate, versionSchnellstart mit Lite
super-scheduler-lite/styles.cssLiteDas Lite-StylesheetSchnellstart mit Lite

Jeder Einstiegspunkt wird als ESM, als CommonJS und mit Typdeklarationen ausgeliefert. React 18.2 oder neuer, oder 19, ist eine Peer-Abhängigkeit (bei Pro auch React DOM); Laufzeitabhängigkeiten gibt es keine. Alle Module lassen sich auf einem Server ohne DOM importieren.

Komponenten

SuperSchedulerComponent

SuperSchedulerComponent beherbergt ein Control. Ihre Props (SchedulerProps) sind alle Optionen und Handler unten plus controlRef. Sie rendert ein ungestyltes <div>, hat keine Props className, style oder id und leitet an control.update() nur die Props weiter, deren Identität sich seit dem letzten Rendern geändert hat; eine Prop, die verschwindet, fällt auf ihren Standardwert zurück.

MitgliedTypHinweise
ref.current.controlSuperScheduler.SchedulerWird beim Mount zugewiesen; nach dem Unmount ist es das freigegebene Control
controlRefMutableRefObject<Scheduler | null> oder (control) => voidRef-Objekte werden beim Mount gesetzt und beim Unmount geleert; Funktionen werden nur beim Mount mit dem Control aufgerufen
useSchedulerControl(){ controlRef, control }control ist React-State: null bis zum Mount, dann das Control, null nach dem Unmount

Die Komponente aus super-scheduler/react-render akzeptiert dieselben Props plus renderEvent, renderCell, renderRowHeader, renderTimeHeader, renderArea, renderCorner, eventHover, die Handler onBefore*DomAdd und onBefore*DomRemove sowie renderOptions (siehe react-render).

src/control-access.tsxtsx
import { useEffect, useRef } from 'react'
import { SuperScheduler, SuperSchedulerComponent, useSchedulerControl } from 'super-scheduler'
import { useScheduler } from 'super-scheduler/hooks'

const CONFIG = {
  startDate: '2026-10-01',
  days: 31,
  scale: 'Day',
} satisfies SuperScheduler.SchedulerConfig

// 1. A class ref: `ref.current.control` exists after mount.
export function WithRef() {
  const ref = useRef<SuperSchedulerComponent>(null)
  useEffect(() => ref.current?.control.scrollTo('2026-10-15', true, 'middle'), [])
  return <SuperSchedulerComponent ref={ref} {...CONFIG} />
}

// 2. The control as React state: null until mount, then the live control.
export function WithHook() {
  const { controlRef, control } = useSchedulerControl()
  useEffect(() => control?.scrollTo(SuperScheduler.Date.today()), [control])
  return <SuperSchedulerComponent controlRef={controlRef} {...CONFIG} />
}

// 3. Control plus tracked state topics, published after changes settle.
export function WithState() {
  const { controlRef, state } = useScheduler({ track: ['zoom', 'viewport'] })
  return (
    <>
      <p>
        {state.viewport === undefined
          ? ''
          : `${state.viewport.start.toString('d MMM')} to ${state.viewport.end.toString('d MMM')}`}
      </p>
      <SuperSchedulerComponent controlRef={controlRef} {...CONFIG} />
    </>
  )
}

// 4. Imperative, without React: init() before use, dispose() on teardown.
export function mount(host: HTMLElement): () => void {
  const control = new SuperScheduler.Scheduler(host, CONFIG)
  control.init()
  return () => control.dispose()
}

Typen

TypBedeutung
SchedulerPropsProps von SuperSchedulerComponent
SchedulerConfigOptionen, die new SuperScheduler.Scheduler() und control.update() akzeptieren
SchedulerOptions, SchedulerEventHandlersDie Options- und die Handler-Hälfte der Konfiguration
SchedulerApiDie Schnittstelle des Controls (dieselbe Form wie SuperScheduler.Scheduler)
Scheduler...ArgsEine Schnittstelle pro Handler, zum Beispiel SchedulerEventMoveArgs, SchedulerEventsChangeArgs
SuperScheduler.EventData<T>, SuperScheduler.ResourceData<T>Datenstrukturen, generisch über Ihre zusätzlichen Felder
SchedulerCustomPropsMit declare module 'super-scheduler' um eigene Props erweiterbar

Datenstrukturen

Ereignisse

SuperScheduler.EventData<T> hat keine Indexsignatur: Deklarieren Sie zusätzliche Felder über den Typparameter, zum Beispiel EventData<{ guest: string }>.

FelderTypBedeutung
id, start, end, textEventId, DateInput, DateInput, stringErforderlich. end ist exklusiv, außer bei eventEndSpec: 'Date'
resourceResourceIdZeile des Ereignisses
backColor, fontColor, borderColor, barColor, barBackColorstringFarben
cssClass, padding, borderRadius, heightstring, string | number, string | number, numberDarstellung
html, htmlLeft, htmlRightstringVertrauenswürdiges HTML, wird nie escaped; escapen Sie Nutzertext mit SuperScheduler.Util.escapeHtml
toolTip, bubbleHtml, areas, contextMenustring, string, AreaData[], MenuTooltip, Bubble-Inhalt, klickbare Bereiche, Menü
moveDisabled, resizeDisabled, moveHDisabled, moveVDisabledbooleanSperren: jede Verschiebung, Dauer ändern, horizontale Verschiebungen, Zeilenwechsel
clickDisabled, doubleClickDisabled, rightClickDisabled, deleteDisabled, moveSkipNonBusinessDisabledbooleanAbschaltungen pro Ereignis
hidden, barHiddenbooleanBlendet das Ereignis oder seinen Dauerbalken aus
completenumberProzentwert für durationBarMode: 'PercentComplete'
line, minLine, sort'dedicated' | number, number, string[]Steuerung der Stapelung
tagsunknownFreie Daten

Ressourcen

SuperScheduler.ResourceData<T> akzeptiert zusätzliche Felder.

FelderTypBedeutung
id, nameResourceId, stringZeilen-ID und Beschriftung
children, expandedResourceData[], booleanBaumzeilen (erfordern treeEnabled); Elternelemente sind zugeklappt, außer bei expanded: true
frozen'top' | 'bottom'Zeile, die über oder unter den scrollenden Zeilen fixiert ist
splitResourceData[]Mehrere Zeilen unter einer Kopfzelle
columnsResourceColumnData[]Zellen für rowHeaderColumns, nach Index
cellsDisabledbooleanJede Zelle der Zeile ist deaktiviert: schraffiert, kein Ablegen, keine Auswahl
preventUsagebooleanKeine Ereignisse und keine Auswahl in der Zeile
cellsAutoUpdatedbooleanFührt onBeforeCellRender für diese Zeile erneut aus, wenn sich ihre Ereignisse ändern
minHeight, eventHeight, marginTop, marginBottom, maxLines, emptyHeightnumberZeilengeometrie
backColor, fontColor, cssClass, html, toolTip, bubbleHtml, ariaLabel, areas, contextMenu, tagsverschiedeneDarstellung des Kopfes und Daten

Verknüpfungen, Köpfe, Zoomstufen und Trennlinien

TypFelder
LinkDatafrom, to (Ereignis-IDs), id, type ('FinishToStart' als Standard, 'FinishToFinish', 'StartToStart', 'StartToFinish'), color, width, style ('solid' | 'dotted' | 'dashed'), cssClass, layer, text, textAlignment, bubbleHtml, contextMenu
TimeHeaderDatagroupBy ('Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Quarter' | 'Year' | 'Cell' | 'None' | 'Default'), format, height
ZoomLevelid, properties (Optionswerte, jeweils optional als Funktion von { date, level })
SeparatorDatalocation, color, layer ('AboveEvents' | 'BelowEvents'), opacity, width, cssClass, toolTip
TimelineDatastart, end, width (Zellen für scale: 'Manual')

Optionen

Zeitachse

OptionTypStandardHinweise
startDateDateInputheuteAuf Mitternacht abgeschnitten
daysnumber1Länge der Zeitleiste
scale'CellDuration' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year' | 'Manual''CellDuration''Manual' verwendet timeline
cellDurationnumber (Minuten)60Mit scale: 'CellDuration'
cellWidthnumber40Pixel pro Zelle der aktuellen Skala
cellWidthSpec'Fixed' | 'Auto''Fixed''Auto' passt die Zeitleiste in die Breite ein
cellWidthMinnumber1
timeHeadersTimeHeaderData[][{ groupBy: 'Default' }, { groupBy: 'Cell' }]'Default' folgt cellGroupBy
cellGroupByGroupBy'Day'
headerHeightnumber30Pro Kopfzeile
timeFormat'Auto' | 'Clock12Hours' | 'Clock24Hours''Auto'Nur Standardbeschriftungen der Stunden
localestring | SuperScheduler.Locale'en-us'Jede Intl-Locale-ID
weekStarts'Auto' | number'Auto'0 ist Sonntag
eventEndSpec'DateTime' | 'Date''DateTime''Date' macht Enden ohne Uhrzeit inklusiv
showNonBusinessbooleantruefalse blendet Wochenenden (Tagesskala) oder Stunden außerhalb der Geschäftszeiten aus
businessBeginsHour, businessEndsHournumber9, 18
businessWeekendsbooleanfalse
cellsMarkBusinessbooleantrue
showCurrentTimeHeaderbooleanfalse
separatorsSeparatorData[][]Vertikale Datumsmarkierungen
timelineTimelineData[]keinerMit scale: 'Manual'
infiniteScrollingEnabledbooleanfalseinfiniteScrollingMargin 50, infiniteScrollingStepDays 30
floatingTimeHeadersbooleantrueMitlaufende Beschriftungen im Kopf
viewType'Resources''Resources''Days' und 'Gantt' sind reserviert
scrollX, scrollYnumberkeinerAnfängliche Scrollposition in Pixeln

Zeilen

OptionTypStandardHinweise
resourcesResourceData[][]
treeEnabledbooleanfalseErforderlich für children
treeIndentnumber20
treeAutoExpandbooleantrue
treePreventParentUsagebooleanfalseElternelemente nehmen keine Ereignisse und keine Auswahl an
rowHeaderWidthnumber80
rowHeaderWidthAutoFitbooleantrueWächst mit den Namen; rowHeaderWidthMin 20, rowHeaderWidthMarginRight 0
rowHeaderColumnsRowHeaderColumnData[]keinerEine Spalte, die name zeigt
rowHeaderColumnsResizablebooleantruerowHeaderColumnDefaultWidth 80, rowHeaderColumnsMergeParents true
rowHeaderColumnsReorderablebooleanfalseSpaltentitel ziehen
rowMinHeight, rowEmptyHeightnumber0, keiner
rowMarginTop, rowMarginBottomnumber0
eventHeightnumber35Eine Stapelzeile
eventMarginBottomnumber0
rowFilterParentsAlwaysVisiblebooleantrue
rowSortingMode'LeavesOnly' | 'ParentsOnly' | 'All''LeavesOnly'Von rows.sort() verwendet
selectedRowsstring[] | number[][]
cornerText, cornerHtmlstring'', keinerZelle oben links

Ereignisse und Bearbeitung

OptionTypStandardHinweise
eventsEventData[][]Kontrollierte Daten; das Array wird übernommen und direkt per splice verändert
defaultEventsEventData[]keinerUnkontrollierte Anfangsdaten, einmal gelesen
eventMoveHandling, eventResizeHandling'Update' | 'Notify' | 'Disabled''Update''Disabled' verhindert die Geste
eventClickHandling'Enabled' | 'Select' | 'ContextMenu' | 'Bubble' | 'Disabled''Enabled''Select' schaltet die Auswahl um
eventDoubleClickHandlingdieselben Werte'Disabled'Ein Doppelklick-Handler verzögert einfache Klicks um doubleClickTimeout (300)
eventRightClickHandlingdieselben Werte'ContextMenu'
eventSelectHandling'Update' | 'Disabled''Update'
eventDeleteHandling'Update' | 'Disabled''Disabled''Update' blendet beim Hovern eine Löschschaltfläche ein
eventHoverHandling'Bubble' | 'Disabled''Bubble'Zeigt bubbleHtml
eventTapAndHoldHandling'Move' | 'ContextMenu' | 'Disabled''Move'Touch; tapAndHoldTimeout 300
allowEventOverlapbooleantruefalse lehnt Verschiebungen, Dauer-Änderungen und Auswahlen auf belegte Zeit ab
conflictHighlightbooleanfalseMarkiert kollidierende Ereignisse während des Ziehens
useEventBoxes'Always' | 'Never' | 'ShortEventsOnly''Always''Always' zeichnet Ereignisse über ganze Zellen
eventMoveByCellbooleanfalseMit useEventBoxes: 'Never'
moveBy'Full' | 'Top' | 'Left''Full'Bereich des Ziehgriffs
eventMoveMargin, eventResizeMarginnumber5
eventMoveSkipNonBusiness, eventMoveToPositionbooleanfalse
snapToGrid (und ...EventMoving, ...EventResizing, ...TimeRangeSelecting, ...RectangleSelecting)booleantrue
dragCardboolean | DragCardOptionstrueKarte neben dem Zeiger während des Ziehens
headerMarker, resizeHandlesbooleantrue
autoScroll'Drag' | 'Always' | 'Disabled''Drag'autoScrollSpeed 50, autoScrollDelay 100
dragOutAllowedbooleanfalseEreignisse auf Ablageziele ziehen
floatingEventsbooleantrueMitlaufende Beschriftungen der Ereignisse
eventMinWidthnumber1
eventBorderRadius, eventPaddingstring | numberkeiner
eventTextWrappingEnabledbooleanfalse
eventHtmlLeftMargin, eventHtmlRightMarginnumber10
durationBarVisiblebooleantruedurationBarMode 'Duration' oder 'PercentComplete'; durationBarHeight keiner
eventStackingLineHeightnumber100
showToolTipbooleantrueNative Tooltips aus toolTip
eventMovingStartEndEnabled, eventResizingStartEndEnabled, timeRangeSelectingStartEndEnabledbooleanfalseBeschriftungen neben dem Schatten, Format 'MMMM d, yyyy'
crosshairType'Header' | 'Full' | 'Disabled''Header'
xssProtection'Enabled' | 'Disabled''Enabled'Escaped text; html wird nie escaped

Auswahl

OptionTypStandardHinweise
timeRangeSelectedHandling'Enabled' | 'Hold' | 'HoldForever' | 'Disabled''Enabled'Klicks und Ziehen auf leeren Zellen; 'HoldForever' behält die Auswahl, wenn der Nutzer an anderer Stelle klickt
timeRangeClickHandling'Enabled' | 'Disabled''Enabled'Klicks auf einen ausgewählten Zeitraum
timeRangeDoubleClickHandling'Enabled' | 'Disabled''Disabled'
timeRangeRightClickHandling'ContextMenu' | 'Enabled' | 'Disabled''ContextMenu'
allowMultiRange, multiRangeModeboolean, 'CtrlOrMeta' | 'Always'false, 'CtrlOrMeta'Mehrere Zeiträume
allowMultiSelectbooleantrueMehrere ausgewählte Ereignisse
eventMultiSelectRangebooleanfalseUmschalt+Klick wählt einen Block aus
rectangleSelectHandling'Disabled' | 'Enabled' | 'EventSelect''Disabled'
rectangleSelectMode, rectangleSelectModifiers'Free' | 'Row', boolean'Free', false
allowMultiMove, allowMultiResizebooleanfalsemultiMoveVerticalMode 'Disabled'
rowClickHandling'Enabled' | 'Select' | 'Disabled''Enabled'
rowDoubleClickHandling'Enabled' | 'Select' | 'Disabled''Disabled'
rowRightClickHandling'ContextMenu' | 'Enabled' | 'Disabled''ContextMenu'
rowSelectHandling'Update' | 'Notify''Update'
timeHeaderClickHandling'Enabled' | 'Disabled''Enabled'
resourceExpandHandling, resourceCollapseHandling'Enabled''Enabled'

Zoom und Detailstufe

OptionTypStandardHinweise
zoomLevelsZoomLevel[][]
zoomnumber | stringkeinerAnfangsstufe: Index oder id
zoomPosition'left' | 'middle' | 'right''left'Bleibt bei Stufenwechseln an Ort und Stelle
zoomGestureboolean | ZoomGestureOptionstrueCtrl oder Cmd + Mausrad, Pinch; Optionen min, max (400), wheel ('ctrl'), pinch (true), sensitivity (1), scales ('zoomLevels'), link
lodboolean | LodOptionstrueAdaptive Detailstufe

Größe und Layout

OptionTypStandardHinweise
heightnumber | '100%'600Gesamthöhe, Köpfe eingeschlossen
heightSpec'Max' | 'Fixed' | 'Auto' | 'Parent100Pct' | 'Max100Pct''Max''Max': Höhe des Inhalts bis height
widthnumberkeinerFüllt den Host
visiblebooleantrue

Erscheinungsbild

OptionTypStandardHinweise
colorScheme'inherit' | 'light' | 'dark' | 'auto''inherit'Nur 'auto' folgt der Einstellung des Betriebssystems
density'comfortable' | 'compact' | 'dense'keiner
classNames, stylespro Slot (root, event, cell, rowHeader, ...){}Klassen oder Inline-Styles
cssClassstringkeinerZusätzliche Klasse an der Wurzel
unstyledbooleanfalseNur Struktur
themestringkeinerFügt Klassen {theme}_* hinzu
nowLineboolean | { interval, label, cssClass }falseIntervall 60000 ms
emptyState, errorStateReactNode | NodekeinerEin String wird als Text angezeigt
loadingbooleankeinerloadingLabelText 'Loading...', loadingLabelVisible true
messageHideAfter, messageHideOnMouseOut, messageBarPositionnumber, boolean, 'Top' | 'Bottom'5000, true, 'Top'Für control.message()
OptionTypStandardHinweise
linksLinkData[][]Aus Daten gezeichnet
linkShape'Curved' | 'RightAngled''Curved'
linkLayer'Above' | 'Below''Above'
linkWidth'Auto' | number'Auto'
linkBottomMarginnumber17

Tastatur

OptionTypStandardHinweise
keyboardEnabledbooleanfalse
keyboardTarget'document' | 'component''document'
keyboardMode'SuperScheduler' | 'Full''SuperScheduler''Full' erfordert keyboardEnabled
keyboardOptions{ pageRows, contextMenuKey, bubbleOnFocus, selectAll, zoomKeys }keinerzoomKeys ist standardmäßig false

Menüs und Bubbles

OptionTypStandard
contextMenu, contextMenuResource, contextMenuSelection, contextMenuLinkSuperScheduler.Menukeiner
bubbleSuperScheduler.Bubbleeine Bubble, die bubbleHtml zeigt
cellBubble, resourceBubble, linkBubbleSuperScheduler.Bubblekeiner
allowDefaultContextMenubooleanfalse

Daten, Laden und Erweiterungen

OptionTypStandardHinweise
extensionsSchedulerExtension[]keinerRange-Loader, Verläufe
historyVerlaufsobjektkeinerKurzform für eine einzelne Verlaufserweiterung
dynamicLoadingbooleanfalseMit onScroll
scrollDelayDynamicnumber500Ruhezeit vor onScroll

React-Inhalte

Nur mit SuperSchedulerComponent aus super-scheduler/react-render:

PropArgumenteRückgabe
renderEvent{ control, e, data, row, width, lod }ReactNode
renderCell{ control, cell }ReactNode
renderRowHeader{ control, row, column }ReactNode
renderTimeHeader{ control, header }ReactNode
renderArea{ control, area, source } (Bereiche mit render: true)ReactNode
renderCorner{ control }ReactNode
eventHover{ render, delay (350), leaveGrace (180), placement ('auto'), pin (false), glide (true) }
renderOptions{ retain, sliceMs (8) }

Callbacks

Konventionen

  • Davor und danach. onEventMove läuft vor einer Änderung und kann sie abbrechen; onEventMoved läuft danach. Die meisten Paare folgen diesem Muster.
  • Abbrechen. Handler, deren Argumente preventDefault() haben, können abbrechen: die Klick-Familie, onEventSelect, onEventDelete, onEventMove, onEventResize, onTimeRangeSelect, onTimeRangeClick und seine Varianten für Doppel- und Rechtsklick, onRectangleSelect, onRowClick und Varianten, onRowSelect, onResourceExpand, onResourceCollapse, onTimeHeaderClick, onTimeHeaderRightClick, onGridMouseDown, onKeyDown, onKeyboardFocusChange und onLinkClick. Wer einen Klick abbricht, überspringt auch den zugehörigen „-ed“-Handler und die Folgeaktion.
  • Asynchrone Bestätigung. onEventMove und onEventResize unterstützen args.async = true und ein späteres args.loaded(); preventDefault() vor loaded() bricht ab, und newStart, newEnd und newResource, die vor loaded() gesetzt werden, werden angewendet.
  • Steuern. onEventMoving, onEventResizing, onTimeRangeSelecting und onRectangleSelecting laufen bei jeder Änderung des Schattens; weisen Sie args.allowed, args.start, args.end, args.cssClass oder args.html zu.

Ereignisse

HandlerArgumenteAbbruch
onEventClick, onEventClicked{ e, div, control, originalEvent, ctrl, shift, meta }erster
onEventDoubleClick, onEventDoubleClicked{ e, originalEvent }erster
onEventRightClick, onEventRightClicked{ e, div, originalEvent }erster
onEventSelect, onEventSelected{ e, selected, ctrl, meta }erster
onEventDelete, onEventDeleted{ e, control }erster
onEventMouseEnter, onEventMouseLeave{ e, div }nein
onEventFilter{ e, filterParam, visible }; setzen Sie visible = falsenein
onEventsChange{ events, changed, removed, reason }, reason ist einer von 'move', 'resize', 'create', 'remove', 'update', 'api', 'history', 'load'nein

e ist ein SuperScheduler.Event: e.data ist das Datenobjekt, und e.id(), e.start(), e.end(), e.text(), e.resource() und e.duration() lesen es.

Ziehen und Dauer ändern

HandlerArgumenteAbbruch und asynchron
onEventMoving{ e, start, end, duration, resource, row, allowed, allowOverlap, conflicts, message, cssClass, html, external, multimove, left, right, ctrl, shift, alt, meta }steuern mit allowed
onEventMove{ e, newStart, newEnd, newResource, external, multimove, control, position, async, loaded() }preventDefault(), asynchron
onEventMoveddieselben Werte, nur lesend; der Speicher enthält bereits die neuen Zeitennein
onEventResizing{ e, start, end, what, row, allowed, allowOverlap, conflicts, message, ... }steuern mit allowed
onEventResize{ e, newStart, newEnd, what, multiresize, control, async, loaded() }preventDefault(), asynchron
onEventResizeddieselben Werte, nur lesendnein

Zeiträume und Rechtecke

HandlerArgumenteAbbruch
onTimeRangeSelecting{ start, end, anchor, duration, resource, row, allowed, overlapping, ignoreDisabledCells, html, cssClass, button }steuern mit allowed
onTimeRangeSelect, onTimeRangeSelected{ start, end, resource, control, origin, multirange }, origin ist einer von 'click', 'drag', 'keyboard', 'api'erster
onTimeRangeClick, onTimeRangeDoubleClick, onTimeRangeRightClick (und „-ed“){ start, end, resource }, auf einem bereits ausgewählten Zeitraumerster
onRectangleSelecting{ events, start, end, resources, visible }steuern mit visible
onRectangleSelect{ events, start, end, resources, append }ja
onRectangleSelected{ events }nein
onGridMouseDown{ action, originalEvent, button, ctrl, shift, meta }; setzen Sie action = 'None'ja

Zeilen und Köpfe

HandlerArgumenteAbbruch
onRowClick, onRowDoubleClick, onRowRightClick (und „-ed“){ row, x, originalEvent, ctrl, shift, meta }erster
onRowSelect, onRowSelected{ row, selected, ctrl, shift, meta }erster
onRowFilter{ row, filterParam, visible, control }nein
onRowMouseOver, onRowMouseOut{ row, div }nein
onResourceExpand, onResourceCollapse{ resource }ja
onRowHeaderResized, onRowHeaderColumnResized{}, { column }nein
onRowHeaderColumnsChange{ control, columns, order, widths, reason }nein
onRowSorted{ oldSortParam }nein
onTimeHeaderClick, onTimeHeaderClicked{ header: { start, end, level }, control, originalEvent, ctrl, shift, meta }erster
onTimeHeaderRightClick, onTimeHeaderRightClicked{ header }erster
onCellMouseEnter, onCellMouseLeave{ cell }nein

Render-Hooks

HandlerArgumenteÄnderbar
onBeforeEventRender{ control, data }data.backColor, fontColor, cssClass, html, areas, toolTip, height, hidden... (eine Kopie; start und end sind SuperScheduler.Date)
onBeforeCellRender{ control, cell, getPixels(date) }cell.properties.backColor, cssClass, html, text, disabled, areas, bubbleHtml
onBeforeRowHeaderRender{ row }row.html, text, cssClass, backColor, areas, columns[i].html
onBeforeResHeaderRender{ resource }Eine Kopie der Ressource, Layoutfelder eingeschlossen
onBeforeRowHeaderColumnRender{ column }html des Spaltentitels, cssClass, areas
onBeforeTimeHeaderRender{ control, header }header.html, text, cssClass, backColor, toolTip, areas
onBeforeCornerRender{ control, html, areas }Inhalt der Ecke
onBeforeLinkRender{ data, from, to }Farbe, Breite und Stil der Verknüpfung, cssClass
onIncludeTimeCell{ cell: { start, end, visible, width } }Zellen der Zeitleiste ausblenden oder in der Größe ändern
onAfterEventRender, onAfterCellRender{ e, div }, { cell, div }Der gezeichnete Knoten
onAfterRender, onAfterUpdate, onDimensionsChangedBenachrichtigungen zum Lebenszyklus

Weitere Handler

HandlerArgumente
onZoom{ control, cellWidth, scale, cellDuration, phase, origin, anchor, viewportStart, level, lod }, in jedem Frame einer Geste
onHistoryChange{ canUndo, canRedo, undoLabel, redoLabel, cause }
onScroll{ viewport, async, events, remove, clearEvents, loaded() }, mit dynamicLoading
onKeyDown{ originalEvent }, abbrechbar
onKeyboardFocusChange, onKeyboardFocusChanged{ previous, focus }
onLinkClick, onLinkClicked{ link, originalEvent }, { link }

Control-API

Das Control ist ref.current.control, der Wert von controlRef, args.control in den meisten Handlern oder new SuperScheduler.Scheduler(element, options), gefolgt von init().

Lebenszyklus und Anzeige

MitgliedBeschreibung
init()Bei imperativen Controls einmal erforderlich; update() vor init() wirft einen Fehler
update(options?)Wendet Optionen an und zeichnet synchron neu; ohne Argumente eine vollständige Aktualisierung
dispose(), disposed()Abbau und dessen Zustand
show(), hide(), setHeight(px)Sichtbarkeit; setHeight wechselt zu heightSpec: 'Fixed'
message(text, delayOrOptions?)Meldungsleiste im Control
loadingStart(options?), loadingStop()Ladebeschriftung
clearSelection()Hebt die Zeitraumauswahl auf
dragInProgress()true während einer Geste
levelOfDetailAktueller Zustand der Detailstufe
historyDer angebundene Verlauf oder null
moveRowHeaderColumn(from, to)Ordnet Spalten des Zeilenkopfs neu
navDie Elemente top, scroll, corner, timeHeader, message und loading (null vor init())
vVersions-String

Scrollen und sichtbarer Bereich

MitgliedBeschreibung
scrollTo(date | px, animated?, position?)animated: boolean, ms, 'fast', 'normal', 'slow' oder 'linear'; position: 'left', 'middle', 'right'
scrollToResource(id | row)
setScroll(x, y), setScrollX(x), setScrollY(y), getScrollX(), getScrollY()Scrollen in Pixeln
getViewPort(){ start, end, resources, rows(), events() } des sichtbaren Bereichs
visibleStart(), visibleEnd()Anfang und Ende der Zeitleiste, nicht des sichtbaren Bereichs
getDate(px, precise?, isEnd?), getCoords()Zuordnung von Pixeln und Zeiger
infinite.scrollTo(date), infinite.shiftStart(days)Unendliches Scrollen

Ereignisse

MitgliedBeschreibung
events.listDas Daten-Array, per Referenz
events.add(event)Wirft bei einer doppelten ID
events.update(event)Ersetzt ein geladenes Ereignis; bewirkt nichts bei einer unbekannten ID
events.remove(event | id)
events.find(id | predicate), events.findAll(predicate | example)Suchen, die SuperScheduler.Event zurückgeben
events.all(), events.forRange(start?, end?)Alle Ereignisse oder jene, die sich mit einem Zeitraum überschneiden (standardmäßig der sichtbare)
events.filter(param)Führt onEventFilter aus
events.scrollIntoView(event)

Zeilen

MitgliedBeschreibung
rows.add(data), rows.addChild(parent, data), rows.update(row | data), rows.remove(row | id)Änderungen an Zeilen
rows.find(id | predicate), rows.all(), rows.visible(), rows.each(fn)Suchen, die SuperScheduler.Row zurückgeben
rows.expand(level?), rows.expandAll(), rows.collapseAll()Zustand des Baums
rows.filter(param)Führt onRowFilter aus
rows.sort(spec?), rows.sortParamSortierung ({ field, order })
rows.selection.add/remove/clear/get/isSelectedZeilenauswahl

Auswahl

MitgliedBeschreibung
multiselect.add/remove/clear/get/events/isSelected/redrawAuswahl von Ereignissen
multiselect.selectAll({ scope, filter })scope 'view' (Standard) oder 'all'
multiselect.startRectangle()Aktiviert die Rechteckauswahl
multirange.add(selection), multirange.get(), multirange.clear()Zeiträume (new SuperScheduler.Selection(start, end, resource))
selectTimeRange(start, end, resource, dontFireEvent?)Wählt einen Zeitraum aus

Zoom, Verknüpfungen, Zellen und Tastatur

MitgliedBeschreibung
zoom.activeIndex der aktiven Stufe (-1, solange keine aktiv ist)
zoom.setActive(level, position?, anchorDate?)Wendet eine Stufe sofort an
zoom.animateTo({ level } | { cellWidth }, { duration (300), position, anchorDate })Animiert; gibt ein Promise zurück
zoom.step(delta, options?)Eine Stufe oder, ohne Stufen, ein Faktor von 1,6
links.list, links.add, links.update, links.remove, links.find, links.findByFromTo, links.findAllByFromToVerknüpfungen
cells.all(), cells.find(start, resource), cells.findXy(x, y), cells.findByPixels(x, y)Gemountete Zellen
keyboard.focusCell, focusEvent, getFocus, move, clearFocus, resetFocusTastaturfokus

Statische Mitglieder

MitgliedBeschreibung
SuperScheduler.Scheduler.makeDraggable({ element, data, duration, ... })DOM-Elemente als neue Ereignisse ins Raster ziehen
SuperScheduler.Scheduler.registerDropTarget({ element, onDrop, ... })Ereignisse außerhalb des Rasters ablegen (mit dragOutAllowed)
SuperScheduler.Scheduler.startDragging(options), stopDragging()Programmatisches Ziehen von außen

Der Namespace SuperScheduler

MitgliedBeschreibung
DateDatum und Uhrzeit in bürgerlicher Zeit: today(), now(), parse(text, pattern, locale?), fromYearMonthDay(), add*(), firstDayOf*(), getDatePart(), getDay() (Tag des Monats), getDayOfWeek(), dayOfWeekISO(), weekNumberISO(), toString(pattern?, locale?), toDate(), toDateLocal(), value, ticks, equals()
DurationZeitspanne in Millisekunden: ofDays(), ofHours(), ofMinutes(), totalHours(), toString(pattern?)
EventWrapper für Ereignisse (data, id(), start(), end(), text(), resource(), duration())
Localeregister(locale), find(id), new Locale(id, fields)
Menu, BubbleKontextmenüs und Hover-Bubbles (show(), hide())
Selectionnew Selection(start, end, resource?)
UtilescapeHtml(text), overlaps(start1, end1, start2, end2) (halboffen)
ColorUtildarker(), lighter(), contrasting()
ExceptionWird bei falscher Verwendung der API geworfen
guid()Zufällige UUID v4
Row, RenderRow, LinkVom Control erzeugt; lesen Sie sie in Handlern

Subpath-Module

history

createHistory(options?) gibt einen Verlauf zurück, den Sie als history={history} oder in extensions übergeben. Optionen: limit (50), record (['move', 'resize']), keys ('root', 'document' oder false; Standard 'root'), equals, fields, apply ('control' oder eine Funktion für kontrollierte Ereignisse) und labels. Methoden: undo(), redo(), clear(), push({ label, undo, redo }), record({ ops, control }), batch(label, run), revert(eventId), subscribe(listener); Eigenschaften canUndo, canRedo, undoLabel, redoLabel. Ladevorgänge und abgelehnte Änderungen werden nicht aufgezeichnet.

minimap

createMinimap(control, container, options?) und die React-Komponente <SchedulerMinimap control={control} />. Optionen: series (Standard eventDensity(control)), height (28), peak ('relative' oder 'absolute' mit max), tone, marks (today, months, past, alle true), range und labels. Das Widget hat update(), refresh() und dispose().

panes

<SchedulerPanes> nimmt die Props des Planers plus panes ({ id, resources or rowFilter, size, minSize (48), hidden, props }), eine erforderliche numerische height, timeHeader ('first'), scrollbar ('last'), splitter (true), crossPaneMove (true), component, onPaneResize und panesRef. linkPanes(controls, { zoom, rowHeaderWidth }) koppelt vorhandene Controls und gibt { dispose() } zurück.

zoom-ui

createZoomHud(control, { format, apiMs (700) }), createZoomSlider(control, container, { min, max, detents, scale ('log'), label }) und createLodBadge(control, container, labels?). Jede Funktion gibt { element, dispose() } zurück.

views

getViewState(control, include?) gibt einen JSON-tauglichen Zustand zurück (zoom, scroll, density, collapsed, columns); applyViewState(control, state, { animate, when, timeout }) (when ist 'now' oder 'rows') gibt ein Promise auf einen boolean zurück.

ranges

createRangeLoader({ load, chunkDays (7), prefetch (1), cacheChunks (26), skeleton (true), onError }) gibt einen Loader mit reload(range?), clear() und loading zurück. load({ start, end, signal }) gibt die Ereignisse zurück, die sich mit [start, end) überschneiden.

hooks

useScheduler({ track }) gibt { controlRef, control, state } für die Themen 'events', 'selection', 'zoom', 'viewport' und 'history' zurück. useSchedulerState(control, topic), subscribeScheduler(control, topic, listener) (gibt eine Funktion zum Abmelden zurück) und getSchedulerSnapshot(control, topic) liefern denselben Zustand außerhalb des Hooks. Der Zustand des sichtbaren Bereichs wird veröffentlicht, nachdem sich das Scrollen gesetzt hat.

react-render

SuperSchedulerComponent mit den Props für React-Inhalte. Der HTML- oder Text-Fallback wird zuerst gezeichnet; React-Inhalte ersetzen ihn nach dem Ende der Interaktion. renderOptions.retain ist standardmäßig der kleinere Wert von 2.000 oder dem Doppelten der gemounteten Elemente; sliceMs ist standardmäßig 8.

tailwind

Ein Preset für Tailwind CSS v3: presets: [require('super-scheduler/tailwind')]. Es ergänzt super-scheduler-Farben, -Radien, -Schatten und -Übergänge, die auf die CSS-Tokens abgebildet sind.

datasets

generateDataset(options) und generateScenario(id, overrides?) erzeugen deterministische Daten im Hotelstil (rows und days erforderlich, seed, start in Ticks, density, events, times). toSuperSchedulerData(dataset) gibt { resources, events } zurück. Szenarien: S1 (120 Zeilen, 730 Tage), S2 (1.000 Zeilen, 730 Tage), S3 (5.000 Zeilen, 1.500 Tage) und ihre dichten Varianten. Die Daten beginnen standardmäßig am 2026-01-01.

core

DOM-freie Hilfsfunktionen, die die Engine nutzt: SchedulerDate, Duration, registerLocale, resolveLocale, formatTicks, parseTicks, ticksFromParts(year, month, day, ...), partsOf, formatIso, parseIso, todayTicks, nowTicks, die Konstanten MS_PER_* sowie Hilfsmittel für Zeitleisten, Indizes und Layout. Verwenden Sie sie für Diagramme und Werkzeuge neben dem Planer.

Lite-API

super-scheduler-lite ist eine schreibgeschützte Tageszeitleiste. Optionen, die es nicht implementiert, werfen SuperScheduler Lite: unsupported option "...", in jedem Build.

OptionTypStandard
startDateDateInputheute
daysnumber (ganzzahlig)31
scale'Day''Day'
cellWidthnumber64
heightnumber400
rowHeaderWidthnumber160
rowMinHeightnumber40
eventHeightnumber26
resources{ id, name }[] (flach)[]
events{ id, resource, start, end, text, backColor?, fontColor?, cssClass?, toolTip?, tags? }[][]
localestring'en-us'
ariaLabelstring'Resource schedule'
emptyStatestring'No resources'
onEventClick({ control, e: { data }, originalEvent }) => voidkeiner
onTimeRangeClick({ control, start, end, resource, originalEvent }) => void, jede leere Zellekeiner
controlRefRef-Objekt oder (control | null) => voidkeiner

Das Control (ref.current.control) hat init(), update(options), dispose(), disposed(), scrollTo(date), scrollToResource(id), visibleStart() und visibleEnd(). Der Namespace hat SuperScheduler.Date und SuperScheduler.Scheduler. Die Ressourcenfelder children, frozen, split und columns werden abgelehnt. Theme-Tokens auf .super-scheduler-lite: --super-scheduler-background, -text, -border, -header, -event und -focus. Siehe Von Lite zu Pro migrieren.

Reservierte APIs

Diese Mitglieder sind typisiert, damit bestehender Code kompiliert, aber sie sind in 0.1.0 nicht implementiert. Sie bewirken nichts, geben leere Werte zurück und geben in Entwicklungs-Builds einmal super-scheduler: <feature> is not supported yet aus.

BereichReserviert
Inline-BearbeitungeventEditHandling, eventEditMinWidth, rowEditHandling, 'Edit'-Werte der Klick-Handlings, events.edit(), rows.edit(), Row.edit(), onEventEdit, onEventEdited, onEventEditKeyDown, onRowEdit, onRowEdited, onAfterEventEditRender
Zeilen anlegen und verschiebenrowCreateHandling, rowCreateHeight, rowCreateHtml, rowCreateText, rowMoveHandling, rowMoveSameLevelOnly, rowDragHandleWidth, onRowCreate, onRowCreated, onRowMove, onRowMoved, onRowMoving, makeDraggableAsRow, registerRowDropTarget
Interaktives Anlegen von VerknüpfungenlinkCreateHandling, linkDotSize, linkPointSize, onLinkCreate, onLinkCreated (Verknüpfungen werden aus den Daten in links gezeichnet)
Server-Roundtrips und Laden per HTTPHandling-Werte und Menüaktionen 'CallBack' und 'PostBack', backendUrl, eventsLoadMethod, rowsLoadMethod, linksLoadMethod, events.load(), rows.load(), links.load(), blockOnCallBack, notifyCommit, clientState, onCallBackStart, onCallBackEnd, onLoadNode
Automatisches AktualisierenautoRefreshEnabled, autoRefreshInterval, autoRefreshMaxCount, autoRefreshCommand, autoRefreshPause(), autoRefreshStart(), onAutoRefresh
ExportexportAs(), exceljs, onBeforeEventExport, onBeforeCellExport, onBeforeRowHeaderExport, onBeforeTimeHeaderExport, onBeforeCornerExport
Ereignisversionen und GruppierungeventVersionsEnabled, eventVersionHeight, eventVersionMargin, eventVersionPosition, eventVersionsReserveSpace, groupConcurrentEvents, groupConcurrentEventsLimit, groupBubble, onBeforeGroupRender, row.groups
Wiederholungenevents.findRecurrent() (gibt null zurück)
Ansichten und LayoutviewType: 'Days' und 'Gantt' (werden als 'Resources' gerendert), layout, rowHeaderScrolling, rowHeaderColumnsMode, rowHeaderHideIconEnabled, rows.headerHide(), rows.headerShow(), rows.headerToggle(), timeHeaderTextWrappingEnabled, sortDirections, syncResourceTree
Sonstigesapi, eventBubbleShowForMargins, hideBorderFor100PctHeight, hideUntilInit, initEventEnabled, jointEventsMove, jointEventsResize, navigatorBackSync, overrideWheelScrolling, scrollStep, watchWidthChanges, range und range.all() (verwenden Sie multirange), events.focus(), uiBlock(), uiUnblock(), onBeforeGridLineRender, onResourceHeaderClick, onResourceHeaderClicked, SuperScheduler.Navigator, Row.column(i).html(value), Bubble onDomAdd und onDomRemove

Teilweise implementiert:

  • treeAnimation wird akzeptiert, aber die Aufklapp-Animation wird nie abgespielt.
  • eventClusters und onClusterClick werden akzeptiert und haben noch keine sichtbare Wirkung.
  • Die Handler onBefore*DomAdd und onBefore*DomRemove, die render*-Props und eventHover funktionieren nur mit der Komponente aus super-scheduler/react-render; die Wurzelkomponente warnt und ignoriert sie.

Akzeptierte Tuning-Hinweise, die ignoriert werden, weil die Virtualisierung immer aktiv ist und sich selbst abstimmt: beforeCellRenderCaching, cellSweeping, cellSweepingCacheSize, drawBlankCells, dynamicEventRendering mit seinen Rand- und Cache-Optionen, eventUpdateInplaceOptimization, progressiveRowRendering, progressiveRowRenderingPreload und die Optionen scrollDelay* außer scrollDelayDynamic.