Admin Renderer
Explore the comprehensive capabilities of the SeatmapAdminRenderer through this interactive demonstration of event handling, seat management, and section control features.
The interface provides multiple control buttons: zoom controls (+ and -), mode switching buttons for pan (p), seat selection (s), and row selection (r), category management buttons for random category assignment (c) and category color setting (cc), and seat/section management buttons for disabling seats (d), enabling seats (e), disabling SVG sections (ds), and enabling SVG sections (es). A complete showcase of administrative tools for effective venue management.
Code
1import { SeatmapAdminRenderer, IAdminRendererSettings } from '../../admin-renderer';
2import './main.css';
3
4var el = document.getElementById('root');
5
6// const eventId = 'a7f2453a-e00a-4d3a-a62b-335d4e4b389d';
7// const pk = '99a77be5-4680-4b5e-b9ce-962e78f9b811';
8const publicKey = 'a54a6cc6-1e42-49d0-ad38-6387c7ae55a6';
9
10var settings: IAdminRendererSettings = {
11 publicKey,
12 env: 'stage',
13
14 onSeatMouseEnter: function (seat) {
15 console.log('onSeatMouseEnter', seat);
16 },
17 onSeatDebouncedEnter: function (seat) {
18 console.log('onSeatDebouncedEnter', seat);
19 },
20 onSeatMouseLeave: function () {
21 console.log('onSeatMouseLeave');
22 },
23 onSeatsSelect: function (seats) {
24 console.log('onSeatsSelect', seats);
25 },
26 onSeatsDeselect: function (seats) {
27 console.log('onSeatsDeselect', seats);
28 },
29 onSeatsSelectionChange: function (seats) {
30 console.log('onSeatsSelectionChange', seats);
31 },
32 onSeatSelect: function (seat) {
33 console.log('onSeatSelect', seat);
34 },
35 onSeatDeselect: function (seat) {
36 console.log('onSeatDeselect', seat);
37 },
38 onSeatSelectionChange: function () {
39 console.log('onSeatSelectionChange');
40 },
41 onCartChange: function (cart) {
42 console.log('onCartChange', cart);
43 },
44 onSectorMouseEnter: function (sector) {
45 console.log('onSectorMouseEnter', sector);
46 },
47 onSectorMouseLeave: function () {
48 console.log('onSectorMouseLeave');
49 },
50 onSectorClick: function (sector) {
51 console.log('onSectorClick', sector);
52 },
53 onSectionClick: (sector) => {
54 console.log('onSectionClick', sector);
55 },
56 onPan: function (delta, isEnd) {
57 console.log('onPan', delta, isEnd);
58 },
59
60 theme: {
61 colorCategories: ['#0000FF', '#00FF00', '#FF0000'],
62
63 images: {
64 checkmark:
65 '<svg width="18" height="18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 8.5l5 5 10-10" stroke="#fff" stroke-width="2"/></svg>',
66 },
67
68 seatStyles: {
69 selected: {
70 imageId: 'checkmark',
71 seatName: undefined,
72 size: 16,
73 color: 'blue',
74 },
75 },
76 },
77};
78
79if (el) {
80 var renderer = (window.seatmapRenderer = new SeatmapAdminRenderer(el, settings));
81
82 // 56 - Bigger
83 // 81 - Smaller
84 renderer.loadSchema(56).then(() => {
85 // renderer.loadEvent(eventId).then(() => {
86 renderer.setMode('pan');
87 });
88
89 function disableSeatsByIds() {
90 var seats = renderer.getSeatSelection();
91 renderer.disableSeatsByIds(seats.map((seat) => seat.id!));
92 }
93 window.disableSeatsByIds = disableSeatsByIds;
94
95 function enableSeatsByIds() {
96 var seats = renderer.getSeatSelection();
97 renderer.enableSeatsByIds(seats.map((seat) => seat.id!));
98 }
99 window.enableSeatsByIds = enableSeatsByIds;
100
101 function changeMode(mode: string) {
102 renderer.setMode(mode);
103 }
104 window.changeMode = changeMode;
105
106 function setRandomCategory() {
107 var seats = renderer.getSeatSelection();
108 renderer.setSeatsCategory(seats as any, Math.round(Math.random() * 10));
109 }
110 window.setRandomCategory = setRandomCategory;
111
112 function setCategoryColor() {
113 var seats = renderer.getSeatSelection();
114 renderer.setSeatsCategory(seats as any, Math.round(Math.random() * 10), '#E50914');
115 }
116 window.setCategoryColor = setCategoryColor;
117
118 function disableSvgSectionsByIds() {
119 var sections = renderer.getSvgSectionBySelection();
120 renderer.disableSvgSectionsByIds(sections.map((section) => section.id));
121 }
122 window.disableSvgSectionsByIds = disableSvgSectionsByIds;
123
124 function enableSvgSectionsByIds() {
125 var sections = renderer.getSvgSectionBySelection();
126 renderer.enableSvgSectionsByIds(sections.map((section) => section.id));
127 }
128 window.enableSvgSectionsByIds = enableSvgSectionsByIds;
129}
HTML
1<div id="root"></div>
2
3<div class="zoom-button-list">
4 <div class="zoom-button" onclick="seatmapRenderer.zoomIn()">+</div>
5 <div class="zoom-button" onclick="seatmapRenderer.zoomOut()">–</div>
6 <div class="zoom-button" onclick="changeMode('pan')">p</div>
7 <div class="zoom-button" onclick="changeMode('select')">s</div>
8 <div class="zoom-button" onclick="changeMode('selectRows')">r</div>
9 <div class="zoom-button" onclick="setRandomCategory()">c</div>
10 <div class="zoom-button" onclick="setCategoryColor()">cc</div>
11 <div class="zoom-button" onclick="disableSeatsByIds()">d</div>
12 <div class="zoom-button" onclick="enableSeatsByIds()">e</div>
13 <div class="zoom-button" onclick="disableSvgSectionsByIds()">ds</div>
14 <div class="zoom-button" onclick="enableSvgSectionsByIds()">es</div>
15</div>