diff --git a/src/widgets/EventPage.ts b/src/widgets/EventPage.ts index 77f6edd..2efd530 100644 --- a/src/widgets/EventPage.ts +++ b/src/widgets/EventPage.ts @@ -109,6 +109,12 @@ export default class EventPage extends Widget { $('head').append(``); } + private preRender() { + if (this.config.preRenderCallback && typeof(this.config.preRenderCallback) === 'function') { + this.config.preRenderCallback(this.event); + } + } + private init() { if (this.config.theme) { this.$root.addClass(this.config.theme); @@ -128,6 +134,7 @@ export default class EventPage extends Widget { self.event = new Event(data, self.config); self.updateHTML(); self.addJsonLD(); + self.preRender(); self.renderWidget(); }); } diff --git a/src/widgets/config/EventPageConfig.ts b/src/widgets/config/EventPageConfig.ts index e726170..e622556 100644 --- a/src/widgets/config/EventPageConfig.ts +++ b/src/widgets/config/EventPageConfig.ts @@ -1,6 +1,7 @@ import {logError} from '../../common/Error'; import {absoluteURL, safeHref} from '../../common/helpers/UrlParser'; import IPlainObject from '../../interfaces/IPlainObject'; +import Event from '../../models/Event'; import WidgetConfig from './WidgetConfig'; /** @@ -74,6 +75,11 @@ export default class EventPageConfig extends WidgetConfig { */ readonly numberOfTickets: boolean; + /** + * Callback function to parse event data into markup + */ + readonly preRenderCallback: (event: Event) => void; + protected constructor(options: IPlainObject) { super(options); this.trainers = options.trainers !== undefined ? options.trainers : false; @@ -83,6 +89,7 @@ export default class EventPageConfig extends WidgetConfig { this.expiredTickets = options.expiredTickets !== undefined ? options.expiredTickets : true; this.numberOfTickets = options.numberOfTickets !== undefined ? options.numberOfTickets : true; this.showFutureEvents = options.futureEvents !== undefined ? options.futureEvents : true; + this.preRenderCallback = typeof(options.preRenderCallback) === 'function' ? options.preRenderCallback : undefined; this.eventPageUrl = safeHref(); }