@progress/kendo-charts 1.27.1 → 1.28.0-dev.202303070933
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.
- package/dist/cdn/js/kendo-charts.js +1 -1
- package/dist/cdn/main.js +1 -1
- package/dist/es/chart/constants.js +1 -1
- package/dist/es/chart/selection.js +53 -21
- package/dist/es/common/has-classes.js +2 -2
- package/dist/es/map/layers/marker.js +25 -9
- package/dist/es/map/map.js +2 -16
- package/dist/es/map/utils.js +14 -0
- package/dist/es/services/template-service.js +2 -2
- package/dist/es/stock/stock-chart.js +5 -2
- package/dist/es2015/chart/constants.js +1 -1
- package/dist/es2015/chart/selection.js +53 -21
- package/dist/es2015/common/has-classes.js +2 -2
- package/dist/es2015/map/layers/marker.js +26 -10
- package/dist/es2015/map/map.js +2 -16
- package/dist/es2015/map/utils.js +14 -0
- package/dist/es2015/services/template-service.js +2 -2
- package/dist/es2015/stock/stock-chart.js +5 -2
- package/dist/npm/main.js +97 -47
- package/dist/systemjs/kendo-charts.js +1 -1
- package/package.json +5 -6
- package/NOTICE.txt +0 -654
|
@@ -5,16 +5,16 @@ import { DateCategoryAxis, Point } from '../core';
|
|
|
5
5
|
import { MOUSEWHEEL_DELAY, MOUSEWHEEL, SELECT_START, SELECT, SELECT_END } from './constants';
|
|
6
6
|
|
|
7
7
|
import { LEFT, RIGHT, MIN_VALUE, MAX_VALUE, X } from '../common/constants';
|
|
8
|
-
import { addClass, Class, removeClass, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';
|
|
8
|
+
import { addClass, Class, removeClass, eventCoordinates, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';
|
|
9
9
|
import { parseDate } from '../date-utils';
|
|
10
10
|
|
|
11
11
|
var ZOOM_ACCELERATION = 3;
|
|
12
12
|
var SELECTOR_HEIGHT_ADJUST = 0.1;
|
|
13
13
|
|
|
14
|
-
function createDiv(
|
|
14
|
+
function createDiv(classNames) {
|
|
15
15
|
var element = document.createElement("div");
|
|
16
|
-
if (
|
|
17
|
-
element.className =
|
|
16
|
+
if (classNames) {
|
|
17
|
+
element.className = classNames;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
return element;
|
|
@@ -65,7 +65,7 @@ var Selection = (function (Class) {
|
|
|
65
65
|
|
|
66
66
|
Selection.prototype.createElements = function createElements () {
|
|
67
67
|
var options = this.options;
|
|
68
|
-
var wrapper = this.wrapper = createDiv("k-selector");
|
|
68
|
+
var wrapper = this.wrapper = createDiv("k-selector k-pointer-events-none");
|
|
69
69
|
elementStyles(wrapper, {
|
|
70
70
|
top: options.offset.top,
|
|
71
71
|
left: options.offset.left,
|
|
@@ -73,18 +73,21 @@ var Selection = (function (Class) {
|
|
|
73
73
|
height: options.height,
|
|
74
74
|
direction: 'ltr'
|
|
75
75
|
});
|
|
76
|
-
|
|
77
|
-
this.
|
|
78
|
-
|
|
76
|
+
|
|
77
|
+
var selection = this.selection = createDiv("k-selection k-pointer-events-none");
|
|
78
|
+
|
|
79
|
+
this.leftMask = createDiv("k-mask k-pointer-events-none");
|
|
80
|
+
this.rightMask = createDiv("k-mask k-pointer-events-none");
|
|
79
81
|
|
|
80
82
|
wrapper.appendChild(this.leftMask);
|
|
81
83
|
wrapper.appendChild(this.rightMask);
|
|
82
84
|
wrapper.appendChild(selection);
|
|
83
85
|
|
|
84
|
-
|
|
86
|
+
var body = this.body = createDiv("k-selection-bg k-pointer-events-none");
|
|
87
|
+
selection.appendChild(body);
|
|
85
88
|
|
|
86
|
-
var leftHandle = this.leftHandle = createDiv("k-handle k-left-handle");
|
|
87
|
-
var rightHandle = this.rightHandle = createDiv("k-handle k-right-handle");
|
|
89
|
+
var leftHandle = this.leftHandle = createDiv("k-handle k-left-handle k-pointer-events-auto");
|
|
90
|
+
var rightHandle = this.rightHandle = createDiv("k-handle k-right-handle k-pointer-events-auto");
|
|
88
91
|
leftHandle.appendChild(createDiv());
|
|
89
92
|
rightHandle.appendChild(createDiv());
|
|
90
93
|
|
|
@@ -119,10 +122,10 @@ var Selection = (function (Class) {
|
|
|
119
122
|
|
|
120
123
|
if (this.options.mousewheel !== false) {
|
|
121
124
|
this._mousewheelHandler = this._mousewheel.bind(this);
|
|
122
|
-
bindEvents(this.
|
|
125
|
+
bindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));
|
|
123
126
|
}
|
|
124
127
|
|
|
125
|
-
this._domEvents = DomEventsBuilder.create(this.
|
|
128
|
+
this._domEvents = DomEventsBuilder.create(this.chartElement, {
|
|
126
129
|
stopPropagation: true, // applicable for the jQuery UserEvents
|
|
127
130
|
start: this._start.bind(this),
|
|
128
131
|
move: this._move.bind(this),
|
|
@@ -184,9 +187,10 @@ var Selection = (function (Class) {
|
|
|
184
187
|
|
|
185
188
|
if (this.wrapper) {
|
|
186
189
|
if (this._mousewheelHandler) {
|
|
187
|
-
unbindEvents(this.
|
|
190
|
+
unbindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));
|
|
188
191
|
this._mousewheelHandler = null;
|
|
189
192
|
}
|
|
193
|
+
|
|
190
194
|
this.chartElement.removeChild(this.wrapper);
|
|
191
195
|
this.wrapper = null;
|
|
192
196
|
}
|
|
@@ -201,18 +205,35 @@ var Selection = (function (Class) {
|
|
|
201
205
|
};
|
|
202
206
|
};
|
|
203
207
|
|
|
208
|
+
Selection.prototype._pointInPane = function _pointInPane (x, y) {
|
|
209
|
+
var paneBox = this.categoryAxis.pane.box;
|
|
210
|
+
var modelCoords = this.chart._toModelCoordinates(x, y);
|
|
211
|
+
return paneBox.containsPoint(modelCoords);
|
|
212
|
+
};
|
|
213
|
+
|
|
204
214
|
Selection.prototype._start = function _start (e) {
|
|
205
215
|
var options = this.options;
|
|
206
216
|
var target = eventElement(e);
|
|
207
|
-
|
|
208
217
|
if (this._state || !target) {
|
|
209
218
|
return;
|
|
210
219
|
}
|
|
211
220
|
|
|
221
|
+
var coords = eventCoordinates(e);
|
|
222
|
+
var inPane = this._pointInPane(coords.x, coords.y);
|
|
223
|
+
if (!inPane) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
var handle = closestHandle(target);
|
|
228
|
+
var bodyRect = this.body.getBoundingClientRect();
|
|
229
|
+
var inBody = !handle && coords.x >= bodyRect.x && coords.x <= bodyRect.x + bodyRect.width &&
|
|
230
|
+
coords.y >= bodyRect.y && coords.y <= bodyRect.y + bodyRect.height;
|
|
231
|
+
|
|
212
232
|
this.chart._unsetActivePoint();
|
|
213
233
|
this._state = {
|
|
214
|
-
moveTarget:
|
|
234
|
+
moveTarget: handle,
|
|
215
235
|
startLocation: e.x ? e.x.location : 0,
|
|
236
|
+
inBody: inBody,
|
|
216
237
|
range: {
|
|
217
238
|
from: this._index(options.from),
|
|
218
239
|
to: this._index(options.to)
|
|
@@ -263,14 +284,14 @@ var Selection = (function (Class) {
|
|
|
263
284
|
var scale = elementStyles(this.wrapper, "width").width / (categoryAxis.categoriesCount() - 1);
|
|
264
285
|
var offset = Math.round(delta / scale) * (reverse ? -1 : 1);
|
|
265
286
|
|
|
266
|
-
if (!target) {
|
|
287
|
+
if (!target && !state.inBody) {
|
|
267
288
|
return;
|
|
268
289
|
}
|
|
269
290
|
|
|
270
|
-
var leftHandle = hasClasses(target, "k-left-handle");
|
|
271
|
-
var rightHandle = hasClasses(target, "k-right-handle");
|
|
291
|
+
var leftHandle = target && hasClasses(target, "k-left-handle");
|
|
292
|
+
var rightHandle = target && hasClasses(target, "k-right-handle");
|
|
272
293
|
|
|
273
|
-
if (
|
|
294
|
+
if (state.inBody) {
|
|
274
295
|
range.from = Math.min(
|
|
275
296
|
Math.max(min, from - offset),
|
|
276
297
|
max - span
|
|
@@ -349,6 +370,7 @@ var Selection = (function (Class) {
|
|
|
349
370
|
range.to = Math.min(range.from + span, max);
|
|
350
371
|
|
|
351
372
|
this._start(e);
|
|
373
|
+
|
|
352
374
|
if (this._state) {
|
|
353
375
|
this._state.range = range;
|
|
354
376
|
this.trigger(SELECT, this._rangeEventArgs(range));
|
|
@@ -361,7 +383,7 @@ var Selection = (function (Class) {
|
|
|
361
383
|
|
|
362
384
|
var delta = mousewheelDelta(e);
|
|
363
385
|
|
|
364
|
-
this._start(
|
|
386
|
+
this._start(e);
|
|
365
387
|
|
|
366
388
|
if (this._state) {
|
|
367
389
|
var range = this._state.range;
|
|
@@ -399,6 +421,12 @@ var Selection = (function (Class) {
|
|
|
399
421
|
|
|
400
422
|
Selection.prototype._gesturestart = function _gesturestart (e) {
|
|
401
423
|
var options = this.options;
|
|
424
|
+
var touch = e.touches[0];
|
|
425
|
+
var inPane = this._pointInPane(touch.pageX, touch.pageY);
|
|
426
|
+
|
|
427
|
+
if (!inPane) {
|
|
428
|
+
return;
|
|
429
|
+
}
|
|
402
430
|
|
|
403
431
|
this._state = {
|
|
404
432
|
range: {
|
|
@@ -423,6 +451,10 @@ var Selection = (function (Class) {
|
|
|
423
451
|
};
|
|
424
452
|
|
|
425
453
|
Selection.prototype._gesturechange = function _gesturechange (e) {
|
|
454
|
+
if (!this._state) {
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
|
|
426
458
|
var ref = this;
|
|
427
459
|
var chart = ref.chart;
|
|
428
460
|
var state = ref._state;
|
|
@@ -2,9 +2,9 @@ export default function hasClasses(element, classNames) {
|
|
|
2
2
|
if (element.className) {
|
|
3
3
|
var names = classNames.split(" ");
|
|
4
4
|
for (var idx = 0; idx < names.length; idx++) {
|
|
5
|
-
if (element.className.indexOf(names[idx]) !== -1) {
|
|
5
|
+
if (element.className.indexOf && element.className.indexOf(names[idx]) !== -1) {
|
|
6
6
|
return true;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
}
|
|
10
|
+
}
|
|
@@ -9,21 +9,23 @@ import {
|
|
|
9
9
|
|
|
10
10
|
import { Layer } from './layer';
|
|
11
11
|
import { Location } from '../location';
|
|
12
|
-
|
|
13
12
|
import {
|
|
14
13
|
proxy,
|
|
15
14
|
on,
|
|
16
15
|
off,
|
|
17
16
|
toHyphens,
|
|
18
|
-
toPixels
|
|
17
|
+
toPixels,
|
|
18
|
+
convertToHtml
|
|
19
19
|
} from '../utils';
|
|
20
|
+
import TemplateService from '../../services/template-service';
|
|
20
21
|
|
|
21
22
|
var CLICK = "click";
|
|
22
23
|
var MOUSE_ENTER = "mouseenter";
|
|
23
24
|
var MOUSE_LEAVE = "mouseleave";
|
|
24
25
|
|
|
25
26
|
var extend = Object.assign;
|
|
26
|
-
var
|
|
27
|
+
var MARKER_CLASS_NAME = "k-marker";
|
|
28
|
+
var MARKER_CLASS = "." + MARKER_CLASS_NAME;
|
|
27
29
|
|
|
28
30
|
export var MarkerLayer = (function (Layer) {
|
|
29
31
|
function MarkerLayer(map, options) {
|
|
@@ -153,11 +155,9 @@ export var MarkerLayer = (function (Layer) {
|
|
|
153
155
|
};
|
|
154
156
|
|
|
155
157
|
MarkerLayer.prototype._markerClick = function _markerClick (e) {
|
|
156
|
-
var marker = e.
|
|
158
|
+
var marker = e.currentTarget._kendoNode;
|
|
157
159
|
|
|
158
160
|
var args = {
|
|
159
|
-
// marker: $(e.target).data('kendoMarker'),
|
|
160
|
-
// marker: e.target.getAttribute("data-kendoMarker"),
|
|
161
161
|
layer: this,
|
|
162
162
|
layerIndex: this._layerIndex(),
|
|
163
163
|
marker: marker,
|
|
@@ -198,7 +198,8 @@ setDefaultOptions(MarkerLayer, {
|
|
|
198
198
|
zIndex: 1000,
|
|
199
199
|
autoBind: true,
|
|
200
200
|
locationField: 'location',
|
|
201
|
-
titleField: 'title'
|
|
201
|
+
titleField: 'title',
|
|
202
|
+
template: ""
|
|
202
203
|
});
|
|
203
204
|
|
|
204
205
|
export var Marker = (function (Class) {
|
|
@@ -276,9 +277,17 @@ export var Marker = (function (Class) {
|
|
|
276
277
|
if (!this.element) {
|
|
277
278
|
var options = this.options;
|
|
278
279
|
var layer = this.layer;
|
|
279
|
-
|
|
280
280
|
var element = document.createElement('span');
|
|
281
|
-
addClass(element,
|
|
281
|
+
addClass(element, MARKER_CLASS_NAME);
|
|
282
|
+
|
|
283
|
+
if (this.options.template) {
|
|
284
|
+
var templateFn = this._compileTemplate(this.options.template);
|
|
285
|
+
var templateHtml = templateFn(this.dataItem);
|
|
286
|
+
var templateElement = convertToHtml(templateHtml);
|
|
287
|
+
element.appendChild(templateElement);
|
|
288
|
+
} else {
|
|
289
|
+
addClass(element, 'k-icon k-i-marker-' + toHyphens(options.shape || 'pin'));
|
|
290
|
+
}
|
|
282
291
|
|
|
283
292
|
if (options.title) {
|
|
284
293
|
element.setAttribute("title", options.title);
|
|
@@ -337,6 +346,13 @@ export var Marker = (function (Class) {
|
|
|
337
346
|
return args;
|
|
338
347
|
};
|
|
339
348
|
|
|
349
|
+
Marker.prototype._compileTemplate = function _compileTemplate (template) {
|
|
350
|
+
return TemplateService.compile(template, {
|
|
351
|
+
paramName: "dataItem",
|
|
352
|
+
useWithBlock: false
|
|
353
|
+
});
|
|
354
|
+
};
|
|
355
|
+
|
|
340
356
|
Marker.create = function create (arg, defaults) {
|
|
341
357
|
if (arg instanceof Marker) {
|
|
342
358
|
return arg;
|
package/dist/es/map/map.js
CHANGED
|
@@ -60,13 +60,13 @@ import {
|
|
|
60
60
|
import {
|
|
61
61
|
removeChildren,
|
|
62
62
|
setDefaultEvents,
|
|
63
|
-
toHyphens,
|
|
64
63
|
proxy,
|
|
65
64
|
now,
|
|
66
65
|
on,
|
|
67
66
|
off,
|
|
68
67
|
getSupportedFeatures,
|
|
69
|
-
convertToHtml
|
|
68
|
+
convertToHtml,
|
|
69
|
+
renderPos
|
|
70
70
|
} from './utils';
|
|
71
71
|
|
|
72
72
|
import {
|
|
@@ -100,20 +100,6 @@ var layersMap = {
|
|
|
100
100
|
};
|
|
101
101
|
layersMap[MARKER] = MarkerLayer;
|
|
102
102
|
|
|
103
|
-
function renderPos(pos) {
|
|
104
|
-
var result = [];
|
|
105
|
-
|
|
106
|
-
if (pos) {
|
|
107
|
-
var parts = toHyphens(pos).split("-");
|
|
108
|
-
|
|
109
|
-
for (var i = 0; i < parts.length; i++) {
|
|
110
|
-
result.push("k-pos-" + parts[i]);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
return result.join(" ");
|
|
115
|
-
}
|
|
116
|
-
|
|
117
103
|
var Map = (function (Observable) {
|
|
118
104
|
function Map(element, options, themeOptions, context) {
|
|
119
105
|
if ( options === void 0 ) options = {};
|
package/dist/es/map/utils.js
CHANGED
|
@@ -445,4 +445,18 @@ export var now = function () {
|
|
|
445
445
|
|
|
446
446
|
export var noop = function () {};
|
|
447
447
|
|
|
448
|
+
export var renderPos = function (pos) {
|
|
449
|
+
var result = [];
|
|
450
|
+
|
|
451
|
+
if (pos) {
|
|
452
|
+
var parts = toHyphens(pos).split("-");
|
|
453
|
+
|
|
454
|
+
for (var i = 0; i < parts.length; i++) {
|
|
455
|
+
result.push("k-pos-" + parts[i]);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
return result.join(" ");
|
|
460
|
+
};
|
|
461
|
+
|
|
448
462
|
/* eslint-enable arrow-body-style */
|
|
@@ -10,8 +10,8 @@ TemplateService.register = function register (userImplementation) {
|
|
|
10
10
|
current = userImplementation;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
TemplateService.compile = function compile (template) {
|
|
14
|
-
return current.compile(template);
|
|
13
|
+
TemplateService.compile = function compile (template, options) {
|
|
14
|
+
return current.compile(template, options);
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
export default TemplateService;
|
|
@@ -189,7 +189,10 @@ setDefaultOptions(StockChart, {
|
|
|
189
189
|
visible: false
|
|
190
190
|
},
|
|
191
191
|
tooltip: {
|
|
192
|
-
visible:
|
|
192
|
+
visible: false
|
|
193
|
+
},
|
|
194
|
+
highlight: {
|
|
195
|
+
visible: false
|
|
193
196
|
},
|
|
194
197
|
line: {
|
|
195
198
|
width: 2
|
|
@@ -206,4 +209,4 @@ setDefaultOptions(StockChart, {
|
|
|
206
209
|
}
|
|
207
210
|
});
|
|
208
211
|
|
|
209
|
-
export default StockChart;
|
|
212
|
+
export default StockChart;
|
|
@@ -92,7 +92,7 @@ const INSIDE_END = "insideEnd";
|
|
|
92
92
|
const INSIDE_BASE = "insideBase";
|
|
93
93
|
const OUTSIDE_END = "outsideEnd";
|
|
94
94
|
|
|
95
|
-
const MOUSEWHEEL = "
|
|
95
|
+
const MOUSEWHEEL = "wheel";
|
|
96
96
|
const MOUSEWHEEL_DELAY = 150;
|
|
97
97
|
const MOUSEWHEEL_ZOOM_RATE = 0.3;
|
|
98
98
|
|
|
@@ -5,16 +5,16 @@ import { DateCategoryAxis, Point } from '../core';
|
|
|
5
5
|
import { MOUSEWHEEL_DELAY, MOUSEWHEEL, SELECT_START, SELECT, SELECT_END } from './constants';
|
|
6
6
|
|
|
7
7
|
import { LEFT, RIGHT, MIN_VALUE, MAX_VALUE, X } from '../common/constants';
|
|
8
|
-
import { addClass, Class, removeClass, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';
|
|
8
|
+
import { addClass, Class, removeClass, eventCoordinates, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';
|
|
9
9
|
import { parseDate } from '../date-utils';
|
|
10
10
|
|
|
11
11
|
const ZOOM_ACCELERATION = 3;
|
|
12
12
|
const SELECTOR_HEIGHT_ADJUST = 0.1;
|
|
13
13
|
|
|
14
|
-
function createDiv(
|
|
14
|
+
function createDiv(classNames) {
|
|
15
15
|
const element = document.createElement("div");
|
|
16
|
-
if (
|
|
17
|
-
element.className =
|
|
16
|
+
if (classNames) {
|
|
17
|
+
element.className = classNames;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
return element;
|
|
@@ -61,7 +61,7 @@ class Selection extends Class {
|
|
|
61
61
|
|
|
62
62
|
createElements() {
|
|
63
63
|
const options = this.options;
|
|
64
|
-
const wrapper = this.wrapper = createDiv("k-selector");
|
|
64
|
+
const wrapper = this.wrapper = createDiv("k-selector k-pointer-events-none");
|
|
65
65
|
elementStyles(wrapper, {
|
|
66
66
|
top: options.offset.top,
|
|
67
67
|
left: options.offset.left,
|
|
@@ -69,18 +69,21 @@ class Selection extends Class {
|
|
|
69
69
|
height: options.height,
|
|
70
70
|
direction: 'ltr'
|
|
71
71
|
});
|
|
72
|
-
|
|
73
|
-
this.
|
|
74
|
-
|
|
72
|
+
|
|
73
|
+
const selection = this.selection = createDiv("k-selection k-pointer-events-none");
|
|
74
|
+
|
|
75
|
+
this.leftMask = createDiv("k-mask k-pointer-events-none");
|
|
76
|
+
this.rightMask = createDiv("k-mask k-pointer-events-none");
|
|
75
77
|
|
|
76
78
|
wrapper.appendChild(this.leftMask);
|
|
77
79
|
wrapper.appendChild(this.rightMask);
|
|
78
80
|
wrapper.appendChild(selection);
|
|
79
81
|
|
|
80
|
-
|
|
82
|
+
const body = this.body = createDiv("k-selection-bg k-pointer-events-none");
|
|
83
|
+
selection.appendChild(body);
|
|
81
84
|
|
|
82
|
-
const leftHandle = this.leftHandle = createDiv("k-handle k-left-handle");
|
|
83
|
-
const rightHandle = this.rightHandle = createDiv("k-handle k-right-handle");
|
|
85
|
+
const leftHandle = this.leftHandle = createDiv("k-handle k-left-handle k-pointer-events-auto");
|
|
86
|
+
const rightHandle = this.rightHandle = createDiv("k-handle k-right-handle k-pointer-events-auto");
|
|
84
87
|
leftHandle.appendChild(createDiv());
|
|
85
88
|
rightHandle.appendChild(createDiv());
|
|
86
89
|
|
|
@@ -113,12 +116,12 @@ class Selection extends Class {
|
|
|
113
116
|
bindEvents() {
|
|
114
117
|
if (this.options.mousewheel !== false) {
|
|
115
118
|
this._mousewheelHandler = this._mousewheel.bind(this);
|
|
116
|
-
bindEvents(this.
|
|
119
|
+
bindEvents(this.chartElement, {
|
|
117
120
|
[ MOUSEWHEEL ]: this._mousewheelHandler
|
|
118
121
|
});
|
|
119
122
|
}
|
|
120
123
|
|
|
121
|
-
this._domEvents = DomEventsBuilder.create(this.
|
|
124
|
+
this._domEvents = DomEventsBuilder.create(this.chartElement, {
|
|
122
125
|
stopPropagation: true, // applicable for the jQuery UserEvents
|
|
123
126
|
start: this._start.bind(this),
|
|
124
127
|
move: this._move.bind(this),
|
|
@@ -174,11 +177,12 @@ class Selection extends Class {
|
|
|
174
177
|
|
|
175
178
|
if (this.wrapper) {
|
|
176
179
|
if (this._mousewheelHandler) {
|
|
177
|
-
unbindEvents(this.
|
|
180
|
+
unbindEvents(this.chartElement, {
|
|
178
181
|
[ MOUSEWHEEL ]: this._mousewheelHandler
|
|
179
182
|
});
|
|
180
183
|
this._mousewheelHandler = null;
|
|
181
184
|
}
|
|
185
|
+
|
|
182
186
|
this.chartElement.removeChild(this.wrapper);
|
|
183
187
|
this.wrapper = null;
|
|
184
188
|
}
|
|
@@ -193,18 +197,35 @@ class Selection extends Class {
|
|
|
193
197
|
};
|
|
194
198
|
}
|
|
195
199
|
|
|
200
|
+
_pointInPane(x, y) {
|
|
201
|
+
const paneBox = this.categoryAxis.pane.box;
|
|
202
|
+
const modelCoords = this.chart._toModelCoordinates(x, y);
|
|
203
|
+
return paneBox.containsPoint(modelCoords);
|
|
204
|
+
}
|
|
205
|
+
|
|
196
206
|
_start(e) {
|
|
197
207
|
const options = this.options;
|
|
198
208
|
const target = eventElement(e);
|
|
199
|
-
|
|
200
209
|
if (this._state || !target) {
|
|
201
210
|
return;
|
|
202
211
|
}
|
|
203
212
|
|
|
213
|
+
const coords = eventCoordinates(e);
|
|
214
|
+
const inPane = this._pointInPane(coords.x, coords.y);
|
|
215
|
+
if (!inPane) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
const handle = closestHandle(target);
|
|
220
|
+
const bodyRect = this.body.getBoundingClientRect();
|
|
221
|
+
const inBody = !handle && coords.x >= bodyRect.x && coords.x <= bodyRect.x + bodyRect.width &&
|
|
222
|
+
coords.y >= bodyRect.y && coords.y <= bodyRect.y + bodyRect.height;
|
|
223
|
+
|
|
204
224
|
this.chart._unsetActivePoint();
|
|
205
225
|
this._state = {
|
|
206
|
-
moveTarget:
|
|
226
|
+
moveTarget: handle,
|
|
207
227
|
startLocation: e.x ? e.x.location : 0,
|
|
228
|
+
inBody,
|
|
208
229
|
range: {
|
|
209
230
|
from: this._index(options.from),
|
|
210
231
|
to: this._index(options.to)
|
|
@@ -251,14 +272,14 @@ class Selection extends Class {
|
|
|
251
272
|
const scale = elementStyles(this.wrapper, "width").width / (categoryAxis.categoriesCount() - 1);
|
|
252
273
|
const offset = Math.round(delta / scale) * (reverse ? -1 : 1);
|
|
253
274
|
|
|
254
|
-
if (!target) {
|
|
275
|
+
if (!target && !state.inBody) {
|
|
255
276
|
return;
|
|
256
277
|
}
|
|
257
278
|
|
|
258
|
-
const leftHandle = hasClasses(target, "k-left-handle");
|
|
259
|
-
const rightHandle = hasClasses(target, "k-right-handle");
|
|
279
|
+
const leftHandle = target && hasClasses(target, "k-left-handle");
|
|
280
|
+
const rightHandle = target && hasClasses(target, "k-right-handle");
|
|
260
281
|
|
|
261
|
-
if (
|
|
282
|
+
if (state.inBody) {
|
|
262
283
|
range.from = Math.min(
|
|
263
284
|
Math.max(min, from - offset),
|
|
264
285
|
max - span
|
|
@@ -335,6 +356,7 @@ class Selection extends Class {
|
|
|
335
356
|
range.to = Math.min(range.from + span, max);
|
|
336
357
|
|
|
337
358
|
this._start(e);
|
|
359
|
+
|
|
338
360
|
if (this._state) {
|
|
339
361
|
this._state.range = range;
|
|
340
362
|
this.trigger(SELECT, this._rangeEventArgs(range));
|
|
@@ -345,7 +367,7 @@ class Selection extends Class {
|
|
|
345
367
|
_mousewheel(e) {
|
|
346
368
|
let delta = mousewheelDelta(e);
|
|
347
369
|
|
|
348
|
-
this._start(
|
|
370
|
+
this._start(e);
|
|
349
371
|
|
|
350
372
|
if (this._state) {
|
|
351
373
|
const range = this._state.range;
|
|
@@ -383,6 +405,12 @@ class Selection extends Class {
|
|
|
383
405
|
|
|
384
406
|
_gesturestart(e) {
|
|
385
407
|
const options = this.options;
|
|
408
|
+
const touch = e.touches[0];
|
|
409
|
+
const inPane = this._pointInPane(touch.pageX, touch.pageY);
|
|
410
|
+
|
|
411
|
+
if (!inPane) {
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
386
414
|
|
|
387
415
|
this._state = {
|
|
388
416
|
range: {
|
|
@@ -407,6 +435,10 @@ class Selection extends Class {
|
|
|
407
435
|
}
|
|
408
436
|
|
|
409
437
|
_gesturechange(e) {
|
|
438
|
+
if (!this._state) {
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
|
|
410
442
|
const { chart, _state: state, options, categoryAxis } = this;
|
|
411
443
|
const range = state.range;
|
|
412
444
|
const p0 = chart._toModelCoordinates(e.touches[0].x.location).x;
|
|
@@ -2,9 +2,9 @@ export default function hasClasses(element, classNames) {
|
|
|
2
2
|
if (element.className) {
|
|
3
3
|
const names = classNames.split(" ");
|
|
4
4
|
for (let idx = 0; idx < names.length; idx++) {
|
|
5
|
-
if (element.className.indexOf(names[idx]) !== -1) {
|
|
5
|
+
if (element.className.indexOf && element.className.indexOf(names[idx]) !== -1) {
|
|
6
6
|
return true;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
}
|
|
10
|
+
}
|
|
@@ -9,21 +9,23 @@ import {
|
|
|
9
9
|
|
|
10
10
|
import { Layer } from './layer';
|
|
11
11
|
import { Location } from '../location';
|
|
12
|
-
|
|
13
12
|
import {
|
|
14
13
|
proxy,
|
|
15
14
|
on,
|
|
16
15
|
off,
|
|
17
16
|
toHyphens,
|
|
18
|
-
toPixels
|
|
17
|
+
toPixels,
|
|
18
|
+
convertToHtml
|
|
19
19
|
} from '../utils';
|
|
20
|
+
import TemplateService from '../../services/template-service';
|
|
20
21
|
|
|
21
22
|
const CLICK = "click";
|
|
22
23
|
const MOUSE_ENTER = "mouseenter";
|
|
23
24
|
const MOUSE_LEAVE = "mouseleave";
|
|
24
25
|
|
|
25
26
|
const extend = Object.assign;
|
|
26
|
-
const
|
|
27
|
+
const MARKER_CLASS_NAME = "k-marker";
|
|
28
|
+
const MARKER_CLASS = "." + MARKER_CLASS_NAME;
|
|
27
29
|
|
|
28
30
|
export class MarkerLayer extends Layer {
|
|
29
31
|
constructor(map, options) {
|
|
@@ -141,11 +143,9 @@ export class MarkerLayer extends Layer {
|
|
|
141
143
|
}
|
|
142
144
|
|
|
143
145
|
_markerClick(e) {
|
|
144
|
-
const marker = e.
|
|
146
|
+
const marker = e.currentTarget._kendoNode;
|
|
145
147
|
|
|
146
148
|
let args = {
|
|
147
|
-
// marker: $(e.target).data('kendoMarker'),
|
|
148
|
-
// marker: e.target.getAttribute("data-kendoMarker"),
|
|
149
149
|
layer: this,
|
|
150
150
|
layerIndex: this._layerIndex(),
|
|
151
151
|
marker: marker,
|
|
@@ -184,7 +184,8 @@ setDefaultOptions(MarkerLayer, {
|
|
|
184
184
|
zIndex: 1000,
|
|
185
185
|
autoBind: true,
|
|
186
186
|
locationField: 'location',
|
|
187
|
-
titleField: 'title'
|
|
187
|
+
titleField: 'title',
|
|
188
|
+
template: ""
|
|
188
189
|
});
|
|
189
190
|
|
|
190
191
|
export class Marker extends Class {
|
|
@@ -258,9 +259,17 @@ export class Marker extends Class {
|
|
|
258
259
|
if (!this.element) {
|
|
259
260
|
let options = this.options;
|
|
260
261
|
let layer = this.layer;
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
262
|
+
let element = document.createElement('span');
|
|
263
|
+
addClass(element, MARKER_CLASS_NAME);
|
|
264
|
+
|
|
265
|
+
if (this.options.template) {
|
|
266
|
+
const templateFn = this._compileTemplate(this.options.template);
|
|
267
|
+
const templateHtml = templateFn(this.dataItem);
|
|
268
|
+
const templateElement = convertToHtml(templateHtml);
|
|
269
|
+
element.appendChild(templateElement);
|
|
270
|
+
} else {
|
|
271
|
+
addClass(element, 'k-icon k-i-marker-' + toHyphens(options.shape || 'pin'));
|
|
272
|
+
}
|
|
264
273
|
|
|
265
274
|
if (options.title) {
|
|
266
275
|
element.setAttribute("title", options.title);
|
|
@@ -319,6 +328,13 @@ export class Marker extends Class {
|
|
|
319
328
|
return args;
|
|
320
329
|
}
|
|
321
330
|
|
|
331
|
+
_compileTemplate(template) {
|
|
332
|
+
return TemplateService.compile(template, {
|
|
333
|
+
paramName: "dataItem",
|
|
334
|
+
useWithBlock: false
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
|
|
322
338
|
static create(arg, defaults) {
|
|
323
339
|
if (arg instanceof Marker) {
|
|
324
340
|
return arg;
|