mudlet-map-browser-script 0.0.7 → 0.0.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.
package/index.js CHANGED
@@ -38,7 +38,7 @@ if (location.hostname !== "") {
38
38
  translator.translatePageTo();
39
39
  })
40
40
  .catch(e => console.log(`Cannot fetch translations. ${e.message}`));
41
- } else if (translations) {
41
+ } else if (typeof translations !== "undefined") {
42
42
  let defaultLanguage = {};
43
43
  document.querySelectorAll("[data-i18n]").forEach(item => {
44
44
  defaultLanguage[item.getAttribute("data-i18n")] = item.innerHTML;
@@ -109,6 +109,7 @@ class PageControls {
109
109
  this.languageSelector = document.querySelector(".lang-dropdown");
110
110
  this.currentLanguageFlag = document.querySelector(".current-language-flag");
111
111
  this.pathBox = document.querySelector(".path-box ul");
112
+ this.areaModal = document.getElementById("area-info")
112
113
  this.zIndex = 0;
113
114
  this.settings.optimizeDrag = true;
114
115
  this.settings.preview = true;
@@ -187,6 +188,10 @@ class PageControls {
187
188
  this.resetSettings();
188
189
  });
189
190
 
191
+ this.areaModal?.addEventListener("show.bs.modal", () => {
192
+ this.populateAreaInfo(this.areaId, this.zIndex);
193
+ })
194
+
190
195
  window.addEventListener("resize", () => {
191
196
  this.render();
192
197
  });
@@ -350,6 +355,49 @@ class PageControls {
350
355
  });
351
356
  }
352
357
 
358
+ populateAreaInfo(areaId, zIndex) {
359
+ let area = this.reader.getArea(areaId, zIndex);
360
+ this.areaModal.querySelector(".area-name").innerHTML = `${area.areaName} (id: ${area.areaId})`;
361
+ this.areaModal.querySelector(".area-room-count").innerHTML = Object.keys(area.rooms).length;
362
+ let areaExits = this.areaModal.querySelector(".area-exits");
363
+ areaExits.innerHTML = ""
364
+ Object.values(area.rooms).flatMap(room => this.getAreaExits(room)).forEach(([id, targetId]) => {
365
+ let targetArea = this.reader.getAreaByRoomId(targetId)
366
+ let li = document.createElement("li")
367
+ let roomLink = document.createElement("a")
368
+ roomLink.setAttribute("href", "#")
369
+ roomLink.setAttribute("data-room", id)
370
+ roomLink.appendChild(document.createTextNode(id))
371
+ roomLink.addEventListener("click", event => {
372
+ event.preventDefault();
373
+ this.findRoom(parseInt(event.currentTarget.getAttribute("data-room")));
374
+ });
375
+ let arrow = document.createTextNode(" -> ")
376
+ let targetLink = document.createElement("a")
377
+ targetLink.setAttribute("href", "#")
378
+ targetLink.setAttribute("data-room", targetId)
379
+ targetLink.appendChild(document.createTextNode(`${targetId} (${targetArea.areaName})`))
380
+ targetLink.addEventListener("click", event => {
381
+ event.preventDefault();
382
+ this.findRoom(parseInt(event.currentTarget.getAttribute("data-room")));
383
+ });
384
+ li.append(roomLink, arrow, targetLink)
385
+ areaExits.appendChild(li);
386
+ })
387
+ }
388
+
389
+ getAreaExits(room) {
390
+ let exits = [];
391
+ Object.values(room.exits).filter(target => this.isExitTarget(target)).forEach(exitId => exits.push([room.id, exitId]))
392
+ Object.values(room.specialExits).filter(target => this.isExitTarget(target)).forEach(exitId => exits.push([room.id, exitId]))
393
+ return exits
394
+ }
395
+
396
+ isExitTarget(destinationRoom) {
397
+ let destRoom = this.reader.getRoomById(destinationRoom);
398
+ return parseInt(destRoom.areaId) !== this.renderer.area.areaId;
399
+ }
400
+
353
401
  populateSelectBox() {
354
402
  this.select.querySelectorAll("option").forEach(item => item.remove());
355
403
  this.reader
@@ -384,11 +432,9 @@ class PageControls {
384
432
  });
385
433
 
386
434
  if (formData.roomId !== undefined) {
387
- let roomId = formData.roomId;
388
- if (isNaN(roomId)) {
435
+ let roomId = formData.roomId.split(",");
436
+ if (isNaN(roomId[0])) {
389
437
  roomId = findNpc(roomId);
390
- } else {
391
- roomId = [roomId];
392
438
  }
393
439
  this.findRooms(roomId);
394
440
  }
@@ -424,17 +470,16 @@ class PageControls {
424
470
  }
425
471
 
426
472
  findRooms(rooms) {
427
- //TODO Should actually use multiple rooms
428
473
  let area = this.reader.getAreaByRoomId(rooms[0]);
429
474
  if (area !== undefined) {
430
475
  this.renderArea(area.areaId, area.zIndex).then(() => {
476
+ this.renderer.controls.centerRoom(rooms[0]);
431
477
  this.renderer.controls.setZoom(1);
432
478
  this.renderer.clearHighlight();
433
479
  rooms.forEach(room => {
434
480
  this.renderer.renderHighlight(room);
435
481
  });
436
- this.findRoom(rooms[0]);
437
- this.renderer.controls.centerOnItem(this.renderer.highlights);
482
+ //this.renderer.controls.centerOnItem(this.renderer.highlights);
438
483
  });
439
484
  } else {
440
485
  this.showToast(translator.translateForKey("location-not-found", translator.currentLanguage));
@@ -522,6 +567,8 @@ class PageControls {
522
567
  }
523
568
 
524
569
  showRoomInfo(room) {
570
+ let bgColor = this.reader.getColors()[room.env] ?? [114, 1, 0]
571
+ this.infoBox.style.border = `2px solid rgba(${bgColor[0]}, ${bgColor[1]}, ${bgColor[2]}, 0.5)`
525
572
  this.infoBox.style.display = "initial";
526
573
  this.infoBox.querySelector(".room-id").innerHTML = room.id;
527
574
  this.infoBox.querySelector(".room-link").setAttribute("href", `${url}?loc=${room.id}`);
@@ -547,7 +594,8 @@ class PageControls {
547
594
  for (let userDataKey in userData) {
548
595
  show = true;
549
596
  let dataElement = document.createElement("li");
550
- dataElement.innerHTML = `${userDataKey}:<br>&nbsp; &nbsp; &nbsp;${userData[userDataKey]}`;
597
+ dataElement.classList = ["user-data"]
598
+ dataElement.innerHTML = `<p>${userDataKey}:</p><p class="value">${userData[userDataKey].replaceAll("\\n", "\n")}</p>`;
551
599
  containerList.append(dataElement);
552
600
  }
553
601
  container.style.display = show ? "initial" : "none";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mudlet-map-browser-script",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "main": "index.js",
5
5
  "license": "MIT",
6
6
  "scripts": {