Admin Reset All False

Preserve selection states during seat management with this specialized configuration of the SeatmapAdminRenderer.

The implementation demonstrates how setting the resetAll option to false allows for selective seat disabling without affecting other selections in the admin interface. The control panel offers multiple interaction options: 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). This approach is particularly valuable for complex administrative workflows that require maintaining multiple selection states simultaneously.

Code

  1import { SeatmapAdminRenderer, IAdminRendererSettings } from '../../admin-renderer';
  2import './main.css';
  3
  4var el = document.getElementById('root');
  5
  6const publicKey = 'a54a6cc6-1e42-49d0-ad38-6387c7ae55a6';
  7
  8var settings: IAdminRendererSettings = {
  9  publicKey,
 10  env: 'stage',
 11
 12  onSeatMouseEnter: function (seat) {
 13    console.log('onSeatMouseEnter', seat);
 14  },
 15  onSeatDebouncedEnter: function (seat) {
 16    console.log('onSeatDebouncedEnter', seat);
 17  },
 18  onSeatMouseLeave: function () {
 19    console.log('onSeatMouseLeave');
 20  },
 21  onSeatsSelect: function (seats) {
 22    console.log('onSeatsSelect', seats);
 23  },
 24  onSeatsDeselect: function (seats) {
 25    console.log('onSeatsDeselect', seats);
 26  },
 27  onSeatsSelectionChange: function (seats) {
 28    console.log('onSeatsSelectionChange', seats);
 29  },
 30  onSeatSelect: function (seat) {
 31    console.log('onSeatSelect', seat);
 32  },
 33  onSeatDeselect: function (seat) {
 34    console.log('onSeatDeselect', seat);
 35  },
 36  onSeatSelectionChange: function () {
 37    console.log('onSeatSelectionChange');
 38  },
 39  onCartChange: function (cart) {
 40    console.log('onCartChange', cart);
 41  },
 42  onSectorMouseEnter: function (sector) {
 43    console.log('onSectorMouseEnter', sector);
 44  },
 45  onSectorMouseLeave: function () {
 46    console.log('onSectorMouseLeave');
 47  },
 48  onSectorClick: function (sector) {
 49    console.log('onSectorClick', sector);
 50  },
 51  onSectionClick: (sector) => {
 52    console.log('onSectionClick', sector);
 53  },
 54  onPan: function (delta, isEnd) {
 55    console.log('onPan', delta, isEnd);
 56  },
 57
 58  theme: {
 59    images: {
 60      checkmark:
 61        '<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>',
 62    },
 63
 64    seatStyles: {
 65      selected: {
 66        imageId: 'checkmark',
 67        seatName: undefined,
 68        size: 16,
 69        color: 'blue',
 70      },
 71    },
 72  },
 73};
 74
 75if (el) {
 76  var renderer = (window.seatmapRenderer = new SeatmapAdminRenderer(el, settings));
 77
 78  renderer.loadSchema(56).then(() => {
 79    renderer.setMode('pan');
 80  });
 81
 82  function disableSeatsByIds() {
 83    var seats = renderer.getSeatSelection();
 84    renderer.disableSeatsByIds(
 85      seats.map((seat) => seat.id!),
 86      { resetAll: false },
 87    );
 88  }
 89  window.disableSeatsByIds = disableSeatsByIds;
 90
 91  function enableSeatsByIds() {
 92    var seats = renderer.getSeatSelection();
 93    renderer.enableSeatsByIds(seats.map((seat) => seat.id!));
 94  }
 95  window.enableSeatsByIds = enableSeatsByIds;
 96
 97  function changeMode(mode: string) {
 98    renderer.setMode(mode);
 99  }
100  window.changeMode = changeMode;
101
102  function setRandomCategory() {
103    var seats = renderer.getSeatSelection();
104    renderer.setSeatsCategory(seats as any, Math.round(Math.random() * 10));
105  }
106  window.setRandomCategory = setRandomCategory;
107
108  function setCategoryColor() {
109    var seats = renderer.getSeatSelection();
110    renderer.setSeatsCategory(seats as any, Math.round(Math.random() * 10), '#E50914');
111  }
112  window.setCategoryColor = setCategoryColor;
113
114  function disableSvgSectionsByIds() {
115    var sections = renderer.getSvgSectionBySelection();
116    renderer.disableSvgSectionsByIds(sections.map((section) => section.id));
117  }
118  window.disableSvgSectionsByIds = disableSvgSectionsByIds;
119
120  function enableSvgSectionsByIds() {
121    var sections = renderer.getSvgSectionBySelection();
122    renderer.enableSvgSectionsByIds(sections.map((section) => section.id));
123  }
124  window.enableSvgSectionsByIds = enableSvgSectionsByIds;
125}

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>