DevExtreme v25.2 is now available.

Explore our newest features/capabilities and share your thoughts with us.

Your search did not match any results.

Angular Scheduler - Edit Form and Templates

You can double-click a DevExtreme Scheduler appointment or an empty cell to activate our built in edit form. Our Scheduler allows you to customize the form as needs dictate (rearrange items, create custom fields, and specify popup settings).

The form includes two groups: mainGroup (general information) and recurrenceGroup (recurrence settings). Scheduler displays mainGroup first and switches to recurrenceGroup when users change the "Repeat" drop-down. Configure editing.form to customize form layout and editing.popup to customize the dialog window. This demo configures these objects to add custom fields (movieId and price) to the edit form.

For additional information, refer to the following help topic: Appointment Edit Form.

www.wikipedia.org
Backend API
<div class="long-title"> <h3>DXCinema Show Times</h3> </div> <dx-scheduler timeZone="America/Los_Angeles" [dataSource]="data" [views]="views" currentView="day" [currentDate]="currentDate" [firstDayOfWeek]="0" [startDayHour]="9" [endDayHour]="23" [showAllDayPanel]="false" [height]="600" [groups]="groups" [crossScrollingEnabled]="true" [cellDuration]="20" appointmentTemplate="appointment-template" appointmentTooltipTemplate="tooltip-template" > <dxi-scheduler-resource fieldExpr="movieId" [dataSource]="moviesData" [useColorAsDefault]="true" > </dxi-scheduler-resource> <dxi-scheduler-resource fieldExpr="theatreId" [dataSource]="theatreData"> </dxi-scheduler-resource> <dxo-scheduler-editing [allowAdding]="false" [popup]="popupOptions"> <dxo-scheduler-form [onInitialized]="onFormInitialized"> <dxi-scheduler-item template="movie-info-form-template" ></dxi-scheduler-item> <dxi-scheduler-item itemType="group" [colCount]="2" [colCountByScreen]="colCountByScreen" > <dxi-scheduler-item dataField="movieId" editorType="dxSelectBox" [colSpan]="1" [editorOptions]="movieEditorOptions" > <dxo-scheduler-label>Movie</dxo-scheduler-label> </dxi-scheduler-item> <dxi-scheduler-item dataField="price" editorType="dxSelectBox" [colSpan]="1" [editorOptions]="priceEditorOptions" > <dxo-scheduler-label>Price</dxo-scheduler-label> </dxi-scheduler-item> </dxi-scheduler-item> <dxi-scheduler-item name="startDateGroup"></dxi-scheduler-item> <dxi-scheduler-item name="endDateGroup" [disabled]="true" ></dxi-scheduler-item> </dxo-scheduler-form> </dxo-scheduler-editing> <div *dxTemplate="let data of 'movie-info-form-template'" class="movie-info-container" > @if (currentSelectedMovie; as movie) { <div class="movie-info"> <div class="movie-preview-image"> <img [src]="movie.image" [alt]="movie.text" /> </div> <div class="movie-details"> <div class="title">{{ movie.text }} ({{ movie.year }})</div> <div>Director: {{ movie.director }}</div> <div>Duration: {{ movie.duration }} minutes</div> </div> </div> } @else { <div class="movie-info"> <div class="movie-preview-image"></div> <div class="movie-details"> <div class="title">Select a movie</div> </div> </div> } </div> <div *dxTemplate="let model of 'appointment-template'"> @if (getMovieById | apply : model.appointmentData.movieId; as movie) { <div class="movie-preview"> <div class="movie-preview-image"> <img [src]="movie.image" [alt]="movie.text" /> </div> <div class="movie-details"> <div class="title">{{ movie.text }}</div> <div> Ticket Price: <strong>${{ model.targetedAppointmentData.price }}</strong> </div> <div>{{ (formatDate | apply : model.targetedAppointmentData.displayStartDate : "shortTime") + " - " + (formatDate | apply : model.targetedAppointmentData.displayEndDate : "shortTime") }}</div> </div> </div> } </div> <div *dxTemplate="let model of 'tooltip-template'"> @if (getMovieById | apply : model.appointmentData.movieId; as movie) { <div class="movie-info"> <div class="movie-preview-image"> <img [src]="movie.image" [alt]="movie.text" /> </div> <div class="movie-details"> <div class="title">{{ movie.text + " (" + movie.year + ")" }}</div> <div>Director: {{ movie.director }}</div> <div>Duration: {{ movie.duration }} minutes</div> </div> </div> } </div> </dx-scheduler>
import { Component, ViewChild, enableProdMode, Pipe, PipeTransform, provideZoneChangeDetection, inject, } from '@angular/core'; import { bootstrapApplication } from '@angular/platform-browser'; import { formatDate } from 'devextreme-angular/common/core/localization'; import { query } from 'devextreme-angular/common/data'; import { DxSchedulerModule, DxSchedulerComponent } from 'devextreme-angular/ui/scheduler'; import { DxSelectBoxTypes } from 'devextreme-angular/ui/select-box'; import { DxFormTypes } from 'devextreme-angular/ui/form'; import { DxPopupTypes } from 'devextreme-angular/ui/popup'; import { Service, MovieData, TheatreData, Data, } from './app.service'; type dxForm = NonNullable<DxFormTypes.InitializedEvent['component']>; @Pipe({ name: 'apply' }) export class ApplyPipe<TArgs, TReturn> implements PipeTransform { transform(func: ((...args: TArgs[]) => TReturn), ...args: TArgs[]): TReturn { return func(...args); } } if (!/localhost/.test(document.location.host)) { enableProdMode(); } let modulePrefix = ''; // @ts-ignore if (window && window.config?.packageConfigPaths) { modulePrefix = '/app'; } @Component({ selector: 'demo-app', templateUrl: `app/app.component.html`, styleUrls: [`app/app.component.css`], providers: [Service], imports: [ DxSchedulerModule, ApplyPipe, ], }) export class AppComponent { @ViewChild(DxSchedulerComponent, { static: false }) scheduler: DxSchedulerComponent; private formatDate = formatDate; private service = inject(Service); data: Data[] = this.service.getData(); currentDate: Date = new Date(2025, 3, 27); moviesData: MovieData[] = this.service.getMoviesData(); theatreData: TheatreData[] = this.service.getTheatreData(); views: string[] = ['day', 'week', 'timelineDay']; groups: string[] = ['theatreId']; formInstance: dxForm | null = null; currentSelectedMovie: MovieData | null = null; movieEditorOptions: DxSelectBoxTypes.Properties; priceEditorOptions: DxSelectBoxTypes.Properties; constructor() { this.movieEditorOptions = { items: this.moviesData, displayExpr: 'text', valueExpr: 'id', stylingMode: this.getEditorStylingMode(), onValueChanged: this.onMovieValueChanged, onContentReady: this.onCustomEditorContentReady, }; this.priceEditorOptions = { items: [5, 10, 15, 20], displayExpr: this.priceDisplayExpr, stylingMode: this.getEditorStylingMode(), onContentReady: this.onCustomEditorContentReady, }; } getMovieById = (id: number | undefined): MovieData | null => id ? query(this.moviesData).filter(['id', '=', id]).toArray()[0] ?? null : null; getEditorStylingMode = (): 'filled' | 'outlined' => { const isMaterialOrFluent = document.querySelector('.dx-theme-fluent, .dx-theme-material'); return isMaterialOrFluent ? 'filled' : 'outlined'; }; priceDisplayExpr = (value: number): string => `$${value}`; colCountByScreen = { xs: 2 }; onPopupOptionChanged = (e: DxPopupTypes.OptionChangedEvent): void => { if (e.fullName === 'toolbarItems' && e.value) { e.value.forEach((item, index) => { if (item.shortcut === 'done' || item.shortcut === 'cancel') { e.component.option(`toolbarItems[${index}].toolbar`, 'bottom'); } }); } }; popupOptions: DxPopupTypes.Properties = { maxWidth: 440, onOptionChanged: this.onPopupOptionChanged, }; updateEndDate = (movie: MovieData): void => { const form = this.formInstance; const formData = form.option('formData'); const { startDate } = formData; if (startDate) { const newEndDate = new Date(startDate.getTime() + 60 * 1000 * movie.duration); form.updateData('endDate', newEndDate); } }; onFormInitialized = (e: DxFormTypes.InitializedEvent): void => { const form = e.component; const formData = form.option('formData'); this.formInstance = form; this.currentSelectedMovie = this.getMovieById(formData?.movieId); form.on('fieldDataChanged', (fieldEvent: DxFormTypes.FieldDataChangedEvent) => { if (fieldEvent.dataField === 'startDate') { const currentFormData = form.option('formData'); const movie = this.getMovieById(currentFormData?.movieId); if (movie) { this.updateEndDate(movie); } } }); }; onMovieValueChanged = (e: DxSelectBoxTypes.ValueChangedEvent): void => { const form = this.formInstance; const movie = this.getMovieById(e.value); this.currentSelectedMovie = movie; if (movie) { form.updateData('director', movie.director); this.updateEndDate(movie); } }; onCustomEditorContentReady = (e: DxSelectBoxTypes.ContentReadyEvent): void => { e.component.option('stylingMode', this.getEditorStylingMode()); }; } bootstrapApplication(AppComponent, { providers: [ provideZoneChangeDetection({ eventCoalescing: true, runCoalescing: true }), ], });
::ng-deep .dx-scheduler-work-space-week .dx-scheduler-date-table { width: 3500px; } ::ng-deep .dx-scheduler-timeline-day .dx-scheduler-date-table { width: 3500px; } ::ng-deep .dx-tooltip-wrapper .dx-overlay-content .dx-popup-content { padding: 12px; } ::ng-deep .movie-preview-image { max-height: 80px; max-width: 80px; min-height: 60px; min-width: 60px; border-radius: 2px; overflow: hidden; } ::ng-deep .movie-preview-image img { width: 100%; position: relative; top: -25%; pointer-events: none; } ::ng-deep .movie-preview { display: flex; gap: 8px; max-height: 100%; white-space: normal; } ::ng-deep .movie-preview > .movie-details { font-size: 12px; color: #242424; } ::ng-deep .movie-preview > .movie-details > .title { font-weight: 600; font-size: 14px; margin-bottom: 4px; } ::ng-deep .movie-info-container { border-radius: 8px; padding-bottom: 8px; } ::ng-deep .movie-info { display: flex; gap: 12px; } ::ng-deep .dx-theme-material .movie-info { gap: 16px; } ::ng-deep .movie-info .movie-preview-image { border: 1px solid var(--dx-color-border); } ::ng-deep .movie-info .movie-details { text-align: left; } ::ng-deep .movie-info .movie-details > .title { font-weight: 600; font-size: 14px; margin-bottom: 8px; } ::ng-deep .dx-scheduler-form-end-date-group.dx-field-item { padding-bottom: 12px; } ::ng-deep .long-title h3 { font-weight: 200; font-size: 28px; text-align: center; margin-bottom: 20px; } ::ng-deep .dx-scheduler-appointment::before { opacity: 0.26 !important; }
import { Injectable } from '@angular/core'; export interface MovieData { id: number; text: string; director: string; year: number; image: string; duration: number; color: string; } export class TheatreData { text: string; id: number; } export class Data { theatreId: number; movieId: number; price: number; startDate: Date; endDate: Date; } const moviesData: MovieData[] = [{ id: 1, text: 'His Girl Friday', director: 'Howard Hawks', year: 1940, image: '../../../../images/movies/HisGirlFriday.jpg', duration: 92, color: '#9FD89F', }, { id: 2, text: 'Royal Wedding', director: 'Stanley Donen', year: 1951, image: '../../../../images/movies/RoyalWedding.jpg', duration: 93, color: '#F1BBBC', }, { id: 3, text: 'A Star Is Born', director: 'William A. Wellman', year: 1937, image: '../../../../images/movies/AStartIsBorn.jpg', duration: 111, color: '#F9E2AE', }, { id: 4, text: 'The Screaming Skull', director: 'Alex Nicol', year: 1958, image: '../../../../images/movies/ScreamingSkull.jpg', duration: 68, color: '#EDBBE7', }, { id: 5, text: "It's a Wonderful Life", director: 'Frank Capra', year: 1946, image: '../../../../images/movies/ItsAWonderfulLife.jpg', duration: 130, color: '#B4D6FA', }, { id: 6, text: 'City Lights', director: 'Charlie Chaplin', year: 1931, image: '../../../../images/movies/CityLights.jpg', duration: 87, color: '#C6B1DE', }]; const theatreData: TheatreData[] = [{ text: 'Cinema Hall 1', id: 0, }, { text: 'Cinema Hall 2', id: 1, }, ]; const data: Data[] = [{ theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-04-26T16:10:00.000Z'), endDate: new Date('2025-04-26T18:01:00.000Z'), }, { theatreId: 0, movieId: 1, price: 5, startDate: new Date('2025-04-26T18:30:00.000Z'), endDate: new Date('2025-04-26T20:02:00.000Z'), }, { theatreId: 0, movieId: 3, price: 15, startDate: new Date('2025-04-26T20:30:00.000Z'), endDate: new Date('2025-04-26T22:21:00.000Z'), }, { theatreId: 0, movieId: 4, price: 5, startDate: new Date('2025-04-26T23:00:00.000Z'), endDate: new Date('2025-04-27T00:08:00.000Z'), }, { theatreId: 0, movieId: 2, price: 10, startDate: new Date('2025-04-27T00:30:00.000Z'), endDate: new Date('2025-04-27T02:03:00.000Z'), }, { theatreId: 0, movieId: 1, price: 10, startDate: new Date('2025-04-27T02:30:00.000Z'), endDate: new Date('2025-04-27T04:02:00.000Z'), }, { theatreId: 0, movieId: 2, price: 10, startDate: new Date('2025-04-27T04:20:00.000Z'), endDate: new Date('2025-04-27T05:53:00.000Z'), }, { theatreId: 0, movieId: 5, price: 10, startDate: new Date('2025-04-27T16:10:00.000Z'), endDate: new Date('2025-04-27T18:20:00.000Z'), }, { theatreId: 0, movieId: 2, price: 5, startDate: new Date('2025-04-27T19:00:00.000Z'), endDate: new Date('2025-04-27T20:33:00.000Z'), }, { theatreId: 0, movieId: 3, price: 5, startDate: new Date('2025-04-27T21:00:00.000Z'), endDate: new Date('2025-04-27T22:51:00.000Z'), }, { theatreId: 0, movieId: 4, price: 5, startDate: new Date('2025-04-27T23:20:00.000Z'), endDate: new Date('2025-04-28T00:28:00.000Z'), }, { theatreId: 0, movieId: 1, price: 10, startDate: new Date('2025-04-28T01:00:00.000Z'), endDate: new Date('2025-04-28T02:32:00.000Z'), }, { theatreId: 0, movieId: 2, price: 15, startDate: new Date('2025-04-28T03:00:00.000Z'), endDate: new Date('2025-04-28T04:33:00.000Z'), }, { theatreId: 0, movieId: 4, price: 5, startDate: new Date('2025-04-28T04:50:00.000Z'), endDate: new Date('2025-04-28T05:58:00.000Z'), }, { theatreId: 0, movieId: 1, price: 5, startDate: new Date('2025-04-28T16:00:00.000Z'), endDate: new Date('2025-04-28T17:32:00.000Z'), }, { theatreId: 0, movieId: 2, price: 5, startDate: new Date('2025-04-28T18:00:00.000Z'), endDate: new Date('2025-04-28T19:33:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-04-28T20:20:00.000Z'), endDate: new Date('2025-04-28T22:11:00.000Z'), }, { theatreId: 0, movieId: 5, price: 15, startDate: new Date('2025-04-28T22:45:00.000Z'), endDate: new Date('2025-04-29T00:55:00.000Z'), }, { theatreId: 0, movieId: 4, price: 10, startDate: new Date('2025-04-29T01:20:00.000Z'), endDate: new Date('2025-04-29T02:28:00.000Z'), }, { theatreId: 0, movieId: 5, price: 20, startDate: new Date('2025-04-29T03:00:00.000Z'), endDate: new Date('2025-04-29T05:10:00.000Z'), }, { theatreId: 0, movieId: 1, price: 5, startDate: new Date('2025-04-29T16:00:00.000Z'), endDate: new Date('2025-04-29T17:32:00.000Z'), }, { theatreId: 0, movieId: 2, price: 5, startDate: new Date('2025-04-29T18:00:00.000Z'), endDate: new Date('2025-04-29T19:33:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-04-29T20:20:00.000Z'), endDate: new Date('2025-04-29T22:11:00.000Z'), }, { theatreId: 0, movieId: 5, price: 10, startDate: new Date('2025-04-29T22:45:00.000Z'), endDate: new Date('2025-04-30T00:55:00.000Z'), }, { theatreId: 0, movieId: 4, price: 5, startDate: new Date('2025-04-30T01:20:00.000Z'), endDate: new Date('2025-04-30T02:28:00.000Z'), }, { theatreId: 0, movieId: 5, price: 15, startDate: new Date('2025-04-30T03:00:00.000Z'), endDate: new Date('2025-04-30T05:10:00.000Z'), }, { theatreId: 0, movieId: 2, price: 5, startDate: new Date('2025-04-30T16:30:00.000Z'), endDate: new Date('2025-04-30T18:03:00.000Z'), }, { theatreId: 0, movieId: 1, price: 5, startDate: new Date('2025-04-30T18:30:00.000Z'), endDate: new Date('2025-04-30T20:02:00.000Z'), }, { theatreId: 0, movieId: 3, price: 5, startDate: new Date('2025-04-30T20:30:00.000Z'), endDate: new Date('2025-04-30T22:21:00.000Z'), }, { theatreId: 0, movieId: 5, price: 10, startDate: new Date('2025-04-30T23:00:00.000Z'), endDate: new Date('2025-05-01T01:10:00.000Z'), }, { theatreId: 0, movieId: 4, price: 5, startDate: new Date('2025-05-01T01:30:00.000Z'), endDate: new Date('2025-05-01T02:38:00.000Z'), }, { theatreId: 0, movieId: 3, price: 15, startDate: new Date('2025-05-01T03:20:00.000Z'), endDate: new Date('2025-05-01T05:11:00.000Z'), }, { theatreId: 0, movieId: 2, price: 5, startDate: new Date('2025-05-01T16:30:00.000Z'), endDate: new Date('2025-05-01T18:03:00.000Z'), }, { theatreId: 0, movieId: 1, price: 10, startDate: new Date('2025-05-01T18:30:00.000Z'), endDate: new Date('2025-05-01T20:02:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-05-01T20:30:00.000Z'), endDate: new Date('2025-05-01T22:21:00.000Z'), }, { theatreId: 0, movieId: 5, price: 10, startDate: new Date('2025-05-01T23:00:00.000Z'), endDate: new Date('2025-05-02T01:10:00.000Z'), }, { theatreId: 0, movieId: 4, price: 10, startDate: new Date('2025-05-02T01:30:00.000Z'), endDate: new Date('2025-05-02T02:38:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-05-02T03:20:00.000Z'), endDate: new Date('2025-05-02T05:11:00.000Z'), }, { theatreId: 0, movieId: 2, price: 5, startDate: new Date('2025-05-02T16:30:00.000Z'), endDate: new Date('2025-05-02T18:03:00.000Z'), }, { theatreId: 0, movieId: 1, price: 5, startDate: new Date('2025-05-02T18:30:00.000Z'), endDate: new Date('2025-05-02T20:02:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-05-02T20:30:00.000Z'), endDate: new Date('2025-05-02T22:21:00.000Z'), }, { theatreId: 0, movieId: 5, price: 15, startDate: new Date('2025-05-02T23:00:00.000Z'), endDate: new Date('2025-05-03T01:10:00.000Z'), }, { theatreId: 0, movieId: 4, price: 10, startDate: new Date('2025-05-03T01:30:00.000Z'), endDate: new Date('2025-05-03T02:38:00.000Z'), }, { theatreId: 0, movieId: 3, price: 15, startDate: new Date('2025-05-03T03:20:00.000Z'), endDate: new Date('2025-05-03T05:11:00.000Z'), }, { theatreId: 0, movieId: 2, price: 5, startDate: new Date('2025-05-03T16:30:00.000Z'), endDate: new Date('2025-05-03T18:03:00.000Z'), }, { theatreId: 0, movieId: 6, price: 15, startDate: new Date('2025-05-03T18:30:00.000Z'), endDate: new Date('2025-05-03T19:57:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-05-03T20:20:00.000Z'), endDate: new Date('2025-05-03T22:11:00.000Z'), }, { theatreId: 0, movieId: 1, price: 5, startDate: new Date('2025-05-03T23:00:00.000Z'), endDate: new Date('2025-05-04T00:32:00.000Z'), }, { theatreId: 0, movieId: 2, price: 10, startDate: new Date('2025-05-04T01:00:00.000Z'), endDate: new Date('2025-05-04T02:33:00.000Z'), }, { theatreId: 0, movieId: 6, price: 20, startDate: new Date('2025-05-04T03:00:00.000Z'), endDate: new Date('2025-05-04T04:27:00.000Z'), }, { theatreId: 0, movieId: 4, price: 15, startDate: new Date('2025-05-04T04:50:00.000Z'), endDate: new Date('2025-05-04T05:58:00.000Z'), }, { theatreId: 0, movieId: 1, price: 5, startDate: new Date('2025-05-04T16:30:00.000Z'), endDate: new Date('2025-05-04T18:02:00.000Z'), }, { theatreId: 0, movieId: 2, price: 5, startDate: new Date('2025-05-04T18:30:00.000Z'), endDate: new Date('2025-05-04T20:03:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-05-04T20:30:00.000Z'), endDate: new Date('2025-05-04T22:21:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-05-04T22:30:00.000Z'), endDate: new Date('2025-05-05T00:21:00.000Z'), }, { theatreId: 0, movieId: 6, price: 15, startDate: new Date('2025-05-05T00:30:00.000Z'), endDate: new Date('2025-05-05T01:57:00.000Z'), }, { theatreId: 0, movieId: 5, price: 15, startDate: new Date('2025-05-05T03:00:00.000Z'), endDate: new Date('2025-05-05T05:10:00.000Z'), }, { theatreId: 0, movieId: 1, price: 5, startDate: new Date('2025-05-05T16:00:00.000Z'), endDate: new Date('2025-05-05T17:32:00.000Z'), }, { theatreId: 0, movieId: 2, price: 5, startDate: new Date('2025-05-05T18:00:00.000Z'), endDate: new Date('2025-05-05T19:33:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-05-05T20:00:00.000Z'), endDate: new Date('2025-05-05T21:51:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-05-05T22:30:00.000Z'), endDate: new Date('2025-05-06T00:21:00.000Z'), }, { theatreId: 0, movieId: 6, price: 15, startDate: new Date('2025-05-06T00:30:00.000Z'), endDate: new Date('2025-05-06T01:57:00.000Z'), }, { theatreId: 0, movieId: 5, price: 15, startDate: new Date('2025-05-06T03:00:00.000Z'), endDate: new Date('2025-05-06T05:10:00.000Z'), }, { theatreId: 0, movieId: 1, price: 5, startDate: new Date('2025-05-06T16:00:00.000Z'), endDate: new Date('2025-05-06T17:32:00.000Z'), }, { theatreId: 0, movieId: 2, price: 5, startDate: new Date('2025-05-06T18:00:00.000Z'), endDate: new Date('2025-05-06T19:33:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-05-06T20:00:00.000Z'), endDate: new Date('2025-05-06T21:51:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-05-06T22:30:00.000Z'), endDate: new Date('2025-05-07T00:21:00.000Z'), }, { theatreId: 0, movieId: 6, price: 15, startDate: new Date('2025-05-07T00:30:00.000Z'), endDate: new Date('2025-05-07T01:57:00.000Z'), }, { theatreId: 0, movieId: 5, price: 15, startDate: new Date('2025-05-07T03:00:00.000Z'), endDate: new Date('2025-05-07T05:10:00.000Z'), }, { theatreId: 0, movieId: 2, price: 5, startDate: new Date('2025-05-07T16:00:00.000Z'), endDate: new Date('2025-05-07T17:33:00.000Z'), }, { theatreId: 0, movieId: 1, price: 5, startDate: new Date('2025-05-07T18:00:00.000Z'), endDate: new Date('2025-05-07T19:32:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-05-07T20:00:00.000Z'), endDate: new Date('2025-05-07T21:51:00.000Z'), }, { theatreId: 0, movieId: 5, price: 10, startDate: new Date('2025-05-07T22:30:00.000Z'), endDate: new Date('2025-05-08T00:40:00.000Z'), }, { theatreId: 0, movieId: 6, price: 15, startDate: new Date('2025-05-08T01:00:00.000Z'), endDate: new Date('2025-05-08T02:27:00.000Z'), }, { theatreId: 0, movieId: 1, price: 15, startDate: new Date('2025-05-08T03:00:00.000Z'), endDate: new Date('2025-05-08T04:32:00.000Z'), }, { theatreId: 0, movieId: 2, price: 5, startDate: new Date('2025-05-08T16:00:00.000Z'), endDate: new Date('2025-05-08T17:33:00.000Z'), }, { theatreId: 0, movieId: 1, price: 5, startDate: new Date('2025-05-08T18:00:00.000Z'), endDate: new Date('2025-05-08T19:32:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-05-08T20:00:00.000Z'), endDate: new Date('2025-05-08T21:51:00.000Z'), }, { theatreId: 0, movieId: 5, price: 10, startDate: new Date('2025-05-08T22:30:00.000Z'), endDate: new Date('2025-05-09T00:40:00.000Z'), }, { theatreId: 0, movieId: 6, price: 15, startDate: new Date('2025-05-09T01:00:00.000Z'), endDate: new Date('2025-05-09T02:27:00.000Z'), }, { theatreId: 0, movieId: 1, price: 15, startDate: new Date('2025-05-09T03:00:00.000Z'), endDate: new Date('2025-05-09T04:32:00.000Z'), }, { theatreId: 0, movieId: 2, price: 5, startDate: new Date('2025-05-09T16:00:00.000Z'), endDate: new Date('2025-05-09T17:33:00.000Z'), }, { theatreId: 0, movieId: 1, price: 5, startDate: new Date('2025-05-09T18:00:00.000Z'), endDate: new Date('2025-05-09T19:32:00.000Z'), }, { theatreId: 0, movieId: 3, price: 10, startDate: new Date('2025-05-09T20:00:00.000Z'), endDate: new Date('2025-05-09T21:51:00.000Z'), }, { theatreId: 0, movieId: 5, price: 10, startDate: new Date('2025-05-09T22:30:00.000Z'), endDate: new Date('2025-05-10T00:40:00.000Z'), }, { theatreId: 0, movieId: 6, price: 15, startDate: new Date('2025-05-10T01:00:00.000Z'), endDate: new Date('2025-05-10T02:27:00.000Z'), }, { theatreId: 0, movieId: 1, price: 15, startDate: new Date('2025-05-10T03:00:00.000Z'), endDate: new Date('2025-05-10T04:32:00.000Z'), }, { theatreId: 1, movieId: 3, price: 10, startDate: new Date('2025-04-26T16:10:00.000Z'), endDate: new Date('2025-04-26T18:01:00.000Z'), }, { theatreId: 1, movieId: 1, price: 5, startDate: new Date('2025-04-26T19:00:00.000Z'), endDate: new Date('2025-04-26T20:32:00.000Z'), }, { theatreId: 1, movieId: 3, price: 15, startDate: new Date('2025-04-26T21:00:00.000Z'), endDate: new Date('2025-04-26T22:51:00.000Z'), }, { theatreId: 1, movieId: 4, price: 5, startDate: new Date('2025-04-26T23:10:00.000Z'), endDate: new Date('2025-04-27T00:18:00.000Z'), }, { theatreId: 1, movieId: 2, price: 10, startDate: new Date('2025-04-27T00:30:00.000Z'), endDate: new Date('2025-04-27T02:03:00.000Z'), }, { theatreId: 1, movieId: 1, price: 10, startDate: new Date('2025-04-27T02:30:00.000Z'), endDate: new Date('2025-04-27T04:02:00.000Z'), }, { theatreId: 1, movieId: 2, price: 10, startDate: new Date('2025-04-27T04:20:00.000Z'), endDate: new Date('2025-04-27T05:53:00.000Z'), }, { theatreId: 1, movieId: 1, price: 5, startDate: new Date('2025-04-27T16:30:00.000Z'), endDate: new Date('2025-04-27T18:02:00.000Z'), }, { theatreId: 1, movieId: 2, price: 5, startDate: new Date('2025-04-27T18:30:00.000Z'), endDate: new Date('2025-04-27T20:03:00.000Z'), }, { theatreId: 1, movieId: 5, price: 15, startDate: new Date('2025-04-27T20:30:00.000Z'), endDate: new Date('2025-04-27T22:40:00.000Z'), }, { theatreId: 1, movieId: 4, price: 5, startDate: new Date('2025-04-27T23:00:00.000Z'), endDate: new Date('2025-04-28T00:08:00.000Z'), }, { theatreId: 1, movieId: 1, price: 10, startDate: new Date('2025-04-28T00:30:00.000Z'), endDate: new Date('2025-04-28T02:02:00.000Z'), }, { theatreId: 1, movieId: 2, price: 15, startDate: new Date('2025-04-28T02:40:00.000Z'), endDate: new Date('2025-04-28T04:13:00.000Z'), }, { theatreId: 1, movieId: 4, price: 5, startDate: new Date('2025-04-28T04:40:00.000Z'), endDate: new Date('2025-04-28T05:48:00.000Z'), }, { theatreId: 1, movieId: 1, price: 5, startDate: new Date('2025-04-28T16:30:00.000Z'), endDate: new Date('2025-04-28T18:02:00.000Z'), }, { theatreId: 1, movieId: 2, price: 5, startDate: new Date('2025-04-28T18:30:00.000Z'), endDate: new Date('2025-04-28T20:03:00.000Z'), }, { theatreId: 1, movieId: 5, price: 10, startDate: new Date('2025-04-28T20:30:00.000Z'), endDate: new Date('2025-04-28T22:41:00.000Z'), }, { theatreId: 1, movieId: 5, price: 15, startDate: new Date('2025-04-28T23:00:00.000Z'), endDate: new Date('2025-04-29T01:10:00.000Z'), }, { theatreId: 1, movieId: 4, price: 10, startDate: new Date('2025-04-29T01:30:00.000Z'), endDate: new Date('2025-04-29T02:38:00.000Z'), }, { theatreId: 1, movieId: 5, price: 20, startDate: new Date('2025-04-29T03:20:00.000Z'), endDate: new Date('2025-04-29T05:30:00.000Z'), }, { theatreId: 1, movieId: 1, price: 5, startDate: new Date('2025-04-29T16:30:00.000Z'), endDate: new Date('2025-04-29T18:02:00.000Z'), }, { theatreId: 1, movieId: 2, price: 5, startDate: new Date('2025-04-29T18:30:00.000Z'), endDate: new Date('2025-04-29T20:03:00.000Z'), }, { theatreId: 1, movieId: 5, price: 10, startDate: new Date('2025-04-29T20:30:00.000Z'), endDate: new Date('2025-04-29T22:41:00.000Z'), }, { theatreId: 1, movieId: 5, price: 10, startDate: new Date('2025-04-29T23:00:00.000Z'), endDate: new Date('2025-04-30T01:10:00.000Z'), }, { theatreId: 1, movieId: 4, price: 5, startDate: new Date('2025-04-30T01:30:00.000Z'), endDate: new Date('2025-04-30T02:38:00.000Z'), }, { theatreId: 1, movieId: 5, price: 15, startDate: new Date('2025-04-30T03:20:00.000Z'), endDate: new Date('2025-04-30T05:30:00.000Z'), }, { theatreId: 1, movieId: 2, price: 5, startDate: new Date('2025-04-30T16:10:00.000Z'), endDate: new Date('2025-04-30T17:43:00.000Z'), }, { theatreId: 1, movieId: 1, price: 5, startDate: new Date('2025-04-30T18:00:00.000Z'), endDate: new Date('2025-04-30T19:32:00.000Z'), }, { theatreId: 1, movieId: 3, price: 5, startDate: new Date('2025-04-30T20:10:00.000Z'), endDate: new Date('2025-04-30T22:01:00.000Z'), }, { theatreId: 1, movieId: 5, price: 10, startDate: new Date('2025-04-30T22:40:00.000Z'), endDate: new Date('2025-05-01T00:50:00.000Z'), }, { theatreId: 1, movieId: 4, price: 5, startDate: new Date('2025-05-01T01:20:00.000Z'), endDate: new Date('2025-05-01T02:28:00.000Z'), }, { theatreId: 1, movieId: 3, price: 15, startDate: new Date('2025-05-01T03:20:00.000Z'), endDate: new Date('2025-05-01T05:11:00.000Z'), }, { theatreId: 1, movieId: 2, price: 5, startDate: new Date('2025-05-01T17:00:00.000Z'), endDate: new Date('2025-05-01T18:33:00.000Z'), }, { theatreId: 1, movieId: 1, price: 10, startDate: new Date('2025-05-01T19:00:00.000Z'), endDate: new Date('2025-05-01T20:32:00.000Z'), }, { theatreId: 1, movieId: 3, price: 10, startDate: new Date('2025-05-01T21:00:00.000Z'), endDate: new Date('2025-05-01T22:51:00.000Z'), }, { theatreId: 1, movieId: 5, price: 10, startDate: new Date('2025-05-01T23:30:00.000Z'), endDate: new Date('2025-05-02T01:40:00.000Z'), }, { theatreId: 1, movieId: 4, price: 10, startDate: new Date('2025-05-02T02:00:00.000Z'), endDate: new Date('2025-05-02T03:08:00.000Z'), }, { theatreId: 1, movieId: 5, price: 20, startDate: new Date('2025-05-02T03:30:00.000Z'), endDate: new Date('2025-05-02T05:50:00.000Z'), }, { theatreId: 1, movieId: 2, price: 5, startDate: new Date('2025-05-02T17:00:00.000Z'), endDate: new Date('2025-05-02T18:33:00.000Z'), }, { theatreId: 1, movieId: 1, price: 5, startDate: new Date('2025-05-02T19:00:00.000Z'), endDate: new Date('2025-05-02T20:32:00.000Z'), }, { theatreId: 1, movieId: 3, price: 10, startDate: new Date('2025-05-02T21:00:00.000Z'), endDate: new Date('2025-05-02T22:51:00.000Z'), }, { theatreId: 1, movieId: 5, price: 15, startDate: new Date('2025-05-02T23:30:00.000Z'), endDate: new Date('2025-05-03T01:40:00.000Z'), }, { theatreId: 1, movieId: 4, price: 10, startDate: new Date('2025-05-03T02:00:00.000Z'), endDate: new Date('2025-05-03T03:08:00.000Z'), }, { theatreId: 1, movieId: 5, price: 15, startDate: new Date('2025-05-03T03:30:00.000Z'), endDate: new Date('2025-05-03T05:50:00.000Z'), }, { theatreId: 1, movieId: 2, price: 5, startDate: new Date('2025-05-03T17:00:00.000Z'), endDate: new Date('2025-05-03T18:33:00.000Z'), }, { theatreId: 1, movieId: 6, price: 15, startDate: new Date('2025-05-03T19:00:00.000Z'), endDate: new Date('2025-05-03T20:27:00.000Z'), }, { theatreId: 1, movieId: 3, price: 10, startDate: new Date('2025-05-03T21:00:00.000Z'), endDate: new Date('2025-05-03T22:51:00.000Z'), }, { theatreId: 1, movieId: 1, price: 10, startDate: new Date('2025-05-03T23:30:00.000Z'), endDate: new Date('2025-05-04T01:02:00.000Z'), }, { theatreId: 1, movieId: 5, price: 15, startDate: new Date('2025-05-04T01:30:00.000Z'), endDate: new Date('2025-05-04T03:40:00.000Z'), }, { theatreId: 1, movieId: 6, price: 20, startDate: new Date('2025-05-04T04:00:00.000Z'), endDate: new Date('2025-05-04T05:27:00.000Z'), }, { theatreId: 1, movieId: 1, price: 5, startDate: new Date('2025-05-04T16:30:00.000Z'), endDate: new Date('2025-05-04T18:02:00.000Z'), }, { theatreId: 1, movieId: 6, price: 5, startDate: new Date('2025-05-04T19:00:00.000Z'), endDate: new Date('2025-05-04T20:27:00.000Z'), }, { theatreId: 1, movieId: 3, price: 10, startDate: new Date('2025-05-04T21:00:00.000Z'), endDate: new Date('2025-05-04T22:51:00.000Z'), }, { theatreId: 1, movieId: 3, price: 10, startDate: new Date('2025-05-04T23:30:00.000Z'), endDate: new Date('2025-05-05T01:21:00.000Z'), }, { theatreId: 1, movieId: 6, price: 15, startDate: new Date('2025-05-05T01:30:00.000Z'), endDate: new Date('2025-05-05T02:57:00.000Z'), }, { theatreId: 1, movieId: 2, price: 15, startDate: new Date('2025-05-05T03:30:00.000Z'), endDate: new Date('2025-05-05T05:03:00.000Z'), }, { theatreId: 1, movieId: 1, price: 5, startDate: new Date('2025-05-05T16:30:00.000Z'), endDate: new Date('2025-05-05T18:02:00.000Z'), }, { theatreId: 1, movieId: 6, price: 5, startDate: new Date('2025-05-05T19:00:00.000Z'), endDate: new Date('2025-05-05T20:27:00.000Z'), }, { theatreId: 1, movieId: 3, price: 10, startDate: new Date('2025-05-05T21:00:00.000Z'), endDate: new Date('2025-05-05T22:51:00.000Z'), }, { theatreId: 1, movieId: 2, price: 10, startDate: new Date('2025-05-05T23:30:00.000Z'), endDate: new Date('2025-05-06T01:03:00.000Z'), }, { theatreId: 1, movieId: 6, price: 15, startDate: new Date('2025-05-06T01:30:00.000Z'), endDate: new Date('2025-05-06T02:57:00.000Z'), }, { theatreId: 1, movieId: 2, price: 15, startDate: new Date('2025-05-06T03:30:00.000Z'), endDate: new Date('2025-05-06T05:03:00.000Z'), }, { theatreId: 1, movieId: 1, price: 5, startDate: new Date('2025-05-06T16:30:00.000Z'), endDate: new Date('2025-05-06T18:02:00.000Z'), }, { theatreId: 1, movieId: 2, price: 5, startDate: new Date('2025-05-06T18:30:00.000Z'), endDate: new Date('2025-05-06T20:03:00.000Z'), }, { theatreId: 1, movieId: 6, price: 10, startDate: new Date('2025-05-06T21:00:00.000Z'), endDate: new Date('2025-05-06T22:27:00.000Z'), }, { theatreId: 1, movieId: 3, price: 10, startDate: new Date('2025-05-06T23:00:00.000Z'), endDate: new Date('2025-05-07T00:51:00.000Z'), }, { theatreId: 1, movieId: 6, price: 15, startDate: new Date('2025-05-07T01:10:00.000Z'), endDate: new Date('2025-05-07T02:37:00.000Z'), }, { theatreId: 1, movieId: 5, price: 20, startDate: new Date('2025-05-07T03:30:00.000Z'), endDate: new Date('2025-05-07T05:40:00.000Z'), }, { theatreId: 1, movieId: 2, price: 5, startDate: new Date('2025-05-07T16:30:00.000Z'), endDate: new Date('2025-05-07T18:02:00.000Z'), }, { theatreId: 1, movieId: 1, price: 5, startDate: new Date('2025-05-07T18:30:00.000Z'), endDate: new Date('2025-05-07T20:02:00.000Z'), }, { theatreId: 1, movieId: 6, price: 10, startDate: new Date('2025-05-07T21:00:00.000Z'), endDate: new Date('2025-05-07T22:27:00.000Z'), }, { theatreId: 1, movieId: 5, price: 10, startDate: new Date('2025-05-07T23:00:00.000Z'), endDate: new Date('2025-05-08T00:51:00.000Z'), }, { theatreId: 1, movieId: 6, price: 15, startDate: new Date('2025-05-08T01:10:00.000Z'), endDate: new Date('2025-05-08T02:37:00.000Z'), }, { theatreId: 1, movieId: 5, price: 15, startDate: new Date('2025-05-08T03:20:00.000Z'), endDate: new Date('2025-05-08T05:30:00.000Z'), }, { theatreId: 1, movieId: 2, price: 5, startDate: new Date('2025-05-08T16:30:00.000Z'), endDate: new Date('2025-05-08T18:02:00.000Z'), }, { theatreId: 1, movieId: 1, price: 5, startDate: new Date('2025-05-08T18:30:00.000Z'), endDate: new Date('2025-05-08T20:02:00.000Z'), }, { theatreId: 1, movieId: 3, price: 10, startDate: new Date('2025-05-08T20:30:00.000Z'), endDate: new Date('2025-05-08T22:21:00.000Z'), }, { theatreId: 1, movieId: 5, price: 10, startDate: new Date('2025-05-08T23:00:00.000Z'), endDate: new Date('2025-05-09T01:10:00.000Z'), }, { theatreId: 1, movieId: 6, price: 15, startDate: new Date('2025-05-09T01:30:00.000Z'), endDate: new Date('2025-05-09T02:57:00.000Z'), }, { theatreId: 1, movieId: 2, price: 15, startDate: new Date('2025-05-09T03:30:00.000Z'), endDate: new Date('2025-05-09T05:03:00.000Z'), }, { theatreId: 1, movieId: 2, price: 5, startDate: new Date('2025-05-09T16:30:00.000Z'), endDate: new Date('2025-05-09T18:03:00.000Z'), }, { theatreId: 1, movieId: 1, price: 5, startDate: new Date('2025-05-09T18:30:00.000Z'), endDate: new Date('2025-05-09T20:02:00.000Z'), }, { theatreId: 1, movieId: 3, price: 10, startDate: new Date('2025-05-09T20:30:00.000Z'), endDate: new Date('2025-05-09T22:21:00.000Z'), }, { theatreId: 1, movieId: 5, price: 10, startDate: new Date('2025-05-09T23:00:00.000Z'), endDate: new Date('2025-05-10T01:10:00.000Z'), }, { theatreId: 1, movieId: 6, price: 15, startDate: new Date('2025-05-10T01:30:00.000Z'), endDate: new Date('2025-05-10T02:57:00.000Z'), }, { theatreId: 1, movieId: 1, price: 15, startDate: new Date('2025-05-10T03:30:00.000Z'), endDate: new Date('2025-05-10T05:02:00.000Z'), }, ]; @Injectable() export class Service { getTheatreData() { return theatreData; } getMoviesData() { return moviesData; } getData() { return data; } }
// In real applications, you should not transpile code in the browser. // You can see how to create your own application with Angular and DevExtreme here: // https://js.devexpress.com/Documentation/Guide/Angular_Components/Getting_Started/Create_a_DevExtreme_Application/ const componentNames = [ 'accordion', 'action-sheet', 'autocomplete', 'bar-gauge', 'box', 'bullet', 'button-group', 'button', 'calendar', 'card-view', 'chart', 'chat', 'check-box', 'circular-gauge', 'color-box', 'context-menu', 'data-grid', 'date-box', 'date-range-box', 'defer-rendering', 'diagram', 'draggable', 'drawer', 'drop-down-box', 'drop-down-button', 'file-manager', 'file-uploader', 'filter-builder', 'form', 'funnel', 'gallery', 'gantt', 'html-editor', 'linear-gauge', 'list', 'load-indicator', 'load-panel', 'lookup', 'map', 'menu', 'multi-view', 'nested', 'number-box', 'pagination', 'pie-chart', 'pivot-grid-field-chooser', 'pivot-grid', 'polar-chart', 'popover', 'popup', 'progress-bar', 'radio-group', 'range-selector', 'range-slider', 'recurrence-editor', 'resizable', 'responsive-box', 'sankey', 'scheduler', 'scroll-view', 'select-box', 'slider', 'sortable', 'sparkline', 'speech-to-text', 'speed-dial-action', 'splitter', 'stepper', 'switch', 'tab-panel', 'tabs', 'tag-box', 'text-area', 'text-box', 'tile-view', 'toast', 'toolbar', 'tooltip', 'tree-list', 'tree-map', 'tree-view', 'validation-group', 'validation-summary', 'validator', 'vector-map', ]; window.exports = window.exports || {}; window.config = { transpiler: 'ts', typescriptOptions: { module: 'system', emitDecoratorMetadata: true, experimentalDecorators: true, }, meta: { 'typescript': { 'exports': 'ts', }, 'devextreme/time_zone_utils.js': { 'esModule': true, }, 'devextreme/localization.js': { 'esModule': true, }, 'devextreme/viz/palette.js': { 'esModule': true, }, '@angular/platform-browser-dynamic': { 'esModule': true, }, '@angular/platform-browser': { 'esModule': true, }, '@angular/core': { 'esModule': true, }, '@angular/common': { 'esModule': true, }, '@angular/common/http': { 'esModule': true, }, '@angular/animations': { 'esModule': true, }, '@angular/forms': { 'esModule': true, }, 'openai': { 'esModule': true, }, }, paths: { 'npm:': 'https://cdn.jsdelivr.net/npm/', 'bundles:': '../../../../bundles/', 'externals:': '../../../../bundles/externals/', }, map: { 'ts': 'npm:plugin-typescript@8.0.0/lib/plugin.js', 'typescript': 'npm:typescript@4.2.4/lib/typescript.js', 'jszip': 'npm:jszip@3.10.1/dist/jszip.min.js', /* @angular */ '@angular/compiler': 'bundles:@angular/compiler.umd.js', '@angular/platform-browser-dynamic': 'bundles:@angular/platform-browser-dynamic.umd.js', '@angular/core': 'bundles:@angular/core.umd.js', '@angular/core/primitives/signals': 'bundles:@angular/core.primitives.signals.umd.js', '@angular/core/primitives/di': 'bundles:@angular/core.primitives.di.umd.js', '@angular/common': 'bundles:@angular/common.umd.js', '@angular/common/http': 'bundles:@angular/common-http.umd.js', '@angular/platform-browser': 'bundles:@angular/platform-browser.umd.js', '@angular/platform-browser/animations': 'bundles:@angular/platform-browser.umd.js', '@angular/forms': 'bundles:@angular/forms.umd.js', /* devextreme */ 'devextreme': 'npm:devextreme@link:../../packages/devextreme/artifacts/npm/devextreme/cjs', 'devextreme-quill': 'npm:devextreme-quill@1.7.8/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.2.24', 'devexpress-gantt': 'npm:devexpress-gantt@4.1.64', /* devextreme-angular umd maps */ 'devextreme-angular': 'bundles:devextreme-angular/devextreme-angular.umd.js', 'devextreme-angular/common/ai-integration': 'bundles:devextreme-angular/devextreme-angular-common-ai-integration.umd.js', 'devextreme-angular/core': 'bundles:devextreme-angular/devextreme-angular-core.umd.js', 'devextreme-angular/common/charts': 'bundles:devextreme-angular/devextreme-angular-common-charts.umd.js', 'devextreme-angular/common/core/animation': 'bundles:devextreme-angular/devextreme-angular-common-core-animation.umd.js', 'devextreme-angular/common/core/environment': 'bundles:devextreme-angular/devextreme-angular-common-core-environment.umd.js', 'devextreme-angular/common/core/events': 'bundles:devextreme-angular/devextreme-angular-common-core-events.umd.js', 'devextreme-angular/common/core/localization': 'bundles:devextreme-angular/devextreme-angular-common-core-localization.umd.js', 'devextreme-angular/common/core': 'bundles:devextreme-angular/devextreme-angular-common-core.umd.js', 'devextreme-angular/common/data/custom-store': 'bundles:devextreme-angular/devextreme-angular-common-data-custom-store.umd.js', 'devextreme-angular/common/data': 'bundles:devextreme-angular/devextreme-angular-common-data.umd.js', 'devextreme-angular/common/export/excel': 'bundles:devextreme-angular/devextreme-angular-common-export-excel.umd.js', 'devextreme-angular/common/export/pdf': 'bundles:devextreme-angular/devextreme-angular-common-export-pdf.umd.js', 'devextreme-angular/common/export': 'bundles:devextreme-angular/devextreme-angular-common-export.umd.js', 'devextreme-angular/common/grids': 'bundles:devextreme-angular/devextreme-angular-common-grids.umd.js', 'devextreme-angular/common': 'bundles:devextreme-angular/devextreme-angular-common.umd.js', 'devextreme-angular/http': 'bundles:devextreme-angular/devextreme-angular-http.umd.js', 'devextreme-angular/core/tokens': 'bundles:devextreme-angular/devextreme-angular-core-tokens.umd.js', ...componentNames.reduce((acc, name) => { acc[`devextreme-angular/ui/${name}`] = `bundles:devextreme-angular/devextreme-angular-ui-${name}.umd.js`; acc[`devextreme-angular/ui/${name}/nested`] = `bundles:devextreme-angular/devextreme-angular-ui-${name}-nested.umd.js`; return acc; }, {}), 'tslib': 'npm:tslib/tslib.js', 'rxjs': 'npm:rxjs@7.5.3/dist/bundles/rxjs.umd.js', 'rxjs/operators': 'npm:rxjs@7.5.3/dist/cjs/operators/index.js', 'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js', 'luxon': 'npm:luxon@3.4.4/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign', 'inferno': 'npm:inferno@8.2.3/dist/inferno.min.js', 'inferno-compat': 'npm:inferno-compat/dist/inferno-compat.min.js', 'inferno-create-element': 'npm:inferno-create-element@8.2.3/dist/inferno-create-element.min.js', 'inferno-dom': 'npm:inferno-dom/dist/inferno-dom.min.js', 'inferno-hydrate': 'npm:inferno-hydrate/dist/inferno-hydrate.min.js', 'inferno-clone-vnode': 'npm:inferno-clone-vnode/dist/inferno-clone-vnode.min.js', 'inferno-create-class': 'npm:inferno-create-class/dist/inferno-create-class.min.js', 'inferno-extras': 'npm:inferno-extras/dist/inferno-extras.min.js', '@preact/signals-core': 'npm:@preact/signals-core@1.8.0/dist/signals-core.min.js', // Prettier 'prettier/standalone': 'npm:prettier@2.8.8/standalone.js', 'prettier/parser-html': 'npm:prettier@2.8.8/parser-html.js', 'zone.js': 'npm:zone.js@0.15.1/bundles/zone.umd.js', }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts', }, 'devextreme': { defaultExtension: 'js', }, 'devextreme/events/utils': { main: 'index', }, 'devextreme/common/core/events/utils': { main: 'index', }, 'devextreme/events': { main: 'index', }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js', }, 'rxjs': { defaultExtension: 'js', }, 'rxjs/operators': { defaultExtension: 'js', }, }, packageConfigPaths: [ 'npm:@devextreme/*/package.json', 'npm:rxjs@7.5.3/package.json', 'npm:rxjs@7.5.3/operators/package.json', 'npm:devexpress-diagram@2.2.24/package.json', 'npm:devexpress-gantt@4.1.64/package.json', ], }; window.process = { env: { NODE_ENV: 'production', }, }; System.config(window.config); // eslint-disable-next-line no-console // System.import('@angular/compiler').catch(console.error.bind(console)); // eslint-disable-next-line const useTgzInCSB = ['openai']; let packagesInfo = { "@angular/core": { "version": "21.0.8" }, "core-js": { "version": "2.6.12" }, "typescript": { "version": "5.9.3" }, "zone.js": { "version": "0.15.1" } };
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/25.2.3/css/dx.light.css" /> <script src="https://cdn.jsdelivr.net/npm/core-js@2.6.12/client/shim.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/zone.js@0.15.1/bundles/zone.umd.js"></script> <script src="https://cdn.jsdelivr.net/npm/reflect-metadata@0.1.13/Reflect.js"></script> <script src="https://cdn.jsdelivr.net/npm/systemjs@0.21.3/dist/system.js"></script> <script src="config.js"></script> <script> System.import("app").catch(console.error.bind(console)); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <demo-app>Loading...</demo-app> </div> </body> </html>

You can customize the following DevExtreme Scheduler elements using custom templates (globally and for individual views):

Image Source: Wikimedia Commons