koishi-plugin-tmp-bot 1.16.2 → 1.16.4

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.
Files changed (47) hide show
  1. package/lib/api/evmOpenApi.d.ts +18 -0
  2. package/lib/api/evmOpenApi.js +67 -69
  3. package/lib/api/truckersMpApi.d.ts +34 -0
  4. package/lib/api/truckersMpApi.js +108 -113
  5. package/lib/api/truckersMpMapApi.d.ts +6 -0
  6. package/lib/api/truckersMpMapApi.js +23 -24
  7. package/lib/api/truckyAppApi.d.ts +12 -0
  8. package/lib/api/truckyAppApi.js +46 -47
  9. package/lib/command/tmpBind.d.ts +2 -0
  10. package/lib/command/tmpBind.js +13 -17
  11. package/lib/command/tmpDlcMap.d.ts +3 -0
  12. package/lib/command/tmpDlcMap.js +27 -29
  13. package/lib/command/tmpPosition.d.ts +3 -0
  14. package/lib/command/tmpPosition.js +90 -101
  15. package/lib/command/tmpQuery/tmpQuery.d.ts +2 -0
  16. package/lib/command/tmpQuery/tmpQuery.js +9 -10
  17. package/lib/command/tmpQuery/tmpQueryImg.d.ts +3 -0
  18. package/lib/command/tmpQuery/tmpQueryImg.js +88 -96
  19. package/lib/command/tmpQuery/tmpQueryText.d.ts +2 -0
  20. package/lib/command/tmpQuery/tmpQueryText.js +78 -82
  21. package/lib/command/tmpServer.d.ts +2 -0
  22. package/lib/command/tmpServer.js +31 -34
  23. package/lib/command/tmpTraffic/tmpTraffic.d.ts +2 -0
  24. package/lib/command/tmpTraffic/tmpTraffic.js +9 -10
  25. package/lib/command/tmpTraffic/tmpTrafficMap.d.ts +3 -0
  26. package/lib/command/tmpTraffic/tmpTrafficMap.js +101 -110
  27. package/lib/command/tmpTraffic/tmpTrafficText.d.ts +2 -0
  28. package/lib/command/tmpTraffic/tmpTrafficText.js +41 -49
  29. package/lib/command/tmpVersion.d.ts +2 -0
  30. package/lib/command/tmpVersion.js +12 -14
  31. package/lib/database/guildBind.d.ts +15 -0
  32. package/lib/database/guildBind.js +39 -40
  33. package/lib/database/model.d.ts +2 -0
  34. package/lib/database/model.js +55 -56
  35. package/lib/database/translateCache.d.ts +14 -0
  36. package/lib/database/translateCache.js +29 -31
  37. package/lib/resource/package/leaflet/heatmap.min.js +9 -0
  38. package/lib/resource/package/leaflet/leaflet-heatmap.js +246 -0
  39. package/lib/resource/package/leaflet/leaflet.min.js +1 -0
  40. package/lib/resource/query.html +6 -6
  41. package/lib/util/baiduTranslate.d.ts +2 -0
  42. package/lib/util/baiduTranslate.js +28 -35
  43. package/lib/util/common.d.ts +1 -0
  44. package/lib/util/common.js +4 -4
  45. package/lib/util/constant.d.ts +4 -0
  46. package/lib/util/constant.js +8 -8
  47. package/package.json +1 -1
@@ -2,65 +2,64 @@
2
2
  * 数据表声明
3
3
  */
4
4
  const modelArray = {
5
- tmp_guild_bind: {
6
- id: {
7
- type: 'unsigned',
8
- length: 10,
9
- nullable: false,
10
- comment: '主键'
5
+ tmp_guild_bind: {
6
+ id: {
7
+ type: 'unsigned',
8
+ length: 10,
9
+ nullable: false,
10
+ comment: '主键'
11
+ },
12
+ platform: {
13
+ type: 'string',
14
+ length: 50,
15
+ nullable: false,
16
+ comment: '所属平台'
17
+ },
18
+ user_id: {
19
+ type: 'string',
20
+ length: 50,
21
+ nullable: false,
22
+ comment: '用户编号'
23
+ },
24
+ tmp_id: {
25
+ type: 'unsigned',
26
+ length: 50,
27
+ nullable: false,
28
+ comment: 'TMP ID'
29
+ }
11
30
  },
12
- platform: {
13
- type: 'string',
14
- length: 50,
15
- nullable: false,
16
- comment: '所属平台'
17
- },
18
- user_id: {
19
- type: 'string',
20
- length: 50,
21
- nullable: false,
22
- comment: '用户编号'
23
- },
24
- tmp_id: {
25
- type: 'unsigned',
26
- length: 50,
27
- nullable: false,
28
- comment: 'TMP ID'
31
+ tmp_translate_cache: {
32
+ id: {
33
+ type: 'unsigned',
34
+ length: 10,
35
+ nullable: false,
36
+ comment: '主键'
37
+ },
38
+ content: {
39
+ type: 'string',
40
+ nullable: false,
41
+ length: 200,
42
+ comment: '原文文本'
43
+ },
44
+ content_md5: {
45
+ type: 'string',
46
+ nullable: false,
47
+ length: 32,
48
+ comment: '原文文本md5'
49
+ },
50
+ translate_content: {
51
+ type: 'string',
52
+ nullable: false,
53
+ length: 200,
54
+ comment: '翻译文本'
55
+ }
29
56
  }
30
- },
31
- tmp_translate_cache: {
32
- id: {
33
- type: 'unsigned',
34
- length: 10,
35
- nullable: false,
36
- comment: '主键'
37
- },
38
- content: {
39
- type: 'string',
40
- nullable: false,
41
- length: 200,
42
- comment: '原文文本'
43
- },
44
- content_md5: {
45
- type: 'string',
46
- nullable: false,
47
- length: 32,
48
- comment: '原文文本md5'
49
- },
50
- translate_content: {
51
- type: 'string',
52
- nullable: false,
53
- length: 200,
54
- comment: '翻译文本'
55
- }
56
- }
57
- }
58
-
57
+ };
59
58
  /**
60
59
  * 初始化数据库
61
60
  */
62
61
  module.exports = (ctx) => {
63
- for (let modelName in modelArray) {
64
- ctx.model.extend(modelName, modelArray[modelName], { autoInc: true })
65
- }
66
- }
62
+ for (let modelName in modelArray) {
63
+ ctx.model.extend(modelName, modelArray[modelName], { autoInc: true });
64
+ }
65
+ };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * 查询翻译
3
+ * @param db 数据源
4
+ * @param contentMd5 文本MD5
5
+ */
6
+ export function getTranslate(db: any, contentMd5: any): Promise<any>;
7
+ /**
8
+ * 保存翻译缓存信息
9
+ * @param db 数据源
10
+ * @param contentMd5 原文文本MD5
11
+ * @param content 原文文本
12
+ * @param translateContent 翻译文本
13
+ */
14
+ export function save(db: any, contentMd5: any, content: any, translateContent: any): void;
@@ -1,33 +1,31 @@
1
1
  module.exports = {
2
- /**
3
- * 查询翻译
4
- * @param db 数据源
5
- * @param contentMd5 文本MD5
6
- */
7
- async getTranslate (db, contentMd5) {
8
- const translateCacheList = await db.get('tmp_translate_cache', {
9
- content_md5: contentMd5
10
- })
11
-
12
- // 如果查询到了缓存,直接返回翻译文本
13
- if (translateCacheList && translateCacheList.length > 0) {
14
- return translateCacheList[0].translate_content
2
+ /**
3
+ * 查询翻译
4
+ * @param db 数据源
5
+ * @param contentMd5 文本MD5
6
+ */
7
+ async getTranslate(db, contentMd5) {
8
+ const translateCacheList = await db.get('tmp_translate_cache', {
9
+ content_md5: contentMd5
10
+ });
11
+ // 如果查询到了缓存,直接返回翻译文本
12
+ if (translateCacheList && translateCacheList.length > 0) {
13
+ return translateCacheList[0].translate_content;
14
+ }
15
+ return null;
16
+ },
17
+ /**
18
+ * 保存翻译缓存信息
19
+ * @param db 数据源
20
+ * @param contentMd5 原文文本MD5
21
+ * @param content 原文文本
22
+ * @param translateContent 翻译文本
23
+ */
24
+ save(db, contentMd5, content, translateContent) {
25
+ db.create('tmp_translate_cache', {
26
+ content,
27
+ content_md5: contentMd5,
28
+ translate_content: translateContent
29
+ });
15
30
  }
16
-
17
- return null
18
- },
19
- /**
20
- * 保存翻译缓存信息
21
- * @param db 数据源
22
- * @param contentMd5 原文文本MD5
23
- * @param content 原文文本
24
- * @param translateContent 翻译文本
25
- */
26
- save (db, contentMd5, content, translateContent) {
27
- db.create('tmp_translate_cache', {
28
- content,
29
- content_md5: contentMd5,
30
- translate_content: translateContent
31
- })
32
- }
33
- }
31
+ };
@@ -0,0 +1,9 @@
1
+ /*
2
+ * heatmap.js v2.0.2 | JavaScript Heatmap Library
3
+ *
4
+ * Copyright 2008-2016 Patrick Wied <heatmapjs@patrick-wied.at> - All rights reserved.
5
+ * Dual licensed under MIT and Beerware license
6
+ *
7
+ * :: 2016-02-04 21:25
8
+ */
9
+ (function (a, b, c) { if (typeof module !== "undefined" && module.exports) { module.exports = c() } else if (typeof define === "function" && define.amd) { define(c) } else { b[a] = c() } })("h337", this, function () { var a = { defaultRadius: 40, defaultRenderer: "canvas2d", defaultGradient: { .25: "rgb(0,0,255)", .55: "rgb(0,255,0)", .85: "yellow", 1: "rgb(255,0,0)" }, defaultMaxOpacity: 1, defaultMinOpacity: 0, defaultBlur: .85, defaultXField: "x", defaultYField: "y", defaultValueField: "value", plugins: {} }; var b = function h() { var b = function d(a) { this._coordinator = {}; this._data = []; this._radi = []; this._min = 0; this._max = 1; this._xField = a["xField"] || a.defaultXField; this._yField = a["yField"] || a.defaultYField; this._valueField = a["valueField"] || a.defaultValueField; if (a["radius"]) { this._cfgRadius = a["radius"] } }; var c = a.defaultRadius; b.prototype = { _organiseData: function (a, b) { var d = a[this._xField]; var e = a[this._yField]; var f = this._radi; var g = this._data; var h = this._max; var i = this._min; var j = a[this._valueField] || 1; var k = a.radius || this._cfgRadius || c; if (!g[d]) { g[d] = []; f[d] = [] } if (!g[d][e]) { g[d][e] = j; f[d][e] = k } else { g[d][e] += j } if (g[d][e] > h) { if (!b) { this._max = g[d][e] } else { this.setDataMax(g[d][e]) } return false } else { return { x: d, y: e, value: j, radius: k, min: i, max: h } } }, _unOrganizeData: function () { var a = []; var b = this._data; var c = this._radi; for (var d in b) { for (var e in b[d]) { a.push({ x: d, y: e, radius: c[d][e], value: b[d][e] }) } } return { min: this._min, max: this._max, data: a } }, _onExtremaChange: function () { this._coordinator.emit("extremachange", { min: this._min, max: this._max }) }, addData: function () { if (arguments[0].length > 0) { var a = arguments[0]; var b = a.length; while (b--) { this.addData.call(this, a[b]) } } else { var c = this._organiseData(arguments[0], true); if (c) { this._coordinator.emit("renderpartial", { min: this._min, max: this._max, data: [c] }) } } return this }, setData: function (a) { var b = a.data; var c = b.length; this._data = []; this._radi = []; for (var d = 0; d < c; d++) { this._organiseData(b[d], false) } this._max = a.max; this._min = a.min || 0; this._onExtremaChange(); this._coordinator.emit("renderall", this._getInternalData()); return this }, removeData: function () { }, setDataMax: function (a) { this._max = a; this._onExtremaChange(); this._coordinator.emit("renderall", this._getInternalData()); return this }, setDataMin: function (a) { this._min = a; this._onExtremaChange(); this._coordinator.emit("renderall", this._getInternalData()); return this }, setCoordinator: function (a) { this._coordinator = a }, _getInternalData: function () { return { max: this._max, min: this._min, data: this._data, radi: this._radi } }, getData: function () { return this._unOrganizeData() } }; return b }(); var c = function i() { var a = function (a) { var b = a.gradient || a.defaultGradient; var c = document.createElement("canvas"); var d = c.getContext("2d"); c.width = 256; c.height = 1; var e = d.createLinearGradient(0, 0, 256, 1); for (var f in b) { e.addColorStop(f, b[f]) } d.fillStyle = e; d.fillRect(0, 0, 256, 1); return d.getImageData(0, 0, 256, 1).data }; var b = function (a, b) { var c = document.createElement("canvas"); var d = c.getContext("2d"); var e = a; var f = a; c.width = c.height = a * 2; if (b == 1) { d.beginPath(); d.arc(e, f, a, 0, 2 * Math.PI, false); d.fillStyle = "rgba(0,0,0,1)"; d.fill() } else { var g = d.createRadialGradient(e, f, a * b, e, f, a); g.addColorStop(0, "rgba(0,0,0,1)"); g.addColorStop(1, "rgba(0,0,0,0)"); d.fillStyle = g; d.fillRect(0, 0, 2 * a, 2 * a) } return c }; var c = function (a) { var b = []; var c = a.min; var d = a.max; var e = a.radi; var a = a.data; var f = Object.keys(a); var g = f.length; while (g--) { var h = f[g]; var i = Object.keys(a[h]); var j = i.length; while (j--) { var k = i[j]; var l = a[h][k]; var m = e[h][k]; b.push({ x: h, y: k, value: l, radius: m }) } } return { min: c, max: d, data: b } }; function d(b) { var c = b.container; var d = this.shadowCanvas = document.createElement("canvas"); var e = this.canvas = b.canvas || document.createElement("canvas"); var f = this._renderBoundaries = [1e4, 1e4, 0, 0]; var g = getComputedStyle(b.container) || {}; e.className = "heatmap-canvas"; this._width = e.width = d.width = b.width || +g.width.replace(/px/, ""); this._height = e.height = d.height = b.height || +g.height.replace(/px/, ""); this.shadowCtx = d.getContext("2d"); this.ctx = e.getContext("2d"); e.style.cssText = d.style.cssText = "position:absolute;left:0;top:0;"; c.style.position = "relative"; c.appendChild(e); this._palette = a(b); this._templates = {}; this._setStyles(b) } d.prototype = { renderPartial: function (a) { if (a.data.length > 0) { this._drawAlpha(a); this._colorize() } }, renderAll: function (a) { this._clear(); if (a.data.length > 0) { this._drawAlpha(c(a)); this._colorize() } }, _updateGradient: function (b) { this._palette = a(b) }, updateConfig: function (a) { if (a["gradient"]) { this._updateGradient(a) } this._setStyles(a) }, setDimensions: function (a, b) { this._width = a; this._height = b; this.canvas.width = this.shadowCanvas.width = a; this.canvas.height = this.shadowCanvas.height = b }, _clear: function () { this.shadowCtx.clearRect(0, 0, this._width, this._height); this.ctx.clearRect(0, 0, this._width, this._height) }, _setStyles: function (a) { this._blur = a.blur == 0 ? 0 : a.blur || a.defaultBlur; if (a.backgroundColor) { this.canvas.style.backgroundColor = a.backgroundColor } this._width = this.canvas.width = this.shadowCanvas.width = a.width || this._width; this._height = this.canvas.height = this.shadowCanvas.height = a.height || this._height; this._opacity = (a.opacity || 0) * 255; this._maxOpacity = (a.maxOpacity || a.defaultMaxOpacity) * 255; this._minOpacity = (a.minOpacity || a.defaultMinOpacity) * 255; this._useGradientOpacity = !!a.useGradientOpacity }, _drawAlpha: function (a) { var c = this._min = a.min; var d = this._max = a.max; var a = a.data || []; var e = a.length; var f = 1 - this._blur; while (e--) { var g = a[e]; var h = g.x; var i = g.y; var j = g.radius; var k = Math.min(g.value, d); var l = h - j; var m = i - j; var n = this.shadowCtx; var o; if (!this._templates[j]) { this._templates[j] = o = b(j, f) } else { o = this._templates[j] } var p = (k - c) / (d - c); n.globalAlpha = p < .01 ? .01 : p; n.drawImage(o, l, m); if (l < this._renderBoundaries[0]) { this._renderBoundaries[0] = l } if (m < this._renderBoundaries[1]) { this._renderBoundaries[1] = m } if (l + 2 * j > this._renderBoundaries[2]) { this._renderBoundaries[2] = l + 2 * j } if (m + 2 * j > this._renderBoundaries[3]) { this._renderBoundaries[3] = m + 2 * j } } }, _colorize: function () { var a = this._renderBoundaries[0]; var b = this._renderBoundaries[1]; var c = this._renderBoundaries[2] - a; var d = this._renderBoundaries[3] - b; var e = this._width; var f = this._height; var g = this._opacity; var h = this._maxOpacity; var i = this._minOpacity; var j = this._useGradientOpacity; if (a < 0) { a = 0 } if (b < 0) { b = 0 } if (a + c > e) { c = e - a } if (b + d > f) { d = f - b } var k = this.shadowCtx.getImageData(a, b, c, d); var l = k.data; var m = l.length; var n = this._palette; for (var o = 3; o < m; o += 4) { var p = l[o]; var q = p * 4; if (!q) { continue } var r; if (g > 0) { r = g } else { if (p < h) { if (p < i) { r = i } else { r = p } } else { r = h } } l[o - 3] = n[q]; l[o - 2] = n[q + 1]; l[o - 1] = n[q + 2]; l[o] = j ? n[q + 3] : r } k.data = l; this.ctx.putImageData(k, a, b); this._renderBoundaries = [1e3, 1e3, 0, 0] }, getValueAt: function (a) { var b; var c = this.shadowCtx; var d = c.getImageData(a.x, a.y, 1, 1); var e = d.data[3]; var f = this._max; var g = this._min; b = Math.abs(f - g) * (e / 255) >> 0; return b }, getDataURL: function () { return this.canvas.toDataURL() } }; return d }(); var d = function j() { var b = false; if (a["defaultRenderer"] === "canvas2d") { b = c } return b }(); var e = { merge: function () { var a = {}; var b = arguments.length; for (var c = 0; c < b; c++) { var d = arguments[c]; for (var e in d) { a[e] = d[e] } } return a } }; var f = function k() { var c = function h() { function a() { this.cStore = {} } a.prototype = { on: function (a, b, c) { var d = this.cStore; if (!d[a]) { d[a] = [] } d[a].push(function (a) { return b.call(c, a) }) }, emit: function (a, b) { var c = this.cStore; if (c[a]) { var d = c[a].length; for (var e = 0; e < d; e++) { var f = c[a][e]; f(b) } } } }; return a }(); var f = function (a) { var b = a._renderer; var c = a._coordinator; var d = a._store; c.on("renderpartial", b.renderPartial, b); c.on("renderall", b.renderAll, b); c.on("extremachange", function (b) { a._config.onExtremaChange && a._config.onExtremaChange({ min: b.min, max: b.max, gradient: a._config["gradient"] || a._config["defaultGradient"] }) }); d.setCoordinator(c) }; function g() { var g = this._config = e.merge(a, arguments[0] || {}); this._coordinator = new c; if (g["plugin"]) { var h = g["plugin"]; if (!a.plugins[h]) { throw new Error("Plugin '" + h + "' not found. Maybe it was not registered.") } else { var i = a.plugins[h]; this._renderer = new i.renderer(g); this._store = new i.store(g) } } else { this._renderer = new d(g); this._store = new b(g) } f(this) } g.prototype = { addData: function () { this._store.addData.apply(this._store, arguments); return this }, removeData: function () { this._store.removeData && this._store.removeData.apply(this._store, arguments); return this }, setData: function () { this._store.setData.apply(this._store, arguments); return this }, setDataMax: function () { this._store.setDataMax.apply(this._store, arguments); return this }, setDataMin: function () { this._store.setDataMin.apply(this._store, arguments); return this }, configure: function (a) { this._config = e.merge(this._config, a); this._renderer.updateConfig(this._config); this._coordinator.emit("renderall", this._store._getInternalData()); return this }, repaint: function () { this._coordinator.emit("renderall", this._store._getInternalData()); return this }, getData: function () { return this._store.getData() }, getDataURL: function () { return this._renderer.getDataURL() }, getValueAt: function (a) { if (this._store.getValueAt) { return this._store.getValueAt(a) } else if (this._renderer.getValueAt) { return this._renderer.getValueAt(a) } else { return null } } }; return g }(); var g = { create: function (a) { return new f(a) }, register: function (b, c) { a.plugins[b] = c } }; return g });
@@ -0,0 +1,246 @@
1
+ /*
2
+ * Leaflet Heatmap Overlay
3
+ *
4
+ * Copyright (c) 2008-2016, Patrick Wied (https://www.patrick-wied.at)
5
+ * Dual-licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
6
+ * and the Beerware (http://en.wikipedia.org/wiki/Beerware) license.
7
+ */
8
+ ; (function (name, context, factory) {
9
+ // Supports UMD. AMD, CommonJS/Node.js and browser context
10
+ if (typeof module !== "undefined" && module.exports) {
11
+ module.exports = factory(
12
+ require('heatmap.js'),
13
+ require('leaflet')
14
+ );
15
+ } else if (typeof define === "function" && define.amd) {
16
+ define(['heatmap.js', 'leaflet'], factory);
17
+ } else {
18
+ // browser globals
19
+ if (typeof window.h337 === 'undefined') {
20
+ throw new Error('heatmap.js must be loaded before the leaflet heatmap plugin');
21
+ }
22
+ if (typeof window.L === 'undefined') {
23
+ throw new Error('Leaflet must be loaded before the leaflet heatmap plugin');
24
+ }
25
+ context[name] = factory(window.h337, window.L);
26
+ }
27
+
28
+ })("HeatmapOverlay", this, function (h337, L) {
29
+ 'use strict';
30
+
31
+ // Leaflet < 0.8 compatibility
32
+ if (typeof L.Layer === 'undefined') {
33
+ L.Layer = L.Class;
34
+ }
35
+
36
+ var HeatmapOverlay = L.Layer.extend({
37
+
38
+ initialize: function (config) {
39
+ this.cfg = config;
40
+ this._el = L.DomUtil.create('div', 'leaflet-zoom-hide');
41
+ this._data = [];
42
+ this._max = 1;
43
+ this._min = 0;
44
+ this.cfg.container = this._el;
45
+ },
46
+
47
+ onAdd: function (map) {
48
+ var size = map.getSize();
49
+
50
+ this._map = map;
51
+
52
+ this._width = size.x;
53
+ this._height = size.y;
54
+
55
+ this._el.style.width = size.x + 'px';
56
+ this._el.style.height = size.y + 'px';
57
+ this._el.style.position = 'absolute';
58
+
59
+ this._origin = this._map.layerPointToLatLng(new L.Point(0, 0));
60
+
61
+ map.getPanes().overlayPane.appendChild(this._el);
62
+
63
+ if (!this._heatmap) {
64
+ this._heatmap = h337.create(this.cfg);
65
+ }
66
+
67
+ // this resets the origin and redraws whenever
68
+ // the zoom changed or the map has been moved
69
+ map.on('moveend', this._reset, this);
70
+ this._draw();
71
+ },
72
+
73
+ addTo: function (map) {
74
+ map.addLayer(this);
75
+ return this;
76
+ },
77
+
78
+ onRemove: function (map) {
79
+ // remove layer's DOM elements and listeners
80
+ map.getPanes().overlayPane.removeChild(this._el);
81
+
82
+ map.off('moveend', this._reset, this);
83
+ },
84
+ _draw: function () {
85
+ if (!this._map) { return; }
86
+
87
+ var mapPane = this._map.getPanes().mapPane;
88
+ var point = mapPane._leaflet_pos;
89
+
90
+ // reposition the layer
91
+ this._el.style[HeatmapOverlay.CSS_TRANSFORM] = 'translate(' +
92
+ -Math.round(point.x) + 'px,' +
93
+ -Math.round(point.y) + 'px)';
94
+
95
+ this._update();
96
+ },
97
+ _update: function () {
98
+ var bounds, zoom, scale;
99
+ var generatedData = { max: this._max, min: this._min, data: [] };
100
+
101
+ bounds = this._map.getBounds();
102
+ zoom = this._map.getZoom();
103
+ scale = Math.pow(2, zoom);
104
+
105
+ if (this._data.length == 0) {
106
+ if (this._heatmap) {
107
+ this._heatmap.setData(generatedData);
108
+ }
109
+ return;
110
+ }
111
+
112
+
113
+ var latLngPoints = [];
114
+ var radiusMultiplier = this.cfg.scaleRadius ? scale : 1;
115
+ var localMax = 0;
116
+ var localMin = 0;
117
+ var valueField = this.cfg.valueField;
118
+ var len = this._data.length;
119
+
120
+ while (len--) {
121
+ var entry = this._data[len];
122
+ var value = entry[valueField];
123
+ var latlng = entry.latlng;
124
+
125
+
126
+ // we don't wanna render points that are not even on the map ;-)
127
+ if (!bounds.contains(latlng)) {
128
+ continue;
129
+ }
130
+ // local max is the maximum within current bounds
131
+ localMax = Math.max(value, localMax);
132
+ localMin = Math.min(value, localMin);
133
+
134
+ var point = this._map.latLngToContainerPoint(latlng);
135
+ var latlngPoint = { x: Math.round(point.x), y: Math.round(point.y) };
136
+ latlngPoint[valueField] = value;
137
+
138
+ var radius;
139
+
140
+ if (entry.radius) {
141
+ radius = entry.radius * radiusMultiplier;
142
+ } else {
143
+ radius = (this.cfg.radius || 2) * radiusMultiplier;
144
+ }
145
+ latlngPoint.radius = radius;
146
+ latLngPoints.push(latlngPoint);
147
+ }
148
+ if (this.cfg.useLocalExtrema) {
149
+ generatedData.max = localMax;
150
+ generatedData.min = localMin;
151
+ }
152
+
153
+ generatedData.data = latLngPoints;
154
+
155
+ this._heatmap.setData(generatedData);
156
+ },
157
+ setData: function (data) {
158
+ this._max = data.max || this._max;
159
+ this._min = data.min || this._min;
160
+ var latField = this.cfg.latField || 'lat';
161
+ var lngField = this.cfg.lngField || 'lng';
162
+ var valueField = this.cfg.valueField || 'value';
163
+
164
+ // transform data to latlngs
165
+ var data = data.data;
166
+ var len = data.length;
167
+ var d = [];
168
+
169
+ while (len--) {
170
+ var entry = data[len];
171
+ var latlng = new L.LatLng(entry[latField], entry[lngField]);
172
+ var dataObj = { latlng: latlng };
173
+ dataObj[valueField] = entry[valueField];
174
+ if (entry.radius) {
175
+ dataObj.radius = entry.radius;
176
+ }
177
+ d.push(dataObj);
178
+ }
179
+ this._data = d;
180
+
181
+ this._draw();
182
+ },
183
+ // experimential... not ready.
184
+ addData: function (pointOrArray) {
185
+ if (pointOrArray.length > 0) {
186
+ var len = pointOrArray.length;
187
+ while (len--) {
188
+ this.addData(pointOrArray[len]);
189
+ }
190
+ } else {
191
+ var latField = this.cfg.latField || 'lat';
192
+ var lngField = this.cfg.lngField || 'lng';
193
+ var valueField = this.cfg.valueField || 'value';
194
+ var entry = pointOrArray;
195
+ var latlng = new L.LatLng(entry[latField], entry[lngField]);
196
+ var dataObj = { latlng: latlng };
197
+
198
+ dataObj[valueField] = entry[valueField];
199
+ this._max = Math.max(this._max, dataObj[valueField]);
200
+ this._min = Math.min(this._min, dataObj[valueField]);
201
+
202
+ if (entry.radius) {
203
+ dataObj.radius = entry.radius;
204
+ }
205
+ this._data.push(dataObj);
206
+ this._draw();
207
+ }
208
+ },
209
+ _reset: function () {
210
+ this._origin = this._map.layerPointToLatLng(new L.Point(0, 0));
211
+
212
+ var size = this._map.getSize();
213
+ if (this._width !== size.x || this._height !== size.y) {
214
+ this._width = size.x;
215
+ this._height = size.y;
216
+
217
+ this._el.style.width = this._width + 'px';
218
+ this._el.style.height = this._height + 'px';
219
+
220
+ this._heatmap._renderer.setDimensions(this._width, this._height);
221
+ }
222
+ this._draw();
223
+ }
224
+ });
225
+
226
+ HeatmapOverlay.CSS_TRANSFORM = (function () {
227
+ var div = document.createElement('div');
228
+ var props = [
229
+ 'transform',
230
+ 'WebkitTransform',
231
+ 'MozTransform',
232
+ 'OTransform',
233
+ 'msTransform'
234
+ ];
235
+
236
+ for (var i = 0; i < props.length; i++) {
237
+ var prop = props[i];
238
+ if (div.style[prop] !== undefined) {
239
+ return prop;
240
+ }
241
+ }
242
+ return props[0];
243
+ })();
244
+
245
+ return HeatmapOverlay;
246
+ });