WME Base

Base class for Greasy Fork plugins for Waze Map Editor

目前为 2022-12-19 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/450221/1129908/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://greasyfork.org/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.  
  20. class WMEBase {
  21. /**
  22. *
  23. * @param {String} name
  24. * @param {Object} settings
  25. */
  26. constructor (name, settings = null) {
  27. this.name = name
  28.  
  29. if (settings && settings instanceof Settings) {
  30. this.settings = settings
  31. } else if (settings) {
  32. this.settings = new Settings(name, settings)
  33. } else {
  34. this.settings = null
  35. }
  36.  
  37. jQuery(document)
  38. .on('none.wme', (e) => this.onNone(e))
  39. .on('segment.wme', (e, el, t) => this.onSegment(e, el, t))
  40. .on('segments.wme', (e, el, t) => this.onSegments(e, el, t))
  41. .on('node.wme', (e, el, t) => this.onNode(e, el, t))
  42. .on('nodes.wme', (e, el, t) => this.onNodes(e, el, t))
  43. .on('venue.wme', (e, el, t) => this.onVenue(e, el, t))
  44. .on('venues.wme', (e, el, t) => this.onVenues(e, el, t))
  45. .on('point.wme', (e, el, t) => this.onPoint(e, el, t))
  46. .on('place.wme', (e, el, t) => this.onPlace(e, el, t))
  47. .on('residential.wme', (e, el, t) => this.onResidential(e, el, t))
  48.  
  49. jQuery(window).on('beforeunload', (e) => this.onBeforeUnload(e))
  50. }
  51.  
  52. /**
  53. * Log message with prefix
  54. * @param {String} message
  55. */
  56. log (message) {
  57. console.log(
  58. '%c' + this.name + ':%c ' + message,
  59. 'color: #0DAD8D; font-weight: bold',
  60. 'color: dimgray; font-weight: normal'
  61. )
  62. }
  63.  
  64. /**
  65. * Handler for window `beforeunload` event
  66. * @param {jQuery.Event} event
  67. * @return {Null}
  68. */
  69. onBeforeUnload (event) {
  70. if (this.settings) {
  71. this.settings.save()
  72. }
  73. }
  74.  
  75. /**
  76. * Handler for `none.wme` event
  77. * @param {jQuery.Event} event
  78. * @return {void}
  79. */
  80. onNone (event) {
  81. }
  82.  
  83. /**
  84. * Handler for `segment.wme` event
  85. * @param {jQuery.Event} event
  86. * @param {HTMLElement} element
  87. * @param {W.model} model
  88. * @return {void}
  89. */
  90. onSegment (event, element, model) {
  91. }
  92.  
  93. /**
  94. * Handler for `segments.wme` event
  95. * @param {jQuery.Event} event
  96. * @param {HTMLElement} element
  97. * @param {Array} models
  98. * @return {void}
  99. */
  100. onSegments (event, element, models) {
  101. }
  102.  
  103. /**
  104. * Handler for `node.wme` event
  105. * @param {jQuery.Event} event
  106. * @param {HTMLElement} element
  107. * @param {W.model} model
  108. * @return {void}
  109. */
  110. onNode (event, element, model) {
  111. }
  112.  
  113. /**
  114. * Handler for `nodes.wme` event
  115. * @param {jQuery.Event} event
  116. * @param {HTMLElement} element
  117. * @param {Array} models
  118. * @return {void}
  119. */
  120. onNodes (event, element, models) {
  121. }
  122.  
  123. /**
  124. * Handler for `venue.wme` event
  125. * @param {jQuery.Event} event
  126. * @param {HTMLElement} element
  127. * @param {W.model} model
  128. * @return {void}
  129. */
  130. onVenue (event, element, model) {
  131. }
  132.  
  133. /**
  134. * Handler for `venues.wme` event
  135. * @param {jQuery.Event} event
  136. * @param {HTMLElement} element
  137. * @param {Array} models
  138. * @return {void}
  139. */
  140. onVenues (event, element, models) {
  141. }
  142.  
  143. /**
  144. * Handler for `place.wme` event
  145. * @param {jQuery.Event} event
  146. * @param {HTMLElement} element
  147. * @param {W.model} model
  148. * @return {void}
  149. */
  150. onPlace (event, element, model) {
  151. }
  152.  
  153. /**
  154. * Handler for `point.wme` event
  155. * @param {jQuery.Event} event
  156. * @param {HTMLElement} element
  157. * @param {W.model} model
  158. * @return {void}
  159. */
  160. onPoint (event, element, model) {
  161. }
  162.  
  163. /**
  164. * Handler for `residential.wme` event
  165. * @param {jQuery.Event} event
  166. * @param {HTMLElement} element
  167. * @param {W.model} model
  168. * @return {void}
  169. */
  170. onResidential (event, element, model) {
  171. }
  172. }