• 正在查找将来过去时的官方设定集?不如看看万界大百科吧!
  • 《将来过去时》第一部分 现在 魔科纪元的少年少女 即将正式发布!
  • 让我偷偷看一眼小鱼君的博客……
  • 服务器已成功迁移到 阿里云(杭州)

MediaWiki:Gadget-ECharts.js

来自小鱼君和他的朋友们
机智的小鱼君讨论 | 贡献2023年5月6日 (六) 17:50的版本 ([InPageEdit] 没有编辑摘要)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

注意:在保存以后,您必须绕过浏览器缓存才能看到所作出的改变。

  • 谷歌浏览器(Google Chrome)- Windows:按下“Ctrl”键然后按 F5。OS X系统:同时按⌘ Cmd⇧ Shift键之后按R键。
  • Safari - 按住⇧ Shift键然后点击工具栏中重新载入键。
  • 火狐(Firefox)- Windows:按住Ctrl键然后按F5。OS X系统:同时按⌘ Cmd⇧ Shift键之后按R键。
  • Internet Explorer:按住Ctrl键然后按F5(或者点击“刷新”按钮)。

/**
 * @name WikiECharts
 * @desc Provides the function of inserting
 *       ECharts table into the wiki page.
 */
!(function(window, $) {
  // @function loadScript
  var loadScript = function(url) {
    return $.ajax({
      url: url,
      dataType: 'script',
      cache: true
    })
  }

  // Get blocks
  var $blocks = $('.ECharts, .Echarts, .echarts')
  if ($blocks.length > 0) {
    // Load dependencies
    // These are trusted official CDN
    $.when(
      // Apache ECharts
      loadScript('https://unpkg.com/echarts'),
      // JSON5: https://github.com/json5/json5
      loadScript('https://unpkg.com/json5')
    ).then(function() {
      $blocks.each(function(index, item) {
        var $this = $(item)
        var option = {}
        var text = $this.text()
        $this.html('')

        // Try to parse JSON
        try {
          // Parse JSON with JSON5 { foo: 'bar' } -> { "foo": "bar" }
          option = JSON5.parse(text)
        } catch (e) {
          $this.append(
            $('<pre>', {
              class: 'error',
              html: 'ECharts options parse error:\n' + e
            })
          )
          return console.warn('ECharts options parse error', item, e)
        }

        // Init Chart
        var thisChart = echarts.init($this.get(0))
        thisChart.setOption(option)

        // Resize Chart
        thisChart.resize()
        $(window).on('resize', function() {
          thisChart.resize()
        })
        $('.mw-collapsible-toggle, .pi-section-tab').click(function() {
          thisChart.resize()
        })
      })
    })
  }
})(window, jQuery);