UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

176 lines (131 loc) 5.35 kB
"use strict"; var Promise = require("../../core/polyfills/promise"), Class = require("../../core/class"), map = require("../../core/utils/iterator").map, typeUtils = require("../../core/utils/type"), eventUtils = require("../../events/utils"), isPlainObject = typeUtils.isPlainObject, isNumeric = typeUtils.isNumeric; var abstract = Class.abstract; var Provider = Class.inherit({ _defaultRouteWeight: function _defaultRouteWeight() { return 5; }, _defaultRouteOpacity: function _defaultRouteOpacity() { return 0.5; }, _defaultRouteColor: function _defaultRouteColor() { return "#0000FF"; }, ctor: function ctor(map, $container) { this._mapWidget = map; this._$container = $container; }, render: function render(markerOptions, routeOptions) { return this._renderImpl().then(function () { return Promise.all([this._applyFunctionIfNeeded("addMarkers", markerOptions), this._applyFunctionIfNeeded("addRoutes", routeOptions)]).then(function () { return true; }); }.bind(this)); }, _renderImpl: abstract, updateDimensions: abstract, updateMapType: abstract, updateBounds: abstract, updateCenter: abstract, updateZoom: abstract, updateControls: abstract, updateMarkers: function updateMarkers(markerOptionsToRemove, markerOptionsToAdd) { return new Promise(function (resolve) { return this._applyFunctionIfNeeded("removeMarkers", markerOptionsToRemove).then(function (removeValue) { this._applyFunctionIfNeeded("addMarkers", markerOptionsToAdd).then(function (addValue) { resolve(addValue ? addValue : removeValue); }); }.bind(this)); }.bind(this)); }, addMarkers: abstract, removeMarkers: abstract, adjustViewport: abstract, updateRoutes: function updateRoutes(routeOptionsToRemove, routeOptionsToAdd) { return new Promise(function (resolve) { return this._applyFunctionIfNeeded("removeRoutes", routeOptionsToRemove).then(function (removeValue) { this._applyFunctionIfNeeded("addRoutes", routeOptionsToAdd).then(function (addValue) { resolve(addValue ? addValue : removeValue); }); }.bind(this)); }.bind(this)); }, addRoutes: abstract, removeRoutes: abstract, clean: abstract, map: function map() { return this._map; }, isEventsCanceled: function isEventsCanceled() { return false; }, _option: function _option(name, value) { if (value === undefined) { return this._mapWidget.option(name); } this._mapWidget.setOptionSilent(name, value); }, _keyOption: function _keyOption(providerName) { var key = this._option("key"); return key[providerName] === undefined ? key : key[providerName]; }, _parseTooltipOptions: function _parseTooltipOptions(option) { return { text: option.text || option, visible: option.isShown || false }; }, _getLatLng: function _getLatLng(location) { if (typeof location === "string") { var coords = map(location.split(","), function (item) { return item.trim(); }), numericRegex = /^[-+]?[0-9]*\.?[0-9]*$/; if (coords.length === 2 && coords[0].match(numericRegex) && coords[1].match(numericRegex)) { return { lat: parseFloat(coords[0]), lng: parseFloat(coords[1]) }; } } else if (Array.isArray(location) && location.length === 2) { return { lat: location[0], lng: location[1] }; } else if (isPlainObject(location) && isNumeric(location.lat) && isNumeric(location.lng)) { return location; } return null; }, _areBoundsSet: function _areBoundsSet() { return this._option("bounds.northEast") && this._option("bounds.southWest"); }, _addEventNamespace: function _addEventNamespace(name) { return eventUtils.addNamespace(name, this._mapWidget.NAME); }, _applyFunctionIfNeeded: function _applyFunctionIfNeeded(fnName, array) { if (!array.length) { return Promise.resolve(); } return this[fnName](array); }, _fireAction: function _fireAction(name, actionArguments) { this._mapWidget._createActionByOption(name)(actionArguments); }, _fireClickAction: function _fireClickAction(actionArguments) { this._fireAction("onClick", actionArguments); }, _fireMarkerAddedAction: function _fireMarkerAddedAction(actionArguments) { this._fireAction("onMarkerAdded", actionArguments); }, _fireMarkerRemovedAction: function _fireMarkerRemovedAction(actionArguments) { this._fireAction("onMarkerRemoved", actionArguments); }, _fireRouteAddedAction: function _fireRouteAddedAction(actionArguments) { this._fireAction("onRouteAdded", actionArguments); }, _fireRouteRemovedAction: function _fireRouteRemovedAction(actionArguments) { this._fireAction("onRouteRemoved", actionArguments); } }); module.exports = Provider;