WME Bootstrap

Bootstrap library for custom Waze Map Editor scripts

目前為 2022-08-25 提交的版本,檢視 最新版本

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.gf.qytechs.cn/scripts/450160/1085492/WME%20Bootstrap.js

// ==UserScript==
// @name         WME Bootstrap
// @namespace    https://gf.qytechs.cn/users/227648-anton-shevchuk
// @version      0.0.1
// @description  Bootstrap library for custom Waze Map Editor scripts
// @license      MIT License
// @match        https://www.waze.com/editor*
// @match        https://www.waze.com/*/editor*
// @match        https://beta.waze.com/editor*
// @match        https://beta.waze.com/*/editor*
// @exclude      https://www.waze.com/user/editor*
// @exclude      https://beta.waze.com/user/editor*
// @icon         https://t3.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://anton.shevchuk.name&size=64
// @grant        none
// ==/UserScript==

/* jshint esversion: 6 */

/* global W */

(function ($) {
  'use strict'

  const APIHelper = 'https://gf.qytechs.cn/scripts/389117-apihelper/code/APIHelper.js'
  const APIHelperUI = 'https://gf.qytechs.cn/scripts/389577-apihelperui/code/APIHelperUI.js'
  const CommonUtils = 'https://gf.qytechs.cn/scripts/389765-common-utils/code/CommonUtils.js'

  const WMEEvents = ''
  const WMEClass = ''

  class Bootstrap {
    log (message) {
      console.log('%cBootstrap:%c ' + message, 'color: #0DAD8D; font-weight: bold', 'color: dimgray; font-weight: normal')
    }

    /**
     * Bootstrap it once!
     */
    init () {
      if (!window.WMEBootstrap) {
        window.WMEBootstrap = true
        this.check()
      }
    }

    /**
     * Check
     * @param {int} tries
     */
    check (tries = 100) {
      this.log('try to init')
      if (W &&
        W.map &&
        W.model &&
        W.model.countries.top &&
        W.loginManager.user
      ) {
        try{
          this
            .load()
            .then(() => $(document).trigger('bootstrap.wme'))
            .then(() => this.log('was initialized'))
            .catch((e) => this.log('loading failed', e))
        } catch (e) {

        }
      } else if (tries > 0) {
        tries--
        setTimeout(() => this.check(tries), 500)
      } else {
        this.log('initialization failed')
      }
    }

    load () {
      return Promise.all([
        // $.getScript(APIHelper),
        // $.getScript(APIHelperUI),
        // $.getScript(CommonUtils),
      ])
    }
  }

  try{
    new Bootstrap().init()
  } catch (e) {
    console.error(e)
  }
})(window.jQuery)

QingJ © 2025

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