iticket-seatingplan-dev 1.4.6 → 1.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,9 @@ var _leafletGestureHandling2 = require("leaflet-gesture-handling");
11
11
  var _reactLeafletCustomControl = _interopRequireDefault(require("react-leaflet-custom-control"));
12
12
  var _encodedSvgs = require("./assets/encodedSvgs");
13
13
  var _utils = require("../utils");
14
+ var _fitIcon = _interopRequireDefault(require("./assets/fit-icon.jpg"));
15
+ var _refresh = _interopRequireDefault(require("./assets/refresh.png"));
16
+ var _rippleload = _interopRequireDefault(require("./assets/rippleload.gif"));
14
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
18
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
19
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -113,7 +116,7 @@ function Map(_ref) {
113
116
  onClick: () => map.fitBounds(bounds),
114
117
  className: "leaflet-control-zoom-in"
115
118
  }, /*#__PURE__*/_react.default.createElement("img", {
116
- src: "https://au-iticket-shop-legacy.azurewebsites.net/assets/images/fit-icon.jpg",
119
+ src: _fitIcon.default,
117
120
  style: {
118
121
  height: "17px"
119
122
  }
@@ -130,7 +133,7 @@ function Map(_ref) {
130
133
  }
131
134
  }, /*#__PURE__*/_react.default.createElement("img", {
132
135
  className: isReloading ? "rotate" : "",
133
- src: "https://au-iticket-shop-legacy.azurewebsites.net/assets/images/refresh.png",
136
+ src: _refresh.default,
134
137
  style: {
135
138
  height: "17px"
136
139
  }
@@ -169,7 +172,7 @@ function Map(_ref) {
169
172
  return /*#__PURE__*/_react.default.createElement("div", {
170
173
  key: i
171
174
  }, /*#__PURE__*/_react.default.createElement(_reactLeaflet.ImageOverlay, {
172
- url: "https://iticketseatingplan.blob.core.windows.net/embed/static/media/rippleload.08e6a08dd832819226ef.gif",
175
+ url: _rippleload.default,
173
176
  bounds: [[(s.r.includes("NORTH") ? height / 33.33 - height / 33.33 * s.y * 0.0105 + 1.4 : height * 0.05 - s.y / (height > 800 ? height > 999 ? 3.45 : 3.3 : 3.35) - (height > 800 ? height > 999 ? height * 0.0201 : height * 0.0198 : height > 587 ? height * 0.0201 : height > 399 ? height * 0.02035 : height * 0.0207)) - 0.11, s.x * 0.3 + 0.15 - 0.11], [(s.r.includes("NORTH") ? height / 33.33 - height / 33.33 * s.y * 0.0105 + 1.4 : height * 0.05 - s.y / (height > 800 ? height > 999 ? 3.45 : 3.3 : 3.35) - (height > 800 ? height > 999 ? height * 0.0201 : height * 0.0198 : height > 587 ? height * 0.0201 : height > 399 ? height * 0.02035 : height * 0.0207)) + 0.11, s.x * 0.3 + 0.15 + 0.11]
174
177
  // [height * 0.0302 - s.y * 0.602 - 0.3, s.x * 0.61 - 0.3],
175
178
  // [height * 0.0302 - s.y * 0.602 + 0.3, s.x * 0.61 + 0.3],
@@ -262,15 +265,18 @@ function Map(_ref) {
262
265
  alt: "close"
263
266
  }))), /*#__PURE__*/_react.default.createElement("p", {
264
267
  className: "heading"
265
- }, "Select option:"), seats.pricing.filter(price => (!priceSectionIds || priceSectionIds.includes(price.psId)) && price.psId === s.psId).map(price => /*#__PURE__*/_react.default.createElement("div", {
268
+ }, "Select option:"), seats.pricing.filter(price => (!priceSectionIds || priceSectionIds.includes(price.psId)) && price.psId === s.psId).map(price => /*#__PURE__*/_react.default.createElement("button", {
266
269
  key: price.paId,
267
270
  className: "priceage",
268
271
  onClick: () => {
269
272
  s.loading = true;
270
273
  addTicketToCart(s, price);
271
- }
274
+ },
275
+ disabled: price.is_available === false
272
276
  }, /*#__PURE__*/_react.default.createElement("p", {
273
277
  className: "price"
274
- }, /*#__PURE__*/_react.default.createElement("span", null, price.paName), /*#__PURE__*/_react.default.createElement("span", null, _utils.NZDollar.format(price.p))))))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null));
278
+ }, /*#__PURE__*/_react.default.createElement("span", null, price.paName), /*#__PURE__*/_react.default.createElement("span", null, _utils.NZDollar.format(price.p))), price.is_available === false && /*#__PURE__*/_react.default.createElement("span", {
279
+ className: "unavailable"
280
+ }, "Allocation exhausted"))))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null));
275
281
  }));
276
282
  }
@@ -54,6 +54,30 @@ const SeatingPlan = _ref => {
54
54
  (0, _react.useLayoutEffect)(() => setMounted(true), []);
55
55
  const addTicketToCart = (s, priceage, cs) => {
56
56
  var _mapRef$current, _mapRef$current$targe;
57
+ if (s.s !== _utils.statuses.UNSOLD && s.s !== _utils.statuses.USER_PENDING || bookedSeats.length >= quantity && s.s === _utils.statuses.UNSOLD) {
58
+ if (bookedSeats.length >= quantity) {
59
+ const event = {
60
+ type: "error",
61
+ details: {
62
+ message: "Maximum ticket booking quantity specified reached."
63
+ }
64
+ };
65
+ callbackFunction(event);
66
+ }
67
+ s.loading = false;
68
+ return;
69
+ }
70
+ if (priceage.is_available === false) {
71
+ const event = {
72
+ type: "error",
73
+ details: {
74
+ message: "Allocation exhausted, please try another area or price."
75
+ }
76
+ };
77
+ callbackFunction(event);
78
+ s.loading = false;
79
+ return;
80
+ }
57
81
  (_mapRef$current = mapRef.current) === null || _mapRef$current === void 0 ? void 0 : (_mapRef$current$targe = _mapRef$current.target) === null || _mapRef$current$targe === void 0 ? void 0 : _mapRef$current$targe.closePopup();
58
82
  setProcessing(true);
59
83
  fetch("".concat(baseUrl, "/legacy/").concat(countryCode, "/shop/events/").concat(eventId, "/").concat(eventVenueId, "/showings/").concat(showingId, "/tickets/allocated/").concat(areaId), {
@@ -84,7 +108,6 @@ const SeatingPlan = _ref => {
84
108
  }
85
109
  };
86
110
  callbackFunction(event);
87
- setProcessing(false);
88
111
  } else if ((response === null || response === void 0 ? void 0 : response.status) === 400) {
89
112
  s.loading = false;
90
113
  (cs || chosenSeat).circle.target.setStyle({
@@ -101,7 +124,6 @@ const SeatingPlan = _ref => {
101
124
  }
102
125
  };
103
126
  callbackFunction(event);
104
- setProcessing(false);
105
127
  } else if ((response === null || response === void 0 ? void 0 : response.status) === 429) {
106
128
  s.loading = false;
107
129
  (cs || chosenSeat).circle.target.setStyle({
@@ -117,7 +139,6 @@ const SeatingPlan = _ref => {
117
139
  }
118
140
  };
119
141
  callbackFunction(event);
120
- setProcessing(false);
121
142
  } else {
122
143
  // console.log(chosenSeat.seat.ssId, cs?.seat.ssId)
123
144
  s.s = _utils.statuses.USER_PENDING;
@@ -126,7 +147,6 @@ const SeatingPlan = _ref => {
126
147
  (cs || chosenSeat).circle.target.setStyle({
127
148
  fillColor: _utils.statusColors.booked
128
149
  });
129
- setProcessing(false);
130
150
  setBookedSeats([...bookedSeats, {
131
151
  ssId: s.ssId,
132
152
  r: s.r,
@@ -170,7 +190,9 @@ const SeatingPlan = _ref => {
170
190
  }
171
191
  };
172
192
  callbackFunction(event);
193
+ }).finally(() => {
173
194
  setProcessing(false);
195
+ initialFetch(true);
174
196
  });
175
197
  };
176
198
  const removeTicketFromCart = (s, e) => {
@@ -188,7 +210,6 @@ const SeatingPlan = _ref => {
188
210
  fillColor: _utils.statusColors.available
189
211
  });
190
212
  setBookedSeats(bookedSeats.filter(bs => bs.ssId !== s.ssId));
191
- setProcessing(false);
192
213
  const event = {
193
214
  type: "cart-change-remove",
194
215
  details: bookedSeats.filter(bs => bs.ssId === s.ssId)
@@ -208,10 +229,16 @@ const SeatingPlan = _ref => {
208
229
  }
209
230
  };
210
231
  callbackFunction(event);
232
+ }).finally(() => {
211
233
  setProcessing(false);
234
+ initialFetch(true);
212
235
  });
213
236
  };
214
237
  const handleClickSeat = (e, s) => {
238
+ setChosenSeat({
239
+ circle: e,
240
+ seat: s
241
+ });
215
242
  if (s.s !== _utils.statuses.UNSOLD && s.s !== _utils.statuses.USER_PENDING || bookedSeats.length >= quantity && s.s === _utils.statuses.UNSOLD) {
216
243
  if (bookedSeats.length >= quantity) {
217
244
  const event = {
@@ -224,10 +251,6 @@ const SeatingPlan = _ref => {
224
251
  }
225
252
  return;
226
253
  }
227
- setChosenSeat({
228
- circle: e,
229
- seat: s
230
- });
231
254
  if (s.s === _utils.statuses.UNSOLD) {
232
255
  const availablePrices = seats.pricing.filter(price => (!priceSectionIds || priceSectionIds.includes(price.psId)) && s.psId === price.psId);
233
256
  if (availablePrices.length === 1) {
@@ -248,8 +271,7 @@ const SeatingPlan = _ref => {
248
271
  setIsReloading(true);
249
272
  }
250
273
  setInitialiseMessage("Initialising seating plan...");
251
- fetch( // `http://localhost:3155/api/legacy/shop/events/4230/4639/showings/102359/tickets/allocated/1603`,
252
- // `${baseUrl}/legacy/shop/events/${eventId}/${eventVenueId}/showings/${showingId}/tickets/allocated/${areaId}`,
274
+ fetch( // `http://localhost:3155/api/legacy/shop/events/${eventId}/${eventVenueId}/showings/${showingId}/tickets/allocated/${areaId}`,
253
275
  "".concat(baseUrl, "/legacy/").concat(countryCode, "/shop/events/").concat(eventId, "/").concat(eventVenueId, "/showings/").concat(showingId, "/tickets/allocated/").concat(areaId).concat(promoCode ? "?promo=".concat(promoCode) : ""), {
254
276
  headers: {
255
277
  "basket-key": sessionId,
@@ -142,7 +142,9 @@
142
142
  }
143
143
 
144
144
  .priceage {
145
- min-width: 10rem;
145
+ display: block;
146
+ background: transparent;
147
+ min-width: 12rem;
146
148
  border-radius: 0.25rem;
147
149
  padding: 0.5rem;
148
150
  border: 1px solid #bdc3c7;
@@ -150,7 +152,12 @@
150
152
  cursor: pointer;
151
153
  }
152
154
 
153
- .priceage:hover {
155
+ .priceage:disabled {
156
+ cursor: default;
157
+ color: #bdc3c7;
158
+ }
159
+
160
+ .priceage:hover:not(:disabled) {
154
161
  background: #ecf0f1;
155
162
  border: 1px solid #ecf0f1 !important;
156
163
  transition: 0.5s;
@@ -168,6 +175,13 @@
168
175
  display: inline-block;
169
176
  }
170
177
 
178
+ .priceage .unavailable {
179
+ display: flex;
180
+ text-align: left;
181
+ font-size: 12px;
182
+ margin-top: 2.5px;
183
+ }
184
+
171
185
  code {
172
186
  font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
173
187
  monospace;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "iticket-seatingplan-dev",
3
3
  "description": "Seating plan with FLEXi pricing",
4
4
  "author": "gedwyne",
5
- "version": "1.4.6",
5
+ "version": "1.4.8",
6
6
  "private": false,
7
7
  "keywords": [
8
8
  "iticket",