WME Base

Base class for Greasy Fork镜像 plugins for Waze Map Editor

当前为 2023-01-06 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/450221/1135775/WME%20Base.js

  1. // ==UserScript==
  2. // @name WME Base
  3. // @version 0.1.1
  4. // @description Base class for Greasy Fork镜像 plugins for Waze Map Editor
  5. // @license MIT License
  6. // @author Anton Shevchuk
  7. // @namespace https://gf.qytechs.cn/users/227648-anton-shevchuk
  8. // @supportURL https://github.com/AntonShevchuk/wme-base/issues
  9. // @match https://*.waze.com/editor*
  10. // @match https://*.waze.com/*/editor*
  11. // @exclude https://*.waze.com/user/editor*
  12. // @icon https://t3.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://anton.shevchuk.name&size=64
  13. // @grant none
  14. // ==/UserScript==
  15.  
  16. /* jshint esversion: 8 */
  17.  
  18. /* global jQuery, W */
  19. /* global Settings */
  20.  
  21. class WMEBase {
  22. /**
  23. *
  24. * @param {String} name
  25. * @param {Object} settings
  26. */
  27. constructor (name, settings = null) {
  28. this.name = name
  29.  
  30. if (settings && settings instanceof Settings) {
  31. this.settings = settings
  32. } else if (settings) {
  33. this.settings = new Settings(name, settings)
  34. } else {
  35. this.settings = null
  36. }
  37.  
  38. jQuery(document)
  39. .on('none.wme', (e) => this.onNone(e))
  40. .on('segment.wme', (e, el, t) => this.onSegment(e, el, t))
  41. .on('segments.wme', (e, el, t) => this.onSegments(e, el, t))
  42. .on('node.wme', (e, el, t) => this.onNode(e, el, t))
  43. .on('nodes.wme', (e, el, t) => this.onNodes(e, el, t))
  44. .on('venue.wme', (e, el, t) => this.onVenue(e, el, t))
  45. .on('venues.wme', (e, el, t) => this.onVenues(e, el, t))
  46. .on('point.wme', (e, el, t) => this.onPoint(e, el, t))
  47. .on('place.wme', (e, el, t) => this.onPlace(e, el, t))
  48. .on('residential.wme', (e, el, t) => this.onResidential(e, el, t))
  49.  
  50. jQuery(window).on('beforeunload', (e) => this.onBeforeUnload(e))
  51. }
  52.  
  53. /**
  54. * Log message with prefix
  55. * @param {String} message
  56. */
  57. log (message) {
  58. console.log(
  59. '%c' + this.name + ':%c ' + message,
  60. 'color: #0DAD8D; font-weight: bold',
  61. 'color: dimgray; font-weight: normal'
  62. )
  63. }
  64.  
  65. /**
  66. * Handler for window `beforeunload` event
  67. * @param {jQuery.Event} event
  68. * @return {Null}
  69. */
  70. onBeforeUnload (event) {
  71. if (this.settings) {
  72. this.settings.save()
  73. }
  74. }
  75.  
  76. /**
  77. * Handler for `none.wme` event
  78. * @param {jQuery.Event} event
  79. * @return {void}
  80. */
  81. onNone (event) {
  82. }
  83.  
  84. /**
  85. * Handler for `segment.wme` event
  86. * @param {jQuery.Event} event
  87. * @param {HTMLElement} element
  88. * @param {W.model} model
  89. * @return {void}
  90. */
  91. onSegment (event, element, model) {
  92. }
  93.  
  94. /**
  95. * Handler for `segments.wme` event
  96. * @param {jQuery.Event} event
  97. * @param {HTMLElement} element
  98. * @param {Array} models
  99. * @return {void}
  100. */
  101. onSegments (event, element, models) {
  102. }
  103.  
  104. /**
  105. * Handler for `node.wme` event
  106. * @param {jQuery.Event} event
  107. * @param {HTMLElement} element
  108. * @param {W.model} model
  109. * @return {void}
  110. */
  111. onNode (event, element, model) {
  112. }
  113.  
  114. /**
  115. * Handler for `nodes.wme` event
  116. * @param {jQuery.Event} event
  117. * @param {HTMLElement} element
  118. * @param {Array} models
  119. * @return {void}
  120. */
  121. onNodes (event, element, models) {
  122. }
  123.  
  124. /**
  125. * Handler for `venue.wme` event
  126. * @param {jQuery.Event} event
  127. * @param {HTMLElement} element
  128. * @param {W.model} model
  129. * @return {void}
  130. */
  131. onVenue (event, element, model) {
  132. }
  133.  
  134. /**
  135. * Handler for `venues.wme` event
  136. * @param {jQuery.Event} event
  137. * @param {HTMLElement} element
  138. * @param {Array} models
  139. * @return {void}
  140. */
  141. onVenues (event, element, models) {
  142. }
  143.  
  144. /**
  145. * Handler for `place.wme` event
  146. * @param {jQuery.Event} event
  147. * @param {HTMLElement} element
  148. * @param {W.model} model
  149. * @return {void}
  150. */
  151. onPlace (event, element, model) {
  152. }
  153.  
  154. /**
  155. * Handler for `point.wme` event
  156. * @param {jQuery.Event} event
  157. * @param {HTMLElement} element
  158. * @param {W.model} model
  159. * @return {void}
  160. */
  161. onPoint (event, element, model) {
  162. }
  163.  
  164. /**
  165. * Handler for `residential.wme` event
  166. * @param {jQuery.Event} event
  167. * @param {HTMLElement} element
  168. * @param {W.model} model
  169. * @return {void}
  170. */
  171. onResidential (event, element, model) {
  172. }
  173. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址