").attr("data-bind", widgetName + ": options").get(0);
$(options.container).append(markup);
ko.applyBindings(options.model, markup)
}
}
},
createTemplate: function(element) {
return new KoTemplate(element)
}
}
},
optionNameToModelMap = {};
var applyModelValueToOption = function(optionName, modelValue, unwrap) {
var locks = $element.data(LOCKS_DATA_KEY),
optionValue = unwrap ? ko.unwrap(modelValue) : modelValue;
if (ko.isWriteableObservable(modelValue)) {
optionNameToModelMap[optionName] = modelValue
}
if (component) {
if (locks.locked(optionName)) {
return
}
locks.obtain(optionName);
try {
if (ko.ignoreDependencies) {
ko.ignoreDependencies(component.option, component, [optionName, optionValue])
} else {
component.option(optionName, optionValue)
}
} finally {
locks.release(optionName)
}
} else {
ctorOptions[optionName] = optionValue
}
};
var handleOptionChanged = function(args) {
var optionName = args.fullName,
optionValue = args.value;
if (!(optionName in optionNameToModelMap)) {
return
}
var $element = this._$element,
locks = $element.data(LOCKS_DATA_KEY);
if (locks.locked(optionName)) {
return
}
locks.obtain(optionName);
try {
optionNameToModelMap[optionName](optionValue)
} finally {
locks.release(optionName)
}
};
var createComponent = function() {
optionChangedCallbacks.add(handleOptionChanged);
$element.data(CREATED_WITH_KO_DATA_KEY, true).data(LOCKS_DATA_KEY, new Locker);
new componentClass($element, ctorOptions);
ctorOptions = null
};
var unwrapModelValue = function(currentModel, propertyName, propertyPath) {
if (propertyPath === isBindingPropertyPredicateName) {
return
}
if (!isBindingPropertyPredicate || isBindingPropertyPredicate(propertyPath, propertyName, currentModel)) {
var unwrappedPropertyValue;
ko.computed(function() {
var propertyValue = currentModel[propertyName];
applyModelValueToOption(propertyPath, propertyValue, true);
unwrappedPropertyValue = ko.unwrap(propertyValue)
}, null, {
disposeWhenNodeIsRemoved: domNode
});
if (isPlainObject(unwrappedPropertyValue)) {
if (!optionsByReference[propertyPath]) {
unwrapModel(unwrappedPropertyValue, propertyPath)
}
}
} else {
applyModelValueToOption(propertyPath, currentModel[propertyName], false)
}
};
var unwrapModel = function(model, propertyPath) {
for (var propertyName in model) {
if (Object.prototype.hasOwnProperty.call(model, propertyName)) {
unwrapModelValue(model, propertyName, propertyPath ? [propertyPath, propertyName].join(".") : propertyName)
}
}
};
createComponent();
return {
controlsDescendantBindings: componentClass.subclassOf(Widget)
}
}
};
if ("dxValidator" === componentName) {
ko.bindingHandlers.dxValidator.after = editorsBindingHandlers
}
};
registerComponentCallbacks.add(function(name, componentClass) {
registerComponentKoBinding(name, componentClass)
})
},
/*!***************************************************************!*\
!*** ./artifacts/transpiled/integration/knockout/template.js ***!
\***************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.KoTemplate = void 0;
var _createClass = function() {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) {
descriptor.writable = true
}
Object.defineProperty(target, descriptor.key, descriptor)
}
}
return function(Constructor, protoProps, staticProps) {
if (protoProps) {
defineProperties(Constructor.prototype, protoProps)
}
if (staticProps) {
defineProperties(Constructor, staticProps)
}
return Constructor
}
}();
var _renderer = __webpack_require__( /*! ../../core/renderer */ 2);
var _renderer2 = _interopRequireDefault(_renderer);
var _dom_adapter = __webpack_require__( /*! ../../core/dom_adapter */ 13);
var _knockout = __webpack_require__( /*! knockout */ 60);
var _knockout2 = _interopRequireDefault(_knockout);
var _type = __webpack_require__( /*! ../../core/utils/type */ 1);
var _template_base = __webpack_require__( /*! ../../core/templates/template_base */ 74);
var _dom = __webpack_require__( /*! ../../core/utils/dom */ 11);
var _utils = __webpack_require__( /*! ./utils */ 280);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function")
}
}
function _possibleConstructorReturn(self, call) {
if (!self) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
}
return call && ("object" === typeof call || "function" === typeof call) ? call : self
}
function _inherits(subClass, superClass) {
if ("function" !== typeof superClass && null !== superClass) {
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass)
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
enumerable: false,
writable: true,
configurable: true
}
});
if (superClass) {
Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass
}
}
var getParentContext = function(data) {
var parentNode = (0, _dom_adapter.createElement)("div");
_knockout2.default.applyBindingsToNode(parentNode, null, data);
var parentContext = _knockout2.default.contextFor(parentNode);
_knockout2.default.cleanNode(parentNode);
return parentContext
};
exports.KoTemplate = function(_TemplateBase) {
_inherits(KoTemplate, _TemplateBase);
function KoTemplate(element) {
_classCallCheck(this, KoTemplate);
var _this = _possibleConstructorReturn(this, (KoTemplate.__proto__ || Object.getPrototypeOf(KoTemplate)).call(this));
_this._element = element;
_this._template = (0, _renderer2.default)("
").append((0, _dom.normalizeTemplateElement)(element));
_this._registerKoTemplate();
return _this
}
_createClass(KoTemplate, [{
key: "_registerKoTemplate",
value: function() {
var template = this._template.get(0);
new _knockout2.default.templateSources.anonymousTemplate(template).nodes(template)
}
}, {
key: "_prepareDataForContainer",
value: function(data, container) {
if (container && container.length) {
var node = (0, _utils.getClosestNodeWithContext)(container.get(0));
var containerContext = _knockout2.default.contextFor(node);
data = void 0 !== data ? data : _knockout2.default.dataFor(node) || {};
if (containerContext) {
return data === containerContext.$data ? containerContext : containerContext.createChildContext(data)
}
}
return getParentContext(data).createChildContext(data)
}
}, {
key: "_renderCore",
value: function(options) {
var model = this._prepareDataForContainer(options.model, (0, _renderer2.default)(options.container));
if ((0, _type.isDefined)(options.index)) {
model.$index = options.index
}
var $placeholder = (0, _renderer2.default)("
").appendTo(options.container);
var $result = void 0;
_knockout2.default.renderTemplate(this._template.get(0), model, {
afterRender: function(nodes) {
$result = (0, _renderer2.default)(nodes)
}
}, $placeholder.get(0), "replaceNode");
return $result
}
}, {
key: "source",
value: function() {
return (0, _renderer2.default)(this._element).clone()
}
}, {
key: "dispose",
value: function() {
this._template.remove()
}
}]);
return KoTemplate
}(_template_base.TemplateBase)
},
/*!************************************************************************!*\
!*** ./artifacts/transpiled/integration/knockout/event_registrator.js ***!
\************************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var $ = __webpack_require__( /*! ../../core/renderer */ 2),
eventsEngine = __webpack_require__( /*! ../../events/core/events_engine */ 5),
ko = __webpack_require__( /*! knockout */ 60),
isPlainObject = __webpack_require__( /*! ../../core/utils/type */ 1).isPlainObject,
eventRegistratorCallbacks = __webpack_require__( /*! ../../events/core/event_registrator_callbacks */ 124),
eventUtils = __webpack_require__( /*! ../../events/utils */ 8);
eventRegistratorCallbacks.add(function(name) {
var koBindingEventName = eventUtils.addNamespace(name, name + "Binding");
ko.bindingHandlers[name] = {
update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
var $element = $(element),
unwrappedValue = ko.utils.unwrapObservable(valueAccessor()),
eventSource = unwrappedValue.execute ? unwrappedValue.execute : unwrappedValue;
eventsEngine.off($element, koBindingEventName);
eventsEngine.on($element, koBindingEventName, isPlainObject(unwrappedValue) ? unwrappedValue : {}, function(e) {
eventSource.call(viewModel, viewModel, e)
})
}
}
})
},
/*!*****************************************************************!*\
!*** ./artifacts/transpiled/integration/knockout/components.js ***!
\*****************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var ko = __webpack_require__( /*! knockout */ 60),
iconUtils = __webpack_require__( /*! ../../core/utils/icon */ 54);
ko.bindingHandlers.dxControlsDescendantBindings = {
init: function(_, valueAccessor) {
return {
controlsDescendantBindings: ko.unwrap(valueAccessor())
}
}
};
ko.bindingHandlers.dxIcon = {
init: function(element, valueAccessor) {
var options = ko.utils.unwrapObservable(valueAccessor()) || {},
iconElement = iconUtils.getImageContainer(options);
ko.virtualElements.emptyNode(element);
if (iconElement) {
ko.virtualElements.prepend(element, iconElement.get(0))
}
},
update: function(element, valueAccessor) {
var options = ko.utils.unwrapObservable(valueAccessor()) || {},
iconElement = iconUtils.getImageContainer(options);
ko.virtualElements.emptyNode(element);
if (iconElement) {
ko.virtualElements.prepend(element, iconElement.get(0))
}
}
};
ko.virtualElements.allowedBindings.dxIcon = true
},
/*!*****************************************************************!*\
!*** ./artifacts/transpiled/integration/knockout/validation.js ***!
\*****************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 3);
var _extend = __webpack_require__( /*! ../../core/utils/extend */ 0);
var _class = __webpack_require__( /*! ../../core/class */ 15);
var _class2 = _interopRequireDefault(_class);
var _events_mixin = __webpack_require__( /*! ../../core/events_mixin */ 85);
var _events_mixin2 = _interopRequireDefault(_events_mixin);
var _validation_engine = __webpack_require__( /*! ../../ui/validation_engine */ 87);
var _validation_engine2 = _interopRequireDefault(_validation_engine);
var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 6);
var _guid = __webpack_require__( /*! ../../core/guid */ 34);
var _guid2 = _interopRequireDefault(_guid);
var _knockout = __webpack_require__( /*! knockout */ 60);
var _knockout2 = _interopRequireDefault(_knockout);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
var VALIDATION_STATUS_VALID = "valid",
VALIDATION_STATUS_PENDING = "pending";
var koDxValidator = _class2.default.inherit({
ctor: function(target, _ref) {
var _this = this;
var name = _ref.name,
validationRules = _ref.validationRules;
this.target = target;
this.name = name;
this.isValid = _knockout2.default.observable(true);
this.validationError = _knockout2.default.observable();
this.validationErrors = _knockout2.default.observable();
this.validationStatus = _knockout2.default.observable(VALIDATION_STATUS_VALID);
this.validationRules = (0, _iterator.map)(validationRules, function(rule, index) {
return (0, _extend.extend)({}, rule, {
validator: _this,
index: index
})
});
this._validationInfo = {
result: null,
deferred: null
}
},
_updateValidationResult: function(result) {
if (!this._validationInfo.result || this._validationInfo.result.id !== result.id) {
var complete = this._validationInfo.deferred && this._validationInfo.result.complete;
this._validationInfo.result = (0, _extend.extend)({}, result, {
complete: complete
})
} else {
for (var prop in result) {
if ("id" !== prop && "complete" !== prop) {
this._validationInfo.result[prop] = result[prop]
}
}
}
},
validate: function() {
var _this2 = this;
var currentResult = this._validationInfo && this._validationInfo.result,
value = this.target();
if (currentResult && currentResult.status === VALIDATION_STATUS_PENDING && currentResult.value === value) {
return (0, _extend.extend)({}, currentResult)
}
var result = _validation_engine2.default.validate(value, this.validationRules, this.name);
result.id = (new _guid2.default).toString();
this._applyValidationResult(result);
result.complete && result.complete.then(function(res) {
if (res.id === _this2._validationInfo.result.id) {
_this2._applyValidationResult(res)
}
});
return (0, _extend.extend)({}, this._validationInfo.result)
},
reset: function() {
this.target(null);
var result = {
id: null,
isValid: true,
brokenRule: null,
pendingRules: null,
status: VALIDATION_STATUS_VALID,
complete: null
};
this._applyValidationResult(result);
return result
},
_applyValidationResult: function(result) {
result.validator = this;
this._updateValidationResult(result);
this.target.dxValidator.isValid(this._validationInfo.result.isValid);
this.target.dxValidator.validationError(this._validationInfo.result.brokenRule);
this.target.dxValidator.validationErrors(this._validationInfo.result.brokenRules);
this.target.dxValidator.validationStatus(this._validationInfo.result.status);
if (result.status === VALIDATION_STATUS_PENDING) {
if (!this._validationInfo.deferred) {
this._validationInfo.deferred = new _deferred.Deferred;
this._validationInfo.result.complete = this._validationInfo.deferred.promise()
}
this.fireEvent("validating", [this._validationInfo.result]);
return
}
if (result.status !== VALIDATION_STATUS_PENDING) {
this.fireEvent("validated", [result]);
if (this._validationInfo.deferred) {
this._validationInfo.deferred.resolve(result);
this._validationInfo.deferred = null
}
}
}
}).include(_events_mixin2.default);
_knockout2.default.extenders.dxValidator = function(target, option) {
target.dxValidator = new koDxValidator(target, option);
target.subscribe(target.dxValidator.validate.bind(target.dxValidator));
return target
};
_validation_engine2.default.registerModelForValidation = function(model) {
(0, _iterator.each)(model, function(name, member) {
if (_knockout2.default.isObservable(member) && member.dxValidator) {
_validation_engine2.default.registerValidatorInGroup(model, member.dxValidator)
}
})
};
_validation_engine2.default.unregisterModelForValidation = function(model) {
(0, _iterator.each)(model, function(name, member) {
if (_knockout2.default.isObservable(member) && member.dxValidator) {
_validation_engine2.default.removeRegisteredValidator(model, member.dxValidator)
}
})
};
_validation_engine2.default.validateModel = _validation_engine2.default.validateGroup
},
/*!*****************************************************************************!*\
!*** ./artifacts/transpiled/integration/knockout/variable_wrapper_utils.js ***!
\*****************************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var ko = __webpack_require__( /*! knockout */ 60),
variableWrapper = __webpack_require__( /*! ../../core/utils/variable_wrapper */ 89);
variableWrapper.inject({
isWrapped: ko.isObservable,
isWritableWrapped: ko.isWritableObservable,
wrap: ko.observable,
unwrap: function(value) {
if (ko.isObservable(value)) {
return ko.utils.unwrapObservable(value)
}
return this.callBase(value)
},
assign: function(variable, value) {
if (ko.isObservable(variable)) {
variable(value)
} else {
this.callBase(variable, value)
}
}
})
},
/*!*****************************************************************!*\
!*** ./artifacts/transpiled/integration/knockout/clean_node.js ***!
\*****************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var elementData = __webpack_require__( /*! ../../core/element_data */ 40),
afterCleanData = elementData.afterCleanData,
strategyChanging = elementData.strategyChanging,
ko = __webpack_require__( /*! knockout */ 60),
compareVersion = __webpack_require__( /*! ../../core/utils/version */ 53).compare;
var originalKOCleanExternalData = ko.utils.domNodeDisposal.cleanExternalData;
var patchCleanData = function() {
afterCleanData(function(nodes) {
for (var i = 0; i < nodes.length; i++) {
nodes[i].cleanedByJquery = true
}
for (i = 0; i < nodes.length; i++) {
if (!nodes[i].cleanedByKo) {
ko.cleanNode(nodes[i])
}
delete nodes[i].cleanedByKo
}
for (i = 0; i < nodes.length; i++) {
delete nodes[i].cleanedByJquery
}
});
ko.utils.domNodeDisposal.cleanExternalData = function(node) {
node.cleanedByKo = true;
if (!node.cleanedByJquery) {
elementData.cleanData([node])
}
}
};
var restoreOriginCleanData = function() {
afterCleanData(function() {});
ko.utils.domNodeDisposal.cleanExternalData = originalKOCleanExternalData
};
patchCleanData();
strategyChanging.add(function(strategy) {
var isJQuery = !!strategy.fn;
if (isJQuery && compareVersion(strategy.fn.jquery, [2, 0]) < 0) {
restoreOriginCleanData()
}
})
},
/*!*********************************************************************!*\
!*** ./artifacts/transpiled/integration/knockout/clean_node_old.js ***!
\*********************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var ko = __webpack_require__( /*! knockout */ 60),
compareVersion = __webpack_require__( /*! ../../core/utils/version */ 53).compare,
strategyChanging = __webpack_require__( /*! ../../core/element_data */ 40).strategyChanging;
var patchCleanData = function(jQuery) {
var cleanKoData = function(element, andSelf) {
var cleanNode = function() {
ko.cleanNode(this)
};
if (andSelf) {
element.each(cleanNode)
} else {
element.find("*").each(cleanNode)
}
};
var originalEmpty = jQuery.fn.empty;
jQuery.fn.empty = function() {
cleanKoData(this, false);
return originalEmpty.apply(this, arguments)
};
var originalRemove = jQuery.fn.remove;
jQuery.fn.remove = function(selector, keepData) {
if (!keepData) {
var subject = this;
if (selector) {
subject = subject.filter(selector)
}
cleanKoData(subject, true)
}
return originalRemove.call(this, selector, keepData)
};
var originalHtml = jQuery.fn.html;
jQuery.fn.html = function(value) {
if ("string" === typeof value) {
cleanKoData(this, false)
}
return originalHtml.apply(this, arguments)
};
var originalReplaceWith = jQuery.fn.replaceWith;
jQuery.fn.replaceWith = function() {
var result = originalReplaceWith.apply(this, arguments);
if (!this.parent().length) {
cleanKoData(this, true)
}
return result
}
};
strategyChanging.add(function(strategy) {
var isJQuery = !!strategy.fn;
if (isJQuery && compareVersion(strategy.fn.jquery, [2, 0]) < 0) {
patchCleanData(strategy)
}
})
},
/*!****************************************************************!*\
!*** ./artifacts/transpiled/localization/globalize/message.js ***!
\****************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
__webpack_require__( /*! ./core */ 130);
var _globalize = __webpack_require__( /*! globalize */ 75);
var _globalize2 = _interopRequireDefault(_globalize);
var _message = __webpack_require__( /*! ../message */ 10);
var _message2 = _interopRequireDefault(_message);
var _core = __webpack_require__( /*! ../core */ 80);
var _core2 = _interopRequireDefault(_core);
__webpack_require__( /*! globalize/message */ 75);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
if (_globalize2.default && _globalize2.default.formatMessage) {
var DEFAULT_LOCALE = "en";
var originalLoadMessages = _globalize2.default.loadMessages;
_globalize2.default.loadMessages = function(messages) {
_message2.default.load(messages)
};
var globalizeMessageLocalization = {
engine: function() {
return "globalize"
},
ctor: function() {
this.load(this._dictionary)
},
load: function(messages) {
this.callBase(messages);
originalLoadMessages(messages)
},
getMessagesByLocales: function() {
return _globalize2.default.cldr.get("globalize-messages")
},
getFormatter: function(key, locale) {
var currentLocale = locale || _core2.default.locale();
var formatter = this._getFormatterBase(key, locale);
if (!formatter) {
formatter = this._formatterByGlobalize(key, locale)
}
if (!formatter && currentLocale !== DEFAULT_LOCALE) {
formatter = this.getFormatter(key, DEFAULT_LOCALE)
}
return formatter
},
_formatterByGlobalize: function(key, locale) {
var currentGlobalize = !locale || locale === _core2.default.locale() ? _globalize2.default : new _globalize2.default(locale);
var result = void 0;
if (this._messageLoaded(key, locale)) {
result = currentGlobalize.messageFormatter(key)
}
return result
},
_messageLoaded: function(key, locale) {
var currentCldr = locale ? new _globalize2.default(locale).cldr : _globalize2.default.locale();
var value = currentCldr.get(["globalize-messages/{bundle}", key]);
return !!value
},
_loadSingle: function(key, value, locale) {
var data = {};
data[locale] = {};
data[locale][key] = value;
this.load(data)
}
};
_message2.default.inject(globalizeMessageLocalization)
}
},
/*!*************************************************************!*\
!*** ./artifacts/transpiled/localization/globalize/date.js ***!
\*************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
__webpack_require__( /*! ./core */ 130);
__webpack_require__( /*! ./number */ 186);
__webpack_require__( /*! globalize/date */ 75);
var _globalize = __webpack_require__( /*! globalize */ 75);
var _globalize2 = _interopRequireDefault(_globalize);
var _date = __webpack_require__( /*! ../date */ 32);
var _date2 = _interopRequireDefault(_date);
var _type = __webpack_require__( /*! ../../core/utils/type */ 1);
var _array = __webpack_require__( /*! ../../core/utils/array */ 14);
var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 3);
var _iterator2 = _interopRequireDefault(_iterator);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
var timeData = {
supplemental: {
version: {
_cldrVersion: "28",
_unicodeVersion: "8.0.0",
_number: "$Revision: 11969 $"
},
timeData: {
"001": {
_allowed: "H h",
_preferred: "H"
},
DE: {
_allowed: "H",
_preferred: "H"
},
JP: {
_allowed: "H K h",
_preferred: "H"
},
RU: {
_allowed: "H",
_preferred: "H"
},
US: {
_allowed: "H h",
_preferred: "h"
}
}
}
};
var enCaGregorian = {
main: {
en: {
identity: {
version: {
_cldrVersion: "28",
_number: "$Revision: 11972 $"
},
language: "en"
},
dates: {
calendars: {
gregorian: {
months: {
format: {
abbreviated: {
1: "Jan",
2: "Feb",
3: "Mar",
4: "Apr",
5: "May",
6: "Jun",
7: "Jul",
8: "Aug",
9: "Sep",
10: "Oct",
11: "Nov",
12: "Dec"
},
narrow: {
1: "J",
2: "F",
3: "M",
4: "A",
5: "M",
6: "J",
7: "J",
8: "A",
9: "S",
10: "O",
11: "N",
12: "D"
},
wide: {
1: "January",
2: "February",
3: "March",
4: "April",
5: "May",
6: "June",
7: "July",
8: "August",
9: "September",
10: "October",
11: "November",
12: "December"
}
},
"stand-alone": {
abbreviated: {
1: "Jan",
2: "Feb",
3: "Mar",
4: "Apr",
5: "May",
6: "Jun",
7: "Jul",
8: "Aug",
9: "Sep",
10: "Oct",
11: "Nov",
12: "Dec"
},
narrow: {
1: "J",
2: "F",
3: "M",
4: "A",
5: "M",
6: "J",
7: "J",
8: "A",
9: "S",
10: "O",
11: "N",
12: "D"
},
wide: {
1: "January",
2: "February",
3: "March",
4: "April",
5: "May",
6: "June",
7: "July",
8: "August",
9: "September",
10: "October",
11: "November",
12: "December"
}
}
},
days: {
format: {
abbreviated: {
sun: "Sun",
mon: "Mon",
tue: "Tue",
wed: "Wed",
thu: "Thu",
fri: "Fri",
sat: "Sat"
},
narrow: {
sun: "S",
mon: "M",
tue: "T",
wed: "W",
thu: "T",
fri: "F",
sat: "S"
},
"short": {
sun: "Su",
mon: "Mo",
tue: "Tu",
wed: "We",
thu: "Th",
fri: "Fr",
sat: "Sa"
},
wide: {
sun: "Sunday",
mon: "Monday",
tue: "Tuesday",
wed: "Wednesday",
thu: "Thursday",
fri: "Friday",
sat: "Saturday"
}
},
"stand-alone": {
abbreviated: {
sun: "Sun",
mon: "Mon",
tue: "Tue",
wed: "Wed",
thu: "Thu",
fri: "Fri",
sat: "Sat"
},
narrow: {
sun: "S",
mon: "M",
tue: "T",
wed: "W",
thu: "T",
fri: "F",
sat: "S"
},
"short": {
sun: "Su",
mon: "Mo",
tue: "Tu",
wed: "We",
thu: "Th",
fri: "Fr",
sat: "Sa"
},
wide: {
sun: "Sunday",
mon: "Monday",
tue: "Tuesday",
wed: "Wednesday",
thu: "Thursday",
fri: "Friday",
sat: "Saturday"
}
}
},
quarters: {
format: {
abbreviated: {
1: "Q1",
2: "Q2",
3: "Q3",
4: "Q4"
},
narrow: {
1: "1",
2: "2",
3: "3",
4: "4"
},
wide: {
1: "1st quarter",
2: "2nd quarter",
3: "3rd quarter",
4: "4th quarter"
}
},
"stand-alone": {
abbreviated: {
1: "Q1",
2: "Q2",
3: "Q3",
4: "Q4"
},
narrow: {
1: "1",
2: "2",
3: "3",
4: "4"
},
wide: {
1: "1st quarter",
2: "2nd quarter",
3: "3rd quarter",
4: "4th quarter"
}
}
},
dayPeriods: {
format: {
abbreviated: {
midnight: "midnight",
am: "AM",
"am-alt-variant": "am",
noon: "noon",
pm: "PM",
"pm-alt-variant": "pm",
morning1: "in the morning",
afternoon1: "in the afternoon",
evening1: "in the evening",
night1: "at night"
},
narrow: {
midnight: "mi",
am: "a",
"am-alt-variant": "am",
noon: "n",
pm: "p",
"pm-alt-variant": "pm",
morning1: "in the morning",
afternoon1: "in the afternoon",
evening1: "in the evening",
night1: "at night"
},
wide: {
midnight: "midnight",
am: "AM",
"am-alt-variant": "am",
noon: "noon",
pm: "PM",
"pm-alt-variant": "pm",
morning1: "in the morning",
afternoon1: "in the afternoon",
evening1: "in the evening",
night1: "at night"
}
},
"stand-alone": {
abbreviated: {
midnight: "midnight",
am: "AM",
"am-alt-variant": "am",
noon: "noon",
pm: "PM",
"pm-alt-variant": "pm",
morning1: "in the morning",
afternoon1: "in the afternoon",
evening1: "in the evening",
night1: "at night"
},
narrow: {
midnight: "midnight",
am: "AM",
"am-alt-variant": "am",
noon: "noon",
pm: "PM",
"pm-alt-variant": "pm",
morning1: "in the morning",
afternoon1: "in the afternoon",
evening1: "in the evening",
night1: "at night"
},
wide: {
midnight: "midnight",
am: "AM",
"am-alt-variant": "am",
noon: "noon",
pm: "PM",
"pm-alt-variant": "pm",
morning1: "morning",
afternoon1: "afternoon",
evening1: "evening",
night1: "night"
}
}
},
eras: {
eraNames: {
0: "Before Christ",
"0-alt-variant": "Before Common Era",
1: "Anno Domini",
"1-alt-variant": "Common Era"
},
eraAbbr: {
0: "BC",
"0-alt-variant": "BCE",
1: "AD",
"1-alt-variant": "CE"
},
eraNarrow: {
0: "B",
"0-alt-variant": "BCE",
1: "A",
"1-alt-variant": "CE"
}
},
dateFormats: {
full: "EEEE, MMMM d, y",
"long": "MMMM d, y",
medium: "MMM d, y",
"short": "M/d/yy"
},
timeFormats: {
full: "h:mm:ss a zzzz",
"long": "h:mm:ss a z",
medium: "h:mm:ss a",
"short": "h:mm a"
},
dateTimeFormats: {
full: "{1} 'at' {0}",
"long": "{1} 'at' {0}",
medium: "{1}, {0}",
"short": "{1}, {0}",
availableFormats: {
d: "d",
E: "ccc",
Ed: "d E",
Ehm: "E h:mm a",
EHm: "E HH:mm",
Ehms: "E h:mm:ss a",
EHms: "E HH:mm:ss",
Gy: "y G",
GyMMM: "MMM y G",
GyMMMd: "MMM d, y G",
GyMMMEd: "E, MMM d, y G",
h: "h a",
H: "HH",
hm: "h:mm a",
Hm: "HH:mm",
hms: "h:mm:ss a",
Hms: "HH:mm:ss",
hmsv: "h:mm:ss a v",
Hmsv: "HH:mm:ss v",
hmv: "h:mm a v",
Hmv: "HH:mm v",
M: "L",
Md: "M/d",
MEd: "E, M/d",
MMM: "LLL",
MMMd: "MMM d",
MMMEd: "E, MMM d",
MMMMd: "MMMM d",
ms: "mm:ss",
y: "y",
yM: "M/y",
yMd: "M/d/y",
yMEd: "E, M/d/y",
yMMM: "MMM y",
yMMMd: "MMM d, y",
yMMMEd: "E, MMM d, y",
yMMMM: "MMMM y",
yQQQ: "QQQ y",
yQQQQ: "QQQQ y"
},
appendItems: {
Day: "{0} ({2}: {1})",
"Day-Of-Week": "{0} {1}",
Era: "{0} {1}",
Hour: "{0} ({2}: {1})",
Minute: "{0} ({2}: {1})",
Month: "{0} ({2}: {1})",
Quarter: "{0} ({2}: {1})",
Second: "{0} ({2}: {1})",
Timezone: "{0} {1}",
Week: "{0} ({2}: {1})",
Year: "{0} {1}"
},
intervalFormats: {
intervalFormatFallback: "{0} \u2013 {1}",
d: {
d: "d \u2013 d"
},
h: {
a: "h a \u2013 h a",
h: "h \u2013 h a"
},
H: {
H: "HH \u2013 HH"
},
hm: {
a: "h:mm a \u2013 h:mm a",
h: "h:mm \u2013 h:mm a",
m: "h:mm \u2013 h:mm a"
},
Hm: {
H: "HH:mm \u2013 HH:mm",
m: "HH:mm \u2013 HH:mm"
},
hmv: {
a: "h:mm a \u2013 h:mm a v",
h: "h:mm \u2013 h:mm a v",
m: "h:mm \u2013 h:mm a v"
},
Hmv: {
H: "HH:mm \u2013 HH:mm v",
m: "HH:mm \u2013 HH:mm v"
},
hv: {
a: "h a \u2013 h a v",
h: "h \u2013 h a v"
},
Hv: {
H: "HH \u2013 HH v"
},
M: {
M: "M \u2013 M"
},
Md: {
d: "M/d \u2013 M/d",
M: "M/d \u2013 M/d"
},
MEd: {
d: "E, M/d \u2013 E, M/d",
M: "E, M/d \u2013 E, M/d"
},
MMM: {
M: "MMM \u2013 MMM"
},
MMMd: {
d: "MMM d \u2013 d",
M: "MMM d \u2013 MMM d"
},
MMMEd: {
d: "E, MMM d \u2013 E, MMM d",
M: "E, MMM d \u2013 E, MMM d"
},
y: {
y: "y \u2013 y"
},
yM: {
M: "M/y \u2013 M/y",
y: "M/y \u2013 M/y"
},
yMd: {
d: "M/d/y \u2013 M/d/y",
M: "M/d/y \u2013 M/d/y",
y: "M/d/y \u2013 M/d/y"
},
yMEd: {
d: "E, M/d/y \u2013 E, M/d/y",
M: "E, M/d/y \u2013 E, M/d/y",
y: "E, M/d/y \u2013 E, M/d/y"
},
yMMM: {
M: "MMM \u2013 MMM y",
y: "MMM y \u2013 MMM y"
},
yMMMd: {
d: "MMM d \u2013 d, y",
M: "MMM d \u2013 MMM d, y",
y: "MMM d, y \u2013 MMM d, y"
},
yMMMEd: {
d: "E, MMM d \u2013 E, MMM d, y",
M: "E, MMM d \u2013 E, MMM d, y",
y: "E, MMM d, y \u2013 E, MMM d, y"
},
yMMMM: {
M: "MMMM \u2013 MMMM y",
y: "MMMM y \u2013 MMMM y"
}
}
}
}
}
}
}
}
};
var weekData = {
supplemental: {
version: {
_cldrVersion: "28",
_unicodeVersion: "8.0.0",
_number: "$Revision: 11969 $"
},
weekData: {
minDays: {
"001": "1",
US: "1",
DE: "4"
},
firstDay: {
"001": "mon",
DE: "mon",
RU: "mon",
JP: "sun",
US: "sun"
},
weekendStart: {
"001": "sat"
},
weekendEnd: {
"001": "sun"
}
}
}
};
var ACCEPTABLE_JSON_FORMAT_PROPERTIES = ["skeleton", "date", "time", "datetime", "raw"];
if (_globalize2.default && _globalize2.default.formatDate) {
if ("en" === _globalize2.default.locale().locale) {
_globalize2.default.load(weekData, timeData, enCaGregorian);
_globalize2.default.locale("en")
}
var formattersCache = {};
var FORMATS_TO_GLOBALIZE_MAP = {
shortdate: {
path: "dateTimeFormats/availableFormats/yMd"
},
shorttime: {
path: "timeFormats/short"
},
longdate: {
path: "dateFormats/full"
},
longtime: {
path: "timeFormats/medium"
},
monthandday: {
path: "dateTimeFormats/availableFormats/MMMMd"
},
monthandyear: {
path: "dateTimeFormats/availableFormats/yMMMM"
},
quarterandyear: {
path: "dateTimeFormats/availableFormats/yQQQ"
},
day: {
path: "dateTimeFormats/availableFormats/d"
},
year: {
path: "dateTimeFormats/availableFormats/y"
},
shortdateshorttime: {
path: "dateTimeFormats/short",
parts: ["shorttime", "shortdate"]
},
mediumdatemediumtime: {
path: "dateTimeFormats/medium",
parts: ["shorttime", "monthandday"]
},
longdatelongtime: {
path: "dateTimeFormats/medium",
parts: ["longtime", "longdate"]
},
month: {
pattern: "LLLL"
},
shortyear: {
pattern: "yy"
},
dayofweek: {
pattern: "EEEE"
},
quarter: {
pattern: "QQQ"
},
millisecond: {
pattern: "SSS"
},
hour: {
pattern: "HH"
},
minute: {
pattern: "mm"
},
second: {
pattern: "ss"
}
};
var globalizeDateLocalization = {
engine: function() {
return "globalize"
},
_getPatternByFormat: function(format) {
var that = this;
var lowerFormat = format.toLowerCase();
var globalizeFormat = FORMATS_TO_GLOBALIZE_MAP[lowerFormat];
if ("datetime-local" === lowerFormat) {
return "yyyy-MM-ddTHH':'mm':'ss"
}
if (!globalizeFormat) {
return
}
var result = globalizeFormat.path && that._getFormatStringByPath(globalizeFormat.path) || globalizeFormat.pattern;
if (globalizeFormat.parts) {
_iterator2.default.each(globalizeFormat.parts, function(index, part) {
result = result.replace("{" + index + "}", that._getPatternByFormat(part))
})
}
return result
},
_getFormatStringByPath: function(path) {
return _globalize2.default.locale().main("dates/calendars/gregorian/" + path)
},
getPeriodNames: function() {
var json = _globalize2.default.locale().main("dates/calendars/gregorian/dayPeriods/stand-alone/wide");
return [json.am, json.pm]
},
getMonthNames: function(format, type) {
var months = _globalize2.default.locale().main("dates/calendars/gregorian/months/" + ("format" === type ? type : "stand-alone") + "/" + (format || "wide"));
return _iterator2.default.map(months, function(month) {
return month
})
},
getDayNames: function(format) {
var days = _globalize2.default.locale().main("dates/calendars/gregorian/days/stand-alone/" + (format || "wide"));
return _iterator2.default.map(days, function(day) {
return day
})
},
getTimeSeparator: function() {
return _globalize2.default.locale().main("numbers/symbols-numberSystem-latn/timeSeparator")
},
format: function(date, _format) {
if (!date) {
return
}
if (!_format) {
return date
}
var formatter = void 0;
var formatCacheKey = void 0;
if ("function" === typeof _format) {
return _format(date)
}
if (_format.formatter) {
return _format.formatter(date)
}
_format = _format.type || _format;
if ("string" === typeof _format) {
formatCacheKey = _globalize2.default.locale().locale + ":" + _format;
formatter = formattersCache[formatCacheKey];
if (!formatter) {
_format = {
raw: this._getPatternByFormat(_format) || _format
};
formatter = formattersCache[formatCacheKey] = _globalize2.default.dateFormatter(_format)
}
} else {
if (!this._isAcceptableFormat(_format)) {
return
}
formatter = _globalize2.default.dateFormatter(_format)
}
return formatter(date)
},
parse: function(text, format) {
if (!text) {
return
}
if (!format || "function" === typeof format || (0, _type.isObject)(format) && !this._isAcceptableFormat(format)) {
if (format) {
var parsedValue = this.callBase(text, format);
if (parsedValue) {
return parsedValue
}
}
return _globalize2.default.parseDate(text)
}
if (format.parser) {
return format.parser(text)
}
if ("string" === typeof format) {
format = {
raw: this._getPatternByFormat(format) || format
}
}
return _globalize2.default.parseDate(text, format)
},
_isAcceptableFormat: function(format) {
if (format.parser) {
return true
}
for (var i = 0; i < ACCEPTABLE_JSON_FORMAT_PROPERTIES.length; i++) {
if (Object.prototype.hasOwnProperty.call(format, ACCEPTABLE_JSON_FORMAT_PROPERTIES[i])) {
return true
}
}
},
firstDayOfWeekIndex: function() {
var firstDay = _globalize2.default.locale().supplemental.weekData.firstDay();
return (0, _array.inArray)(firstDay, this._getDayKeys())
},
_getDayKeys: function() {
var days = _globalize2.default.locale().main("dates/calendars/gregorian/days/format/short");
return _iterator2.default.map(days, function(day, key) {
return key
})
}
};
_date2.default.resetInjection();
_date2.default.inject(globalizeDateLocalization)
}
},
/*!*****************************************************************!*\
!*** ./artifacts/transpiled/localization/globalize/currency.js ***!
\*****************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _typeof = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function(obj) {
return typeof obj
} : function(obj) {
return obj && "function" === typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
};
var _open_xml_currency_format = __webpack_require__( /*! ../open_xml_currency_format */ 262);
var _open_xml_currency_format2 = _interopRequireDefault(_open_xml_currency_format);
__webpack_require__( /*! ./core */ 130);
__webpack_require__( /*! ./number */ 186);
__webpack_require__( /*! ../currency */ 125);
__webpack_require__( /*! globalize/currency */ 75);
var _globalize = __webpack_require__( /*! globalize */ 75);
var _globalize2 = _interopRequireDefault(_globalize);
var _config = __webpack_require__( /*! ../../core/config */ 29);
var _config2 = _interopRequireDefault(_config);
var _number = __webpack_require__( /*! ../number */ 51);
var _number2 = _interopRequireDefault(_number);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
var enCurrencyUSD = {
main: {
en: {
identity: {
version: {
_cldrVersion: "28",
_number: "$Revision: 11972 $"
},
language: "en"
},
numbers: {
currencies: {
USD: {
displayName: "US Dollar",
"displayName-count-one": "US dollar",
"displayName-count-other": "US dollars",
symbol: "$",
"symbol-alt-narrow": "$"
}
}
}
}
}
};
var currencyData = {
supplemental: {
version: {
_cldrVersion: "28",
_unicodeVersion: "8.0.0",
_number: "$Revision: 11969 $"
},
currencyData: {
fractions: {
DEFAULT: {
_rounding: "0",
_digits: "2"
}
}
}
}
};
if (_globalize2.default && _globalize2.default.formatCurrency) {
if ("en" === _globalize2.default.locale().locale) {
_globalize2.default.load(enCurrencyUSD, currencyData);
_globalize2.default.locale("en")
}
var formattersCache = {};
var getFormatter = function(currency, format) {
var formatter = void 0;
var formatCacheKey = void 0;
if ("object" === ("undefined" === typeof format ? "undefined" : _typeof(format))) {
formatCacheKey = _globalize2.default.locale().locale + ":" + currency + ":" + JSON.stringify(format)
} else {
formatCacheKey = _globalize2.default.locale().locale + ":" + currency + ":" + format
}
formatter = formattersCache[formatCacheKey];
if (!formatter) {
formatter = formattersCache[formatCacheKey] = _globalize2.default.currencyFormatter(currency, format)
}
return formatter
};
var globalizeCurrencyLocalization = {
_formatNumberCore: function(value, format, formatConfig) {
if ("currency" === format) {
var currency = formatConfig && formatConfig.currency || (0, _config2.default)().defaultCurrency;
return getFormatter(currency, this._normalizeFormatConfig(format, formatConfig, value))(value)
}
return this.callBase.apply(this, arguments)
},
_normalizeFormatConfig: function(format, formatConfig, value) {
var config = this.callBase(format, formatConfig, value);
if ("currency" === format) {
config.style = "accounting"
}
return config
},
format: function(value, _format) {
if ("number" !== typeof value) {
return value
}
_format = this._normalizeFormat(_format);
if (_format) {
if ("default" === _format.currency) {
_format.currency = (0, _config2.default)().defaultCurrency
}
if ("currency" === _format.type) {
return this._formatNumber(value, this._parseNumberFormatString("currency"), _format)
} else {
if (!_format.type && _format.currency) {
return getFormatter(_format.currency, _format)(value)
}
}
}
return this.callBase.apply(this, arguments)
},
getCurrencySymbol: function(currency) {
if (!currency) {
currency = (0, _config2.default)().defaultCurrency
}
return _globalize2.default.cldr.main("numbers/currencies/" + currency)
},
getOpenXmlCurrencyFormat: function(currency) {
var currencySymbol = this.getCurrencySymbol(currency).symbol;
var accountingFormat = _globalize2.default.cldr.main("numbers/currencyFormats-numberSystem-latn").accounting;
return (0, _open_xml_currency_format2.default)(currencySymbol, accountingFormat)
}
};
_number2.default.inject(globalizeCurrencyLocalization)
}
},
/*!**************************************************!*\
!*** ./artifacts/transpiled/data/data_source.js ***!
\**************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
module.exports = __webpack_require__( /*! ./data_source/data_source */ 46).DataSource
},
/*!**************************************************!*\
!*** ./artifacts/transpiled/data/local_store.js ***!
\**************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var eventsEngine = __webpack_require__( /*! ../events/core/events_engine */ 5),
domAdapter = __webpack_require__( /*! ../core/dom_adapter */ 13),
windowUtils = __webpack_require__( /*! ../core/utils/window */ 7),
window = windowUtils.getWindow(),
Class = __webpack_require__( /*! ../core/class */ 15),
abstract = Class.abstract,
errors = __webpack_require__( /*! ./errors */ 37).errors,
ArrayStore = __webpack_require__( /*! ./array_store */ 69);
var LocalStoreBackend = Class.inherit({
ctor: function(store, storeOptions) {
this._store = store;
this._dirty = !!storeOptions.data;
this.save();
var immediate = this._immediate = storeOptions.immediate;
var flushInterval = Math.max(100, storeOptions.flushInterval || 1e4);
if (!immediate) {
var saveProxy = this.save.bind(this);
setInterval(saveProxy, flushInterval);
eventsEngine.on(window, "beforeunload", saveProxy);
if (window.cordova) {
domAdapter.listen(domAdapter.getDocument(), "pause", saveProxy, false)
}
}
},
notifyChanged: function() {
this._dirty = true;
if (this._immediate) {
this.save()
}
},
load: function() {
this._store._array = this._loadImpl();
this._dirty = false
},
save: function() {
if (!this._dirty) {
return
}
this._saveImpl(this._store._array);
this._dirty = false
},
_loadImpl: abstract,
_saveImpl: abstract
});
var DomLocalStoreBackend = LocalStoreBackend.inherit({
ctor: function(store, storeOptions) {
var name = storeOptions.name;
if (!name) {
throw errors.Error("E4013")
}
this._key = "dx-data-localStore-" + name;
this.callBase(store, storeOptions)
},
_loadImpl: function() {
var raw = window.localStorage.getItem(this._key);
if (raw) {
return JSON.parse(raw)
}
return []
},
_saveImpl: function(array) {
if (!array.length) {
window.localStorage.removeItem(this._key)
} else {
window.localStorage.setItem(this._key, JSON.stringify(array))
}
}
});
var localStoreBackends = {
dom: DomLocalStoreBackend
};
var LocalStore = ArrayStore.inherit({
ctor: function(options) {
if ("string" === typeof options) {
options = {
name: options
}
} else {
options = options || {}
}
this.callBase(options);
this._backend = new localStoreBackends[options.backend || "dom"](this, options);
this._backend.load()
},
clear: function() {
this.callBase();
this._backend.notifyChanged()
},
_insertImpl: function(values) {
var b = this._backend;
return this.callBase(values).done(b.notifyChanged.bind(b))
},
_updateImpl: function(key, values) {
var b = this._backend;
return this.callBase(key, values).done(b.notifyChanged.bind(b))
},
_removeImpl: function(key) {
var b = this._backend;
return this.callBase(key).done(b.notifyChanged.bind(b))
}
}, "local");
module.exports = LocalStore
},
/*!********************************************************!*\
!*** ./artifacts/transpiled/data/endpoint_selector.js ***!
\********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var errors = __webpack_require__( /*! ../core/errors */ 21),
window = __webpack_require__( /*! ../core/utils/window */ 7).getWindow(),
proxyUrlFormatter = __webpack_require__( /*! ./proxy_url_formatter */ 282);
var IS_WINJS_ORIGIN, IS_LOCAL_ORIGIN;
function isLocalHostName(url) {
return /^(localhost$|127\.)/i.test(url)
}
var EndpointSelector = function(config) {
this.config = config;
IS_WINJS_ORIGIN = "ms-appx:" === window.location.protocol;
IS_LOCAL_ORIGIN = isLocalHostName(window.location.hostname)
};
EndpointSelector.prototype = {
urlFor: function(key) {
var bag = this.config[key];
if (!bag) {
throw errors.Error("E0006")
}
if (proxyUrlFormatter.isProxyUsed()) {
return proxyUrlFormatter.formatProxyUrl(bag.local)
}
if (bag.production) {
if (IS_WINJS_ORIGIN && !Debug.debuggerEnabled || !IS_WINJS_ORIGIN && !IS_LOCAL_ORIGIN) {
return bag.production
}
}
return bag.local
}
};
module.exports = EndpointSelector
},
/*!************************************************************!*\
!*** ./artifacts/transpiled/bundles/modules/data.odata.js ***!
\************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
__webpack_require__( /*! ./data */ 281);
DevExpress.data.ODataStore = __webpack_require__( /*! ../../data/odata/store */ 283);
DevExpress.data.ODataContext = __webpack_require__( /*! ../../data/odata/context */ 505);
DevExpress.data.utils = DevExpress.data.utils || {};
DevExpress.data.utils.odata = {};
DevExpress.data.utils.odata.keyConverters = __webpack_require__( /*! ../../data/odata/utils */ 110).keyConverters;
DevExpress.data.EdmLiteral = __webpack_require__( /*! ../../data/odata/utils */ 110).EdmLiteral;
var ODataUtilsModule = __webpack_require__( /*! ../../data/odata/utils */ 110);
DevExpress.data.utils.odata.serializePropName = ODataUtilsModule.serializePropName;
DevExpress.data.utils.odata.serializeValue = ODataUtilsModule.serializeValue;
DevExpress.data.utils.odata.serializeKey = ODataUtilsModule.serializeKey;
DevExpress.data.utils.odata.sendRequest = ODataUtilsModule.sendRequest;
DevExpress.data.OData__internals = ODataUtilsModule.OData__internals;
DevExpress.data.queryAdapters = DevExpress.data.queryAdapters || {};
DevExpress.data.queryAdapters.odata = __webpack_require__( /*! ../../data/odata/query_adapter */ 157).odata
},
/*!****************************************************!*\
!*** ./artifacts/transpiled/data/odata/context.js ***!
\****************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var Class = __webpack_require__( /*! ../../core/class */ 15),
extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
typeUtils = __webpack_require__( /*! ../../core/utils/type */ 1),
each = __webpack_require__( /*! ../../core/utils/iterator */ 3).each,
errorsModule = __webpack_require__( /*! ../errors */ 37),
ODataStore = __webpack_require__( /*! ./store */ 283),
mixins = __webpack_require__( /*! ./mixins */ 284),
deferredUtils = __webpack_require__( /*! ../../core/utils/deferred */ 6),
when = deferredUtils.when,
Deferred = deferredUtils.Deferred;
__webpack_require__( /*! ./query_adapter */ 157);
var ODataContext = Class.inherit({
ctor: function(options) {
var that = this;
that._extractServiceOptions(options);
that._errorHandler = options.errorHandler;
each(options.entities || [], function(entityAlias, entityOptions) {
that[entityAlias] = new ODataStore(extend({}, options, {
url: that._url + "/" + encodeURIComponent(entityOptions.name || entityAlias)
}, entityOptions))
})
},
get: function(operationName, params) {
return this.invoke(operationName, params, "GET")
},
invoke: function(operationName, params, httpMethod) {
params = params || {};
httpMethod = (httpMethod || "POST").toLowerCase();
var payload, d = new Deferred,
url = this._url + "/" + encodeURIComponent(operationName);
if (4 === this.version()) {
if ("get" === httpMethod) {
url = mixins.formatFunctionInvocationUrl(url, mixins.escapeServiceOperationParams(params, this.version()));
params = null
} else {
if ("post" === httpMethod) {
payload = params;
params = null
}
}
}
when(this._sendRequest(url, httpMethod, mixins.escapeServiceOperationParams(params, this.version()), payload)).done(function(r) {
if (typeUtils.isPlainObject(r) && operationName in r) {
r = r[operationName]
}
d.resolve(r)
}).fail(this._errorHandler).fail(errorsModule._errorHandler).fail(d.reject);
return d.promise()
},
objectLink: function(entityAlias, key) {
var store = this[entityAlias];
if (!store) {
throw errorsModule.errors.Error("E4015", entityAlias)
}
if (!typeUtils.isDefined(key)) {
return null
}
return {
__metadata: {
uri: store._byKeyUrl(key, true)
}
}
}
}).include(mixins.SharedMethods);
module.exports = ODataContext
}, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
/*!*****************************************************!*\
!*** ./artifacts/transpiled/bundles/modules/viz.js ***!
\*****************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
__webpack_require__( /*! ./core */ 149);
module.exports = DevExpress.viz = DevExpress.viz || {}
},
/*!*******************************************!*\
!*** ./artifacts/transpiled/viz/chart.js ***!
\*******************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _common = __webpack_require__( /*! ../core/utils/common */ 4);
var _extend2 = __webpack_require__( /*! ../core/utils/extend */ 0);
var _array = __webpack_require__( /*! ../core/utils/array */ 14);
var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 3);
var _component_registrator = __webpack_require__( /*! ../core/component_registrator */ 9);
var _component_registrator2 = _interopRequireDefault(_component_registrator);
var _utils = __webpack_require__( /*! ./core/utils */ 12);
var _type = __webpack_require__( /*! ../core/utils/type */ 1);
var _math = __webpack_require__( /*! ../core/utils/math */ 30);
var _base_chart = __webpack_require__( /*! ./chart_components/base_chart */ 245);
var _layout_manager = __webpack_require__( /*! ./chart_components/layout_manager */ 410);
var _layout_manager2 = _interopRequireDefault(_layout_manager);
var _multi_axes_synchronizer = __webpack_require__( /*! ./chart_components/multi_axes_synchronizer */ 807);
var _multi_axes_synchronizer2 = _interopRequireDefault(_multi_axes_synchronizer);
var _advanced_chart = __webpack_require__( /*! ./chart_components/advanced_chart */ 412);
var _scroll_bar = __webpack_require__( /*! ./chart_components/scroll_bar */ 816);
var _scroll_bar2 = _interopRequireDefault(_scroll_bar);
var _crosshair = __webpack_require__( /*! ./chart_components/crosshair */ 418);
var _crosshair2 = _interopRequireDefault(_crosshair);
var _range_data_calculator = __webpack_require__( /*! ./series/helpers/range_data_calculator */ 252);
var _range_data_calculator2 = _interopRequireDefault(_range_data_calculator);
var _range = __webpack_require__( /*! ./translators/range */ 109);
var _range2 = _interopRequireDefault(_range);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
var DEFAULT_PANE_NAME = "default";
var VISUAL_RANGE = "VISUAL_RANGE";
var DEFAULT_PANES = [{
name: DEFAULT_PANE_NAME,
border: {}
}];
var _isArray = Array.isArray;
function getFirstAxisNameForPane(axes, paneName, defaultPane) {
var result;
for (var i = 0; i < axes.length; i++) {
if (axes[i].pane === paneName || void 0 === axes[i].pane && paneName === defaultPane) {
result = axes[i].name;
break
}
}
if (!result) {
result = axes[0].name
}
return result
}
function changeVisibilityAxisGrids(axis, gridVisibility, minorGridVisibility) {
var gridOpt = axis.getOptions().grid,
minorGridOpt = axis.getOptions().minorGrid;
gridOpt.visible = gridVisibility;
minorGridOpt && (minorGridOpt.visible = minorGridVisibility)
}
function hideGridsOnNonFirstValueAxisForPane(axesForPane) {
var axisShown = false,
hiddenStubAxis = [],
minorGridVisibility = axesForPane.some(function(axis) {
var minorGridOptions = axis.getOptions().minorGrid;
return minorGridOptions && minorGridOptions.visible
}),
gridVisibility = axesForPane.some(function(axis) {
var gridOptions = axis.getOptions().grid;
return gridOptions && gridOptions.visible
});
if (axesForPane.length > 1) {
axesForPane.forEach(function(axis) {
var gridOpt = axis.getOptions().grid;
if (axisShown) {
changeVisibilityAxisGrids(axis, false, false)
} else {
if (gridOpt && gridOpt.visible) {
if (axis.getTranslator().getBusinessRange().isEmpty()) {
changeVisibilityAxisGrids(axis, false, false);
hiddenStubAxis.push(axis)
} else {
axisShown = true;
changeVisibilityAxisGrids(axis, gridVisibility, minorGridVisibility)
}
}
}
});
!axisShown && hiddenStubAxis.length && changeVisibilityAxisGrids(hiddenStubAxis[0], gridVisibility, minorGridVisibility)
}
}
function findAxisOptions(valueAxes, valueAxesOptions, axisName) {
var result, axInd;
for (axInd = 0; axInd < valueAxesOptions.length; axInd++) {
if (valueAxesOptions[axInd].name === axisName) {
result = valueAxesOptions[axInd];
result.priority = axInd;
break
}
}
if (!result) {
for (axInd = 0; axInd < valueAxes.length; axInd++) {
if (valueAxes[axInd].name === axisName) {
result = valueAxes[axInd].getOptions();
result.priority = valueAxes[axInd].priority;
break
}
}
}
return result
}
function findAxis(paneName, axisName, axes) {
var axis, i;
for (i = 0; i < axes.length; i++) {
axis = axes[i];
if (axis.name === axisName && axis.pane === paneName) {
return axis
}
}
if (paneName) {
return findAxis(void 0, axisName, axes)
}
}
function compareAxes(a, b) {
return a.priority - b.priority
}
function doesPaneExist(panes, paneName) {
var found = false;
(0, _iterator.each)(panes, function(_, pane) {
if (pane.name === paneName) {
found = true;
return false
}
});
return found
}
var prepareSegmentRectPoints = function(left, top, width, height, borderOptions) {
var maxSW = ~~((width < height ? width : height) / 2),
sw = borderOptions.width || 0,
newSW = sw < maxSW ? sw : maxSW;
left += newSW / 2;
top += newSW / 2;
width -= newSW;
height -= newSW;
var segmentSequence, right = left + width,
bottom = top + height,
points = [],
segments = [],
visiblyOpt = 0,
prevSegmentVisibility = 0;
var allSegment = {
top: [
[left, top],
[right, top]
],
right: [
[right, top],
[right, bottom]
],
bottom: [
[right, bottom],
[left, bottom]
],
left: [
[left, bottom],
[left, top]
]
};
(0, _iterator.each)(allSegment, function(seg) {
var visibility = !!borderOptions[seg];
visiblyOpt = 2 * visiblyOpt + ~~visibility
});
switch (visiblyOpt) {
case 13:
case 9:
segmentSequence = ["left", "top", "right", "bottom"];
break;
case 11:
segmentSequence = ["bottom", "left", "top", "right"];
break;
default:
segmentSequence = ["top", "right", "bottom", "left"]
}(0, _iterator.each)(segmentSequence, function(_, seg) {
var segmentVisibility = !!borderOptions[seg];
if (!prevSegmentVisibility && segments.length) {
points.push(segments);
segments = []
}
if (segmentVisibility) {
(0, _iterator.each)(allSegment[seg].slice(prevSegmentVisibility), function(_, segment) {
segments = segments.concat(segment)
})
}
prevSegmentVisibility = ~~segmentVisibility
});
segments.length && points.push(segments);
1 === points.length && (points = points[0]);
return {
points: points,
pathType: 15 === visiblyOpt ? "area" : "line"
}
};
function accumulate(field, src1, src2, auxSpacing) {
var val1 = src1[field] || 0,
val2 = src2[field] || 0;
return val1 + val2 + (val1 && val2 ? auxSpacing : 0)
}
function pickMax(field, src1, src2) {
return pickMaxValue(src1[field], src2[field])
}
function pickMaxValue(val1, val2) {
return Math.max(val1 || 0, val2 || 0)
}
function getAxisMargins(axis) {
return axis.getMargins()
}
function getHorizontalAxesMargins(axes, getMarginsFunc) {
return axes.reduce(function(margins, axis) {
var axisMargins = getMarginsFunc(axis),
paneMargins = margins.panes[axis.pane] = margins.panes[axis.pane] || {},
spacing = axis.getMultipleAxesSpacing();
paneMargins.top = accumulate("top", paneMargins, axisMargins, spacing);
paneMargins.bottom = accumulate("bottom", paneMargins, axisMargins, spacing);
paneMargins.left = pickMax("left", paneMargins, axisMargins);
paneMargins.right = pickMax("right", paneMargins, axisMargins);
margins.top = pickMax("top", paneMargins, margins);
margins.bottom = pickMax("bottom", paneMargins, margins);
margins.left = pickMax("left", paneMargins, margins);
margins.right = pickMax("right", paneMargins, margins);
return margins
}, {
panes: {}
})
}
function getVerticalAxesMargins(axes) {
return axes.reduce(function(margins, axis) {
var axisMargins = axis.getMargins(),
paneMargins = margins.panes[axis.pane] = margins.panes[axis.pane] || {},
spacing = axis.getMultipleAxesSpacing();
paneMargins.top = pickMax("top", paneMargins, axisMargins);
paneMargins.bottom = pickMax("bottom", paneMargins, axisMargins);
paneMargins.left = accumulate("left", paneMargins, axisMargins, spacing);
paneMargins.right = accumulate("right", paneMargins, axisMargins, spacing);
margins.top = pickMax("top", paneMargins, margins);
margins.bottom = pickMax("bottom", paneMargins, margins);
margins.left = pickMax("left", paneMargins, margins);
margins.right = pickMax("right", paneMargins, margins);
return margins
}, {
panes: {}
})
}
function performActionOnAxes(axes, action, actionArgument1, actionArgument2, actionArgument3) {
axes.forEach(function(axis) {
axis[action](actionArgument1 && actionArgument1[axis.pane], actionArgument2 && actionArgument2[axis.pane] || actionArgument2, actionArgument3)
})
}
function shrinkCanvases(isRotated, canvases, sizes, verticalMargins, horizontalMargins) {
function getMargin(side, margins, pane) {
var m = (isRotated ? ["left", "right"] : ["top", "bottom"]).indexOf(side) === -1 ? margins : margins.panes[pane] || {};
return m[side]
}
function getMaxMargin(side, margins1, margins2, pane) {
return pickMaxValue(getMargin(side, margins1, pane), getMargin(side, margins2, pane))
}
var getOriginalField = function(field) {
return "original" + field[0].toUpperCase() + field.slice(1)
};
function shrink(canvases, paneNames, sizeField, startMargin, endMargin, oppositeMargins) {
paneNames = paneNames.sort(function(p1, p2) {
return canvases[p2][startMargin] - canvases[p1][startMargin]
});
paneNames.forEach(function(pane) {
var canvas = canvases[pane];
oppositeMargins.forEach(function(margin) {
canvas[margin] = canvas[getOriginalField(margin)] + getMaxMargin(margin, verticalMargins, horizontalMargins, pane)
})
});
var firstPane = canvases[paneNames[0]];
var emptySpace = paneNames.reduce(function(space, paneName) {
space -= getMaxMargin(startMargin, verticalMargins, horizontalMargins, paneName) + getMaxMargin(endMargin, verticalMargins, horizontalMargins, paneName);
return space
}, firstPane[sizeField] - firstPane[getOriginalField(endMargin)] - canvases[paneNames[paneNames.length - 1]][getOriginalField(startMargin)]) - _utils.PANE_PADDING * (paneNames.length - 1);
var totalCustomSpace = Object.keys(sizes).reduce(function(prev, key) {
return prev + (sizes[key].unit ? sizes[key].height : 0)
}, 0);
emptySpace -= totalCustomSpace;
paneNames.reduce(function(offset, pane) {
var canvas = canvases[pane];
var paneSize = sizes[pane];
offset -= getMaxMargin(endMargin, verticalMargins, horizontalMargins, pane);
canvas[endMargin] = firstPane[sizeField] - offset;
offset -= paneSize.unit ? paneSize.height : Math.floor(emptySpace * paneSize.height);
canvas[startMargin] = offset;
offset -= getMaxMargin(startMargin, verticalMargins, horizontalMargins, pane) + _utils.PANE_PADDING;
return offset
}, firstPane[sizeField] - firstPane[getOriginalField(endMargin)] - (emptySpace < 0 ? emptySpace : 0))
}
var paneNames = Object.keys(canvases);
if (!isRotated) {
shrink(canvases, paneNames, "height", "top", "bottom", ["left", "right"])
} else {
shrink(canvases, paneNames, "width", "left", "right", ["top", "bottom"])
}
return canvases
}
function drawAxesWithTicks(axes, condition, canvases, panesBorderOptions) {
if (condition) {
performActionOnAxes(axes, "createTicks", canvases);
_multi_axes_synchronizer2.default.synchronize(axes)
}
performActionOnAxes(axes, "draw", !condition && canvases, panesBorderOptions)
}
function shiftAxis(side1, side2) {
var shifts = {};
return function(axis) {
var shift = shifts[axis.pane] = shifts[axis.pane] || {
top: 0,
left: 0,
bottom: 0,
right: 0
},
spacing = axis.getMultipleAxesSpacing(),
margins = axis.getMargins();
axis.shift(shift);
shift[side1] = accumulate(side1, shift, margins, spacing);
shift[side2] = accumulate(side2, shift, margins, spacing)
}
}
function getCommonSize(side, margins) {
var pane, paneMargins, size = 0;
for (pane in margins.panes) {
paneMargins = margins.panes[pane];
size += "height" === side ? paneMargins.top + paneMargins.bottom : paneMargins.left + paneMargins.right
}
return size
}
function checkUsedSpace(sizeShortage, side, axes, getMarginFunc) {
var size = 0;
if (sizeShortage[side] > 0) {
size = getCommonSize(side, getMarginFunc(axes, getAxisMargins));
performActionOnAxes(axes, "hideTitle");
sizeShortage[side] -= size - getCommonSize(side, getMarginFunc(axes, getAxisMargins))
}
if (sizeShortage[side] > 0) {
performActionOnAxes(axes, "hideOuterElements")
}
}
function axisAnimationEnabled(drawOptions, series) {
var pointsCount = series.reduce(function(sum, s) {
return sum += s.getPoints().length
}, 0) / series.length;
return drawOptions.animate && pointsCount <= drawOptions.animationPointsLimit
}
var dxChart = _advanced_chart.AdvancedChart.inherit({
_themeSection: "chart",
_fontFields: ["crosshair.label.font"],
_setDeprecatedOptions: function() {
this.callBase.apply(this, arguments);
(0, _extend2.extend)(this._deprecatedOptions, {
useAggregation: {
since: "18.1",
message: "Use the 'commonSeriesSettings.aggregation.enabled' or 'series.aggregation.enabled' option instead"
},
"argumentAxis.min": {
since: "18.2",
message: "Use the 'argumentAxis.visualRange' option instead"
},
"argumentAxis.max": {
since: "18.2",
message: "Use the 'argumentAxis.visualRange' option instead"
},
"valueAxis.min": {
since: "18.2",
message: "Use the 'valueAxis.visualRange' option instead"
},
"valueAxis.max": {
since: "18.2",
message: "Use the 'valueAxis.visualRange' option instead"
},
zoomingMode: {
since: "18.2",
message: "Use the 'zoomAndPan' option instead"
},
scrollingMode: {
since: "18.2",
message: "Use the 'zoomAndPan' option instead"
}
})
},
_initCore: function() {
this.paneAxis = {};
this.callBase()
},
_correctAxes: function() {
this._correctValueAxes(true)
},
_getExtraOptions: _common.noop,
_createPanes: function() {
var defaultPane, that = this,
panes = that.option("panes"),
panesNameCounter = 0;
if (!panes || _isArray(panes) && !panes.length) {
panes = DEFAULT_PANES
}
that.callBase();
defaultPane = that.option("defaultPane");
panes = (0, _extend2.extend)(true, [], _isArray(panes) ? panes : [panes]);
(0, _iterator.each)(panes, function(_, pane) {
pane.name = !(0, _type.isDefined)(pane.name) ? DEFAULT_PANE_NAME + panesNameCounter++ : pane.name
});
if ((0, _type.isDefined)(defaultPane)) {
if (!doesPaneExist(panes, defaultPane)) {
that._incidentOccurred("W2101", [defaultPane]);
defaultPane = panes[panes.length - 1].name
}
} else {
defaultPane = panes[panes.length - 1].name
}
that.defaultPane = defaultPane;
panes = that._isRotated() ? panes.reverse() : panes;
return panes
},
_getAxisRenderingOptions: function() {
return {
axisType: "xyAxes",
drawingType: "linear"
}
},
_prepareAxisOptions: function(typeSelector, userOptions, rotated) {
return {
isHorizontal: "argumentAxis" === typeSelector !== rotated,
containerColor: this._themeManager.getOptions("containerBackgroundColor")
}
},
_checkPaneName: function(seriesTheme) {
var paneList = (0, _utils.map)(this.panes, function(pane) {
return pane.name
});
seriesTheme.pane = seriesTheme.pane || this.defaultPane;
return (0, _array.inArray)(seriesTheme.pane, paneList) !== -1
},
_getValueAxis: function(paneName, axisName) {
var axisOptions, axis, that = this,
valueAxes = that._valueAxes,
valueAxisOptions = that.option("valueAxis") || {},
valueAxesOptions = _isArray(valueAxisOptions) ? valueAxisOptions : [valueAxisOptions],
rotated = that._isRotated(),
crosshairMargins = that._getCrosshairMargins();
axisName = axisName || getFirstAxisNameForPane(valueAxes, paneName, that.defaultPane);
axis = findAxis(paneName, axisName, valueAxes);
if (!axis) {
axisOptions = findAxisOptions(valueAxes, valueAxesOptions, axisName);
if (!axisOptions) {
that._incidentOccurred("W2102", [axisName]);
axisOptions = {
name: axisName,
priority: valueAxes.length
}
}
axis = that._createAxis(false, that._populateAxesOptions("valueAxis", axisOptions, {
pane: paneName,
name: axisName,
optionPath: _isArray(valueAxisOptions) ? "valueAxis[" + axisOptions.priority + "]" : "valueAxis",
crosshairMargin: rotated ? crosshairMargins.y : crosshairMargins.x
}, rotated));
axis.applyVisualRangeSetter(that._getVisualRangeSetter());
valueAxes.push(axis)
}
axis.setPane(paneName);
return axis
},
_correctValueAxes: function(needHideGrids) {
var that = this,
synchronizeMultiAxes = that._themeManager.getOptions("synchronizeMultiAxes"),
valueAxes = that._valueAxes,
paneWithAxis = {};
that.series.forEach(function(series) {
var axis = series.getValueAxis();
paneWithAxis[axis.pane] = true
});
that.panes.forEach(function(pane) {
var paneName = pane.name;
if (!paneWithAxis[paneName]) {
that._getValueAxis(paneName)
}
if (needHideGrids && synchronizeMultiAxes) {
hideGridsOnNonFirstValueAxisForPane(valueAxes.filter(function(axis) {
return axis.pane === paneName
}))
}
});
that._valueAxes = valueAxes.filter(function(axis) {
if (!axis.pane) {
axis.setPane(that.defaultPane)
}
return doesPaneExist(that.panes, axis.pane)
}).sort(compareAxes);
var defaultAxis = this.getValueAxis();
that._valueAxes.forEach(function(axis) {
var optionPath = axis.getOptions().optionPath;
if (optionPath) {
var axesWithSamePath = that._valueAxes.filter(function(a) {
return a.getOptions().optionPath === optionPath
});
if (axesWithSamePath.length > 1) {
if (axesWithSamePath.some(function(a) {
return a === defaultAxis
})) {
axesWithSamePath.forEach(function(a) {
if (a !== defaultAxis) {
a.getOptions().optionPath = null
}
})
} else {
axesWithSamePath.forEach(function(a, i) {
if (0 !== i) {
a.getOptions().optionPath = null
}
})
}
}
}
})
},
_getSeriesForPane: function(paneName) {
var paneSeries = [];
(0, _iterator.each)(this.series, function(_, oneSeries) {
if (oneSeries.pane === paneName) {
paneSeries.push(oneSeries)
}
});
return paneSeries
},
_createPanesBorderOptions: function() {
var commonBorderOptions = this._themeManager.getOptions("commonPaneSettings").border,
panesBorderOptions = {};
this.panes.forEach(function(pane) {
return panesBorderOptions[pane.name] = (0, _extend2.extend)(true, {}, commonBorderOptions, pane.border)
});
return panesBorderOptions
},
_createScrollBar: function() {
var that = this,
scrollBarOptions = that._themeManager.getOptions("scrollBar") || {},
scrollBarGroup = that._scrollBarGroup;
if (scrollBarOptions.visible) {
scrollBarOptions.rotated = that._isRotated();
that._scrollBar = (that._scrollBar || new _scroll_bar2.default.ScrollBar(that._renderer, scrollBarGroup)).update(scrollBarOptions)
} else {
scrollBarGroup.linkRemove();
that._scrollBar && that._scrollBar.dispose();
that._scrollBar = null
}
},
_prepareToRender: function(drawOptions) {
var panesBorderOptions = this._createPanesBorderOptions();
this._createPanesBackground();
this._appendAxesGroups();
this._adjustViewport();
return panesBorderOptions
},
_adjustViewport: function() {
var that = this;
var series = that._getVisibleSeries();
var argumentAxis = that.getArgumentAxis();
var useAggregation = series.some(function(s) {
return s.useAggregation()
});
var adjustOnZoom = that._themeManager.getOptions("adjustOnZoom");
var alignToBounds = !argumentAxis.dataVisualRangeIsReduced();
if (!useAggregation && !adjustOnZoom) {
return
}
that._valueAxes.forEach(function(axis) {
return axis.adjust(alignToBounds)
})
},
_recreateSizeDependentObjects: function(isCanvasChanged) {
var that = this,
series = that._getVisibleSeries(),
useAggregation = series.some(function(s) {
return s.useAggregation()
}),
zoomChanged = that._isZooming();
if (!useAggregation) {
return
}
that._argumentAxes.forEach(function(axis) {
axis.updateCanvas(that._canvas)
});
series.forEach(function(series) {
if (series.useAggregation() && (isCanvasChanged || zoomChanged || !series._useAllAggregatedPoints)) {
series.createPoints()
}
});
that._processSeriesFamilies()
},
_isZooming: function() {
var that = this;
var argumentAxis = that.getArgumentAxis();
if (!argumentAxis || !argumentAxis.getTranslator()) {
return false
}
var businessRange = argumentAxis.getTranslator().getBusinessRange();
var zoomRange = argumentAxis.getViewport();
var min = zoomRange ? zoomRange.min : 0;
var max = zoomRange ? zoomRange.max : 0;
if ("logarithmic" === businessRange.axisType) {
min = (0, _utils.getLog)(min, businessRange.base);
max = (0, _utils.getLog)(max, businessRange.base)
}
var viewportDistance = "discrete" === businessRange.axisType ? (0, _utils.getCategoriesInfo)(businessRange.categories, min, max).categories.length : Math.abs(max - min);
var precision = (0, _math.getPrecision)(viewportDistance);
precision = precision > 1 ? Math.pow(10, precision - 2) : 1;
var zoomChanged = Math.round((that._zoomLength - viewportDistance) * precision) / precision !== 0;
that._zoomLength = viewportDistance;
return zoomChanged
},
_handleSeriesDataUpdated: function() {
var that = this,
viewport = new _range2.default.Range;
that.series.forEach(function(s) {
viewport.addRange(s.getArgumentRange())
});
that._argumentAxes.forEach(function(axis) {
axis.updateCanvas(that._canvas);
axis.setBusinessRange(viewport, that._axesReinitialized)
});
that.callBase()
},
_isLegendInside: function() {
return this._legend && "inside" === this._legend.getPosition()
},
_isRotated: function() {
return this._themeManager.getOptions("rotated")
},
_getLayoutTargets: function() {
return this.panes
},
_applyClipRects: function(panesBorderOptions) {
var i, that = this,
canvasClipRectID = that._getCanvasClipRectID();
that._drawPanesBorders(panesBorderOptions);
that._createClipRectsForPanes();
for (i = 0; i < that._argumentAxes.length; i++) {
that._argumentAxes[i].applyClipRects(that._getElementsClipRectID(that._argumentAxes[i].pane), canvasClipRectID)
}
for (i = 0; i < that._valueAxes.length; i++) {
that._valueAxes[i].applyClipRects(that._getElementsClipRectID(that._valueAxes[i].pane), canvasClipRectID)
}
that._fillPanesBackground()
},
_updateLegendPosition: function(drawOptions, legendHasInsidePosition) {
var that = this;
if (drawOptions.drawLegend && that._legend && legendHasInsidePosition) {
var panes = that.panes,
newCanvas = (0, _extend2.extend)({}, panes[0].canvas),
layoutManager = new _layout_manager2.default.LayoutManager;
newCanvas.right = panes[panes.length - 1].canvas.right;
newCanvas.bottom = panes[panes.length - 1].canvas.bottom;
layoutManager.setOptions({
width: 0,
height: 0
});
layoutManager.layoutElements([that._legend], newCanvas, _common.noop, [{
canvas: newCanvas
}], void 0)
}
},
_allowLegendInsidePosition: function() {
return true
},
_applyExtraSettings: function(series) {
var that = this,
paneIndex = that._getPaneIndex(series.pane),
panesClipRects = that._panesClipRects,
wideClipRect = panesClipRects.wide[paneIndex];
series.setClippingParams(panesClipRects.base[paneIndex].id, wideClipRect && wideClipRect.id, that._getPaneBorderVisibility(paneIndex))
},
_updatePanesCanvases: function(drawOptions) {
if (!drawOptions.recreateCanvas) {
return
}(0, _utils.updatePanesCanvases)(this.panes, this._canvas, this._isRotated())
},
_normalizePanesHeight: function() {
(0, _utils.normalizePanesHeight)(this.panes)
},
_renderScaleBreaks: function() {
this._valueAxes.concat(this._argumentAxes).forEach(function(axis) {
axis.drawScaleBreaks()
})
},
_applyPointMarkersAutoHiding: function() {
var that = this;
if (!that._themeManager.getOptions("autoHidePointMarkers")) {
that.series.forEach(function(s) {
return s.autoHidePointMarkers = false
});
return
}
that.panes.forEach(function(pane) {
var series = that.series.filter(function(s) {
return s.pane === pane.name && s.usePointsToDefineAutoHiding()
});
var argAxis = that.getArgumentAxis();
var argVisualRange = argAxis.visualRange();
var argTranslator = argAxis.getTranslator();
var argAxisType = argAxis.getOptions().type;
var argViewPortFilter = _range_data_calculator2.default.getViewPortFilter(argVisualRange || {});
var points = [];
var overloadedSeries = {};
series.forEach(function(s) {
var valAxis = s.getValueAxis();
var valVisualRange = valAxis.visualRange();
var valTranslator = valAxis.getTranslator();
var seriesIndex = that.series.indexOf(s);
var valViewPortFilter = _range_data_calculator2.default.getViewPortFilter(valVisualRange || {});
overloadedSeries[seriesIndex] = {};
series.forEach(function(sr) {
return overloadedSeries[seriesIndex][that.series.indexOf(sr)] = 0
});
var seriesPoints = [];
s.getPoints().filter(function(p) {
return p.getOptions().visible && argViewPortFilter(p.argument) && (valViewPortFilter(p.getMinValue(true)) || valViewPortFilter(p.getMaxValue(true)))
}).forEach(function(p) {
var tp = {
seriesIndex: seriesIndex,
argument: p.argument,
value: p.getMaxValue(true),
size: p.bubbleSize || p.getOptions().size
};
if (p.getMinValue(true) !== p.getMaxValue(true)) {
var mp = (0, _extend2.extend)({}, tp);
mp.value = p.getMinValue(true);
mp.x = argTranslator.to(mp.argument, 1);
mp.y = valTranslator.to(mp.value, 1);
seriesPoints.push(mp)
}
tp.x = argTranslator.to(tp.argument, 1);
tp.y = valTranslator.to(tp.value, 1);
seriesPoints.push(tp)
});
overloadedSeries[seriesIndex].pointsCount = seriesPoints.length;
overloadedSeries[seriesIndex].total = 0;
overloadedSeries[seriesIndex].continuousSeries = 0;
points = points.concat(seriesPoints)
});
var sortingCallback = "discrete" === argAxisType ? function(p1, p2) {
return argVisualRange.categories.indexOf(p1.argument) - argVisualRange.categories.indexOf(p2.argument)
} : function(p1, p2) {
return p1.argument - p2.argument
};
points.sort(sortingCallback);
var isContinuousSeries = false;
for (var i = 0; i < points.length - 1; i++) {
var curPoint = points[i];
var size = curPoint.size;
if ((0, _type.isDefined)(curPoint.x) && (0, _type.isDefined)(curPoint.y)) {
for (var j = i + 1; j < points.length; j++) {
var nextPoint = points[j];
var next_x = (0, _type.isDefined)(nextPoint) ? nextPoint.x : null;
var next_y = (0, _type.isDefined)(nextPoint) ? nextPoint.y : null;
if (!(0, _type.isDefined)(next_x) || Math.abs(curPoint.x - next_x) >= size) {
isContinuousSeries &= j !== i + 1;
break
} else {
var distance = (0, _type.isDefined)(next_x) && (0, _type.isDefined)(next_y) && Math.sqrt(Math.pow(curPoint.x - next_x, 2) + Math.pow(curPoint.y - next_y, 2));
if (distance && distance < size) {
overloadedSeries[curPoint.seriesIndex][nextPoint.seriesIndex]++;
overloadedSeries[curPoint.seriesIndex].total++;
if (!isContinuousSeries) {
overloadedSeries[curPoint.seriesIndex].continuousSeries++;
isContinuousSeries = true
}
}
}
}
}
}
series.forEach(function(s) {
var seriesIndex = that.series.indexOf(s);
s.autoHidePointMarkers = false;
var tickCount = argAxis.getTicksValues().majorTicksValues.length;
if (s.autoHidePointMarkersEnabled() && ("discrete" === argAxisType || overloadedSeries[seriesIndex].pointsCount > tickCount)) {
for (var index in overloadedSeries[seriesIndex]) {
var _i = parseInt(index);
if (isNaN(_i) || overloadedSeries[seriesIndex].total / overloadedSeries[seriesIndex].continuousSeries < 3) {
continue
}
if (_i === seriesIndex) {
if (2 * overloadedSeries[_i][_i] >= overloadedSeries[_i].pointsCount) {
s.autoHidePointMarkers = true;
break
}
} else {
if (overloadedSeries[seriesIndex].total >= overloadedSeries[seriesIndex].pointsCount) {
s.autoHidePointMarkers = true;
break
}
}
}
}
})
})
},
_renderAxes: function(drawOptions, panesBorderOptions) {
function calculateTitlesWidth(axes) {
return axes.map(function(axis) {
if (!axis.getTitle) {
return 0
}
var title = axis.getTitle();
return title ? title.bBox.width : 0
})
}
var that = this,
rotated = that._isRotated(),
synchronizeMultiAxes = that._themeManager.getOptions("synchronizeMultiAxes"),
extendedArgAxes = (that._scrollBar ? [that._scrollBar] : []).concat(that._argumentAxes),
verticalAxes = rotated ? extendedArgAxes : that._valueAxes,
horizontalAxes = rotated ? that._valueAxes : extendedArgAxes,
allAxes = verticalAxes.concat(horizontalAxes);
that._normalizePanesHeight();
that._updatePanesCanvases(drawOptions);
var panesCanvases = that.panes.reduce(function(canvases, pane) {
canvases[pane.name] = (0, _extend2.extend)({}, pane.canvas);
return canvases
}, {}),
paneSizes = that.panes.reduce(function(sizes, pane) {
sizes[pane.name] = {
height: pane.height,
unit: pane.unit
};
return sizes
}, {}),
cleanPanesCanvases = (0, _extend2.extend)(true, {}, panesCanvases);
if (!drawOptions.adjustAxes) {
drawAxesWithTicks(verticalAxes, !rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);
drawAxesWithTicks(horizontalAxes, rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);
performActionOnAxes(allAxes, "prepareAnimation");
that._renderScaleBreaks();
return false
}
if (that._scrollBar) {
that._scrollBar.setPane(that.panes)
}
var vAxesMargins = {
panes: {}
},
hAxesMargins = getHorizontalAxesMargins(horizontalAxes, function(axis) {
return axis.estimateMargins(panesCanvases[axis.pane])
});
panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);
drawAxesWithTicks(verticalAxes, !rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);
vAxesMargins = getVerticalAxesMargins(verticalAxes);
panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);
drawAxesWithTicks(horizontalAxes, rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);
hAxesMargins = getHorizontalAxesMargins(horizontalAxes, getAxisMargins);
panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);
var oldTitlesWidth = calculateTitlesWidth(verticalAxes);
performActionOnAxes(allAxes, "updateSize", panesCanvases, axisAnimationEnabled(drawOptions, that._getVisibleSeries()));
horizontalAxes.forEach(shiftAxis("top", "bottom"));
verticalAxes.forEach(shiftAxis("left", "right"));
that._renderScaleBreaks();
that.panes.forEach(function(pane) {
(0, _extend2.extend)(pane.canvas, panesCanvases[pane.name])
});
that._valueAxes.forEach(function(axis) {
axis.setInitRange()
});
verticalAxes.forEach(function(axis, i) {
if (axis.hasWrap && axis.hasWrap()) {
var title = axis.getTitle();
var newTitleWidth = title ? title.bBox.width : 0;
var offset = newTitleWidth - oldTitlesWidth[i];
if ("right" === axis.getOptions().position) {
vAxesMargins.right += offset
} else {
vAxesMargins.left += offset;
that.panes.forEach(function(_ref) {
var name = _ref.name;
return vAxesMargins.panes[name].left += offset
})
}
panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);
performActionOnAxes(allAxes, "updateSize", panesCanvases, false, false);
oldTitlesWidth = calculateTitlesWidth(verticalAxes)
}
});
return cleanPanesCanvases
},
checkForMoreSpaceForPanesCanvas: function() {
var that = this;
var rotated = that._isRotated();
var panesAreCustomSized = that.panes.filter(function(p) {
return p.unit
}).length === that.panes.length;
var needSpace = false;
if (panesAreCustomSized) {
var needHorizontalSpace = 0;
var needVerticalSpace = 0;
if (rotated) {
var argAxisRightMargin = that.getArgumentAxis().getMargins().right;
var rightPanesIndent = Math.min.apply(Math, that.panes.map(function(p) {
return p.canvas.right
}));
needHorizontalSpace = that._canvas.right + argAxisRightMargin - rightPanesIndent
} else {
var argAxisBottomMargin = that.getArgumentAxis().getMargins().bottom;
var bottomPanesIndent = Math.min.apply(Math, that.panes.map(function(p) {
return p.canvas.bottom
}));
needVerticalSpace = that._canvas.bottom + argAxisBottomMargin - bottomPanesIndent
}
needSpace = needHorizontalSpace > 0 || needVerticalSpace > 0 ? {
width: needHorizontalSpace,
height: needVerticalSpace
} : false;
if (0 !== needVerticalSpace) {
var realSize = that.getSize();
var customSize = that.option("size");
var container = that._$element[0];
var containerHasStyledHeight = !!container.style.height || (0, _utils.checkElementHasPropertyFromStyleSheet)(container, "height");
if (!rotated && !(customSize && customSize.height) && !containerHasStyledHeight) {
that._forceResize(realSize.width, realSize.height + needVerticalSpace);
needSpace = false
}
}
} else {
needSpace = that.layoutManager.needMoreSpaceForPanesCanvas(that._getLayoutTargets(), rotated, function(pane) {
return {
width: rotated && !!pane.unit,
height: !rotated && !!pane.unit
}
})
}
return needSpace
},
_forceResize: function(width, height) {
this._renderer.resize(width, height);
this._updateSize();
this._setContentSize();
this._preserveOriginalCanvas();
this._updateCanvasClipRect(this._canvas)
},
_shrinkAxes: function(sizeShortage, panesCanvases) {
if (!sizeShortage || !panesCanvases) {
return
}
this._renderer.stopAllAnimations(true);
var that = this;
var rotated = that._isRotated();
var extendedArgAxes = (that._scrollBar ? [that._scrollBar] : []).concat(that._argumentAxes);
var verticalAxes = rotated ? extendedArgAxes : that._valueAxes;
var horizontalAxes = rotated ? that._valueAxes : extendedArgAxes;
var allAxes = verticalAxes.concat(horizontalAxes);
if (sizeShortage.width || sizeShortage.height) {
checkUsedSpace(sizeShortage, "height", horizontalAxes, getHorizontalAxesMargins);
checkUsedSpace(sizeShortage, "width", verticalAxes, getVerticalAxesMargins);
performActionOnAxes(allAxes, "updateSize", panesCanvases);
var paneSizes = that.panes.reduce(function(sizes, pane) {
sizes[pane.name] = {
height: pane.height,
unit: pane.unit
};
return sizes
}, {});
panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, getVerticalAxesMargins(verticalAxes), getHorizontalAxesMargins(horizontalAxes, getAxisMargins));
performActionOnAxes(allAxes, "updateSize", panesCanvases);
horizontalAxes.forEach(shiftAxis("top", "bottom"));
verticalAxes.forEach(shiftAxis("left", "right"));
that.panes.forEach(function(pane) {
return (0, _extend2.extend)(pane.canvas, panesCanvases[pane.name])
})
}
},
_getPanesParameters: function() {
var i, that = this,
panes = that.panes,
params = [];
for (i = 0; i < panes.length; i++) {
if (that._getPaneBorderVisibility(i)) {
params.push({
coords: panes[i].borderCoords,
clipRect: that._panesClipRects.fixed[i]
})
}
}
return params
},
_createCrosshairCursor: function() {
var that = this,
options = that._themeManager.getOptions("crosshair") || {},
argumentAxis = that.getArgumentAxis(),
axes = !that._isRotated() ? [
[argumentAxis], that._valueAxes
] : [that._valueAxes, [argumentAxis]],
parameters = {
canvas: that._getCommonCanvas(),
panes: that._getPanesParameters(),
axes: axes
};
if (!options || !options.enabled) {
return
}
if (!that._crosshair) {
that._crosshair = new _crosshair2.default.Crosshair(that._renderer, options, parameters, that._crosshairCursorGroup)
} else {
that._crosshair.update(options, parameters)
}
that._crosshair.render()
},
_getCommonCanvas: function() {
var i, canvas, commonCanvas, panes = this.panes;
for (i = 0; i < panes.length; i++) {
canvas = panes[i].canvas;
if (!commonCanvas) {
commonCanvas = (0, _extend2.extend)({}, canvas)
} else {
commonCanvas.right = canvas.right;
commonCanvas.bottom = canvas.bottom
}
}
return commonCanvas
},
_createPanesBackground: function() {
var backgroundColor, rect, i, that = this,
defaultBackgroundColor = that._themeManager.getOptions("commonPaneSettings").backgroundColor,
renderer = that._renderer,
rects = [];
that._panesBackgroundGroup.clear();
for (i = 0; i < that.panes.length; i++) {
backgroundColor = that.panes[i].backgroundColor || defaultBackgroundColor;
if (!backgroundColor || "none" === backgroundColor) {
rects.push(null);
continue
}
rect = renderer.rect(0, 0, 0, 0).attr({
fill: backgroundColor,
"stroke-width": 0
}).append(that._panesBackgroundGroup);
rects.push(rect)
}
that.panesBackground = rects
},
_fillPanesBackground: function() {
var bc, that = this;
(0, _iterator.each)(that.panes, function(i, pane) {
bc = pane.borderCoords;
if (null !== that.panesBackground[i]) {
that.panesBackground[i].attr({
x: bc.left,
y: bc.top,
width: bc.width,
height: bc.height
})
}
})
},
_calcPaneBorderCoords: function(pane) {
var canvas = pane.canvas,
bc = pane.borderCoords = pane.borderCoords || {};
bc.left = canvas.left;
bc.top = canvas.top;
bc.right = canvas.width - canvas.right;
bc.bottom = canvas.height - canvas.bottom;
bc.width = Math.max(bc.right - bc.left, 0);
bc.height = Math.max(bc.bottom - bc.top, 0)
},
_drawPanesBorders: function(panesBorderOptions) {
var that = this,
rotated = that._isRotated();
that._panesBorderGroup.linkRemove().clear();
(0, _iterator.each)(that.panes, function(i, pane) {
var bc, segmentRectParams, borderOptions = panesBorderOptions[pane.name],
attr = {
fill: "none",
stroke: borderOptions.color,
"stroke-opacity": borderOptions.opacity,
"stroke-width": borderOptions.width,
dashStyle: borderOptions.dashStyle,
"stroke-linecap": "square"
};
that._calcPaneBorderCoords(pane, rotated);
if (!borderOptions.visible) {
return
}
bc = pane.borderCoords;
segmentRectParams = prepareSegmentRectPoints(bc.left, bc.top, bc.width, bc.height, borderOptions);
that._renderer.path(segmentRectParams.points, segmentRectParams.pathType).attr(attr).append(that._panesBorderGroup)
});
that._panesBorderGroup.linkAppend()
},
_createClipRect: function(clipArray, index, left, top, width, height) {
var that = this,
clipRect = clipArray[index];
if (!clipRect) {
clipRect = that._renderer.clipRect(left, top, width, height);
clipArray[index] = clipRect
} else {
clipRect.attr({
x: left,
y: top,
width: width,
height: height
})
}
},
_createClipRectsForPanes: function() {
var that = this,
canvas = that._canvas;
(0, _iterator.each)(that.panes, function(i, pane) {
var needWideClipRect = false,
bc = pane.borderCoords,
left = bc.left,
top = bc.top,
width = bc.width,
height = bc.height,
panesClipRects = that._panesClipRects;
that._createClipRect(panesClipRects.fixed, i, left, top, width, height);
that._createClipRect(panesClipRects.base, i, left, top, width, height);
(0, _iterator.each)(that.series, function(_, series) {
if (series.pane === pane.name && (series.isFinancialSeries() || series.areErrorBarsVisible())) {
needWideClipRect = true
}
});
if (needWideClipRect) {
if (that._isRotated()) {
top = 0;
height = canvas.height
} else {
left = 0;
width = canvas.width
}
that._createClipRect(panesClipRects.wide, i, left, top, width, height)
} else {
panesClipRects.wide[i] = null
}
})
},
_getPaneBorderVisibility: function(paneIndex) {
var commonPaneBorderVisible = this._themeManager.getOptions("commonPaneSettings").border.visible,
pane = this.panes[paneIndex] || {},
paneBorder = pane.border || {};
return "visible" in paneBorder ? paneBorder.visible : commonPaneBorderVisible
},
_getCanvasForPane: function(paneName) {
var i, panes = this.panes,
panesNumber = panes.length;
for (i = 0; i < panesNumber; i++) {
if (panes[i].name === paneName) {
return panes[i].canvas
}
}
},
_getTrackerSettings: function() {
var that = this,
themeManager = that._themeManager;
return (0, _extend2.extend)(this.callBase(), {
chart: that,
rotated: that._isRotated(),
crosshair: that._getCrosshairOptions().enabled ? that._crosshair : null,
stickyHovering: themeManager.getOptions("stickyHovering")
})
},
_resolveLabelOverlappingStack: function() {
var that = this,
isRotated = that._isRotated(),
shiftDirection = isRotated ? function(box, length) {
return {
x: box.x - length,
y: box.y
}
} : function(box, length) {
return {
x: box.x,
y: box.y - length
}
};
(0, _iterator.each)(that._getStackPoints(), function(_, stacks) {
(0, _iterator.each)(stacks, function(_, points) {
_base_chart.overlapping.resolveLabelOverlappingInOneDirection(points, that._getCommonCanvas(), isRotated, shiftDirection, function(a, b) {
var coordPosition = isRotated ? 1 : 0;
var figureCenter1 = a.labels[0].getFigureCenter()[coordPosition];
var figureCenter12 = b.labels[0].getFigureCenter()[coordPosition];
if (figureCenter1 - figureCenter12 === 0) {
return (a.value() - b.value()) * (a.labels[0].getPoint().series.getValueAxis().getTranslator().isInverted() ? -1 : 1)
}
return 0
})
})
})
},
_getStackPoints: function() {
var stackPoints = {},
visibleSeries = this._getVisibleSeries();
(0, _iterator.each)(visibleSeries, function(_, singleSeries) {
var points = singleSeries.getPoints(),
stackName = singleSeries.getStackName() || null;
(0, _iterator.each)(points, function(_, point) {
var argument = point.argument;
if (!stackPoints[argument]) {
stackPoints[argument] = {}
}
if (!stackPoints[argument][stackName]) {
stackPoints[argument][stackName] = []
}
stackPoints[argument][stackName].push(point)
})
});
return stackPoints
},
_getCrosshairOptions: function() {
return this._getOption("crosshair")
},
zoomArgument: function(min, max) {
var that = this;
if (!that._initialized || !(0, _type.isDefined)(min) && !(0, _type.isDefined)(max)) {
return
}
that.getArgumentAxis().visualRange([min, max])
},
resetVisualRange: function() {
var that = this;
var axes = that._argumentAxes;
var nonVirtualArgumentAxis = that.getArgumentAxis();
axes.forEach(function(axis) {
axis.resetVisualRange(nonVirtualArgumentAxis !== axis);
that._applyCustomVisualRangeOption(axis)
});
that.callBase()
},
getVisibleArgumentBounds: function() {
var translator = this._argumentAxes[0].getTranslator(),
range = translator.getBusinessRange(),
isDiscrete = "discrete" === range.axisType,
categories = range.categories;
return {
minVisible: isDiscrete ? range.minVisible || categories[0] : range.minVisible,
maxVisible: isDiscrete ? range.maxVisible || categories[categories.length - 1] : range.maxVisible
}
},
_change_FULL_RENDER: function() {
this.callBase();
if (this._changes.has(VISUAL_RANGE)) {
this._raiseZoomEndHandlers()
}
},
_getAxesForScaling: function() {
return [this.getArgumentAxis()].concat(this._valueAxes)
},
_applyVisualRangeByVirtualAxes: function(axis, range) {
var that = this;
if (axis.isArgumentAxis) {
if (axis !== that.getArgumentAxis()) {
return true
}
that._argumentAxes.filter(function(a) {
return a !== axis
}).forEach(function(a) {
return a.visualRange(range, {
start: true,
end: true
})
})
}
return false
},
_raiseZoomEndHandlers: function() {
this._argumentAxes.forEach(function(axis) {
return axis.handleZoomEnd()
});
this.callBase()
},
_setOptionsByReference: function() {
this.callBase();
(0, _extend2.extend)(this._optionsByReference, {
"argumentAxis.visualRange": true
})
},
option: function option() {
var option = this.callBase.apply(this, arguments);
if ("array" === (0, _type.type)(this._options.valueAxis)) {
for (var i = 0; i < this._options.valueAxis.length; i++) {
var optionPath = "valueAxis[" + i + "].visualRange";
this._optionsByReference[optionPath] = true
}
}
return option
},
_notifyVisualRange: function() {
var that = this;
var argAxis = that._argumentAxes[0];
var argumentVisualRange = (0, _utils.convertVisualRangeObject)(argAxis.visualRange(), !_isArray(that.option("argumentAxis.visualRange")));
if (!argAxis.skipEventRising || !(0, _utils.rangesAreEqual)(argumentVisualRange, that.option("argumentAxis.visualRange"))) {
that.option("argumentAxis.visualRange", argumentVisualRange)
} else {
argAxis.skipEventRising = null
}
that.callBase()
}
});
dxChart.addPlugin(__webpack_require__( /*! ./chart_components/shutter_zoom */ 817));
dxChart.addPlugin(__webpack_require__( /*! ./chart_components/zoom_and_pan */ 818));
dxChart.addPlugin(__webpack_require__( /*! ./core/annotations */ 419).plugins.core);
dxChart.addPlugin(__webpack_require__( /*! ./core/annotations */ 419).plugins.chart);
(0, _component_registrator2.default)("dxChart", dxChart);
module.exports = dxChart;
module.exports._test_prepareSegmentRectPoints = function() {
var original = prepareSegmentRectPoints.original || prepareSegmentRectPoints;
if (arguments[0]) {
prepareSegmentRectPoints = arguments[0]
}
prepareSegmentRectPoints.original = original;
prepareSegmentRectPoints.restore = function() {
prepareSegmentRectPoints = original
};
return prepareSegmentRectPoints
}
},
/*!***************************************************************!*\
!*** ./artifacts/transpiled/viz/core/themes/generic.light.js ***!
\***************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var WHITE = "#ffffff",
BLACK = "#000000",
LIGHT_GREY = "#d3d3d3",
GREY_GREEN = "#303030",
SOME_GREY = "#2b2b2b",
RED = "#ff0000",
PRIMARY_TITLE_COLOR = "#232323",
SECONDARY_TITLE_COLOR = "#767676",
NONE = "none",
SOLID = "solid",
TOP = "top",
RIGHT = "right",
BOTTOM = "bottom",
LEFT = "left",
CENTER = "center",
INSIDE = "inside",
OUTSIDE = "outside",
themeModule = __webpack_require__( /*! ../../themes */ 50),
registerTheme = themeModule.registerTheme,
registerThemeAlias = themeModule.registerThemeAlias;
registerTheme({
name: "generic.light",
isDefault: true,
font: {
color: SECONDARY_TITLE_COLOR,
family: "'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana, sans-serif",
weight: 400,
size: 12,
cursor: "default"
},
redrawOnResize: true,
backgroundColor: WHITE,
primaryTitleColor: PRIMARY_TITLE_COLOR,
secondaryTitleColor: SECONDARY_TITLE_COLOR,
gridColor: LIGHT_GREY,
axisColor: SECONDARY_TITLE_COLOR,
title: {
backgroundColor: WHITE,
font: {
size: 28,
family: "'Segoe UI Light', 'Helvetica Neue Light', 'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana, sans-serif",
weight: 200
},
subtitle: {
font: {
size: 16
},
offset: 0,
wordWrap: "normal",
textOverflow: "ellipsis"
},
wordWrap: "normal",
textOverflow: "ellipsis"
},
loadingIndicator: {
text: "Loading..."
},
"export": {
backgroundColor: WHITE,
margin: 10,
font: {
size: 14,
color: PRIMARY_TITLE_COLOR,
weight: 400
},
button: {
margin: {
top: 8,
left: 10,
right: 10,
bottom: 8
},
"default": {
color: "#333",
borderColor: "#ddd",
backgroundColor: WHITE
},
hover: {
color: "#333",
borderColor: "#bebebe",
backgroundColor: "#e6e6e6"
},
focus: {
color: BLACK,
borderColor: "#9d9d9d",
backgroundColor: "#e6e6e6"
},
active: {
color: "#333",
borderColor: "#9d9d9d",
backgroundColor: "#d4d4d4"
}
},
shadowColor: LIGHT_GREY
},
tooltip: {
enabled: false,
border: {
width: 1,
color: LIGHT_GREY,
dashStyle: SOLID,
visible: true
},
font: {
color: PRIMARY_TITLE_COLOR
},
color: WHITE,
arrowLength: 10,
paddingLeftRight: 18,
paddingTopBottom: 15,
textAlignment: "center",
shared: false,
location: CENTER,
shadow: {
opacity: .4,
offsetX: 0,
offsetY: 4,
blur: 2,
color: BLACK
}
},
legend: {
hoverMode: "includePoints",
verticalAlignment: TOP,
horizontalAlignment: RIGHT,
position: OUTSIDE,
visible: true,
margin: 10,
markerSize: 12,
border: {
visible: false,
width: 1,
cornerRadius: 0,
dashStyle: SOLID
},
paddingLeftRight: 20,
paddingTopBottom: 15,
columnCount: 0,
rowCount: 0,
columnItemSpacing: 20,
rowItemSpacing: 8,
title: {
backgroundColor: WHITE,
margin: {
left: 0,
bottom: 9,
right: 0,
top: 0
},
font: {
size: 18,
weight: 200
},
subtitle: {
offset: 0,
font: {
size: 14
},
wordWrap: "none",
textOverflow: "ellipsis"
},
wordWrap: "none",
textOverflow: "ellipsis"
}
},
"chart:common": {
animation: {
enabled: true,
duration: 1e3,
easing: "easeOutCubic",
maxPointCountSupported: 300
},
commonSeriesSettings: {
border: {
visible: false,
width: 2
},
showInLegend: true,
visible: true,
hoverMode: "nearestPoint",
selectionMode: "includePoints",
hoverStyle: {
hatching: {
direction: RIGHT,
width: 2,
step: 6,
opacity: .75
},
border: {
visible: false,
width: 3
}
},
selectionStyle: {
hatching: {
direction: RIGHT,
width: 2,
step: 6,
opacity: .5
},
border: {
visible: false,
width: 3
}
},
valueErrorBar: {
displayMode: "auto",
value: 1,
color: BLACK,
lineWidth: 2,
edgeLength: 8
},
label: {
visible: false,
alignment: CENTER,
rotationAngle: 0,
horizontalOffset: 0,
verticalOffset: 0,
radialOffset: 0,
showForZeroValues: true,
customizeText: void 0,
maxLabelCount: void 0,
position: OUTSIDE,
font: {
color: WHITE
},
border: {
visible: false,
width: 1,
color: LIGHT_GREY,
dashStyle: SOLID
},
connector: {
visible: false,
width: 1
}
}
},
seriesSelectionMode: "single",
pointSelectionMode: "single",
equalRowHeight: true,
dataPrepareSettings: {
checkTypeForAllData: false,
convertToAxisDataType: true,
sortingMethod: true
},
title: {
margin: 10
},
adaptiveLayout: {
width: 80,
height: 80,
keepLabels: true
},
_rtl: {
legend: {
itemTextPosition: LEFT
}
},
resolveLabelOverlapping: NONE
},
"chart:common:axis": {
visible: true,
valueMarginsEnabled: true,
placeholderSize: null,
logarithmBase: 10,
discreteAxisDivisionMode: "betweenLabels",
width: 1,
label: {
visible: true
},
grid: {
visible: false,
width: 1
},
minorGrid: {
visible: false,
width: 1,
opacity: .3
},
tick: {
visible: true,
width: 1,
length: 7,
shift: 3
},
minorTick: {
visible: false,
width: 1,
opacity: .3,
length: 7,
shift: 3
},
stripStyle: {
paddingLeftRight: 10,
paddingTopBottom: 5
},
constantLineStyle: {
width: 1,
color: BLACK,
dashStyle: SOLID,
label: {
visible: true,
position: INSIDE
}
},
marker: {
label: {}
}
},
chart: {
commonSeriesSettings: {
type: "line",
stack: "default",
aggregation: {
enabled: void 0
},
point: {
visible: true,
symbol: "circle",
size: 12,
border: {
visible: false,
width: 1
},
hoverMode: "onlyPoint",
selectionMode: "onlyPoint",
hoverStyle: {
border: {
visible: true,
width: 4
}
},
selectionStyle: {
border: {
visible: true,
width: 4
}
}
},
scatter: {},
line: {
width: 2,
dashStyle: SOLID,
hoverStyle: {
width: 3,
hatching: {
direction: NONE
}
},
selectionStyle: {
width: 3
}
},
stackedline: {
width: 2,
dashStyle: SOLID,
hoverStyle: {
width: 3,
hatching: {
direction: NONE
}
},
selectionStyle: {
width: 3
}
},
stackedspline: {
width: 2,
dashStyle: SOLID,
hoverStyle: {
width: 3,
hatching: {
direction: NONE
}
},
selectionStyle: {
width: 3
}
},
fullstackedline: {
width: 2,
dashStyle: SOLID,
hoverStyle: {
width: 3,
hatching: {
direction: NONE
}
},
selectionStyle: {
width: 3
}
},
fullstackedspline: {
width: 2,
dashStyle: SOLID,
hoverStyle: {
width: 3,
hatching: {
direction: NONE
}
},
selectionStyle: {
width: 3
}
},
stepline: {
width: 2,
dashStyle: SOLID,
hoverStyle: {
width: 3,
hatching: {
direction: NONE
}
},
selectionStyle: {
width: 3
}
},
area: {
point: {
visible: false
},
opacity: .5
},
stackedarea: {
point: {
visible: false
},
opacity: .5
},
fullstackedarea: {
point: {
visible: false
},
opacity: .5
},
fullstackedsplinearea: {
point: {
visible: false
},
opacity: .5
},
steparea: {
border: {
visible: true,
width: 2
},
point: {
visible: false
},
hoverStyle: {
border: {
visible: true,
width: 3
}
},
selectionStyle: {
border: {
visible: true,
width: 3
}
},
opacity: .5
},
spline: {
width: 2,
hoverStyle: {
width: 3,
hatching: {
direction: NONE
}
},
selectionStyle: {
width: 3
}
},
splinearea: {
point: {
visible: false
},
opacity: .5
},
stackedsplinearea: {
point: {
visible: false
},
opacity: .5
},
bar: {
cornerRadius: 0,
point: {
hoverStyle: {
border: {
visible: false
}
},
selectionStyle: {
border: {
visible: false
}
}
}
},
stackedbar: {
cornerRadius: 0,
point: {
hoverStyle: {
border: {
visible: false
}
},
selectionStyle: {
border: {
visible: false
}
}
},
label: {
position: INSIDE
}
},
fullstackedbar: {
cornerRadius: 0,
point: {
hoverStyle: {
border: {
visible: false
}
},
selectionStyle: {
border: {
visible: false
}
}
},
label: {
position: INSIDE
}
},
rangebar: {
cornerRadius: 0,
point: {
hoverStyle: {
border: {
visible: false
}
},
selectionStyle: {
border: {
visible: false
}
}
}
},
rangearea: {
point: {
visible: false
},
opacity: .5
},
rangesplinearea: {
point: {
visible: false
},
opacity: .5
},
bubble: {
opacity: .5,
point: {
hoverStyle: {
border: {
visible: false
}
},
selectionStyle: {
border: {
visible: false
}
}
}
},
candlestick: {
width: 1,
reduction: {
color: RED
},
hoverStyle: {
width: 3,
hatching: {
direction: NONE
}
},
selectionStyle: {
width: 3
},
point: {
border: {
visible: true
}
}
},
stock: {
width: 1,
reduction: {
color: RED
},
hoverStyle: {
width: 3,
hatching: {
direction: NONE
}
},
selectionStyle: {
width: 3
},
point: {
border: {
visible: true
}
}
}
},
crosshair: {
enabled: false,
color: "#f05b41",
width: 1,
dashStyle: SOLID,
label: {
visible: false,
font: {
color: WHITE,
size: 12
}
},
verticalLine: {
visible: true
},
horizontalLine: {
visible: true
}
},
commonAxisSettings: {
multipleAxesSpacing: 5,
forceUserTickInterval: false,
breakStyle: {
width: 5,
color: "#ababab",
line: "waved"
},
label: {
displayMode: "standard",
overlappingBehavior: "hide",
indentFromAxis: 10,
wordWrap: "normal",
textOverflow: "none"
},
title: {
font: {
size: 16
},
margin: 6,
alignment: CENTER
},
constantLineStyle: {
paddingLeftRight: 10,
paddingTopBottom: 10
}
},
horizontalAxis: {
position: BOTTOM,
axisDivisionFactor: 70,
label: {
rotationAngle: 90,
staggeringSpacing: 5,
alignment: CENTER
},
stripStyle: {
label: {
horizontalAlignment: CENTER,
verticalAlignment: TOP
}
},
constantLineStyle: {
label: {
horizontalAlignment: RIGHT,
verticalAlignment: TOP
}
},
constantLines: []
},
verticalAxis: {
position: LEFT,
axisDivisionFactor: 40,
label: {
alignment: RIGHT
},
stripStyle: {
label: {
horizontalAlignment: LEFT,
verticalAlignment: CENTER
}
},
constantLineStyle: {
label: {
horizontalAlignment: LEFT,
verticalAlignment: TOP
}
},
constantLines: []
},
argumentAxis: {
endOnTick: false,
workWeek: [1, 2, 3, 4, 5]
},
valueAxis: {
grid: {
visible: true
},
autoBreaksEnabled: false,
maxAutoBreakCount: 4
},
commonPaneSettings: {
backgroundColor: NONE,
border: {
color: LIGHT_GREY,
width: 1,
visible: false,
top: true,
bottom: true,
left: true,
right: true,
dashStyle: SOLID
}
},
scrollBar: {
visible: false,
offset: 5,
color: "gray",
width: 10
},
adjustOnZoom: true,
autoHidePointMarkers: true,
rotated: false,
zoomingMode: NONE,
scrollingMode: NONE,
synchronizeMultiAxes: true,
stickyHovering: true,
equalBarWidth: true,
barGroupPadding: .3,
minBubbleSize: 12,
maxBubbleSize: .2,
zoomAndPan: {
dragBoxStyle: {
color: "#2a2a2a",
opacity: .2
},
panKey: "shift",
allowMouseWheel: true,
allowTouchGestures: true
},
commonAnnotationSettings: {
font: {
color: "#333333"
},
tooltipEnabled: true,
border: {
width: 1,
color: "#dddddd",
dashStyle: SOLID,
visible: true
},
color: WHITE,
opacity: .9,
arrowLength: 14,
arrowWidth: 14,
paddingLeftRight: 10,
paddingTopBottom: 10,
shadow: {
opacity: .15,
offsetX: 0,
offsetY: 1,
blur: 4,
color: BLACK
},
image: {
width: 30,
height: 30
},
wordWrap: "normal",
textOverflow: "ellipsis",
allowDragging: false
}
},
pie: {
innerRadius: .5,
minDiameter: .5,
type: "pie",
dataPrepareSettings: {
_skipArgumentSorting: true
},
commonSeriesSettings: {
pie: {
border: {
visible: false,
width: 2,
color: WHITE
},
hoverStyle: {
hatching: {
direction: RIGHT,
width: 4,
step: 10,
opacity: .75
},
border: {
visible: false,
width: 2
}
},
selectionStyle: {
hatching: {
direction: RIGHT,
width: 4,
step: 10,
opacity: .5
},
border: {
visible: false,
width: 2
}
}
},
doughnut: {
border: {
visible: false,
width: 2,
color: WHITE
},
hoverStyle: {
hatching: {
direction: RIGHT,
width: 4,
step: 10,
opacity: .75
},
border: {
visible: false,
width: 2
}
},
selectionStyle: {
hatching: {
direction: RIGHT,
width: 4,
step: 10,
opacity: .5
},
border: {
visible: false,
width: 2
}
}
},
donut: {
border: {
visible: false,
width: 2,
color: WHITE
},
hoverStyle: {
hatching: {
direction: RIGHT,
width: 4,
step: 10,
opacity: .75
},
border: {
visible: false,
width: 2
}
},
selectionStyle: {
hatching: {
direction: RIGHT,
width: 4,
step: 10,
opacity: .5
},
border: {
visible: false,
width: 2
}
}
},
label: {
textOverflow: "ellipsis",
wordWrap: "normal"
}
},
legend: {
hoverMode: "allArgumentPoints",
backgroundColor: NONE
},
adaptiveLayout: {
keepLabels: false
}
},
gauge: {
scale: {
tick: {
visible: true,
length: 5,
width: 2,
opacity: 1
},
minorTick: {
visible: false,
length: 3,
width: 1,
opacity: 1
},
label: {
visible: true,
alignment: CENTER,
hideFirstOrLast: "last",
overlappingBehavior: "hide"
},
position: TOP,
endOnTick: false
},
rangeContainer: {
offset: 0,
width: 5,
backgroundColor: "#808080"
},
valueIndicators: {
_default: {
color: "#c2c2c2"
},
rangebar: {
space: 2,
size: 10,
color: "#cbc5cf",
backgroundColor: NONE,
text: {
indent: 0,
font: {
size: 14,
color: null
}
}
},
twocolorneedle: {
secondColor: "#e18e92"
},
trianglemarker: {
space: 2,
length: 14,
width: 13,
color: "#8798a5"
},
textcloud: {
arrowLength: 5,
horizontalOffset: 6,
verticalOffset: 3,
color: "#679ec5",
text: {
font: {
color: WHITE,
size: 18
}
}
}
},
indicator: {
hasPositiveMeaning: true,
layout: {
horizontalAlignment: CENTER,
verticalAlignment: BOTTOM
},
text: {
font: {
size: 18
}
}
},
_circular: {
scale: {
scaleDivisionFactor: 17,
orientation: OUTSIDE,
label: {
indentFromTick: 10
}
},
rangeContainer: {
orientation: OUTSIDE
},
valueIndicatorType: "rectangleneedle",
subvalueIndicatorType: "trianglemarker",
valueIndicators: {
_type: "rectangleneedle",
_default: {
offset: 20,
indentFromCenter: 0,
width: 2,
spindleSize: 14,
spindleGapSize: 10,
beginAdaptingAtRadius: 50
},
triangleneedle: {
width: 4
},
twocolorneedle: {
space: 2,
secondFraction: .4
},
rangebar: {
offset: 30
},
trianglemarker: {
offset: 6
},
textcloud: {
offset: -6
}
}
},
_linear: {
scale: {
scaleDivisionFactor: 25,
horizontalOrientation: RIGHT,
verticalOrientation: BOTTOM,
label: {
indentFromTick: -10
}
},
rangeContainer: {
horizontalOrientation: RIGHT,
verticalOrientation: BOTTOM
},
valueIndicatorType: "rangebar",
subvalueIndicatorType: "trianglemarker",
valueIndicators: {
_type: "rectangle",
_default: {
offset: 2.5,
length: 15,
width: 15
},
rectangle: {
width: 10
},
rangebar: {
offset: 10,
horizontalOrientation: RIGHT,
verticalOrientation: BOTTOM
},
trianglemarker: {
offset: 10,
horizontalOrientation: LEFT,
verticalOrientation: TOP
},
textcloud: {
offset: -1,
horizontalOrientation: LEFT,
verticalOrientation: TOP
}
}
}
},
barGauge: {
backgroundColor: "#e0e0e0",
relativeInnerRadius: .3,
barSpacing: 4,
resolveLabelOverlapping: "hide",
label: {
indent: 20,
connectorWidth: 2,
font: {
size: 16
}
},
legend: {
visible: false
},
indicator: {
hasPositiveMeaning: true,
layout: {
horizontalAlignment: CENTER,
verticalAlignment: BOTTOM
},
text: {
font: {
size: 18
}
}
}
},
rangeSelector: {
scale: {
valueMarginsEnabled: true,
width: 1,
color: BLACK,
opacity: .1,
showCustomBoundaryTicks: true,
label: {
overlappingBehavior: "hide",
alignment: CENTER,
visible: true,
topIndent: 7,
font: {
size: 11
}
},
tick: {
width: 1,
color: BLACK,
opacity: .17,
visible: true,
length: 12
},
minorTick: {
width: 1,
color: BLACK,
opacity: .05,
visible: true,
length: 12
},
marker: {
width: 1,
color: "#000000",
opacity: .1,
visible: true,
separatorHeight: 33,
topIndent: 10,
textLeftIndent: 7,
textTopIndent: 11,
label: {}
},
logarithmBase: 10,
workWeek: [1, 2, 3, 4, 5],
breakStyle: {
width: 5,
color: "#ababab",
line: "waved"
},
endOnTick: false
},
selectedRangeColor: "#606060",
sliderMarker: {
visible: true,
paddingTopBottom: 2,
paddingLeftRight: 4,
color: "#606060",
invalidRangeColor: RED,
font: {
color: WHITE,
size: 11
}
},
sliderHandle: {
width: 1,
color: BLACK,
opacity: .2
},
shutter: {
opacity: .75
},
background: {
color: "#c0bae1",
visible: true,
image: {
location: "full"
}
},
behavior: {
snapToTicks: true,
animationEnabled: true,
moveSelectedRangeByClick: true,
manualRangeSelectionEnabled: true,
allowSlidersSwap: true,
callValueChanged: "onMovingComplete"
},
redrawOnResize: true,
chart: {
equalBarWidth: true,
barGroupPadding: .3,
minBubbleSize: 12,
maxBubbleSize: .2,
topIndent: .1,
bottomIndent: 0,
valueAxis: {
inverted: false,
logarithmBase: 10
},
commonSeriesSettings: {
type: "area",
aggregation: {
enabled: void 0
},
point: {
visible: false
},
scatter: {
point: {
visible: true
}
}
}
}
},
map: {
title: {
margin: 10
},
background: {
borderWidth: 1,
borderColor: "#cacaca"
},
layer: {
label: {
enabled: false,
stroke: WHITE,
"stroke-width": 1,
"stroke-opacity": .7,
font: {
color: SOME_GREY,
size: 12
}
}
},
"layer:area": {
borderWidth: 1,
borderColor: WHITE,
color: "#d2d2d2",
hoveredBorderColor: GREY_GREEN,
selectedBorderWidth: 2,
selectedBorderColor: GREY_GREEN,
label: {
"stroke-width": 2,
font: {
size: 16
}
}
},
"layer:line": {
borderWidth: 2,
color: "#ba8365",
hoveredColor: "#a94813",
selectedBorderWidth: 3,
selectedColor: "#e55100",
label: {
"stroke-width": 2,
font: {
size: 16
}
}
},
"layer:marker": {
label: {
enabled: true,
"stroke-width": 1,
font: {
size: 12
}
}
},
"layer:marker:dot": {
borderWidth: 2,
borderColor: WHITE,
size: 8,
selectedStep: 2,
backStep: 18,
backColor: WHITE,
backOpacity: .32,
shadow: true
},
"layer:marker:bubble": {
minSize: 20,
maxSize: 50,
hoveredBorderWidth: 1,
hoveredBorderColor: GREY_GREEN,
selectedBorderWidth: 2,
selectedBorderColor: GREY_GREEN
},
"layer:marker:pie": {
size: 50,
hoveredBorderWidth: 1,
hoveredBorderColor: GREY_GREEN,
selectedBorderWidth: 2,
selectedBorderColor: GREY_GREEN
},
"layer:marker:image": {
size: 20
},
legend: {
verticalAlignment: BOTTOM,
horizontalAlignment: RIGHT,
position: INSIDE,
backgroundOpacity: .65,
border: {
visible: true
},
paddingLeftRight: 16,
paddingTopBottom: 12
},
controlBar: {
borderColor: "#5d5d5d",
borderWidth: 3,
color: WHITE,
margin: 20,
opacity: .3
},
_rtl: {
legend: {
itemTextPosition: LEFT
}
}
},
treeMap: {
tile: {
border: {
width: 1,
opacity: .2,
color: "#000000"
},
color: "#5f8b95",
hoverStyle: {
hatching: {
opacity: .75,
step: 6,
width: 2,
direction: "right"
},
border: {}
},
selectionStyle: {
hatching: {
opacity: .5,
step: 6,
width: 2,
direction: "right"
},
border: {
opacity: 1
}
},
label: {
visible: true,
paddingLeftRight: 5,
paddingTopBottom: 4,
stroke: "#000000",
"stroke-width": 1,
"stroke-opacity": .3,
font: {
color: "#ffffff",
weight: 300
},
shadow: {
opacity: .8,
offsetX: 0,
offsetY: 1,
blur: 1,
color: "#000000"
},
wordWrap: "normal",
textOverflow: "ellipsis"
}
},
group: {
padding: 4,
border: {
width: 1
},
color: "#eeeeee",
hoverStyle: {
hatching: {
opacity: 0,
step: 6,
width: 2,
direction: "right"
},
border: {}
},
selectionStyle: {
hatching: {
opacity: 0,
step: 6,
width: 2,
direction: "right"
},
border: {}
},
label: {
visible: true,
paddingLeftRight: 5,
paddingTopBottom: 4,
font: {
color: SECONDARY_TITLE_COLOR,
weight: 600
},
textOverflow: "ellipsis"
}
},
title: {
subtitle: {}
},
tooltip: {},
loadingIndicator: {}
},
sparkline: {
lineColor: "#666666",
lineWidth: 2,
areaOpacity: .2,
minColor: "#e8c267",
maxColor: "#e55253",
barPositiveColor: "#a9a9a9",
barNegativeColor: "#d7d7d7",
winColor: "#a9a9a9",
lossColor: "#d7d7d7",
firstLastColor: "#666666",
pointSymbol: "circle",
pointColor: WHITE,
pointSize: 4,
type: "line",
argumentField: "arg",
valueField: "val",
winlossThreshold: 0,
showFirstLast: true,
showMinMax: false,
tooltip: {
enabled: true
}
},
bullet: {
color: "#e8c267",
targetColor: "#666666",
targetWidth: 4,
showTarget: true,
showZeroLevel: true,
tooltip: {
enabled: true
}
},
polar: {
commonSeriesSettings: {
type: "scatter",
closed: true,
point: {
visible: true,
symbol: "circle",
size: 12,
border: {
visible: false,
width: 1
},
hoverMode: "onlyPoint",
selectionMode: "onlyPoint",
hoverStyle: {
border: {
visible: true,
width: 4
},
size: 12
},
selectionStyle: {
border: {
visible: true,
width: 4
},
size: 12
}
},
scatter: {},
line: {
width: 2,
dashStyle: SOLID,
hoverStyle: {
width: 3,
hatching: {
direction: NONE
}
},
selectionStyle: {
width: 3
}
},
area: {
point: {
visible: false
},
opacity: .5
},
stackedline: {
width: 2
},
bar: {
opacity: .8
},
stackedbar: {
opacity: .8
}
},
adaptiveLayout: {
width: 80,
height: 80,
keepLabels: true
},
equalBarWidth: true,
barGroupPadding: .3,
commonAxisSettings: {
visible: true,
forceUserTickInterval: false,
label: {
overlappingBehavior: "hide",
indentFromAxis: 5
},
grid: {
visible: true
},
minorGrid: {
visible: true
},
tick: {
visible: true
},
title: {
font: {
size: 16
},
margin: 10
}
},
argumentAxis: {
startAngle: 0,
firstPointOnStartAngle: false,
period: void 0
},
valueAxis: {
endOnTick: false,
tick: {
visible: false
}
},
horizontalAxis: {
position: TOP,
axisDivisionFactor: 50,
label: {
alignment: CENTER
}
},
verticalAxis: {
position: TOP,
axisDivisionFactor: 30,
label: {
alignment: RIGHT
}
}
},
funnel: {
sortData: true,
valueField: "val",
colorField: "color",
argumentField: "arg",
hoverEnabled: true,
selectionMode: "single",
item: {
border: {
visible: false,
width: 2,
color: WHITE
},
hoverStyle: {
hatching: {
opacity: .75,
step: 6,
width: 2,
direction: RIGHT
},
border: {}
},
selectionStyle: {
hatching: {
opacity: .5,
step: 6,
width: 2,
direction: RIGHT
},
border: {}
}
},
title: {
margin: 10
},
adaptiveLayout: {
width: 80,
height: 80,
keepLabels: true
},
legend: {
visible: false
},
_rtl: {
legend: {
itemTextPosition: LEFT
}
},
tooltip: {
customizeTooltip: function(info) {
return {
text: info.item.argument + " " + info.valueText
}
}
},
inverted: false,
algorithm: "dynamicSlope",
neckWidth: 0,
neckHeight: 0,
resolveLabelOverlapping: "shift",
label: {
textOverflow: "ellipsis",
wordWrap: "normal",
visible: true,
horizontalAlignment: RIGHT,
horizontalOffset: 0,
verticalOffset: 0,
showForZeroValues: false,
customizeText: function(info) {
return info.item.argument + " " + info.valueText
},
position: "columns",
font: {
color: WHITE
},
border: {
visible: false,
width: 1,
color: LIGHT_GREY,
dashStyle: SOLID
},
connector: {
visible: true,
width: 1,
opacity: .5
}
}
},
sankey: {
sourceField: "source",
targetField: "target",
weightField: "weight",
hoverEnabled: true,
alignment: CENTER,
adaptiveLayout: {
width: 80,
height: 80,
keepLabels: true
},
label: {
visible: true,
horizontalOffset: 8,
verticalOffset: 0,
overlappingBehavior: "ellipsis",
useNodeColors: false,
font: {
color: BLACK,
weight: 500
},
border: {
visible: false,
width: 2,
color: WHITE
},
customizeText: function(info) {
return info.title
},
shadow: {
opacity: .2,
offsetX: 0,
offsetY: 1,
blur: 1,
color: WHITE
}
},
title: {
margin: 10,
font: {
size: 28,
weight: 200
},
subtitle: {
font: {
size: 16
}
}
},
tooltip: {
enabled: true
},
node: {
padding: 30,
width: 8,
opacity: 1,
border: {
color: WHITE,
width: 1,
visible: false
},
hoverStyle: {
hatching: {
opacity: .75,
step: 6,
width: 2,
direction: RIGHT
},
border: {}
}
},
link: {
color: "#888888",
colorMode: "none",
opacity: .3,
border: {
color: WHITE,
width: 1,
visible: false
},
hoverStyle: {
opacity: .5,
hatching: {
opacity: .75,
step: 6,
width: 2,
direction: RIGHT
},
border: {}
}
}
}
});
registerThemeAlias("generic.light.compact", "generic.light")
},
/*!**************************************************************!*\
!*** ./artifacts/transpiled/viz/core/themes/generic.dark.js ***!
\**************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var themeModule = __webpack_require__( /*! ../../themes */ 50),
registerTheme = themeModule.registerTheme,
registerThemeAlias = themeModule.registerThemeAlias,
WHITE = "#ffffff",
BLACK = "#000000",
SOME_GREY = "#2b2b2b",
RANGE_COLOR = "#b5b5b5",
GREY_GREEN = "#303030",
AREA_LAYER_COLOR = "#686868",
LINE_COLOR = "#c7c7c7",
TARGET_COLOR = "#8e8e8e",
POSITIVE_COLOR = "#b8b8b8",
BORDER_COLOR = "#494949";
registerTheme({
name: "generic.dark",
font: {
color: "#808080"
},
backgroundColor: "#2a2a2a",
primaryTitleColor: "#dedede",
secondaryTitleColor: "#a3a3a3",
gridColor: "#555555",
axisColor: "#a3a3a3",
"export": {
backgroundColor: "#2a2a2a",
font: {
color: "#dbdbdb"
},
button: {
"default": {
color: "#dedede",
borderColor: "#4d4d4d",
backgroundColor: "#2e2e2e"
},
hover: {
color: "#dedede",
borderColor: "#6c6c6c",
backgroundColor: "#444"
},
focus: {
color: "#dedede",
borderColor: "#8d8d8d",
backgroundColor: "#444444"
},
active: {
color: "#dedede",
borderColor: "#8d8d8d",
backgroundColor: "#555555"
}
},
shadowColor: "#292929"
},
tooltip: {
color: SOME_GREY,
border: {
color: BORDER_COLOR
},
font: {
color: "#929292"
}
},
"chart:common": {
commonSeriesSettings: {
label: {
border: {
color: BORDER_COLOR
}
},
valueErrorBar: {
color: WHITE
}
}
},
"chart:common:axis": {
constantLineStyle: {
color: WHITE
}
},
chart: {
commonPaneSettings: {
border: {
color: BORDER_COLOR
}
},
commonAxisSettings: {
breakStyle: {
color: "#818181"
}
},
zoomAndPan: {
dragBoxStyle: {
color: WHITE
}
},
commonAnnotationSettings: {
font: {
color: "#929292"
},
border: {
color: BORDER_COLOR
},
color: SOME_GREY,
shadow: {
opacity: .008,
offsetY: 4,
blur: 8
}
}
},
gauge: {
rangeContainer: {
backgroundColor: RANGE_COLOR
},
valueIndicators: {
_default: {
color: RANGE_COLOR
},
rangebar: {
color: "#84788b"
},
twocolorneedle: {
secondColor: "#ba544d"
},
trianglemarker: {
color: "#b7918f"
},
textcloud: {
color: "#ba544d"
}
}
},
barGauge: {
backgroundColor: "#3c3c3c"
},
rangeSelector: {
scale: {
tick: {
color: WHITE,
opacity: .32
},
minorTick: {
color: WHITE,
opacity: .1
},
breakStyle: {
color: "#818181"
}
},
selectedRangeColor: RANGE_COLOR,
sliderMarker: {
color: RANGE_COLOR,
font: {
color: GREY_GREEN
}
},
sliderHandle: {
color: WHITE,
opacity: .2
},
shutter: {
color: SOME_GREY,
opacity: .9
}
},
map: {
background: {
borderColor: "#3f3f3f"
},
layer: {
label: {
stroke: BLACK,
font: {
color: WHITE
}
}
},
"layer:area": {
borderColor: GREY_GREEN,
color: AREA_LAYER_COLOR,
hoveredBorderColor: WHITE,
selectedBorderColor: WHITE
},
"layer:line": {
color: "#c77244",
hoveredColor: "#ff5d04",
selectedColor: "#ff784f"
},
"layer:marker:bubble": {
hoveredBorderColor: WHITE,
selectedBorderColor: WHITE
},
"layer:marker:pie": {
hoveredBorderColor: WHITE,
selectedBorderColor: WHITE
},
legend: {
border: {
color: "#3f3f3f"
},
font: {
color: WHITE
}
},
controlBar: {
borderColor: LINE_COLOR,
color: GREY_GREEN
}
},
treeMap: {
group: {
color: "#4c4c4c",
label: {
font: {
color: "#a3a3a3"
}
}
}
},
sparkline: {
lineColor: LINE_COLOR,
firstLastColor: LINE_COLOR,
barPositiveColor: POSITIVE_COLOR,
barNegativeColor: TARGET_COLOR,
winColor: POSITIVE_COLOR,
lossColor: TARGET_COLOR,
pointColor: GREY_GREEN
},
bullet: {
targetColor: TARGET_COLOR
},
funnel: {
item: {
border: {
color: "#2a2a2a"
}
}
},
sankey: {
label: {
font: {
color: WHITE
},
shadow: {
opacity: 0
}
},
node: {
border: {
color: "#2a2a2a"
}
},
link: {
color: "#888888",
border: {
color: "#2a2a2a"
},
hoverStyle: {
color: "#bbbbbb"
}
}
}
}, "generic.light");
registerThemeAlias("generic.dark.compact", "generic.dark")
},
/*!******************************************************************!*\
!*** ./artifacts/transpiled/viz/core/themes/generic.contrast.js ***!
\******************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var themeModule = __webpack_require__( /*! ../../themes */ 50),
registerTheme = themeModule.registerTheme,
registerThemeAlias = themeModule.registerThemeAlias,
WHITE = "#ffffff",
BLACK = "#000000",
CONTRAST_ACTIVE = "#cf00da",
MARKER_COLOR = "#f8ca00",
AREA_LAYER_COLOR = "#686868";
registerTheme({
name: "generic.contrast",
defaultPalette: "Bright",
font: {
color: WHITE
},
backgroundColor: BLACK,
primaryTitleColor: WHITE,
secondaryTitleColor: WHITE,
gridColor: WHITE,
axisColor: WHITE,
"export": {
backgroundColor: BLACK,
font: {
color: WHITE
},
button: {
"default": {
color: WHITE,
borderColor: WHITE,
backgroundColor: BLACK
},
hover: {
color: WHITE,
borderColor: WHITE,
backgroundColor: "#cf00d7"
},
focus: {
color: WHITE,
borderColor: "#cf00d7",
backgroundColor: BLACK
},
active: {
color: BLACK,
borderColor: WHITE,
backgroundColor: WHITE
}
},
borderColor: WHITE,
menuButtonColor: BLACK,
activeBackgroundColor: WHITE,
activeColor: BLACK,
selectedBorderColor: CONTRAST_ACTIVE,
selectedColor: CONTRAST_ACTIVE,
shadowColor: "none"
},
tooltip: {
border: {
color: WHITE
},
font: {
color: WHITE
},
color: BLACK
},
"chart:common": {
commonSeriesSettings: {
valueErrorBar: {
color: WHITE
},
hoverStyle: {
hatching: {
opacity: .5
}
},
selectionStyle: {
hatching: {
opacity: .35
}
},
label: {
font: {
color: WHITE
},
border: {
color: WHITE
}
}
}
},
"chart:common:axis": {
constantLineStyle: {
color: WHITE
}
},
chart: {
commonSeriesSettings: {},
crosshair: {
color: "#cf00d7"
},
commonPaneSettings: {
backgroundColor: BLACK,
border: {
color: WHITE
}
},
scrollBar: {
color: WHITE
},
commonAxisSettings: {
breakStyle: {
color: "#cf00d7"
}
},
zoomAndPan: {
dragBoxStyle: {
color: WHITE,
opacity: .7
}
},
commonAnnotationSettings: {
font: {
color: WHITE
},
border: {
color: WHITE
},
color: BLACK
}
},
pie: {
commonSeriesSettings: {
pie: {
hoverStyle: {
hatching: {
opacity: .5
}
},
selectionStyle: {
hatching: {
opacity: .35
}
}
},
doughnut: {
hoverStyle: {
hatching: {
opacity: .5
}
},
selectionStyle: {
hatching: {
opacity: .35
}
}
},
donut: {
hoverStyle: {
hatching: {
opacity: .5
}
},
selectionStyle: {
hatching: {
opacity: .35
}
}
}
}
},
gauge: {
rangeContainer: {
backgroundColor: WHITE
},
valueIndicators: {
_default: {
color: WHITE
},
rangebar: {
color: WHITE,
backgroundColor: BLACK
},
twocolorneedle: {
secondColor: WHITE
},
trianglemarker: {
color: WHITE
},
textcloud: {
color: WHITE,
text: {
font: {
color: BLACK
}
}
}
}
},
barGauge: {
backgroundColor: "#3c3c3c"
},
rangeSelector: {
scale: {
tick: {
color: WHITE,
opacity: .4
},
minorTick: {
color: WHITE,
opacity: .12
},
breakStyle: {
color: "#cf00d7"
}
},
selectedRangeColor: CONTRAST_ACTIVE,
sliderMarker: {
color: CONTRAST_ACTIVE
},
sliderHandle: {
color: CONTRAST_ACTIVE,
opacity: 1
},
shutter: {
opacity: .75
},
background: {
color: BLACK
}
},
map: {
background: {
borderColor: WHITE
},
layer: {
label: {
stroke: BLACK,
font: {
color: WHITE
}
}
},
"layer:area": {
borderColor: BLACK,
color: AREA_LAYER_COLOR,
hoveredBorderColor: WHITE,
selectedBorderColor: WHITE,
label: {
font: {
opacity: 1
}
}
},
"layer:line": {
color: "#267cff",
hoveredColor: "#f613ff",
selectedColor: WHITE
},
"layer:marker:dot": {
borderColor: BLACK,
color: MARKER_COLOR,
backColor: BLACK,
backOpacity: .32
},
"layer:marker:bubble": {
color: MARKER_COLOR,
hoveredBorderColor: WHITE,
selectedBorderColor: WHITE
},
"layer:marker:pie": {
hoveredBorderColor: WHITE,
selectedBorderColor: WHITE
},
controlBar: {
borderColor: WHITE,
color: BLACK,
opacity: .3
}
},
treeMap: {
tile: {
color: "#70c92f"
},
group: {
color: "#797979",
label: {
font: {
color: WHITE
}
}
}
},
sparkline: {
pointColor: BLACK
},
bullet: {},
polar: {
commonSeriesSettings: {}
},
funnel: {
label: {
connector: {
opacity: 1
}
}
},
sankey: {
label: {
font: {
color: WHITE
},
shadow: {
opacity: 0
}
},
node: {
border: {
visible: true,
width: 1,
color: WHITE
}
},
link: {
opacity: .5,
border: {
visible: true,
width: 1,
color: WHITE
},
hoverStyle: {
opacity: .9
}
}
}
}, "generic.light");
registerThemeAlias("generic.contrast.compact", "generic.contrast")
},
/*!*****************************************************************!*\
!*** ./artifacts/transpiled/viz/core/themes/generic.carmine.js ***!
\*****************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var themeModule = __webpack_require__( /*! ../../themes */ 50),
registerTheme = themeModule.registerTheme,
registerThemeAlias = themeModule.registerThemeAlias,
ACCENT_COLOR = "#f05b41",
BACKGROUND_COLOR = "#fff",
TITLE_COLOR = "#333",
SUBTITLE_COLOR = "#8899a8",
TEXT_COLOR = "#707070",
BORDER_COLOR = "#dee1e3";
registerTheme({
name: "generic.carmine",
defaultPalette: "Carmine",
backgroundColor: BACKGROUND_COLOR,
primaryTitleColor: TITLE_COLOR,
secondaryTitleColor: SUBTITLE_COLOR,
gridColor: BORDER_COLOR,
axisColor: TEXT_COLOR,
"export": {
backgroundColor: BACKGROUND_COLOR,
font: {
color: TITLE_COLOR
},
button: {
"default": {
color: TITLE_COLOR,
borderColor: "#b1b7bd",
backgroundColor: BACKGROUND_COLOR
},
hover: {
color: TITLE_COLOR,
borderColor: "#b1b7bd",
backgroundColor: "#faf2f0"
},
focus: {
color: TITLE_COLOR,
borderColor: "#6d7781",
backgroundColor: "#faf2f0"
},
active: {
color: TITLE_COLOR,
borderColor: "#6d7781",
backgroundColor: "#f5e7e4"
}
}
},
legend: {
font: {
color: TEXT_COLOR
}
},
tooltip: {
color: BACKGROUND_COLOR,
border: {
color: BORDER_COLOR
},
font: {
color: TITLE_COLOR
}
},
"chart:common": {
commonSeriesSettings: {
label: {
border: {
color: BORDER_COLOR
}
}
}
},
chart: {
commonPaneSettings: {
border: {
color: BORDER_COLOR
}
},
commonAxisSettings: {
breakStyle: {
color: "#c1c5c7"
}
},
commonAnnotationSettings: {
font: {
color: TITLE_COLOR
},
border: {
color: BORDER_COLOR
},
color: BACKGROUND_COLOR
}
},
rangeSelector: {
scale: {
breakStyle: {
color: "#c1c5c7"
},
tick: {
opacity: .12
}
},
selectedRangeColor: ACCENT_COLOR,
sliderMarker: {
color: ACCENT_COLOR
},
sliderHandle: {
color: ACCENT_COLOR,
opacity: .5
}
},
sparkline: {
pointColor: BACKGROUND_COLOR,
minColor: "#f0ad4e",
maxColor: "#f74d61"
},
treeMap: {
group: {
color: BORDER_COLOR,
label: {
font: {
color: SUBTITLE_COLOR
}
}
}
},
bullet: {
color: ACCENT_COLOR
},
gauge: {
valueIndicators: {
rangebar: {
color: ACCENT_COLOR
},
textcloud: {
color: ACCENT_COLOR
}
}
}
}, "generic.light");
registerThemeAlias("generic.carmine.compact", "generic.carmine")
},
/*!******************************************************************!*\
!*** ./artifacts/transpiled/viz/core/themes/generic.darkmoon.js ***!
\******************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var themeModule = __webpack_require__( /*! ../../themes */ 50),
registerTheme = themeModule.registerTheme,
registerThemeAlias = themeModule.registerThemeAlias,
ACCENT_COLOR = "#3debd3",
BACKGROUND_COLOR = "#465672",
TITLE_COLOR = "#fff",
SUBTITLE_COLOR = "#919bac",
TEXT_COLOR = "#c7ccd4",
BORDER_COLOR = "#596980";
registerTheme({
name: "generic.darkmoon",
defaultPalette: "Dark Moon",
backgroundColor: BACKGROUND_COLOR,
primaryTitleColor: TITLE_COLOR,
secondaryTitleColor: SUBTITLE_COLOR,
gridColor: BORDER_COLOR,
axisColor: TEXT_COLOR,
"export": {
backgroundColor: BACKGROUND_COLOR,
font: {
color: TITLE_COLOR
},
button: {
"default": {
color: TITLE_COLOR,
borderColor: "#7a889e",
backgroundColor: BACKGROUND_COLOR
},
hover: {
color: TITLE_COLOR,
borderColor: "#9da8b8",
backgroundColor: "#596e92"
},
focus: {
color: TITLE_COLOR,
borderColor: "#c4cad4",
backgroundColor: "#596e92"
},
active: {
color: TITLE_COLOR,
borderColor: "#c4cad4",
backgroundColor: "#6b80a4"
}
}
},
legend: {
font: {
color: TEXT_COLOR
}
},
tooltip: {
color: "#62789e",
border: {
color: BORDER_COLOR
},
font: {
color: TITLE_COLOR
}
},
"chart:common": {
commonSeriesSettings: {
label: {
border: {
color: BORDER_COLOR
}
}
}
},
chart: {
commonPaneSettings: {
border: {
color: BORDER_COLOR
}
},
commonAxisSettings: {
breakStyle: {
color: "#73869e"
}
},
commonAnnotationSettings: {
font: {
color: TITLE_COLOR
},
border: {
color: BORDER_COLOR
},
color: "#62789e"
}
},
gauge: {
valueIndicators: {
rangebar: {
color: ACCENT_COLOR
},
textcloud: {
color: ACCENT_COLOR,
text: {
font: {
color: BACKGROUND_COLOR
}
}
}
}
},
barGauge: {
backgroundColor: "#526280"
},
funnel: {
item: {
border: {
color: BACKGROUND_COLOR
}
}
},
sparkline: {
pointColor: BACKGROUND_COLOR,
minColor: "#f0ad4e",
maxColor: "#f9517e"
},
treeMap: {
group: {
color: BORDER_COLOR,
label: {
font: {
color: TITLE_COLOR
}
}
}
},
map: {
background: {
borderColor: BORDER_COLOR
},
"layer:area": {
color: "#97a3b6",
borderColor: BACKGROUND_COLOR
}
},
rangeSelector: {
shutter: {
color: BACKGROUND_COLOR
},
scale: {
breakStyle: {
color: "#73869e"
},
tick: {
opacity: .2
}
},
selectedRangeColor: ACCENT_COLOR,
sliderMarker: {
color: ACCENT_COLOR,
font: {
color: "#000"
}
},
sliderHandle: {
color: ACCENT_COLOR,
opacity: .5
}
},
bullet: {
color: ACCENT_COLOR
},
sankey: {
link: {
border: {
color: BACKGROUND_COLOR
}
},
node: {
border: {
color: BACKGROUND_COLOR
}
}
}
}, "generic.dark");
registerThemeAlias("generic.darkmoon.compact", "generic.darkmoon")
},
/*!******************************************************************!*\
!*** ./artifacts/transpiled/viz/core/themes/generic.softblue.js ***!
\******************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var themeModule = __webpack_require__( /*! ../../themes */ 50),
registerTheme = themeModule.registerTheme,
registerThemeAlias = themeModule.registerThemeAlias,
ACCENT_COLOR = "#7ab8eb",
BACKGROUND_COLOR = "#fff",
TITLE_COLOR = "#333",
SUBTITLE_COLOR = "#99a1a8",
TEXT_COLOR = "#707070",
BORDER_COLOR = "#e8eaeb";
registerTheme({
name: "generic.softblue",
defaultPalette: "Soft Blue",
backgroundColor: BACKGROUND_COLOR,
primaryTitleColor: TITLE_COLOR,
secondaryTitleColor: SUBTITLE_COLOR,
gridColor: BORDER_COLOR,
axisColor: TEXT_COLOR,
"export": {
backgroundColor: BACKGROUND_COLOR,
font: {
color: TITLE_COLOR
},
button: {
"default": {
color: TITLE_COLOR,
borderColor: "#c9d0d4",
backgroundColor: BACKGROUND_COLOR
},
hover: {
color: TITLE_COLOR,
borderColor: "#a7b2b9",
backgroundColor: "#e6e6e6"
},
focus: {
color: TITLE_COLOR,
borderColor: "#82929b",
backgroundColor: "#e6e6e6"
},
active: {
color: TITLE_COLOR,
borderColor: "#82929b",
backgroundColor: "#d4d4d4"
}
}
},
legend: {
font: {
color: TEXT_COLOR
}
},
tooltip: {
color: BACKGROUND_COLOR,
border: {
color: BORDER_COLOR
},
font: {
color: TITLE_COLOR
}
},
"chart:common": {
commonSeriesSettings: {
label: {
border: {
color: BORDER_COLOR
}
}
}
},
chart: {
commonPaneSettings: {
border: {
color: BORDER_COLOR
}
},
commonAxisSettings: {
breakStyle: {
color: "#cfd2d3"
}
},
commonAnnotationSettings: {
color: BACKGROUND_COLOR,
border: {
color: BORDER_COLOR
},
font: {
color: TITLE_COLOR
}
}
},
rangeSelector: {
scale: {
breakStyle: {
color: "#cfd2d3"
},
tick: {
opacity: .12
}
},
selectedRangeColor: ACCENT_COLOR,
sliderMarker: {
color: ACCENT_COLOR
},
sliderHandle: {
color: ACCENT_COLOR,
opacity: .5
}
},
sparkline: {
pointColor: BACKGROUND_COLOR,
minColor: "#f0ad4e",
maxColor: "#d9534f"
},
treeMap: {
group: {
color: BORDER_COLOR,
label: {
font: {
color: SUBTITLE_COLOR
}
}
}
},
bullet: {
color: ACCENT_COLOR
},
gauge: {
valueIndicators: {
rangebar: {
color: ACCENT_COLOR
},
textcloud: {
color: ACCENT_COLOR
}
}
}
}, "generic.light");
registerThemeAlias("generic.softblue.compact", "generic.softblue")
},
/*!********************************************************************!*\
!*** ./artifacts/transpiled/viz/core/themes/generic.darkviolet.js ***!
\********************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var themeModule = __webpack_require__( /*! ../../themes */ 50),
registerTheme = themeModule.registerTheme,
registerThemeAlias = themeModule.registerThemeAlias,
ACCENT_COLOR = "#9c63ff",
BACKGROUND_COLOR = "#17171f",
TITLE_COLOR = "#f5f6f7",
SUBTITLE_COLOR = "#fff",
TEXT_COLOR = "#b2b2b6",
BORDER_COLOR = "#343840";
registerTheme({
name: "generic.darkviolet",
defaultPalette: "Dark Violet",
backgroundColor: BACKGROUND_COLOR,
primaryTitleColor: TITLE_COLOR,
secondaryTitleColor: SUBTITLE_COLOR,
gridColor: BORDER_COLOR,
axisColor: TEXT_COLOR,
"export": {
backgroundColor: BACKGROUND_COLOR,
font: {
color: TITLE_COLOR
},
button: {
"default": {
color: TITLE_COLOR,
borderColor: "#414152",
backgroundColor: BACKGROUND_COLOR
},
hover: {
color: TITLE_COLOR,
borderColor: "#5c5c74",
backgroundColor: "#2d2d3c"
},
focus: {
color: TITLE_COLOR,
borderColor: "#7c7c97",
backgroundColor: "#2d2d3c"
},
active: {
color: TITLE_COLOR,
borderColor: "#7c7c97",
backgroundColor: "#3c3c51"
}
}
},
legend: {
font: {
color: TEXT_COLOR
}
},
tooltip: {
color: BACKGROUND_COLOR,
border: {
color: "#414152"
},
font: {
color: TITLE_COLOR
}
},
"chart:common": {
commonSeriesSettings: {
label: {
border: {
color: BORDER_COLOR
}
}
}
},
chart: {
commonPaneSettings: {
border: {
color: BORDER_COLOR
}
},
commonAxisSettings: {
breakStyle: {
color: "#575e6b"
}
},
commonAnnotationSettings: {
font: {
color: TITLE_COLOR
},
border: {
color: "#414152"
},
color: BACKGROUND_COLOR
}
},
funnel: {
item: {
border: {
color: BACKGROUND_COLOR
}
}
},
sparkline: {
pointColor: BACKGROUND_COLOR,
minColor: "#f0ad4e",
maxColor: "#d9534f"
},
treeMap: {
group: {
color: BORDER_COLOR,
label: {
font: {
color: SUBTITLE_COLOR
}
}
}
},
rangeSelector: {
shutter: {
color: BACKGROUND_COLOR
},
scale: {
breakStyle: {
color: "#575e6b"
},
tick: {
opacity: .2
}
},
selectedRangeColor: ACCENT_COLOR,
sliderMarker: {
color: ACCENT_COLOR,
font: {
color: "#fff"
}
},
sliderHandle: {
color: ACCENT_COLOR,
opacity: .5
}
},
bullet: {
color: ACCENT_COLOR
},
gauge: {
valueIndicators: {
rangebar: {
color: ACCENT_COLOR
},
textcloud: {
color: ACCENT_COLOR
}
}
},
sankey: {
link: {
border: {
color: BACKGROUND_COLOR
}
},
node: {
border: {
color: BACKGROUND_COLOR
}
}
}
}, "generic.dark");
registerThemeAlias("generic.darkviolet.compact", "generic.darkviolet")
},
/*!*******************************************************************!*\
!*** ./artifacts/transpiled/viz/core/themes/generic.greenmist.js ***!
\*******************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var themeModule = __webpack_require__( /*! ../../themes */ 50),
registerTheme = themeModule.registerTheme,
registerThemeAlias = themeModule.registerThemeAlias,
ACCENT_COLOR = "#3cbab2",
BACKGROUND_COLOR = "#f5f5f5",
TITLE_COLOR = "#28484f",
SUBTITLE_COLOR = "#7eb2be",
TEXT_COLOR = "#657c80",
BORDER_COLOR = "#dedede";
registerTheme({
name: "generic.greenmist",
defaultPalette: "Green Mist",
backgroundColor: BACKGROUND_COLOR,
primaryTitleColor: TITLE_COLOR,
secondaryTitleColor: SUBTITLE_COLOR,
gridColor: BORDER_COLOR,
axisColor: TEXT_COLOR,
"export": {
backgroundColor: BACKGROUND_COLOR,
font: {
color: TITLE_COLOR
},
button: {
"default": {
color: TITLE_COLOR,
borderColor: "#a2b4b8",
backgroundColor: BACKGROUND_COLOR
},
hover: {
color: TITLE_COLOR,
borderColor: "#7f989e",
backgroundColor: "rgba(222, 222, 222, 0.4)"
},
focus: {
color: TITLE_COLOR,
borderColor: "#5f777c",
backgroundColor: "rgba(222, 222, 222, 0.4)"
},
active: {
color: TITLE_COLOR,
borderColor: "#5f777c",
backgroundColor: "rgba(222, 222, 222, 0.8)"
}
}
},
legend: {
font: {
color: TEXT_COLOR
}
},
tooltip: {
color: "#fff",
border: {
color: BORDER_COLOR
},
font: {
color: TITLE_COLOR
}
},
"chart:common": {
commonSeriesSettings: {
label: {
border: {
color: BORDER_COLOR
}
}
}
},
chart: {
commonPaneSettings: {
border: {
color: BORDER_COLOR
}
},
commonAxisSettings: {
breakStyle: {
color: "#c1c1c1"
}
},
commonAnnotationSettings: {
color: "#fff",
border: {
color: BORDER_COLOR
},
font: {
color: TITLE_COLOR
}
}
},
funnel: {
item: {
border: {
color: BACKGROUND_COLOR
}
}
},
sparkline: {
pointColor: BACKGROUND_COLOR,
minColor: "#ffc852",
maxColor: "#f74a5e"
},
treeMap: {
group: {
color: BORDER_COLOR,
label: {
font: {
color: SUBTITLE_COLOR
}
}
}
},
rangeSelector: {
shutter: {
color: BACKGROUND_COLOR
},
scale: {
breakStyle: {
color: "#c1c1c1"
},
tick: {
opacity: .12
}
},
selectedRangeColor: ACCENT_COLOR,
sliderMarker: {
color: ACCENT_COLOR
},
sliderHandle: {
color: ACCENT_COLOR,
opacity: .5
}
},
bullet: {
color: ACCENT_COLOR
},
gauge: {
valueIndicators: {
rangebar: {
color: ACCENT_COLOR
},
textcloud: {
color: ACCENT_COLOR
}
}
}
}, "generic.light");
registerThemeAlias("generic.greenmist.compact", "generic.greenmist")
},
/*!**********************************************************!*\
!*** ./artifacts/transpiled/viz/core/themes/material.js ***!
\**********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var themeModule = __webpack_require__( /*! ../../themes */ 50),
registerTheme = themeModule.registerTheme,
registerThemeAlias = themeModule.registerThemeAlias,
FONT_FAMILY = "'Roboto', 'RobotoFallback', 'Helvetica', 'Arial', sans-serif",
LIGHT_TITLE_COLOR = "rgba(0,0,0,0.87)",
LIGHT_LABEL_COLOR = "rgba(0,0,0,0.54)",
DARK_TITLE_COLOR = "rgba(255,255,255,0.87)",
DARK_LABEL_COLOR = "rgba(255,255,255,0.54)",
DARK_BACKGROUND_COLOR = "#363640",
WHITE = "#ffffff",
BLACK = "#000000",
RANGE_COLOR = "#b5b5b5",
AREA_LAYER_COLOR = "#686868",
LINE_COLOR = "#c7c7c7",
TARGET_COLOR = "#8e8e8e",
POSITIVE_COLOR = "#b8b8b8",
LABEL_BORDER_COLOR = "#494949",
BREAK_STYLE_COLOR = "#818181";
registerTheme({
name: "material",
defaultPalette: "Material",
font: {
family: FONT_FAMILY
},
title: {
margin: {
top: 20,
bottom: 20,
left: 0,
right: 0
},
font: {
size: 20,
family: FONT_FAMILY,
weight: 500
},
horizontalAlignment: "left",
subtitle: {
font: {
size: 14
},
horizontalAlignment: "left"
}
},
tooltip: {
shadow: {
opacity: 0
},
border: {
visible: false
},
paddingLeftRight: 8,
paddingTopBottom: 6,
arrowLength: 0,
location: "edge",
color: "#616161",
font: {
color: WHITE
},
cornerRadius: 4
},
chart: {
commonAxisSettings: {
minorTick: {
opacity: .5
},
label: {
font: {
size: 11
}
}
},
commonAnnotationSettings: {
font: {
color: WHITE
},
border: {
color: "#616161"
},
color: "#616161",
arrowLength: 14,
arrowWidth: 0,
shadow: {
opacity: .08,
offsetY: 4,
blur: 8
},
cornerRadius: 4
}
},
pie: {
title: {
horizontalAlignment: "center",
subtitle: {
horizontalAlignment: "center"
}
}
},
polar: {
commonAxisSettings: {
minorTick: {
opacity: .5
}
},
title: {
horizontalAlignment: "center",
subtitle: {
horizontalAlignment: "center"
}
}
},
funnel: {
title: {
horizontalAlignment: "center",
subtitle: {
horizontalAlignment: "center"
}
}
},
gauge: {
title: {
horizontalAlignment: "center",
subtitle: {
horizontalAlignment: "center"
}
}
},
barGauge: {
title: {
horizontalAlignment: "center",
subtitle: {
horizontalAlignment: "center"
}
}
},
rangeSelector: {
sliderHandle: {
opacity: .5
}
},
treeMap: {
group: {
label: {
font: {
weight: 500
}
}
}
}
}, "generic.light");
registerTheme({
name: "material.light",
gridColor: "#e0e0e0",
axisColor: LIGHT_LABEL_COLOR,
primaryTitleColor: LIGHT_TITLE_COLOR,
legend: {
font: {
color: LIGHT_LABEL_COLOR
}
},
chart: {
scrollBar: {
color: "#bfbfbf",
opacity: .7
}
},
gauge: {
rangeContainer: {
backgroundColor: "rgba(0,0,0,0.2)"
}
},
barGauge: {
backgroundColor: "#efefef"
}
}, "material");
registerTheme({
name: "material.dark",
gridColor: "#515159",
backgroundColor: DARK_BACKGROUND_COLOR,
axisColor: DARK_LABEL_COLOR,
font: {
color: DARK_LABEL_COLOR
},
primaryTitleColor: DARK_TITLE_COLOR,
secondaryTitleColor: DARK_TITLE_COLOR,
tooltip: {
color: "#000"
},
"export": {
backgroundColor: DARK_BACKGROUND_COLOR,
font: {
color: "#dbdbdb"
},
button: {
"default": {
color: "#dedede",
borderColor: "#4d4d4d",
backgroundColor: DARK_BACKGROUND_COLOR
},
hover: {
color: "#dedede",
borderColor: "#6c6c6c",
backgroundColor: "#3f3f4b"
},
focus: {
color: "#dedede",
borderColor: "#8d8d8d",
backgroundColor: "#494956"
},
active: {
color: "#dedede",
borderColor: "#8d8d8d",
backgroundColor: "#494956"
}
},
shadowColor: "#292929"
},
"chart:common": {
commonSeriesSettings: {
label: {
border: {
color: LABEL_BORDER_COLOR
}
},
valueErrorBar: {
color: WHITE
}
}
},
"chart:common:axis": {
constantLineStyle: {
color: WHITE
}
},
chart: {
commonPaneSettings: {
border: {
color: LABEL_BORDER_COLOR
}
},
commonAxisSettings: {
breakStyle: {
color: BREAK_STYLE_COLOR
}
},
zoomAndPan: {
dragBoxStyle: {
color: WHITE
}
},
commonAnnotationSettings: {
border: {
color: "#000"
},
color: "#000"
}
},
gauge: {
rangeContainer: {
backgroundColor: RANGE_COLOR
},
valueIndicators: {
_default: {
color: RANGE_COLOR
},
rangebar: {
color: "#84788b"
},
twocolorneedle: {
secondColor: "#ba544d"
},
trianglemarker: {
color: "#b7918f"
},
textcloud: {
color: "#ba544d"
}
}
},
barGauge: {
backgroundColor: "#3c3c3c"
},
rangeSelector: {
scale: {
tick: {
color: WHITE,
opacity: .32
},
minorTick: {
color: WHITE,
opacity: .1
},
breakStyle: {
color: BREAK_STYLE_COLOR
}
},
selectedRangeColor: RANGE_COLOR,
sliderMarker: {
color: RANGE_COLOR,
font: {
color: DARK_BACKGROUND_COLOR
}
},
sliderHandle: {
color: WHITE,
opacity: .2
},
shutter: {
color: WHITE,
opacity: .1
}
},
map: {
background: {
borderColor: "#3f3f3f"
},
layer: {
label: {
stroke: BLACK,
font: {
color: WHITE
}
}
},
"layer:area": {
borderColor: DARK_BACKGROUND_COLOR,
color: AREA_LAYER_COLOR,
hoveredBorderColor: WHITE,
selectedBorderColor: WHITE
},
"layer:line": {
color: "#c77244",
hoveredColor: "#ff5d04",
selectedColor: "#ff784f"
},
"layer:marker:bubble": {
hoveredBorderColor: WHITE,
selectedBorderColor: WHITE
},
"layer:marker:pie": {
hoveredBorderColor: WHITE,
selectedBorderColor: WHITE
},
legend: {
border: {
color: "#3f3f3f"
},
font: {
color: WHITE
}
},
controlBar: {
borderColor: LINE_COLOR,
color: DARK_BACKGROUND_COLOR
}
},
treeMap: {
group: {
color: "#4c4c4c",
label: {
font: {
color: "#a3a3a3"
}
}
}
},
sparkline: {
lineColor: LINE_COLOR,
firstLastColor: LINE_COLOR,
barPositiveColor: POSITIVE_COLOR,
barNegativeColor: TARGET_COLOR,
winColor: POSITIVE_COLOR,
lossColor: TARGET_COLOR,
pointColor: DARK_BACKGROUND_COLOR
},
bullet: {
targetColor: TARGET_COLOR
},
funnel: {
item: {
border: {
color: DARK_BACKGROUND_COLOR
}
}
},
sankey: {
label: {
font: {
color: WHITE
}
}
}
}, "material");
function registerMaterialColorScheme(accentName, themeName, accentColor) {
registerTheme({
name: "material." + accentName + "." + themeName,
rangeSelector: {
selectedRangeColor: accentColor,
sliderMarker: {
color: accentColor
},
sliderHandle: {
color: accentColor
}
},
map: {
"layer:marker:dot": {
color: accentColor
},
"layer:marker:bubble": {
color: accentColor
},
legend: {
markerColor: accentColor
}
},
bullet: {
color: accentColor
},
gauge: {
valueIndicators: {
rangebar: {
color: accentColor
},
textcloud: {
color: accentColor
}
}
}
}, "material." + themeName)
}
var materialAccents = {
blue: "#03a9f4",
lime: "#cddc39",
orange: "#ff5722",
purple: "#9c27b0",
teal: "#009688"
};
for (var accent in materialAccents) {
if (Object.prototype.hasOwnProperty.call(materialAccents, accent)) {
var color = materialAccents[accent];
registerMaterialColorScheme(accent, "light", color);
registerMaterialColorScheme(accent, "dark", color);
registerThemeAlias("material." + accent + ".light.compact", "material." + accent + ".light");
registerThemeAlias("material." + accent + ".dark.compact", "material." + accent + ".dark")
}
}
},
/*!*****************************************************!*\
!*** ./artifacts/transpiled/viz/core/themes/ios.js ***!
\*****************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var themeModule = __webpack_require__( /*! ../../themes */ 50),
IOS7_DEFAULT = "ios7.default",
SECONDARY_TEXT_COLOR = "#767676",
BORDER_COLOR = "#d3d3d3",
BLACK = "#000000";
themeModule.registerTheme({
name: IOS7_DEFAULT,
backgroundColor: "#ffffff",
primaryTitleColor: BLACK,
secondaryTitleColor: SECONDARY_TEXT_COLOR,
gridColor: "#ececec",
axisColor: SECONDARY_TEXT_COLOR,
legend: {
font: {
color: BLACK
}
},
tooltip: {
font: {
color: SECONDARY_TEXT_COLOR
}
},
"chart:common": {
commonSeriesSettings: {
label: {
border: {
color: BORDER_COLOR
}
}
}
},
chart: {
commonPaneSettings: {
border: {
color: BORDER_COLOR
}
}
},
rangeSelector: {
scale: {
tick: {
color: BLACK,
opacity: .1
},
minorTick: {
color: BLACK,
opacity: .03
}
}
},
treeMap: {
group: {
label: {
font: {
color: SECONDARY_TEXT_COLOR
}
}
}
}
}, "generic.light")
},
/*!**********************************************************!*\
!*** ./artifacts/transpiled/viz/core/errors_warnings.js ***!
\**********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var errorUtils = __webpack_require__( /*! ../../core/utils/error */ 132),
errors = __webpack_require__( /*! ../../core/errors */ 21);
module.exports = errorUtils(errors.ERROR_MESSAGES, {
E2001: "Invalid data source",
E2002: "Axis type and data type are incompatible",
E2003: 'The "{0}" data source field contains data of unsupported type',
E2004: 'The "{0}" data source field is inconsistent',
E2005: 'The value field "{0}" is absent in the data source or all its values are negative',
E2006: "A cycle is detected in provided data",
E2007: 'The value field "{0}" is absent in the data source',
E2008: 'The value field "{0}" must be a string',
E2009: 'The value field "{0}" must be a positive numeric value',
E2101: "Unknown series type: {0}",
E2102: "Ambiguity occurred between two value axes with the same name",
E2103: 'The "{0}" option is given an invalid value. Assign a function instead',
E2104: "Invalid logarithm base",
E2105: 'Invalid value of a "{0}"',
E2106: "Invalid visible range",
E2202: "Invalid {0} scale value",
E2203: "The range you are trying to set is invalid",
W2002: "The {0} series cannot be drawn because the {1} data field is missing",
W2003: "Tick interval is too small",
W2101: 'The "{0}" pane does not exist; the last pane is used by default',
W2102: 'A value axis with the "{0}" name was created automatically',
W2103: "The chart title was hidden due to the container size",
W2104: "The legend was hidden due to the container size",
W2105: 'The title of the "{0}" axis was hidden due to the container size',
W2106: 'The labels of the "{0}" axis were hidden due to the container size',
W2107: "The export menu was hidden due to the container size",
W2108: "The browser does not support exporting images to {0} format.",
W2301: "Invalid value range"
})
},
/*!**************************************************************!*\
!*** ./artifacts/transpiled/viz/core/renderers/animation.js ***!
\**************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var animationFrame = __webpack_require__( /*! ../../../animation/frame */ 113),
noop = function() {},
easingFunctions = {
easeOutCubic: function(pos, start, end) {
return 1 === pos ? end : (1 - Math.pow(1 - pos, 3)) * (end - start) + +start
},
linear: function(pos, start, end) {
return 1 === pos ? end : pos * (end - start) + +start
}
};
exports.easingFunctions = easingFunctions;
var animationSvgStep = {
segments: function segments(elem, params, progress, easing, currentParams) {
var curSeg, seg, i, j, from = params.from,
to = params.to,
segments = [];
for (i = 0; i < from.length; i++) {
curSeg = from[i];
seg = [curSeg[0]];
if (curSeg.length > 1) {
for (j = 1; j < curSeg.length; j++) {
seg.push(easing(progress, curSeg[j], to[i][j]))
}
}
segments.push(seg)
}
currentParams.segments = params.end && 1 === progress ? params.end : segments;
elem.attr({
segments: segments
})
},
arc: function(elem, params, progress, easing) {
var from = params.from,
to = params.to,
current = {};
for (var i in from) {
current[i] = easing(progress, from[i], to[i])
}
elem.attr(current)
},
transform: function(elem, params, progress, easing, currentParams) {
var from = params.from,
to = params.to,
current = {};
for (var i in from) {
current[i] = currentParams[i] = easing(progress, from[i], to[i])
}
elem.attr(current)
},
base: function(elem, params, progress, easing, currentParams, attributeName) {
var obj = {};
obj[attributeName] = currentParams[attributeName] = easing(progress, params.from, params.to);
elem.attr(obj)
},
_: noop,
complete: function(element, currentSettings) {
element.attr(currentSettings)
}
};
function step(now) {
var attrName, that = this,
animateStep = that._animateStep;
that._progress = that._calcProgress(now);
for (attrName in that.params) {
var anim = animateStep[attrName] || animateStep.base;
anim(that.element, that.params[attrName], that._progress, that._easing, that._currentParams, attrName)
}
that.options.step && that.options.step(that._easing(that._progress, 0, 1), that._progress);
if (1 === that._progress) {
return that.stop()
}
return true
}
function delayTick(now) {
if (now - this._startTime >= this.delay) {
this.tick = step
}
return true
}
function start(now) {
this._startTime = now;
this.tick = this.delay ? delayTick : step;
return true
}
function Animation(element, params, options) {
var that = this;
that._progress = 0;
that.element = element;
that.params = params;
that.options = options;
that.duration = options.partitionDuration ? options.duration * options.partitionDuration : options.duration;
that.delay = options.delay && options.duration * options.delay || 0;
that._animateStep = options.animateStep || animationSvgStep;
that._easing = easingFunctions[options.easing] || easingFunctions.easeOutCubic;
that._currentParams = {};
that.tick = start
}
Animation.prototype = {
_calcProgress: function(now) {
return Math.min(1, (now - this.delay - this._startTime) / this.duration)
},
stop: function(disableComplete) {
var that = this,
options = that.options,
animateStep = that._animateStep;
that.stop = that.tick = noop;
animateStep.complete && animateStep.complete(that.element, that._currentParams);
options.complete && !disableComplete && options.complete()
}
};
function AnimationController(element) {
var that = this;
that._animationCount = 0;
that._timerId = null;
that._animations = {};
that.element = element
}
exports.AnimationController = AnimationController;
AnimationController.prototype = {
_loop: function() {
var an, that = this,
animations = that._animations,
activeAnimation = 0,
now = (new Date).getTime(),
endAnimation = that._endAnimation;
for (an in animations) {
if (!animations[an].tick(now)) {
delete animations[an]
}
activeAnimation++
}
if (0 === activeAnimation) {
that.stop();
that._endAnimationTimer = endAnimation && setTimeout(function() {
if (0 === that._animationCount) {
endAnimation();
that._endAnimation = null
}
});
return
}
that._timerId = animationFrame.requestAnimationFrame.call(null, function() {
that._loop()
}, that.element)
},
addAnimation: function(animation) {
var that = this;
that._animations[that._animationCount++] = animation;
clearTimeout(that._endAnimationTimer);
if (!that._timerId) {
clearTimeout(that._startDelay);
that._startDelay = setTimeout(function() {
that._timerId = 1;
that._loop()
}, 0)
}
},
animateElement: function(elem, params, options) {
if (elem && params && options) {
elem.animation && elem.animation.stop();
this.addAnimation(elem.animation = new Animation(elem, params, options))
}
},
onEndAnimation: function(endAnimation) {
this._animationCount ? this._endAnimation = endAnimation : endAnimation()
},
dispose: function() {
this.stop();
this.element = null
},
stop: function() {
var that = this;
that._animations = {};
that._animationCount = 0;
animationFrame.cancelAnimationFrame(that._timerId);
clearTimeout(that._startDelay);
clearTimeout(that._endAnimationTimer);
that._timerId = null
},
lock: function() {
var an, unstoppable, hasUnstoppableInAnimations, animations = this._animations;
for (an in animations) {
unstoppable = animations[an].options.unstoppable;
hasUnstoppableInAnimations = hasUnstoppableInAnimations || unstoppable;
if (!unstoppable) {
animations[an].stop(true);
delete animations[an]
}
}!hasUnstoppableInAnimations && this.stop()
}
};
exports.animationSvgStep = animationSvgStep;
exports.Animation = Animation;
exports.noop = noop
},
/*!*************************************************!*\
!*** ./artifacts/transpiled/viz/core/layout.js ***!
\*************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _normalizeEnum = __webpack_require__( /*! ./utils */ 12).normalizeEnum,
_min = Math.min,
_max = Math.max,
_round = Math.round,
ALIGN_START = 0,
ALIGN_MIDDLE = 1,
ALIGN_END = 2,
horizontalAlignmentMap = {
left: ALIGN_START,
center: ALIGN_MIDDLE,
right: ALIGN_END
},
verticalAlignmentMap = {
top: ALIGN_START,
center: ALIGN_MIDDLE,
bottom: ALIGN_END
},
sideMap = {
horizontal: 0,
vertical: 1
},
slicersMap = {};
var BBOX_CEIL_CORRECTION = 2;
slicersMap[ALIGN_START] = function(a, b, size) {
return [a, _min(b, a + size)]
};
slicersMap[ALIGN_MIDDLE] = function(a, b, size) {
return [_max(a, (a + b - size) / 2), _min(b, (a + b + size) / 2)]
};
slicersMap[ALIGN_END] = function(a, b, size) {
return [_max(a, b - size), b]
};
function pickValue(value, map, defaultValue) {
var val = _normalizeEnum(value);
return val in map ? map[val] : defaultValue
}
function normalizeLayoutOptions(options) {
var side = pickValue(options.side, sideMap, 1),
alignment = [pickValue(options.horizontalAlignment, horizontalAlignmentMap, ALIGN_MIDDLE), pickValue(options.verticalAlignment, verticalAlignmentMap, ALIGN_START)];
return {
side: side,
primary: bringToEdge(alignment[side]),
secondary: alignment[1 - side],
weak: options.weak,
priority: options.priority || 0,
header: options.header,
position: options.position
}
}
function bringToEdge(primary) {
return primary < 2 ? 0 : 2
}
function getConjugateSide(side) {
return 1 - side
}
function getSlice(alignment, a, b, size) {
return slicersMap[alignment](a, b, size)
}
function getShrink(alignment, size) {
return (alignment > 0 ? -1 : 1) * size
}
function processForward(item, rect, minSize) {
var side = item.side,
size = item.element.measure([rect[2] - rect[0], rect[3] - rect[1]]),
minSide = "indside" === item.position ? 0 : minSize[side],
isValid = size[side] < rect[2 + side] - rect[side] - minSide;
if (isValid) {
if ("inside" !== item.position) {
rect[item.primary + side] += getShrink(item.primary, size[side])
}
item.size = size
}
return isValid
}
function processRectBackward(item, rect, alignmentRect) {
var primarySide = item.side,
secondarySide = getConjugateSide(primarySide),
itemRect = [],
secondary = getSlice(item.secondary, alignmentRect[secondarySide], alignmentRect[2 + secondarySide], item.size[secondarySide]);
itemRect[primarySide] = _round(itemRect[2 + primarySide] = rect[item.primary + primarySide] + ("inside" === item.position ? getShrink(item.primary, item.size[primarySide]) : 0));
itemRect[item.primary + primarySide] = _round(rect[item.primary + primarySide] - getShrink(item.primary, item.size[primarySide]));
if ("inside" !== item.position) {
rect[item.primary + primarySide] = itemRect[item.primary + primarySide]
}
itemRect[secondarySide] = _round(secondary[0]);
itemRect[2 + secondarySide] = _round(secondary[1]);
return itemRect
}
function processBackward(item, rect, alignmentRect, fitRect, size, targetRect) {
var itemRect = processRectBackward(item, rect, alignmentRect);
var itemFitRect = processRectBackward(item, fitRect, fitRect);
if (size[item.side] > 0) {
size[item.side] -= item.size[item.side];
targetRect[item.primary + item.side] = itemRect[item.primary + item.side];
item.element.freeSpace()
} else {
item.element.move(itemRect, itemFitRect)
}
}
function Layout() {
this._targets = []
}
Layout.prototype = {
constructor: Layout,
dispose: function() {
this._targets = null
},
add: function(target) {
this._targets.push(target)
},
forward: function(targetRect, minSize) {
var i, rect = targetRect.slice(),
targets = createTargets(this._targets),
ii = targets.length,
cache = [];
for (i = 0; i < ii; ++i) {
if (processForward(targets[i], rect, minSize)) {
cache.push(targets[i])
} else {
targets[i].element.freeSpace()
}
}
this._cache = cache.reverse();
return rect
},
backward: function(targetRect, alignmentRect) {
var size = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [0, 0];
var target, i, backwardRect = targetRect.slice(),
fitRect = targetRect.slice(),
targets = this._cache,
targetSide = 0,
ii = targets.length;
for (i = 0; i < ii; ++i) {
target = targets[i];
if (target.side !== targetSide) {
backwardRect = targetRect.slice()
}
processBackward(target, backwardRect, alignmentRect, fitRect, size, targetRect);
targetSide = target.side
}
return size
}
};
function createTargets(targets) {
var i, layout, ii = targets.length,
collection = [];
for (i = 0; i < ii; ++i) {
layout = targets[i].layoutOptions();
if (layout) {
layout = normalizeLayoutOptions(layout);
layout.element = targets[i];
collection.push(layout)
}
}
collection.sort(function(a, b) {
return b.side - a.side || a.priority - b.priority
});
collection = processWeakItems(collection);
return collection
}
function processWeakItems(collection) {
var headerItem, weakItem = collection.filter(function(item) {
return true === item.weak
})[0];
if (weakItem) {
headerItem = collection.filter(function(item) {
return weakItem.primary === item.primary && item.side === weakItem.side && item !== weakItem
})[0]
}
if (weakItem && headerItem) {
return [makeHeader(headerItem, weakItem)].concat(collection.filter(function(item) {
return !(item === headerItem || item === weakItem)
}))
}
return collection
}
function processBackwardHeaderRect(element, rect) {
var rectCopy = rect.slice();
var itemRect = processRectBackward(element, rectCopy, rectCopy);
itemRect[element.side] = rect[element.side];
itemRect[2 + element.side] = rect[2 + element.side];
return itemRect
}
function makeHeader(header, weakElement) {
var side = header.side,
primary = header.primary,
secondary = header.secondary;
return {
side: side,
primary: primary,
secondary: secondary,
priority: 0,
element: {
measure: function(targetSize) {
var result = targetSize.slice();
var weakSize = weakElement.element.measure(targetSize.slice());
targetSize[primary] -= weakSize[primary];
var headerSize = header.element.measure(targetSize.slice());
result[side] = weakSize[side] = headerSize[side] = Math.max(headerSize[side], weakSize[side]);
weakElement.size = weakSize;
header.size = headerSize;
return result
},
move: function(rect, fitRect) {
if (fitRect[2] - fitRect[0] < header.size[0] + weakElement.size[0] - BBOX_CEIL_CORRECTION) {
this.freeSpace();
return
}
var weakRect = processBackwardHeaderRect(weakElement, fitRect, fitRect);
fitRect[2 + weakElement.primary] = weakRect[weakElement.primary];
var headerFitReact = processBackwardHeaderRect(header, fitRect, fitRect);
if (fitRect[2 + weakElement.primary] < rect[2 + weakElement.primary] && header.size[header.primary] > rect[2 + header.primary] - rect[header.primary]) {
rect[2 + weakElement.primary] = fitRect[2 + weakElement.primary]
}
var headerRect = processBackwardHeaderRect(header, rect, rect);
if (headerRect[2 + weakElement.primary] > fitRect[2 + weakElement.primary]) {
rect[2 + weakElement.primary] = fitRect[2 + weakElement.primary];
headerRect = processBackwardHeaderRect(header, rect, rect)
}
weakElement.element.move(weakRect);
header.element.move(headerRect, headerFitReact)
},
freeSpace: function() {
header.element.freeSpace();
weakElement.element.freeSpace()
}
}
}
}
module.exports = Layout
},
/*!**************************************************************!*\
!*** ./artifacts/transpiled/viz/series/points/base_point.js ***!
\**************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var mixins = {},
statesConsts = __webpack_require__( /*! ../../components/consts */ 119).states,
symbolPoint = __webpack_require__( /*! ./symbol_point */ 120),
barPoint = __webpack_require__( /*! ./bar_point */ 203),
bubblePoint = __webpack_require__( /*! ./bubble_point */ 797),
piePoint = __webpack_require__( /*! ./pie_point */ 406),
rangeSymbolPoint = __webpack_require__( /*! ./range_symbol_point */ 407),
rangeBarPoint = __webpack_require__( /*! ./range_bar_point */ 798),
candlestickPoint = __webpack_require__( /*! ./candlestick_point */ 408),
stockPoint = __webpack_require__( /*! ./stock_point */ 799),
polarPoints = __webpack_require__( /*! ./polar_point */ 800),
_normalizeEnum = __webpack_require__( /*! ../../core/utils */ 12).normalizeEnum,
extend = __webpack_require__( /*! ../../../core/utils/extend */ 0).extend,
_extend = extend,
_isDefined = __webpack_require__( /*! ../../../core/utils/type */ 1).isDefined,
_noop = __webpack_require__( /*! ../../../core/utils/common */ 4).noop,
SYMBOL_POINT = "symbolPoint",
POLAR_SYMBOL_POINT = "polarSymbolPoint",
BAR_POINT = "barPoint",
POLAR_BAR_POINT = "polarBarPoint",
PIE_POINT = "piePoint",
SELECTED_STATE = statesConsts.selectedMark,
HOVER_STATE = statesConsts.hoverMark,
NORMAL_STATE = statesConsts.normalMark,
HOVER = statesConsts.hover,
NORMAL = statesConsts.normal,
SELECTION = statesConsts.selection,
pointTypes = {
chart: {
scatter: SYMBOL_POINT,
line: SYMBOL_POINT,
spline: SYMBOL_POINT,
stepline: SYMBOL_POINT,
stackedline: SYMBOL_POINT,
fullstackedline: SYMBOL_POINT,
stackedspline: SYMBOL_POINT,
fullstackedspline: SYMBOL_POINT,
stackedsplinearea: SYMBOL_POINT,
fullstackedsplinearea: SYMBOL_POINT,
area: SYMBOL_POINT,
splinearea: SYMBOL_POINT,
steparea: SYMBOL_POINT,
stackedarea: SYMBOL_POINT,
fullstackedarea: SYMBOL_POINT,
rangearea: "rangeSymbolPoint",
bar: BAR_POINT,
stackedbar: BAR_POINT,
fullstackedbar: BAR_POINT,
rangebar: "rangeBarPoint",
bubble: "bubblePoint",
stock: "stockPoint",
candlestick: "candlestickPoint"
},
pie: {
pie: PIE_POINT,
doughnut: PIE_POINT,
donut: PIE_POINT
},
polar: {
scatter: POLAR_SYMBOL_POINT,
line: POLAR_SYMBOL_POINT,
area: POLAR_SYMBOL_POINT,
bar: POLAR_BAR_POINT,
stackedbar: POLAR_BAR_POINT
}
};
function isNoneMode(mode) {
return "none" === _normalizeEnum(mode)
}
function Point(series, dataItem, options) {
this.fullState = NORMAL_STATE;
this.series = series;
this.update(dataItem, options);
this._viewCounters = {
hover: 0,
selection: 0
};
this._emptySettings = {
fill: null,
stroke: null,
dashStyle: null
}
}
exports.Point = Point;
mixins.symbolPoint = symbolPoint;
mixins.barPoint = barPoint;
mixins.bubblePoint = bubblePoint;
mixins.piePoint = piePoint;
mixins.rangeSymbolPoint = rangeSymbolPoint;
mixins.rangeBarPoint = rangeBarPoint;
mixins.candlestickPoint = candlestickPoint;
mixins.stockPoint = stockPoint;
mixins.polarSymbolPoint = polarPoints.polarSymbolPoint;
mixins.polarBarPoint = polarPoints.polarBarPoint;
Point.prototype = {
constructor: Point,
getColor: function() {
if (!this.hasValue() && !this._styles.usePointCustomOptions) {
this.series.customizePoint(this, this._dataItem)
}
return this._styles.normal.fill || this.series.getColor()
},
_getStyle: function() {
return this._styles[this._currentStyle || "normal"]
},
update: function(dataItem, options) {
this.updateOptions(options);
this.updateData(dataItem)
},
updateData: function(dataItem) {
var that = this;
var argumentWasChanged = that.argument !== dataItem.argument;
that.argument = that.initialArgument = that.originalArgument = dataItem.argument;
that.tag = dataItem.tag;
that.index = dataItem.index;
that._dataItem = dataItem;
that.data = dataItem.data;
that.lowError = dataItem.lowError;
that.highError = dataItem.highError;
that.aggregationInfo = dataItem.aggregationInfo;
that._updateData(dataItem, argumentWasChanged);
!that.hasValue() && that.setInvisibility();
that._fillStyle();
that._updateLabelData()
},
deleteMarker: function() {
var that = this;
if (that.graphic) {
that.graphic.dispose()
}
that.graphic = null
},
draw: function(renderer, groups, animationEnabled, firstDrawing) {
var that = this;
if (that._needDeletingOnDraw || that.series.autoHidePointMarkers && !that.isSelected()) {
that.deleteMarker();
that._needDeletingOnDraw = false
}
if (that._needClearingOnDraw) {
that.clearMarker();
that._needClearingOnDraw = false
}
if (!that._hasGraphic()) {
that.getMarkerVisibility() && !that.series.autoHidePointMarkers && that._drawMarker(renderer, groups.markers, animationEnabled, firstDrawing)
} else {
that._updateMarker(animationEnabled, this._getStyle(), groups.markers)
}
that._drawLabel();
that._drawErrorBar(renderer, groups.errorBars, animationEnabled);
return that
},
_getViewStyle: function() {
var state = NORMAL_STATE,
fullState = this.fullState,
styles = [NORMAL, HOVER, SELECTION, SELECTION];
if (this._viewCounters.hover) {
state |= HOVER_STATE
}
if (this._viewCounters.selection) {
state |= SELECTED_STATE
}
if (isNoneMode(this.getOptions().selectionMode)) {
fullState &= ~SELECTED_STATE
}
if (isNoneMode(this.getOptions().hoverMode)) {
fullState &= ~HOVER_STATE
}
state |= fullState;
return styles[state]
},
applyView: function(legendCallback) {
var style = this._getViewStyle();
var that = this;
that._currentStyle = style;
if (!that.graphic && that.series.autoHidePointMarkers && (style === SELECTION || style === HOVER)) {
that._drawMarker(that.series.getRenderer(), that.series.getMarkersGroup())
}
if (that.graphic) {
if (that.series.autoHidePointMarkers && style !== SELECTION && style !== HOVER) {
that.deleteMarker()
} else {
if ("normal" === style) {
that.clearMarker()
} else {
that.graphic.toForeground()
}
that._updateMarker(true, that._styles[style], void 0, legendCallback)
}
}
},
setView: function(style) {
this._viewCounters[style]++;
this.applyView()
},
resetView: function(style) {
var viewCounters = this._viewCounters;
--viewCounters[style];
if (viewCounters[style] < 0) {
viewCounters[style] = 0
}
this.applyView()
},
releaseHoverState: function() {
var that = this;
if (that.graphic && !that.isSelected()) {
that.graphic.toBackground()
}
},
select: function() {
this.series.selectPoint(this)
},
clearSelection: function() {
this.series.deselectPoint(this)
},
hover: function() {
this.series.hoverPoint(this)
},
clearHover: function() {
this.series.clearPointHover()
},
showTooltip: function() {
this.series.showPointTooltip(this)
},
hideTooltip: function() {
this.series.hidePointTooltip(this)
},
_checkLabelsChanging: function(oldType, newType) {
var isNewRange = ~newType.indexOf("range"),
isOldRange = ~oldType.indexOf("range");
return isOldRange && !isNewRange || !isOldRange && isNewRange
},
updateOptions: function(newOptions) {
if (!newOptions) {
return
}
var that = this,
oldOptions = that._options,
widgetType = newOptions.widgetType,
oldType = oldOptions && oldOptions.type,
newType = newOptions.type,
newPointTypeMixin = pointTypes[widgetType][newType];
if (oldType !== newType) {
that._needDeletingOnDraw = true;
that._needClearingOnDraw = false;
if (oldType) {
that._checkLabelsChanging(oldType, newType) && that.deleteLabel();
that._resetType(mixins[pointTypes[oldType]])
}
that._setType(mixins[newPointTypeMixin])
} else {
that._needDeletingOnDraw = that._checkSymbol(oldOptions, newOptions);
that._needClearingOnDraw = that._checkCustomize(oldOptions, newOptions)
}
that._options = newOptions;
that._fillStyle();
that._updateLabelOptions(newPointTypeMixin)
},
translate: function() {
if (this.hasValue()) {
this._translate();
this.translated = true
}
},
_checkCustomize: function(oldOptions, newOptions) {
return oldOptions.styles.usePointCustomOptions && !newOptions.styles.usePointCustomOptions
},
_getCustomLabelVisibility: function() {
return this._styles.useLabelCustomOptions ? !!this._options.label.visible : null
},
getBoundingRect: function() {
return this._getGraphicBBox()
},
_resetType: function(methods) {
for (var methodName in methods) {
delete this[methodName]
}
},
_setType: function(methods) {
for (var methodName in methods) {
this[methodName] = methods[methodName]
}
},
isInVisibleArea: function() {
return this.inVisibleArea
},
isSelected: function() {
return !!(this.fullState & SELECTED_STATE)
},
isHovered: function() {
return !!(this.fullState & HOVER_STATE)
},
getOptions: function() {
return this._options
},
animate: function(complete, settings, partitionDuration) {
if (!this.graphic) {
complete && complete();
return
}
this.graphic.animate(settings, {
partitionDuration: partitionDuration
}, complete)
},
getCoords: function(min) {
var that = this;
if (!min) {
return {
x: that.x,
y: that.y
}
}
if (!that._options.rotated) {
return {
x: that.x,
y: that.minY + (that.y - that.minY ? 0 : 1)
}
}
return {
x: that.minX - (that.x - that.minX ? 0 : 1),
y: that.y
}
},
getDefaultCoords: function() {
var that = this;
return !that._options.rotated ? {
x: that.x,
y: that.defaultY
} : {
x: that.defaultX,
y: that.y
}
},
setDefaultCoords: function() {
var coords = this.getDefaultCoords();
this.x = coords.x;
this.y = coords.y
},
_getVisibleArea: function() {
return this.series.getVisibleArea()
},
_getArgTranslator: function() {
return this.series.getArgumentAxis().getTranslator()
},
_getValTranslator: function() {
return this.series.getValueAxis().getTranslator()
},
_calculateVisibility: function(x, y, width, height) {
var that = this,
visibleArea = that._getVisibleArea(),
rotated = that._options.rotated;
if (visibleArea.minX > x + (width || 0) || visibleArea.maxX < x || visibleArea.minY > y + (height || 0) || visibleArea.maxY < y || rotated && _isDefined(width) && 0 !== width && (visibleArea.minX === x + width || visibleArea.maxX === x) || !rotated && _isDefined(height) && 0 !== height && (visibleArea.minY === y + height || visibleArea.maxY === y)) {
that.inVisibleArea = false
} else {
that.inVisibleArea = true
}
},
isArgumentCorrect: function() {
return this.series._argumentChecker(this.argument)
},
isValueCorrect: function() {
var valueChecker = this.series._valueChecker;
return valueChecker(this.getMinValue()) && valueChecker(this.getMaxValue())
},
hasValue: function() {
return null !== this.value && null !== this.minValue && this.isArgumentCorrect() && this.isValueCorrect()
},
hasCoords: _noop,
correctPosition: _noop,
correctRadius: _noop,
correctLabelRadius: _noop,
getCrosshairData: _noop,
getPointRadius: _noop,
_populatePointShape: _noop,
_checkSymbol: _noop,
getMarkerCoords: _noop,
hide: _noop,
show: _noop,
hideMarker: _noop,
setInvisibility: _noop,
clearVisibility: _noop,
isVisible: _noop,
resetCorrection: _noop,
correctValue: _noop,
resetValue: _noop,
setPercentValue: _noop,
correctCoordinates: _noop,
coordsIn: _noop,
getTooltipParams: _noop,
applyWordWrap: _noop,
setLabelTrackerData: _noop,
updateLabelCoord: _noop,
drawLabel: _noop,
correctLabelPosition: _noop,
getMinValue: _noop,
getMaxValue: _noop,
_drawErrorBar: _noop,
getMarkerVisibility: _noop,
dispose: function() {
var that = this;
that.deleteMarker();
that.deleteLabel();
that._errorBar && this._errorBar.dispose();
that._options = that._styles = that.series = that._errorBar = null
},
getTooltipFormatObject: function(tooltip, stackPoints) {
var that = this;
var tooltipFormatObject = that._getFormatObject(tooltip);
var sharedTooltipValuesArray = [];
var tooltipStackPointsFormatObject = [];
if (stackPoints) {
stackPoints.forEach(function(point) {
if (!point.isVisible()) {
return
}
var formatObject = point._getFormatObject(tooltip);
tooltipStackPointsFormatObject.push(formatObject);
sharedTooltipValuesArray.push(formatObject.seriesName + ": " + formatObject.valueText)
});
_extend(tooltipFormatObject, {
points: tooltipStackPointsFormatObject,
valueText: sharedTooltipValuesArray.join("\n"),
stackName: that.series.getStackName() || null
})
}
var aggregationInfo = that.aggregationInfo;
if (aggregationInfo) {
var axis = that.series.getArgumentAxis();
var rangeText = axis.formatRange(aggregationInfo.intervalStart, aggregationInfo.intervalEnd, aggregationInfo.aggregationInterval);
if (rangeText) {
tooltipFormatObject.valueText += "\n" + rangeText
}
}
return tooltipFormatObject
},
setHole: function(holeValue, position) {
var that = this,
minValue = isFinite(that.minValue) ? that.minValue : 0;
if (_isDefined(holeValue)) {
if ("left" === position) {
that.leftHole = that.value - holeValue;
that.minLeftHole = minValue - holeValue
} else {
that.rightHole = that.value - holeValue;
that.minRightHole = minValue - holeValue
}
}
},
resetHoles: function() {
this.leftHole = null;
this.minLeftHole = null;
this.rightHole = null;
this.minRightHole = null
},
getLabel: function() {
return this._label
},
getLabels: function() {
return [this._label]
},
getCenterCoord: function() {
return {
x: this.x,
y: this.y
}
}
}
},
/*!****************************************************************!*\
!*** ./artifacts/transpiled/viz/series/points/bubble_point.js ***!
\****************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var extend = __webpack_require__( /*! ../../../core/utils/extend */ 0).extend,
symbolPoint = __webpack_require__( /*! ./symbol_point */ 120),
_extend = extend,
MIN_BUBBLE_HEIGHT = 20;
module.exports = _extend({}, symbolPoint, {
correctCoordinates: function(diameter) {
this.bubbleSize = diameter / 2
},
_drawMarker: function(renderer, group, animationEnabled) {
var that = this,
attr = _extend({
translateX: that.x,
translateY: that.y
}, that._getStyle());
that.graphic = renderer.circle(0, 0, animationEnabled ? 0 : that.bubbleSize).smartAttr(attr).data({
"chart-data-point": that
}).append(group)
},
getTooltipParams: function(location) {
var height, that = this,
graphic = that.graphic;
if (!graphic) {
return
}
height = graphic.getBBox().height;
return {
x: that.x,
y: that.y,
offset: height < MIN_BUBBLE_HEIGHT || "edge" === location ? height / 2 : 0
}
},
_getLabelFormatObject: function() {
var formatObject = symbolPoint._getLabelFormatObject.call(this);
formatObject.size = this.initialSize;
return formatObject
},
_updateData: function(data) {
symbolPoint._updateData.call(this, data);
this.size = this.initialSize = data.size
},
_getGraphicBBox: function() {
var that = this;
return that._getSymbolBBox(that.x, that.y, that.bubbleSize)
},
_updateMarker: function(animationEnabled, style) {
var that = this;
if (!animationEnabled) {
style = _extend({
r: that.bubbleSize,
translateX: that.x,
translateY: that.y
}, style)
}
that.graphic.smartAttr(style)
},
_getFormatObject: function(tooltip) {
var formatObject = symbolPoint._getFormatObject.call(this, tooltip);
formatObject.sizeText = tooltip.formatValue(this.initialSize);
return formatObject
},
_storeTrackerR: function() {
return this.bubbleSize
},
_getLabelCoords: function(label) {
var coords;
if ("inside" === label.getLayoutOptions().position) {
coords = this._getLabelCoordOfPosition(label, "inside")
} else {
coords = symbolPoint._getLabelCoords.call(this, label)
}
return coords
}
})
},
/*!*******************************************************************!*\
!*** ./artifacts/transpiled/viz/series/points/range_bar_point.js ***!
\*******************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var noop = __webpack_require__( /*! ../../../core/utils/common */ 4).noop,
extend = __webpack_require__( /*! ../../../core/utils/extend */ 0).extend,
barPoint = __webpack_require__( /*! ./bar_point */ 203),
rangeSymbolPointMethods = __webpack_require__( /*! ./range_symbol_point */ 407),
_extend = extend;
module.exports = _extend({}, barPoint, {
deleteLabel: rangeSymbolPointMethods.deleteLabel,
_getFormatObject: rangeSymbolPointMethods._getFormatObject,
clearVisibility: function() {
var graphic = this.graphic;
if (graphic && graphic.attr("visibility")) {
graphic.attr({
visibility: null
})
}
},
setInvisibility: function() {
var graphic = this.graphic;
if (graphic && "hidden" !== graphic.attr("visibility")) {
graphic.attr({
visibility: "hidden"
})
}
this._topLabel.draw(false);
this._bottomLabel.draw(false)
},
getTooltipParams: function(location) {
var x, y, that = this,
edgeLocation = "edge" === location;
if (that._options.rotated) {
x = edgeLocation ? that.x + that.width : that.x + that.width / 2;
y = that.y + that.height / 2
} else {
x = that.x + that.width / 2;
y = edgeLocation ? that.y : that.y + that.height / 2
}
return {
x: x,
y: y,
offset: 0
}
},
_translate: function() {
var that = this,
barMethods = barPoint;
barMethods._translate.call(that);
if (that._options.rotated) {
that.width = that.width || 1
} else {
that.height = that.height || 1
}
},
hasCoords: rangeSymbolPointMethods.hasCoords,
_updateData: rangeSymbolPointMethods._updateData,
_getLabelPosition: rangeSymbolPointMethods._getLabelPosition,
_getLabelMinFormatObject: rangeSymbolPointMethods._getLabelMinFormatObject,
_updateLabelData: rangeSymbolPointMethods._updateLabelData,
_updateLabelOptions: rangeSymbolPointMethods._updateLabelOptions,
getCrosshairData: rangeSymbolPointMethods.getCrosshairData,
_createLabel: rangeSymbolPointMethods._createLabel,
_checkOverlay: rangeSymbolPointMethods._checkOverlay,
_checkLabelsOverlay: rangeSymbolPointMethods._checkLabelsOverlay,
_getOverlayCorrections: rangeSymbolPointMethods._getOverlayCorrections,
_drawLabel: rangeSymbolPointMethods._drawLabel,
_getLabelCoords: rangeSymbolPointMethods._getLabelCoords,
_getGraphicBBox: function(location) {
var isTop = "top" === location,
bBox = barPoint._getGraphicBBox.call(this);
if (!this._options.rotated) {
bBox.y = isTop ? bBox.y : bBox.y + bBox.height;
bBox.height = 0
} else {
bBox.x = isTop ? bBox.x + bBox.width : bBox.x;
bBox.width = 0
}
return bBox
},
getLabel: rangeSymbolPointMethods.getLabel,
getLabels: rangeSymbolPointMethods.getLabels,
getBoundingRect: noop,
getMinValue: rangeSymbolPointMethods.getMinValue,
getMaxValue: rangeSymbolPointMethods.getMaxValue
})
},
/*!***************************************************************!*\
!*** ./artifacts/transpiled/viz/series/points/stock_point.js ***!
\***************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var extend = __webpack_require__( /*! ../../../core/utils/extend */ 0).extend,
isNumeric = __webpack_require__( /*! ../../../core/utils/type */ 1).isNumeric,
candlestickPoint = __webpack_require__( /*! ./candlestick_point */ 408),
_extend = extend,
_isNumeric = isNumeric;
module.exports = _extend({}, candlestickPoint, {
_getPoints: function() {
var points, that = this,
createPoint = that._options.rotated ? function(x, y) {
return [y, x]
} : function(x, y) {
return [x, y]
},
openYExist = _isNumeric(that.openY),
closeYExist = _isNumeric(that.closeY),
x = that.x,
width = that.width;
points = [].concat(createPoint(x, that.highY));
openYExist && (points = points.concat(createPoint(x, that.openY)));
openYExist && (points = points.concat(createPoint(x - width / 2, that.openY)));
openYExist && (points = points.concat(createPoint(x, that.openY)));
closeYExist && (points = points.concat(createPoint(x, that.closeY)));
closeYExist && (points = points.concat(createPoint(x + width / 2, that.closeY)));
closeYExist && (points = points.concat(createPoint(x, that.closeY)));
points = points.concat(createPoint(x, that.lowY));
return points
},
_drawMarkerInGroup: function(group, attributes, renderer) {
this.graphic = renderer.path(this._getPoints(), "line").attr({
"stroke-linecap": "square"
}).attr(attributes).data({
"chart-data-point": this
}).sharp().append(group)
},
_getMinTrackerWidth: function() {
var width = 2 + this._styles.normal["stroke-width"];
return width + width % 2
}
})
},
/*!***************************************************************!*\
!*** ./artifacts/transpiled/viz/series/points/polar_point.js ***!
\***************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var extend = __webpack_require__( /*! ../../../core/utils/extend */ 0).extend,
_extend = extend,
symbolPoint = __webpack_require__( /*! ./symbol_point */ 120),
barPoint = __webpack_require__( /*! ./bar_point */ 203),
piePoint = __webpack_require__( /*! ./pie_point */ 406),
isDefined = __webpack_require__( /*! ../../../core/utils/type */ 1).isDefined,
vizUtils = __webpack_require__( /*! ../../core/utils */ 12),
normalizeAngle = vizUtils.normalizeAngle,
_math = Math,
_max = _math.max,
RADIAL_LABEL_INDENT = __webpack_require__( /*! ../../components/consts */ 119).radialLabelIndent,
ERROR_BARS_ANGLE_OFFSET = 90,
CANVAS_POSITION_END = "canvas_position_end",
CANVAS_POSITION_DEFAULT = "canvas_position_default";
exports.polarSymbolPoint = _extend({}, symbolPoint, {
_getLabelCoords: piePoint._getLabelCoords,
_moveLabelOnCanvas: barPoint._moveLabelOnCanvas,
_getLabelPosition: function() {
return "outside"
},
_getCoords: function(argument, value) {
var axis = this.series.getValueAxis(),
startAngle = axis.getAngles()[0],
angle = this._getArgTranslator().translate(argument),
radius = this._getValTranslator().translate(value),
coords = vizUtils.convertPolarToXY(axis.getCenter(), axis.getAngles()[0], angle, radius);
coords.angle = angle + startAngle - 90, coords.radius = radius;
return coords
},
_translate: function() {
var that = this;
var center = that.series.getValueAxis().getCenter();
var coord = that._getCoords(that.argument, that.value);
var maxRadius = that._getValTranslator().translate(CANVAS_POSITION_END);
var normalizedRadius = isDefined(coord.radius) && coord.radius >= 0 ? coord.radius : null;
that.vx = normalizeAngle(coord.angle);
that.vy = that.radiusOuter = that.radiusLabels = normalizedRadius;
that.radiusLabels += RADIAL_LABEL_INDENT;
that.radius = normalizedRadius;
that.middleAngle = -coord.angle;
that.angle = -coord.angle;
that.x = coord.x;
that.y = coord.y;
that.defaultX = that.centerX = center.x;
that.defaultY = that.centerY = center.y;
that._translateErrorBars();
that.inVisibleArea = that._checkRadiusForVisibleArea(normalizedRadius, maxRadius)
},
_checkRadiusForVisibleArea: function(radius, maxRadius) {
return isDefined(radius) && radius <= maxRadius
},
_translateErrorBars: function() {
var that = this,
errorBars = that._options.errorBars,
translator = that._getValTranslator();
if (!errorBars) {
return
}
isDefined(that.lowError) && (that._lowErrorCoord = that.centerY - translator.translate(that.lowError));
isDefined(that.highError) && (that._highErrorCoord = that.centerY - translator.translate(that.highError));
that._errorBarPos = that.centerX;
that._baseErrorBarPos = "stdDeviation" === errorBars.type ? that._lowErrorCoord + (that._highErrorCoord - that._lowErrorCoord) / 2 : that.centerY - that.radius
},
_getTranslates: function(animationEnabled) {
return animationEnabled ? this.getDefaultCoords() : {
x: this.x,
y: this.y
}
},
getDefaultCoords: function() {
var cosSin = vizUtils.getCosAndSin(-this.angle),
radius = this._getValTranslator().translate(CANVAS_POSITION_DEFAULT),
x = this.defaultX + radius * cosSin.cos,
y = this.defaultY + radius * cosSin.sin;
return {
x: x,
y: y
}
},
_addLabelAlignmentAndOffset: function(label, coord) {
return coord
},
_checkLabelPosition: function(label, coord) {
var that = this,
visibleArea = that._getVisibleArea(),
graphicBBox = that._getGraphicBBox();
if (that._isPointInVisibleArea(visibleArea, graphicBBox)) {
coord = that._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())
}
return coord
},
_getErrorBarSettings: function(errorBarOptions, animationEnabled) {
var settings = symbolPoint._getErrorBarSettings.call(this, errorBarOptions, animationEnabled);
settings.rotate = ERROR_BARS_ANGLE_OFFSET - this.angle;
settings.rotateX = this.centerX;
settings.rotateY = this.centerY;
return settings
},
getCoords: function(min) {
return min ? this.getDefaultCoords() : {
x: this.x,
y: this.y
}
}
});
exports.polarBarPoint = _extend({}, barPoint, {
_translateErrorBars: exports.polarSymbolPoint._translateErrorBars,
_getErrorBarSettings: exports.polarSymbolPoint._getErrorBarSettings,
_moveLabelOnCanvas: barPoint._moveLabelOnCanvas,
_getLabelCoords: piePoint._getLabelCoords,
_getLabelConnector: piePoint._getLabelConnector,
getTooltipParams: piePoint.getTooltipParams,
_getLabelPosition: piePoint._getLabelPosition,
_getCoords: exports.polarSymbolPoint._getCoords,
_translate: function() {
var that = this;
var translator = that._getValTranslator();
var businessRange = translator.getBusinessRange();
var maxRadius = translator.translate(CANVAS_POSITION_END);
that.radiusInner = translator.translate(that.minValue);
exports.polarSymbolPoint._translate.call(that);
if (null === that.radiusInner) {
that.radiusInner = that.radius = maxRadius
} else {
if (null === that.radius) {
that.radius = that.value >= businessRange.minVisible ? maxRadius : 0
} else {
if (that.radius > maxRadius) {
that.radius = maxRadius
}
}
}
that.radiusOuter = that.radiusLabels = _max(that.radiusInner, that.radius);
that.radiusLabels += RADIAL_LABEL_INDENT;
that.radiusInner = that.defaultRadius = _math.min(that.radiusInner, that.radius);
that.middleAngle = that.angle = -normalizeAngle(that.middleAngleCorrection - that.angle)
},
_checkRadiusForVisibleArea: function(radius) {
return isDefined(radius) || this._getValTranslator().translate(this.minValue) > 0
},
_getErrorBarBaseEdgeLength: function() {
var coord = this.getMarkerCoords();
return _math.PI * coord.outerRadius * _math.abs(coord.startAngle - coord.endAngle) / 180
},
getMarkerCoords: function() {
return {
x: this.centerX,
y: this.centerY,
outerRadius: this.radiusOuter,
innerRadius: this.defaultRadius,
startAngle: this.middleAngle - this.interval / 2,
endAngle: this.middleAngle + this.interval / 2
}
},
_drawMarker: function(renderer, group, animationEnabled) {
var that = this,
styles = that._getStyle(),
coords = that.getMarkerCoords(),
innerRadius = coords.innerRadius,
outerRadius = coords.outerRadius,
start = that._getCoords(that.argument, CANVAS_POSITION_DEFAULT),
x = coords.x,
y = coords.y;
if (animationEnabled) {
innerRadius = 0;
outerRadius = 0;
x = start.x;
y = start.y
}
that.graphic = renderer.arc(x, y, innerRadius, outerRadius, coords.startAngle, coords.endAngle).attr(styles).data({
"chart-data-point": that
}).append(group)
},
_checkLabelPosition: function(label, coord) {
var that = this,
visibleArea = that._getVisibleArea(),
angleFunctions = vizUtils.getCosAndSin(that.middleAngle),
x = that.centerX + that.defaultRadius * angleFunctions.cos,
y = that.centerY - that.defaultRadius * angleFunctions.sin;
if (x > visibleArea.minX && x < visibleArea.maxX && y > visibleArea.minY && y < visibleArea.maxY) {
coord = that._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())
}
return coord
},
_addLabelAlignmentAndOffset: function(label, coord) {
return coord
},
correctCoordinates: function(correctOptions) {
this.middleAngleCorrection = correctOptions.offset;
this.interval = correctOptions.width
},
coordsIn: function(x, y) {
var val = vizUtils.convertXYToPolar(this.series.getValueAxis().getCenter(), x, y),
coords = this.getMarkerCoords(),
isBetweenAngles = coords.startAngle < coords.endAngle ? -val.phi >= coords.startAngle && -val.phi <= coords.endAngle : -val.phi <= coords.startAngle && -val.phi >= coords.endAngle;
return val.r >= coords.innerRadius && val.r <= coords.outerRadius && isBetweenAngles
}
})
},
/*!*********************************************************!*\
!*** ./artifacts/transpiled/viz/series/range_series.js ***!
\*********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
})
} else {
obj[key] = value
}
return obj
}
var extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
_extend = extend,
_isDefined = __webpack_require__( /*! ../../core/utils/type */ 1).isDefined,
_map = __webpack_require__( /*! ../core/utils */ 12).map,
_noop = __webpack_require__( /*! ../../core/utils/common */ 4).noop,
scatterSeries = __webpack_require__( /*! ./scatter_series */ 107).chart,
barSeries = __webpack_require__( /*! ./bar_series */ 145).chart.bar,
areaSeries = __webpack_require__( /*! ./area_series */ 169).chart.area;
exports.chart = {};
var baseRangeSeries = {
areErrorBarsVisible: _noop,
_createErrorBarGroup: _noop,
_checkData: function(data, skippedFields) {
var valueFields = this.getValueFields();
return scatterSeries._checkData.call(this, data, skippedFields, {
minValue: valueFields[0],
value: valueFields[1]
}) && data.minValue === data.minValue
},
getValueRangeInitialValue: scatterSeries.getValueRangeInitialValue,
_getPointDataSelector: function(data) {
var _this = this;
var valueFields = this.getValueFields();
var val1Field = valueFields[0];
var val2Field = valueFields[1];
var tagField = this.getTagField();
var argumentField = this.getArgumentField();
return function(data) {
return {
tag: data[tagField],
minValue: _this._processEmptyValue(data[val1Field]),
value: _this._processEmptyValue(data[val2Field]),
argument: data[argumentField],
data: data
}
}
},
_defaultAggregator: "range",
_aggregators: {
range: function(_ref, series) {
var _data$reduce;
var intervalStart = _ref.intervalStart,
data = _ref.data;
if (!data.length) {
return
}
var valueFields = series.getValueFields();
var val1Field = valueFields[0];
var val2Field = valueFields[1];
var result = data.reduce(function(result, item) {
var val1 = item[val1Field];
var val2 = item[val2Field];
if (!_isDefined(val1) || !_isDefined(val2)) {
return result
}
result[val1Field] = Math.min(result[val1Field], Math.min(val1, val2));
result[val2Field] = Math.max(result[val2Field], Math.max(val1, val2));
return result
}, (_data$reduce = {}, _defineProperty(_data$reduce, val1Field, 1 / 0), _defineProperty(_data$reduce, val2Field, -(1 / 0)), _defineProperty(_data$reduce, series.getArgumentField(), intervalStart), _data$reduce));
if (!isFinite(result[val1Field]) || !isFinite(result[val2Field])) {
if (data.filter(function(i) {
return null === i[val1Field] && null === i[val2Field]
}).length === data.length) {
result[val1Field] = result[val2Field] = null
} else {
return
}
}
return result
}
},
getValueFields: function() {
return [this._options.rangeValue1Field || "val1", this._options.rangeValue2Field || "val2"]
},
getSeriesPairCoord: function(coord, isArgument) {
var oppositeCoord = null;
var rotated = this._options.rotated;
var isOpposite = !isArgument && !rotated || isArgument && rotated;
var coordName = isOpposite ? "vy" : "vx";
var minCoordName = rotated ? "minX" : "minY";
var oppositeCoordName = isOpposite ? "vx" : "vy";
var points = this.getPoints();
for (var i = 0; i < points.length; i++) {
var p = points[i];
var tmpCoord = void 0;
if (isArgument) {
tmpCoord = p.getCenterCoord()[coordName[1]] === coord ? p[oppositeCoordName] : void 0
} else {
var coords = [Math.min(p[coordName], p[minCoordName]), Math.max(p[coordName], p[minCoordName])];
tmpCoord = coord >= coords[0] && coord <= coords[1] ? p[oppositeCoordName] : void 0
}
if (this.checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
oppositeCoord = tmpCoord;
break
}
}
return oppositeCoord
}
};
exports.chart.rangebar = _extend({}, barSeries, baseRangeSeries);
exports.chart.rangearea = _extend({}, areaSeries, {
_drawPoint: function(options) {
var point = options.point;
if (point.isInVisibleArea()) {
point.clearVisibility();
point.draw(this._renderer, options.groups);
this._drawnPoints.push(point);
if (!point.visibleTopMarker) {
point.hideMarker("top")
}
if (!point.visibleBottomMarker) {
point.hideMarker("bottom")
}
} else {
point.setInvisibility()
}
},
_prepareSegment: function(points, rotated) {
var processedPoints = this._processSinglePointsAreaSegment(points, rotated),
processedMinPointsCoords = _map(processedPoints, function(pt) {
return pt.getCoords(true)
});
return {
line: processedPoints,
bottomLine: processedMinPointsCoords,
area: _map(processedPoints, function(pt) {
return pt.getCoords()
}).concat(processedMinPointsCoords.slice().reverse()),
singlePointSegment: processedPoints !== points
}
},
_getDefaultSegment: function(segment) {
var defaultSegment = areaSeries._getDefaultSegment.call(this, segment);
defaultSegment.bottomLine = defaultSegment.line;
return defaultSegment
},
_removeElement: function(element) {
areaSeries._removeElement.call(this, element);
element.bottomLine && element.bottomLine.remove()
},
_drawElement: function(segment, group) {
var that = this,
drawnElement = areaSeries._drawElement.call(that, segment, group);
drawnElement.bottomLine = that._bordersGroup && that._createBorderElement(segment.bottomLine, {
"stroke-width": that._styles.normal.border["stroke-width"]
}).append(that._bordersGroup);
return drawnElement
},
_applyStyle: function(style) {
var that = this,
elementsGroup = that._elementsGroup,
bordersGroup = that._bordersGroup;
elementsGroup && elementsGroup.smartAttr(style.elements);
bordersGroup && bordersGroup.attr(style.border);
(that._graphics || []).forEach(function(graphic) {
graphic.line && graphic.line.attr({
"stroke-width": style.border["stroke-width"]
});
graphic.bottomLine && graphic.bottomLine.attr({
"stroke-width": style.border["stroke-width"]
})
})
},
_updateElement: function(element, segment, animate, complete) {
var bottomLineParams = {
points: segment.bottomLine
},
bottomBorderElement = element.bottomLine;
areaSeries._updateElement.apply(this, arguments);
if (bottomBorderElement) {
animate ? bottomBorderElement.animate(bottomLineParams) : bottomBorderElement.attr(bottomLineParams)
}
}
}, baseRangeSeries)
},
/*!**********************************************************!*\
!*** ./artifacts/transpiled/viz/series/bubble_series.js ***!
\**********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
})
} else {
obj[key] = value
}
return obj
}
var lineSeries = __webpack_require__( /*! ./line_series */ 204).chart.line,
scatterSeries = __webpack_require__( /*! ./scatter_series */ 107).chart,
areaSeries = __webpack_require__( /*! ./area_series */ 169).chart.area,
barSeries = __webpack_require__( /*! ./bar_series */ 145),
chartBarSeries = barSeries.chart.bar,
polarBarSeries = barSeries.polar.bar,
extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
each = __webpack_require__( /*! ../../core/utils/iterator */ 3).each,
_extend = extend,
_each = each,
_noop = __webpack_require__( /*! ../../core/utils/common */ 4).noop;
exports.chart = {};
exports.chart.bubble = _extend({}, scatterSeries, {
_calculateErrorBars: _noop,
_getMainColor: chartBarSeries._getMainColor,
_createPointStyles: chartBarSeries._createPointStyles,
_updatePointsVisibility: chartBarSeries._updatePointsVisibility,
_getOptionsForPoint: chartBarSeries._getOptionsForPoint,
_applyMarkerClipRect: lineSeries._applyElementsClipRect,
_parsePointStyle: polarBarSeries._parsePointStyle,
_createLegendState: areaSeries._createLegendState,
_setMarkerGroupSettings: polarBarSeries._setMarkerGroupSettings,
areErrorBarsVisible: _noop,
_createErrorBarGroup: _noop,
_checkData: function(data, skippedFields) {
return scatterSeries._checkData.call(this, data, skippedFields, {
value: this.getValueFields()[0],
size: this.getSizeField()
})
},
_getPointDataSelector: function(data, options) {
var sizeField = this.getSizeField();
var baseGetter = scatterSeries._getPointDataSelector.call(this);
return function(data) {
var pointData = baseGetter(data);
pointData.size = data[sizeField];
return pointData
}
},
_aggregators: {
avg: function(_ref, series) {
var _ref2;
var data = _ref.data,
intervalStart = _ref.intervalStart;
if (!data.length) {
return
}
var valueField = series.getValueFields()[0];
var sizeField = series.getSizeField();
var aggregate = data.reduce(function(result, item) {
result[0] += item[valueField];
result[1] += item[sizeField];
result[2]++;
return result
}, [0, 0, 0]);
return _ref2 = {}, _defineProperty(_ref2, valueField, aggregate[0] / aggregate[2]), _defineProperty(_ref2, sizeField, aggregate[1] / aggregate[2]), _defineProperty(_ref2, series.getArgumentField(), intervalStart), _ref2
}
},
getValueFields: function() {
return [this._options.valueField || "val"]
},
getSizeField: function() {
return this._options.sizeField || "size"
},
_animate: function() {
var that = this,
lastPointIndex = that._drawnPoints.length - 1,
labelsGroup = that._labelsGroup,
labelAnimFunc = function() {
labelsGroup && labelsGroup.animate({
opacity: 1
}, {
duration: that._defaultDuration
})
};
_each(that._drawnPoints || [], function(i, p) {
p.animate(i === lastPointIndex ? labelAnimFunc : void 0, {
r: p.bubbleSize,
translateX: p.x,
translateY: p.y
})
})
},
_patchMarginOptions: function(options) {
options.processBubbleSize = true;
return options
}
})
},
/*!*******************************************************!*\
!*** ./artifacts/transpiled/viz/series/pie_series.js ***!
\*******************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var noop = __webpack_require__( /*! ../../core/utils/common */ 4).noop,
each = __webpack_require__( /*! ../../core/utils/iterator */ 3).each,
scatterSeries = __webpack_require__( /*! ./scatter_series */ 107),
vizUtils = __webpack_require__( /*! ../core/utils */ 12),
extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
chartScatterSeries = scatterSeries.chart,
barSeries = __webpack_require__( /*! ./bar_series */ 145).chart.bar,
_extend = extend,
_each = each,
_noop = noop,
_map = vizUtils.map,
_isFinite = isFinite,
_max = Math.max,
ANIMATION_DURATION = .7,
INSIDE = "inside";
exports.pie = _extend({}, barSeries, {
_setGroupsSettings: function() {
chartScatterSeries._setGroupsSettings.apply(this, arguments);
this._labelsGroup.attr({
"pointer-events": null
})
},
_createErrorBarGroup: _noop,
_drawPoint: function(options) {
var point = options.point,
legendCallback = this._legendCallback;
chartScatterSeries._drawPoint.call(this, options);
!point.isVisible() && point.setInvisibility();
point.isSelected() && legendCallback()
},
_getOldPoint: function(data, oldPointsByArgument, index) {
var point = (this._points || [])[index];
if (point) {
oldPointsByArgument[point.argument.valueOf()] = oldPointsByArgument[point.argument.valueOf()].filter(function(p) {
return p !== point
})
}
return point
},
adjustLabels: function(moveLabelsFromCenter) {
return (this._points || []).reduce(function(r, p) {
if (p._label.isVisible()) {
p.setLabelTrackerData();
r = p.applyWordWrap(moveLabelsFromCenter) || r;
p.updateLabelCoord(moveLabelsFromCenter);
return r
}
}, false)
},
_applyElementsClipRect: _noop,
getColor: _noop,
areErrorBarsVisible: _noop,
drawLabelsWOPoints: function() {
var that = this;
if (that._options.label.position === INSIDE) {
return false
}
that._labelsGroup.append(that._extGroups.labelsGroup);
(that._points || []).forEach(function(point) {
point.drawLabel()
});
return true
},
getPointsCount: function() {
var _this = this;
return this._data.filter(function(d) {
return _this._checkData(d)
}).length
},
setMaxPointsCount: function(count) {
this._pointsCount = count
},
_getCreatingPointOptions: function(data, dataIndex) {
return this._getPointOptions(data, dataIndex)
},
_updateOptions: function(options) {
this.labelSpace = 0;
this.innerRadius = "pie" === this.type ? 0 : options.innerRadius
},
_checkData: function(data, skippedFields) {
var base = barSeries._checkData.call(this, data, skippedFields, {
value: this.getValueFields()[0]
});
return this._options.paintNullPoints ? base : base && null !== data.value
},
_createGroups: chartScatterSeries._createGroups,
_setMarkerGroupSettings: function() {
this._markersGroup.attr({
"class": "dxc-markers"
})
},
_getMainColor: function(data, point) {
var pointsByArg = this.getPointsByArg(data.argument);
var argumentIndex = point ? pointsByArg.indexOf(point) : pointsByArg.length;
return this._options.mainSeriesColor(data.argument, argumentIndex, this._pointsCount)
},
_getPointOptions: function(data) {
return this._parsePointOptions(this._preparePointOptions(), this._options.label, data)
},
_getRangeData: function() {
return this._rangeData
},
_createPointStyles: function(pointOptions, data, point) {
var that = this,
mainColor = pointOptions.color || that._getMainColor(data, point);
return {
normal: that._parsePointStyle(pointOptions, mainColor, mainColor),
hover: that._parsePointStyle(pointOptions.hoverStyle, mainColor, mainColor),
selection: that._parsePointStyle(pointOptions.selectionStyle, mainColor, mainColor),
legendStyles: {
normal: that._createLegendState(pointOptions, mainColor),
hover: that._createLegendState(pointOptions.hoverStyle, mainColor),
selection: that._createLegendState(pointOptions.selectionStyle, mainColor)
}
}
},
_getArrangeMinShownValue: function(points, total) {
var minSegmentSize = this._options.minSegmentSize,
totalMinSegmentSize = 0,
totalNotMinValues = 0;
total = total || points.length;
_each(points, function(_, point) {
if (point.isVisible()) {
if (point.normalInitialValue < minSegmentSize * total / 360) {
totalMinSegmentSize += minSegmentSize
} else {
totalNotMinValues += point.normalInitialValue
}
}
});
return totalMinSegmentSize < 360 ? minSegmentSize * totalNotMinValues / (360 - totalMinSegmentSize) : 0
},
_applyArrangeCorrection: function(points, minShownValue, total) {
var percent, options = this._options,
isClockWise = "anticlockwise" !== options.segmentsDirection,
shiftedAngle = _isFinite(options.startAngle) ? vizUtils.normalizeAngle(options.startAngle) : 0,
minSegmentSize = options.minSegmentSize,
correction = 0,
zeroTotalCorrection = 0;
if (0 === total) {
total = points.filter(function(el) {
return el.isVisible()
}).length;
zeroTotalCorrection = 1
}
_each(isClockWise ? points : points.concat([]).reverse(), function(_, point) {
var updatedZeroValue, val = point.isVisible() ? zeroTotalCorrection || point.normalInitialValue : 0;
if (minSegmentSize && point.isVisible() && val < minShownValue) {
updatedZeroValue = minShownValue
}
percent = val / total;
point.correctValue(correction, percent, zeroTotalCorrection + (updatedZeroValue || 0));
point.shiftedAngle = shiftedAngle;
correction += updatedZeroValue || val
});
this._rangeData = {
val: {
min: 0,
max: correction
}
}
},
_removePoint: function(point) {
var points = this.getPointsByArg(point.argument);
points.splice(points.indexOf(point), 1);
point.dispose()
},
arrangePoints: function() {
var minShownValue, total, points, maxValue, that = this,
originalPoints = that._points || [],
minSegmentSize = that._options.minSegmentSize,
isAllPointsNegative = true,
i = 0,
len = originalPoints.length;
while (i < len && isAllPointsNegative) {
isAllPointsNegative = originalPoints[i].value <= 0;
i++
}
points = that._points = _map(originalPoints, function(point) {
if (null === point.value || !isAllPointsNegative && point.value < 0) {
that._removePoint(point);
return null
} else {
return point
}
});
maxValue = points.reduce(function(max, p) {
return _max(max, Math.abs(p.initialValue))
}, 0);
points.forEach(function(p) {
p.normalInitialValue = p.initialValue / (0 !== maxValue ? maxValue : 1)
});
total = points.reduce(function(total, point) {
return total + (point.isVisible() ? point.normalInitialValue : 0)
}, 0);
if (minSegmentSize) {
minShownValue = this._getArrangeMinShownValue(points, total)
}
that._applyArrangeCorrection(points, minShownValue, total)
},
correctPosition: function(correction, canvas) {
var debug = __webpack_require__( /*! ../../core/utils/console */ 65).debug;
debug.assert(correction, "correction was not passed");
debug.assertParam(correction.centerX, "correction.centerX was not passed");
debug.assertParam(correction.centerY, "correction.centerY was not passed");
debug.assertParam(correction.radiusInner, "correction.radiusInner was not passed");
debug.assertParam(correction.radiusOuter, "correction.radiusOuter was not passed");
debug.assertParam(canvas, "correction.canvas was not passed");
_each(this._points, function(_, point) {
point.correctPosition(correction)
});
this.setVisibleArea(canvas)
},
correctRadius: function(correction) {
this._points.forEach(function(point) {
point.correctRadius(correction)
})
},
correctLabelRadius: function(labelRadius) {
this._points.forEach(function(point) {
point.correctLabelRadius(labelRadius)
})
},
setVisibleArea: function(canvas) {
this._visibleArea = {
minX: canvas.left,
maxX: canvas.width - canvas.right,
minY: canvas.top,
maxY: canvas.height - canvas.bottom
}
},
_applyVisibleArea: _noop,
_animate: function(firstDrawing) {
var animatePoint, that = this,
points = that._points,
pointsCount = points && points.length,
completeFunc = function() {
that._animateComplete()
};
if (firstDrawing) {
animatePoint = function(p, i) {
p.animate(i === pointsCount - 1 ? completeFunc : void 0, ANIMATION_DURATION, (1 - ANIMATION_DURATION) * i / (pointsCount - 1))
}
} else {
animatePoint = function(p, i) {
p.animate(i === pointsCount - 1 ? completeFunc : void 0)
}
}
points.forEach(animatePoint)
},
getVisiblePoints: function() {
return _map(this._points, function(p) {
return p.isVisible() ? p : null
})
},
getPointsByKeys: function(arg, argumentIndex) {
var pointsByArg = this.getPointsByArg(arg);
return pointsByArg[argumentIndex] && [pointsByArg[argumentIndex]] || []
}
});
exports.doughnut = exports.donut = exports.pie
},
/*!*************************************************************!*\
!*** ./artifacts/transpiled/viz/series/financial_series.js ***!
\*************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var scatterSeries = __webpack_require__( /*! ./scatter_series */ 107).chart,
barSeries = __webpack_require__( /*! ./bar_series */ 145).chart.bar,
_extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
_isDefined = __webpack_require__( /*! ../../core/utils/type */ 1).isDefined,
_normalizeEnum = __webpack_require__( /*! ../core/utils */ 12).normalizeEnum,
_noop = __webpack_require__( /*! ../../core/utils/common */ 4).noop,
DEFAULT_FINANCIAL_POINT_SIZE = 10;
exports.stock = _extend({}, scatterSeries, {
_animate: _noop,
_applyMarkerClipRect: function(settings) {
settings["clip-path"] = this._forceClipping ? this._paneClipRectID : this._widePaneClipRectID
},
_updatePointsVisibility: barSeries._updatePointsVisibility,
_getOptionsForPoint: barSeries._getOptionsForPoint,
_createErrorBarGroup: _noop,
areErrorBarsVisible: _noop,
_createGroups: scatterSeries._createGroups,
_setMarkerGroupSettings: function() {
var that = this,
markersGroup = that._markersGroup,
styles = that._createPointStyles(that._getMarkerGroupOptions()),
defaultStyle = _extend(styles.normal, {
"class": "default-markers"
}),
defaultPositiveStyle = _extend(styles.positive.normal, {
"class": "default-positive-markers"
}),
reductionStyle = _extend(styles.reduction.normal, {
"class": "reduction-markers"
}),
reductionPositiveStyle = _extend(styles.reductionPositive.normal, {
"class": "reduction-positive-markers"
}),
markerSettings = {
"class": "dxc-markers"
};
that._applyMarkerClipRect(markerSettings);
markersGroup.attr(markerSettings);
that._createGroup("defaultMarkersGroup", markersGroup, markersGroup, defaultStyle);
that._createGroup("reductionMarkersGroup", markersGroup, markersGroup, reductionStyle);
that._createGroup("defaultPositiveMarkersGroup", markersGroup, markersGroup, defaultPositiveStyle);
that._createGroup("reductionPositiveMarkersGroup", markersGroup, markersGroup, reductionPositiveStyle)
},
_setGroupsSettings: function() {
scatterSeries._setGroupsSettings.call(this, false)
},
_getCreatingPointOptions: function() {
var defaultPointOptions, that = this,
creatingPointOptions = that._predefinedPointOptions;
if (!creatingPointOptions) {
defaultPointOptions = this._getPointOptions();
that._predefinedPointOptions = creatingPointOptions = _extend(true, {
styles: {}
}, defaultPointOptions);
creatingPointOptions.styles.normal = creatingPointOptions.styles.positive.normal = creatingPointOptions.styles.reduction.normal = creatingPointOptions.styles.reductionPositive.normal = {
"stroke-width": defaultPointOptions.styles && defaultPointOptions.styles.normal && defaultPointOptions.styles.normal["stroke-width"]
}
}
return creatingPointOptions
},
_checkData: function(data, skippedFields) {
var valueFields = this.getValueFields();
return scatterSeries._checkData.call(this, data, skippedFields, {
openValue: valueFields[0],
highValue: valueFields[1],
lowValue: valueFields[2],
closeValue: valueFields[3]
}) && data.highValue === data.highValue && data.lowValue === data.lowValue
},
_getPointDataSelector: function(data, options) {
var _this = this;
var level, that = this,
valueFields = that.getValueFields(),
argumentField = that.getArgumentField(),
openValueField = valueFields[0],
highValueField = valueFields[1],
lowValueField = valueFields[2],
closeValueField = valueFields[3];
that.level = that._options.reduction.level;
switch (_normalizeEnum(that.level)) {
case "open":
level = openValueField;
break;
case "high":
level = highValueField;
break;
case "low":
level = lowValueField;
break;
default:
level = closeValueField;
that.level = "close"
}
var prevLevelValue = void 0;
return function(data) {
var reductionValue = data[level];
var isReduction = false;
if (_isDefined(reductionValue)) {
if (_isDefined(prevLevelValue)) {
isReduction = reductionValue < prevLevelValue
}
prevLevelValue = reductionValue
}
return {
argument: data[argumentField],
highValue: _this._processEmptyValue(data[highValueField]),
lowValue: _this._processEmptyValue(data[lowValueField]),
closeValue: _this._processEmptyValue(data[closeValueField]),
openValue: _this._processEmptyValue(data[openValueField]),
reductionValue: reductionValue,
tag: data[that.getTagField()],
isReduction: isReduction,
data: data
}
}
},
_parsePointStyle: function(style, defaultColor, innerColor) {
return {
stroke: style.color || defaultColor,
"stroke-width": style.width,
fill: style.color || innerColor
}
},
_getDefaultStyle: function(options) {
var that = this,
mainPointColor = options.color || that._options.mainSeriesColor;
return {
normal: that._parsePointStyle(options, mainPointColor, mainPointColor),
hover: that._parsePointStyle(options.hoverStyle, mainPointColor, mainPointColor),
selection: that._parsePointStyle(options.selectionStyle, mainPointColor, mainPointColor)
}
},
_getReductionStyle: function(options) {
var that = this,
reductionColor = options.reduction.color;
return {
normal: that._parsePointStyle({
color: reductionColor,
width: options.width,
hatching: options.hatching
}, reductionColor, reductionColor),
hover: that._parsePointStyle(options.hoverStyle, reductionColor, reductionColor),
selection: that._parsePointStyle(options.selectionStyle, reductionColor, reductionColor)
}
},
_createPointStyles: function(pointOptions) {
var positiveStyle, reductionStyle, reductionPositiveStyle, that = this,
innerColor = that._options.innerColor,
styles = that._getDefaultStyle(pointOptions);
positiveStyle = _extend(true, {}, styles);
reductionStyle = that._getReductionStyle(pointOptions);
reductionPositiveStyle = _extend(true, {}, reductionStyle);
positiveStyle.normal.fill = positiveStyle.hover.fill = positiveStyle.selection.fill = innerColor;
reductionPositiveStyle.normal.fill = reductionPositiveStyle.hover.fill = reductionPositiveStyle.selection.fill = innerColor;
styles.positive = positiveStyle;
styles.reduction = reductionStyle;
styles.reductionPositive = reductionPositiveStyle;
return styles
},
_endUpdateData: function() {
delete this._predefinedPointOptions
},
_defaultAggregator: "ohlc",
_aggregators: {
ohlc: function(_ref, series) {
var intervalStart = _ref.intervalStart,
data = _ref.data;
if (!data.length) {
return
}
var result = {},
valueFields = series.getValueFields(),
highValueField = valueFields[1],
lowValueField = valueFields[2];
result[highValueField] = -(1 / 0);
result[lowValueField] = 1 / 0;
result = data.reduce(function(result, item) {
if (null !== item[highValueField]) {
result[highValueField] = Math.max(result[highValueField], item[highValueField])
}
if (null !== item[lowValueField]) {
result[lowValueField] = Math.min(result[lowValueField], item[lowValueField])
}
return result
}, result);
result[valueFields[0]] = data[0][valueFields[0]];
result[valueFields[3]] = data[data.length - 1][valueFields[3]];
if (!isFinite(result[highValueField])) {
result[highValueField] = null
}
if (!isFinite(result[lowValueField])) {
result[lowValueField] = null
}
result[series.getArgumentField()] = intervalStart;
return result
}
},
getValueFields: function() {
var options = this._options;
return [options.openValueField || "open", options.highValueField || "high", options.lowValueField || "low", options.closeValueField || "close"]
},
getArgumentField: function() {
return this._options.argumentField || "date"
},
_patchMarginOptions: function(options) {
var pointOptions = this._getCreatingPointOptions(),
styles = pointOptions.styles,
border = [styles.normal, styles.hover, styles.selection].reduce(function(max, style) {
return Math.max(max, style["stroke-width"])
}, 0);
options.size = DEFAULT_FINANCIAL_POINT_SIZE + border;
options.sizePointNormalState = DEFAULT_FINANCIAL_POINT_SIZE;
return options
},
getSeriesPairCoord: function(coord, isArgument) {
var oppositeCoord = null;
var points = this.getVisiblePoints();
for (var i = 0; i < points.length; i++) {
var p = points[i];
var tmpCoord = void 0;
if (isArgument) {
tmpCoord = p.vx === coord ? (p.openY + p.closeY) / 2 : void 0
} else {
var coords = [Math.min(p.lowY, p.highY), Math.max(p.lowY, p.highY)];
tmpCoord = coord >= coords[0] && coord <= coords[1] ? p.vx : void 0
}
if (this.checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
oppositeCoord = tmpCoord;
break
}
}
return oppositeCoord
},
usePointsToDefineAutoHiding: function() {
return false
}
});
exports.candlestick = _extend({}, exports.stock, {
_parsePointStyle: function(style, defaultColor, innerColor) {
var color = style.color || innerColor,
base = exports.stock._parsePointStyle.call(this, style, defaultColor, color);
base.fill = color;
base.hatching = style.hatching;
return base
}
})
},
/*!***********************************************************!*\
!*** ./artifacts/transpiled/viz/series/stacked_series.js ***!
\***********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _noop = __webpack_require__( /*! ../../core/utils/common */ 4).noop,
_extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
each = __webpack_require__( /*! ../../core/utils/iterator */ 3).each,
areaSeries = __webpack_require__( /*! ./area_series */ 169).chart,
chartAreaSeries = areaSeries.area,
barSeries = __webpack_require__( /*! ./bar_series */ 145),
chartBarSeries = barSeries.chart.bar,
lineSeries = __webpack_require__( /*! ./line_series */ 204).chart,
vizUtils = __webpack_require__( /*! ../core/utils */ 12),
objectUtils = __webpack_require__( /*! ../../core/utils/object */ 47),
baseStackedSeries = {
_calculateErrorBars: _noop,
_updateOptions: function(options) {
this._stackName = "axis_" + (options.axis || "default")
}
};
exports.chart = {};
exports.polar = {};
exports.chart.stackedline = _extend({}, lineSeries.line, baseStackedSeries, {});
exports.chart.stackedspline = _extend({}, lineSeries.spline, baseStackedSeries, {});
exports.chart.fullstackedline = _extend({}, lineSeries.line, baseStackedSeries, {
getValueRangeInitialValue: areaSeries.area.getValueRangeInitialValue
});
exports.chart.fullstackedspline = _extend({}, lineSeries.spline, baseStackedSeries, {
getValueRangeInitialValue: areaSeries.area.getValueRangeInitialValue
});
var stackedBar = exports.chart.stackedbar = _extend({}, chartBarSeries, baseStackedSeries, {
_updateOptions: function(options) {
baseStackedSeries._updateOptions.call(this, options);
this._stackName = this._stackName + "_stack_" + (options.stack || "default")
}
});
exports.chart.fullstackedbar = _extend({}, chartBarSeries, baseStackedSeries, {
_updateOptions: stackedBar._updateOptions
});
function clonePoint(point, value, minValue, position) {
point = objectUtils.clone(point);
point.value = value;
point.minValue = minValue;
point.translate();
point.argument = point.argument + position;
return point
}
function preparePointsForStackedAreaSegment(points) {
var p, array, i = 0,
result = [],
len = points.length;
while (i < len) {
p = points[i];
array = [p];
if (p.leftHole) {
array = [clonePoint(p, p.leftHole, p.minLeftHole, "left"), p]
}
if (p.rightHole) {
array.push(clonePoint(p, p.rightHole, p.minRightHole, "right"))
}
result.push(array);
i++
}
return [].concat.apply([], result)
}
exports.chart.stackedarea = _extend({}, chartAreaSeries, baseStackedSeries, {
_prepareSegment: function(points, rotated) {
return chartAreaSeries._prepareSegment.call(this, preparePointsForStackedAreaSegment(points), rotated)
},
_appendInGroup: function() {
this._group.append(this._extGroups.seriesGroup).toBackground()
}
});
function getPointsByArgFromPrevSeries(prevSeries, argument) {
var result;
while (!result && prevSeries) {
result = prevSeries._segmentByArg && prevSeries._segmentByArg[argument];
prevSeries = prevSeries._prevSeries
}
return result
}
exports.chart.stackedsplinearea = _extend({}, areaSeries.splinearea, baseStackedSeries, {
_prepareSegment: function(points, rotated) {
var areaSegment, that = this;
points = preparePointsForStackedAreaSegment(points);
if (!this._prevSeries || 1 === points.length) {
areaSegment = areaSeries.splinearea._prepareSegment.call(this, points, rotated)
} else {
var forwardPoints = lineSeries.spline._calculateBezierPoints(points, rotated),
backwardPoints = vizUtils.map(points, function(p) {
var point = p.getCoords(true);
point.argument = p.argument;
return point
}),
prevSeriesForwardPoints = [],
pointByArg = {},
i = 0,
len = that._prevSeries._segments.length;
while (i < len) {
prevSeriesForwardPoints = prevSeriesForwardPoints.concat(that._prevSeries._segments[i].line);
i++
}
each(prevSeriesForwardPoints, function(_, p) {
if (null !== p.argument) {
var argument = p.argument.valueOf();
if (!pointByArg[argument]) {
pointByArg[argument] = [p]
} else {
pointByArg[argument].push(p)
}
}
});
that._prevSeries._segmentByArg = pointByArg;
backwardPoints = lineSeries.spline._calculateBezierPoints(backwardPoints, rotated);
each(backwardPoints, function(i, p) {
var prevSeriesPoints, argument = p.argument.valueOf();
if (i % 3 === 0) {
prevSeriesPoints = pointByArg[argument] || getPointsByArgFromPrevSeries(that._prevSeries, argument);
if (prevSeriesPoints) {
backwardPoints[i - 1] && prevSeriesPoints[0] && (backwardPoints[i - 1] = prevSeriesPoints[0]);
backwardPoints[i + 1] && (backwardPoints[i + 1] = prevSeriesPoints[2] || p)
}
}
});
areaSegment = {
line: forwardPoints,
area: forwardPoints.concat(backwardPoints.reverse())
};
that._areaPointsToSplineAreaPoints(areaSegment.area)
}
return areaSegment
},
_appendInGroup: exports.chart.stackedarea._appendInGroup
});
exports.chart.fullstackedarea = _extend({}, chartAreaSeries, baseStackedSeries, {
_prepareSegment: exports.chart.stackedarea._prepareSegment,
_appendInGroup: exports.chart.stackedarea._appendInGroup
});
exports.chart.fullstackedsplinearea = _extend({}, areaSeries.splinearea, baseStackedSeries, {
_prepareSegment: exports.chart.stackedsplinearea._prepareSegment,
_appendInGroup: exports.chart.stackedarea._appendInGroup
});
exports.polar.stackedbar = _extend({}, barSeries.polar.bar, baseStackedSeries, {})
},
/*!**************************************************************!*\
!*** ./artifacts/transpiled/viz/chart_components/tracker.js ***!
\**************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var domAdapter = __webpack_require__( /*! ../../core/dom_adapter */ 13),
eventsEngine = __webpack_require__( /*! ../../events/core/events_engine */ 5),
clickEvent = __webpack_require__( /*! ../../events/click */ 20),
extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
each = __webpack_require__( /*! ../../core/utils/iterator */ 3).each,
consts = __webpack_require__( /*! ../components/consts */ 119),
eventsConsts = consts.events,
vizUtils = __webpack_require__( /*! ../core/utils */ 12),
pointerEvents = __webpack_require__( /*! ../../events/pointer */ 23),
holdEvent = __webpack_require__( /*! ../../events/hold */ 90),
addNamespace = __webpack_require__( /*! ../../events/utils */ 8).addNamespace,
isDefined = __webpack_require__( /*! ../../core/utils/type */ 1).isDefined,
_normalizeEnum = __webpack_require__( /*! ../core/utils */ 12).normalizeEnum,
_floor = Math.floor,
_each = each,
_noop = __webpack_require__( /*! ../../core/utils/common */ 4).noop,
HOVER_STATE = consts.states.hoverMark,
NORMAL_STATE = consts.states.normalMark,
EVENT_NS = "dxChartTracker",
DOT_EVENT_NS = "." + EVENT_NS,
POINTER_ACTION = addNamespace([pointerEvents.down, pointerEvents.move], EVENT_NS),
LEGEND_CLICK = "legendClick",
SERIES_CLICK = "seriesClick",
POINT_CLICK = "pointClick",
POINT_DATA = "chart-data-point",
SERIES_DATA = "chart-data-series",
ARG_DATA = "chart-data-argument",
DELAY = 100,
NONE_MODE = "none",
ALL_ARGUMENT_POINTS_MODE = "allargumentpoints",
INCLUDE_POINTS_MODE = "includepoints",
EXLUDE_POINTS_MODE = "excludepoints",
LEGEND_HOVER_MODES = [INCLUDE_POINTS_MODE, EXLUDE_POINTS_MODE, NONE_MODE];
function getData(event, dataKey) {
var target = event.target;
return ("tspan" === target.tagName ? target.parentNode : target)[dataKey]
}
function eventCanceled(event, target) {
return event.cancel || !target.getOptions()
}
function inCanvas(canvas, x, y) {
return x >= canvas.left && x <= canvas.right && y >= canvas.top && y <= canvas.bottom
}
function correctLegendHoverMode(mode) {
if (LEGEND_HOVER_MODES.indexOf(mode) > -1) {
return mode
} else {
return INCLUDE_POINTS_MODE
}
}
function correctHoverMode(target) {
var mode = target.getOptions().hoverMode;
return mode === NONE_MODE ? mode : ALL_ARGUMENT_POINTS_MODE
}
var baseTrackerPrototype = {
ctor: function(options) {
var that = this,
data = {
tracker: that
};
that._renderer = options.renderer;
that._legend = options.legend;
that._tooltip = options.tooltip;
that._eventTrigger = options.eventTrigger;
that._seriesGroup = options.seriesGroup;
options.seriesGroup.off(DOT_EVENT_NS).on(addNamespace(eventsConsts.showPointTooltip, EVENT_NS), data, that._showPointTooltip).on(addNamespace(eventsConsts.hidePointTooltip, EVENT_NS), data, that._hidePointTooltip);
that._renderer.root.off(DOT_EVENT_NS).on(POINTER_ACTION, data, that._pointerHandler).on(addNamespace(clickEvent.name, EVENT_NS), data, that._clickHandler).on(addNamespace(holdEvent.name, EVENT_NS), {
timeout: 300
}, _noop)
},
update: function(options) {
this._chart = options.chart
},
updateSeries: function(series, resetDecorations) {
var that = this;
var noHoveredSeries = !(series && series.some(function(s) {
return s === that.hoveredSeries
}) || that._hoveredPoint && that._hoveredPoint.series);
if (that._storedSeries !== series) {
that._storedSeries = series || []
}
if (noHoveredSeries) {
that._clean();
that._renderer.initHatching()
}
if (resetDecorations) {
that.clearSelection();
if (!noHoveredSeries) {
that._hideTooltip(that.pointAtShownTooltip);
that.clearHover()
}
}
},
setCanvases: function(mainCanvas, paneCanvases) {
this._mainCanvas = mainCanvas;
this._canvases = paneCanvases
},
repairTooltip: function() {
var point = this.pointAtShownTooltip;
if (!point || !point.series || !point.isVisible()) {
this._hideTooltip(point, true)
} else {
this._showTooltip(point)
}
},
_setHoveredPoint: function(point) {
if (point === this._hoveredPoint) {
return
}
this._releaseHoveredPoint();
point.hover();
this._hoveredPoint = point
},
_releaseHoveredPoint: function() {
if (this._hoveredPoint && this._hoveredPoint.getOptions()) {
this._hoveredPoint.clearHover();
this._hoveredPoint = null;
if (this._tooltip.isEnabled()) {
this._hideTooltip(this._hoveredPoint)
}
}
},
_setHoveredSeries: function(series, mode) {
this._releaseHoveredSeries();
this._releaseHoveredPoint();
series.hover(mode);
this.hoveredSeries = series
},
_releaseHoveredSeries: function(needSetHoverView, hoveredPoint) {
if (this.hoveredSeries) {
this.hoveredSeries.clearHover();
this.hoveredSeries = null
}
},
clearSelection: function() {
this._storedSeries.forEach(function(series) {
if (series) {
series.clearSelection();
series.getPoints().forEach(function(point) {
point.clearSelection()
})
}
})
},
_clean: function() {
var that = this;
that.hoveredPoint = that.hoveredSeries = that._hoveredArgumentPoints = null;
that._hideTooltip(that.pointAtShownTooltip)
},
clearHover: function() {
this._resetHoveredArgument();
this._releaseHoveredSeries();
this._releaseHoveredPoint()
},
_hideTooltip: function(point, silent) {
var that = this;
if (!that._tooltip || point && that.pointAtShownTooltip !== point) {
return
}
if (!silent && that.pointAtShownTooltip) {
that.pointAtShownTooltip = null
}
that._tooltip.hide()
},
_showTooltip: function(point) {
var tooltipFormatObject, eventData, that = this;
if (point && point.getOptions()) {
tooltipFormatObject = point.getTooltipFormatObject(that._tooltip, that._tooltip.isShared() && that._chart.getStackedPoints(point));
if (!isDefined(tooltipFormatObject.valueText) && !tooltipFormatObject.points || !point.isVisible()) {
return
}
if (!that.pointAtShownTooltip || that.pointAtShownTooltip !== point) {
eventData = {
target: point
}
}
var coords = point.getTooltipParams(that._tooltip.getLocation()),
rootOffset = that._renderer.getRootOffset();
coords.x += rootOffset.left;
coords.y += rootOffset.top;
if (!that._tooltip.show(tooltipFormatObject, coords, eventData)) {
return
}
that.pointAtShownTooltip = point
}
},
_showPointTooltip: function(event, point) {
var that = event.data.tracker,
pointWithTooltip = that.pointAtShownTooltip;
if (pointWithTooltip && pointWithTooltip !== point) {
that._hideTooltip(pointWithTooltip)
}
that._showTooltip(point)
},
_hidePointTooltip: function(event, point) {
event.data.tracker._hideTooltip(point)
},
_enableOutHandler: function() {
if (this._outHandler) {
return
}
var that = this,
handler = function(e) {
var rootOffset = that._renderer.getRootOffset(),
x = _floor(e.pageX - rootOffset.left),
y = _floor(e.pageY - rootOffset.top);
if (!inCanvas(that._mainCanvas, x, y)) {
that._pointerOut();
that._disableOutHandler()
}
};
eventsEngine.on(domAdapter.getDocument(), POINTER_ACTION, handler);
this._outHandler = handler
},
_disableOutHandler: function() {
this._outHandler && eventsEngine.off(domAdapter.getDocument(), POINTER_ACTION, this._outHandler);
this._outHandler = null
},
stopCurrentHandling: function() {
this._pointerOut(true)
},
_pointerOut: function(force) {
this.clearHover();
(force || this._tooltip.isEnabled()) && this._hideTooltip(this.pointAtShownTooltip)
},
_triggerLegendClick: function(eventArgs, elementClick) {
var eventTrigger = this._eventTrigger;
eventTrigger(LEGEND_CLICK, eventArgs, function() {
!eventCanceled(eventArgs.event, eventArgs.target) && eventTrigger(elementClick, eventArgs)
})
},
_hoverLegendItem: function(x, y) {
var series, that = this,
item = that._legend.getItemByCoord(x, y),
legendHoverMode = correctLegendHoverMode(that._legend.getOptions().hoverMode);
if (item) {
series = that._storedSeries[item.id];
if (!series.isHovered() || series.lastHoverMode !== legendHoverMode) {
that._setHoveredSeries(series, legendHoverMode)
}
that._tooltip.isEnabled() && that._hideTooltip(that.pointAtShownTooltip)
} else {
that.clearHover()
}
},
_hoverArgument: function(argument, argumentIndex) {
var that = this,
hoverMode = that._getArgumentHoverMode();
if (isDefined(argument)) {
that._releaseHoveredPoint();
that._hoveredArgument = argument;
that._argumentIndex = argumentIndex;
that._notifySeries({
action: "pointHover",
notifyLegend: that._notifyLegendOnHoverArgument,
target: {
argument: argument,
fullState: HOVER_STATE,
argumentIndex: argumentIndex,
getOptions: function() {
return {
hoverMode: hoverMode
}
}
}
})
}
},
_resetHoveredArgument: function() {
var hoverMode, that = this;
if (isDefined(that._hoveredArgument)) {
hoverMode = that._getArgumentHoverMode();
that._notifySeries({
action: "clearPointHover",
notifyLegend: that._notifyLegendOnHoverArgument,
target: {
fullState: NORMAL_STATE,
argumentIndex: that._argumentIndex,
argument: that._hoveredArgument,
getOptions: function() {
return {
hoverMode: hoverMode
}
}
}
});
that._hoveredArgument = null
}
},
_notifySeries: function(data) {
this._storedSeries.forEach(function(series) {
series.notify(data)
})
},
_pointerHandler: function(e) {
var that = e.data.tracker,
rootOffset = that._renderer.getRootOffset(),
x = _floor(e.pageX - rootOffset.left),
y = _floor(e.pageY - rootOffset.top),
canvas = that._getCanvas(x, y),
series = getData(e, SERIES_DATA),
point = getData(e, POINT_DATA) || series && series.getPointByCoord(x, y);
if (point && !point.getMarkerVisibility()) {
point = void 0
}
that._enableOutHandler();
if (that._legend.coordsIn(x, y)) {
that._hoverLegendItem(x, y);
return
}
if (that.hoveredSeries && that.hoveredSeries !== that._stuckSeries) {
that._releaseHoveredSeries()
}
if (that._hoverArgumentAxis(x, y, e)) {
return
}
if (that._isPointerOut(canvas, point)) {
that._pointerOut()
}
if (!canvas && !point) {
return
}
if (series && !point) {
point = series.getNeighborPoint(x, y);
if (!that._stickyHovering && point && !point.coordsIn(x, y)) {
point = null
}
if (series !== that.hoveredSeries) {
that._setTimeout(function() {
that._setHoveredSeries(series);
that._setStuckSeries(e, series, x, y);
that._pointerComplete(point, x, y)
}, series);
return
}
} else {
if (point) {
if (e.type !== pointerEvents.move && "touch" !== e.pointerType) {
return
}
if (that.hoveredSeries) {
that._setTimeout(function() {
that._pointerOnPoint(point, x, y, e)
}, point)
} else {
that._pointerOnPoint(point, x, y, e)
}
return
} else {
if (that._setStuckSeries(e, void 0, x, y) && that._stickyHovering) {
series = that._stuckSeries;
point = series.getNeighborPoint(x, y);
that._releaseHoveredSeries();
point && point.getMarkerVisibility() && that._setHoveredPoint(point)
} else {
if (!that._stickyHovering) {
that._pointerOut()
}
}
}
}
that._pointerComplete(point, x, y)
},
_pointerOnPoint: function(point, x, y) {
this._resetHoveredArgument();
this._setHoveredPoint(point);
this._pointerComplete(point, x, y)
},
_pointerComplete: function(point) {
this.pointAtShownTooltip !== point && this._tooltip.isEnabled() && this._showTooltip(point)
},
_clickHandler: function(e) {
var that = e.data.tracker,
rootOffset = that._renderer.getRootOffset(),
x = _floor(e.pageX - rootOffset.left),
y = _floor(e.pageY - rootOffset.top),
point = getData(e, POINT_DATA),
series = that._stuckSeries || getData(e, SERIES_DATA) || point && point.series,
axis = that._argumentAxis;
if (that._legend.coordsIn(x, y)) {
var item = that._legend.getItemByCoord(x, y);
if (item) {
that._legendClick(item, e)
}
} else {
if (axis && axis.coordsIn(x, y)) {
var argument = getData(e, ARG_DATA);
if (isDefined(argument)) {
that._eventTrigger("argumentAxisClick", {
argument: argument,
event: e
})
}
} else {
if (series) {
point = point || series.getPointByCoord(x, y);
if (point && point.getMarkerVisibility()) {
that._pointClick(point, e)
} else {
getData(e, SERIES_DATA) && that._eventTrigger(SERIES_CLICK, {
target: series,
event: e
})
}
}
}
}
},
dispose: function() {
var that = this;
that._disableOutHandler();
that._renderer.root.off(DOT_EVENT_NS);
that._seriesGroup.off(DOT_EVENT_NS)
}
};
var ChartTracker = function(options) {
this.ctor(options)
};
extend(ChartTracker.prototype, baseTrackerPrototype, {
_pointClick: function(point, event) {
var that = this,
eventTrigger = that._eventTrigger,
series = point.series;
eventTrigger(POINT_CLICK, {
target: point,
event: event
}, function() {
!eventCanceled(event, series) && eventTrigger(SERIES_CLICK, {
target: series,
event: event
})
})
},
__trackerDelay: DELAY,
update: function(options) {
var that = this;
baseTrackerPrototype.update.call(this, options);
that._argumentAxis = options.argumentAxis || {};
that._axisHoverEnabled = that._argumentAxis && _normalizeEnum(that._argumentAxis.getOptions().hoverMode) === ALL_ARGUMENT_POINTS_MODE;
that._rotated = options.rotated;
that._crosshair = options.crosshair;
that._stickyHovering = options.stickyHovering
},
_getCanvas: function(x, y) {
var that = this,
canvases = that._canvases || [];
for (var i = 0; i < canvases.length; i++) {
var c = canvases[i];
if (inCanvas(c, x, y)) {
return c
}
}
return null
},
_isPointerOut: function(canvas) {
return !canvas && this._stuckSeries
},
_hideCrosshair: function() {
this._crosshair && this._crosshair.hide()
},
_moveCrosshair: function(point, x, y) {
if (point && this._crosshair && point.isVisible()) {
this._crosshair.show({
point: point,
x: x,
y: y
})
}
},
_clean: function() {
var that = this;
baseTrackerPrototype._clean.call(that);
that._resetTimer();
that._stuckSeries = null
},
_getSeriesForShared: function(x, y) {
var that = this,
points = [],
point = null,
distance = 1 / 0;
if (that._tooltip.isShared() && !that.hoveredSeries) {
_each(that._storedSeries, function(_, series) {
var point = series.getNeighborPoint(x, y);
point && points.push(point)
});
_each(points, function(_, p) {
var coords = p.getCrosshairData(x, y),
d = vizUtils.getDistance(x, y, coords.x, coords.y);
if (d < distance) {
point = p;
distance = d
}
})
}
return point && point.series
},
_setTimeout: function(callback, keeper) {
var that = this;
if (that._timeoutKeeper !== keeper) {
that._resetTimer();
that._hoverTimeout = setTimeout(function() {
callback();
that._timeoutKeeper = null
}, DELAY);
that._timeoutKeeper = keeper
}
},
_resetTimer: function() {
clearTimeout(this._hoverTimeout);
this._timeoutKeeper = this._hoverTimeout = null
},
_stopEvent: function(e) {
if (!isDefined(e.cancelable) || e.cancelable) {
e.preventDefault();
e.stopPropagation()
}
},
_setStuckSeries: function(e, series, x, y) {
if ("mouse" !== e.pointerType) {
this._stuckSeries = null
} else {
this._stuckSeries = series || this._stuckSeries || this._getSeriesForShared(x, y)
}
return !!this._stuckSeries
},
_pointerOut: function() {
var that = this;
that._stuckSeries = null;
that._hideCrosshair();
that._resetTimer();
baseTrackerPrototype._pointerOut.apply(that, arguments)
},
_hoverArgumentAxis: function(x, y, e) {
var that = this;
that._resetHoveredArgument();
if (that._axisHoverEnabled && that._argumentAxis.coordsIn(x, y)) {
that._hoverArgument(getData(e, ARG_DATA));
return true
}
},
_pointerComplete: function(point, x, y) {
var that = this;
that.hoveredSeries && that.hoveredSeries.updateHover(x, y);
that._resetTimer();
that._moveCrosshair(point, x, y);
baseTrackerPrototype._pointerComplete.call(that, point)
},
_legendClick: function(item, e) {
var series = this._storedSeries[item.id];
this._triggerLegendClick({
target: series,
event: e
}, SERIES_CLICK)
},
_hoverLegendItem: function(x, y) {
this._stuckSeries = null;
this._hideCrosshair();
baseTrackerPrototype._hoverLegendItem.call(this, x, y)
},
_pointerOnPoint: function(point, x, y, e) {
this._setStuckSeries(e, point.series, x, y);
this._releaseHoveredSeries();
baseTrackerPrototype._pointerOnPoint.call(this, point, x, y, e)
},
_notifyLegendOnHoverArgument: false,
_getArgumentHoverMode: function() {
return correctHoverMode(this._argumentAxis)
},
dispose: function() {
this._resetTimer();
baseTrackerPrototype.dispose.call(this)
}
});
var PieTracker = function(options) {
this.ctor(options)
};
extend(PieTracker.prototype, baseTrackerPrototype, {
_isPointerOut: function(_, point) {
return !point
},
_legendClick: function(item, e) {
var that = this,
points = [];
that._storedSeries.forEach(function(s) {
return points.push.apply(points, s.getPointsByKeys(item.argument, item.argumentIndex))
});
that._eventTrigger(LEGEND_CLICK, {
target: item.argument,
points: points,
event: e
})
},
_pointClick: function(point, e) {
this._eventTrigger(POINT_CLICK, {
target: point,
event: e
})
},
_hoverLegendItem: function(x, y) {
var that = this,
item = that._legend.getItemByCoord(x, y);
that._resetHoveredArgument();
if (item) {
that._hoverArgument(item.argument, item.argumentIndex)
} else {
that.clearHover()
}
},
_getArgumentHoverMode: function() {
return correctHoverMode(this._legend)
},
_hoverArgumentAxis: _noop,
_setStuckSeries: _noop,
_getCanvas: _noop,
_notifyLegendOnHoverArgument: true
});
exports.ChartTracker = ChartTracker;
exports.PieTracker = PieTracker
},
/*!******************************************************************************!*\
!*** ./artifacts/transpiled/viz/chart_components/multi_axes_synchronizer.js ***!
\******************************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _console = __webpack_require__( /*! ../../core/utils/console */ 65);
var _type = __webpack_require__( /*! ../../core/utils/type */ 1);
var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 3);
var _utils = __webpack_require__( /*! ../core/utils */ 12);
var _math2 = __webpack_require__( /*! ../../core/utils/math */ 30);
var _math = Math;
var _floor = _math.floor;
var _max = _math.max;
var _abs = _math.abs;
function getValueAxesPerPanes(valueAxes) {
var result = {};
valueAxes.forEach(function(axis) {
var pane = axis.pane;
if (!result[pane]) {
result[pane] = []
}
result[pane].push(axis)
});
return result
}
var linearConverter = {
transform: function(v, b) {
return (0, _math2.adjust)((0, _utils.getLog)(v, b))
},
addInterval: function(v, i) {
return (0, _math2.adjust)(v + i)
},
getInterval: function(base, tickInterval) {
return tickInterval
}
};
var logConverter = {
transform: function(v, b) {
return (0, _math2.adjust)((0, _utils.raiseTo)(v, b))
},
addInterval: function(v, i) {
return (0, _math2.adjust)(v * i)
},
getInterval: function(base, tickInterval) {
return _math.pow(base, tickInterval)
}
};
function convertAxisInfo(axisInfo, converter) {
if (!axisInfo.isLogarithmic) {
return
}
var tick, interval, base = axisInfo.logarithmicBase,
tickValues = axisInfo.tickValues,
ticks = [];
axisInfo.minValue = converter.transform(axisInfo.minValue, base);
axisInfo.oldMinValue = converter.transform(axisInfo.oldMinValue, base);
axisInfo.maxValue = converter.transform(axisInfo.maxValue, base);
axisInfo.oldMaxValue = converter.transform(axisInfo.oldMaxValue, base);
axisInfo.tickInterval = _math.round(axisInfo.tickInterval);
if (axisInfo.tickInterval < 1) {
axisInfo.tickInterval = 1
}
interval = converter.getInterval(base, axisInfo.tickInterval);
tick = converter.transform(tickValues[0], base);
while (ticks.length < tickValues.length) {
ticks.push(tick);
tick = converter.addInterval(tick, interval)
}
ticks.tickInterval = axisInfo.tickInterval;
axisInfo.tickValues = ticks
}
function populateAxesInfo(axes) {
return axes.reduce(function(result, axis) {
var axisInfo, ticksValues = axis.getTicksValues(),
majorTicks = ticksValues.majorTicksValues,
options = axis.getOptions(),
businessRange = axis.getTranslator().getBusinessRange(),
visibleArea = axis.getVisibleArea(),
tickInterval = axis._tickInterval,
synchronizedValue = options.synchronizedValue;
if (majorTicks && majorTicks.length > 0 && (0, _type.isNumeric)(majorTicks[0]) && "discrete" !== options.type && !businessRange.isEmpty() && !(businessRange.breaks && businessRange.breaks.length) && "zoom" !== axis.getViewport().action) {
axis.applyMargins();
var startValue = axis.getTranslator().from(visibleArea[0]);
var endValue = axis.getTranslator().from(visibleArea[1]);
var minValue = startValue < endValue ? startValue : endValue;
var maxValue = startValue < endValue ? endValue : startValue;
if (minValue === maxValue && (0, _type.isDefined)(synchronizedValue)) {
tickInterval = _abs(majorTicks[0] - synchronizedValue) || 1;
minValue = majorTicks[0] - tickInterval;
maxValue = majorTicks[0] + tickInterval
}
axisInfo = {
axis: axis,
isLogarithmic: "logarithmic" === options.type,
logarithmicBase: businessRange.base,
tickValues: majorTicks,
minorValues: ticksValues.minorTicksValues,
minorTickInterval: axis._minorTickInterval,
minValue: minValue,
oldMinValue: minValue,
maxValue: maxValue,
oldMaxValue: maxValue,
inverted: businessRange.invert,
tickInterval: tickInterval,
synchronizedValue: synchronizedValue
};
convertAxisInfo(axisInfo, linearConverter);
result.push(axisInfo);
_console.debug.assert(axisInfo.minValue === axisInfo.maxValue && (!(0, _type.isDefined)(axisInfo.tickInterval) || (0, _type.isDefined)(options.tickInterval)) || (0, _type.isDefined)(axisInfo.tickInterval), "tickInterval was not provided")
}
return result
}, [])
}
function updateTickValues(axesInfo) {
var maxTicksCount = axesInfo.reduce(function(max, axisInfo) {
return _max(max, axisInfo.tickValues.length)
}, 0);
axesInfo.forEach(function(axisInfo) {
var ticksMultiplier, ticksCount, additionalStartTicksCount = 0,
synchronizedValue = axisInfo.synchronizedValue,
tickValues = axisInfo.tickValues,
tickInterval = axisInfo.tickInterval;
if ((0, _type.isDefined)(synchronizedValue)) {
axisInfo.baseTickValue = axisInfo.invertedBaseTickValue = synchronizedValue;
axisInfo.tickValues = [axisInfo.baseTickValue]
} else {
if (tickValues.length > 1 && tickInterval) {
ticksMultiplier = _floor((maxTicksCount + 1) / tickValues.length);
ticksCount = ticksMultiplier > 1 ? _floor((maxTicksCount + 1) / ticksMultiplier) : maxTicksCount;
additionalStartTicksCount = _floor((ticksCount - tickValues.length) / 2);
while (additionalStartTicksCount > 0 && 0 !== tickValues[0]) {
tickValues.unshift((0, _math2.adjust)(tickValues[0] - tickInterval));
additionalStartTicksCount--
}
while (tickValues.length < ticksCount) {
tickValues.push((0, _math2.adjust)(tickValues[tickValues.length - 1] + tickInterval))
}
axisInfo.tickInterval = tickInterval / ticksMultiplier
}
axisInfo.baseTickValue = tickValues[0];
axisInfo.invertedBaseTickValue = tickValues[tickValues.length - 1]
}
})
}
function getAxisRange(axisInfo) {
return axisInfo.maxValue - axisInfo.minValue || 1
}
function getMainAxisInfo(axesInfo) {
for (var i = 0; i < axesInfo.length; i++) {
if (!axesInfo[i].stubData) {
return axesInfo[i]
}
}
return null
}
function correctMinMaxValues(axesInfo) {
var mainAxisInfo = getMainAxisInfo(axesInfo),
mainAxisInfoTickInterval = mainAxisInfo.tickInterval;
axesInfo.forEach(function(axisInfo) {
var scale, move, mainAxisBaseValueOffset, valueFromAxisInfo;
if (axisInfo !== mainAxisInfo) {
if (mainAxisInfoTickInterval && axisInfo.tickInterval) {
if (axisInfo.stubData && (0, _type.isDefined)(axisInfo.synchronizedValue)) {
axisInfo.oldMinValue = axisInfo.minValue = axisInfo.baseTickValue - (mainAxisInfo.baseTickValue - mainAxisInfo.minValue) / mainAxisInfoTickInterval * axisInfo.tickInterval;
axisInfo.oldMaxValue = axisInfo.maxValue = axisInfo.baseTickValue - (mainAxisInfo.baseTickValue - mainAxisInfo.maxValue) / mainAxisInfoTickInterval * axisInfo.tickInterval
}
scale = mainAxisInfoTickInterval / getAxisRange(mainAxisInfo) / axisInfo.tickInterval * getAxisRange(axisInfo);
axisInfo.maxValue = axisInfo.minValue + getAxisRange(axisInfo) / scale
}
if (mainAxisInfo.inverted && !axisInfo.inverted || !mainAxisInfo.inverted && axisInfo.inverted) {
mainAxisBaseValueOffset = mainAxisInfo.maxValue - mainAxisInfo.invertedBaseTickValue
} else {
mainAxisBaseValueOffset = mainAxisInfo.baseTickValue - mainAxisInfo.minValue
}
valueFromAxisInfo = getAxisRange(axisInfo);
move = (mainAxisBaseValueOffset / getAxisRange(mainAxisInfo) - (axisInfo.baseTickValue - axisInfo.minValue) / valueFromAxisInfo) * valueFromAxisInfo;
axisInfo.minValue -= move;
axisInfo.maxValue -= move
}
})
}
function calculatePaddings(axesInfo) {
var minPadding, maxPadding, startPadding = 0,
endPadding = 0;
axesInfo.forEach(function(axisInfo) {
var inverted = axisInfo.inverted;
minPadding = axisInfo.minValue > axisInfo.oldMinValue ? (axisInfo.minValue - axisInfo.oldMinValue) / getAxisRange(axisInfo) : 0;
maxPadding = axisInfo.maxValue < axisInfo.oldMaxValue ? (axisInfo.oldMaxValue - axisInfo.maxValue) / getAxisRange(axisInfo) : 0;
startPadding = _max(startPadding, inverted ? maxPadding : minPadding);
endPadding = _max(endPadding, inverted ? minPadding : maxPadding)
});
return {
start: startPadding,
end: endPadding
}
}
function correctMinMaxValuesByPaddings(axesInfo, paddings) {
axesInfo.forEach(function(info) {
var range = getAxisRange(info),
inverted = info.inverted;
info.minValue = (0, _math2.adjust)(info.minValue - paddings[inverted ? "end" : "start"] * range);
info.maxValue = (0, _math2.adjust)(info.maxValue + paddings[inverted ? "start" : "end"] * range)
})
}
function updateTickValuesIfSynchronizedValueUsed(axesInfo) {
var hasSynchronizedValue = false;
axesInfo.forEach(function(info) {
hasSynchronizedValue = hasSynchronizedValue || (0, _type.isDefined)(info.synchronizedValue)
});
axesInfo.forEach(function(info) {
var tick, tickInterval = info.tickInterval,
tickValues = info.tickValues,
maxValue = info.maxValue,
minValue = info.minValue;
if (hasSynchronizedValue && tickInterval) {
while ((tick = (0, _math2.adjust)(tickValues[0] - tickInterval)) >= minValue) {
tickValues.unshift(tick)
}
tick = tickValues[tickValues.length - 1];
while ((tick = (0, _math2.adjust)(tick + tickInterval)) <= maxValue) {
tickValues.push(tick)
}
}
while (tickValues[0] + tickInterval / 10 < minValue) {
tickValues.shift()
}
while (tickValues[tickValues.length - 1] - tickInterval / 10 > maxValue) {
tickValues.pop()
}
})
}
function applyMinMaxValues(axesInfo) {
axesInfo.forEach(function(info) {
var axis = info.axis,
range = axis.getTranslator().getBusinessRange();
if (range.min === range.minVisible) {
range.min = info.minValue
}
if (range.max === range.maxVisible) {
range.max = info.maxValue
}
range.minVisible = info.minValue;
range.maxVisible = info.maxValue;
if (range.min > range.minVisible) {
range.min = range.minVisible
}
if (range.max < range.maxVisible) {
range.max = range.maxVisible
}
axis.getTranslator().updateBusinessRange(range);
axis.setTicks({
majorTicks: info.tickValues,
minorTicks: info.minorValues
})
})
}
function correctAfterSynchronize(axesInfo) {
var correctValue, invalidAxisInfo = [];
axesInfo.forEach(function(info) {
if (info.oldMaxValue - info.oldMinValue === 0) {
invalidAxisInfo.push(info)
} else {
if (!(0, _type.isDefined)(correctValue) && !(0, _type.isDefined)(info.synchronizedValue)) {
correctValue = _abs((info.maxValue - info.minValue) / (info.tickValues[_floor(info.tickValues.length / 2)] - info.minValue || info.maxValue))
}
}
});
if (!(0, _type.isDefined)(correctValue)) {
return
}
invalidAxisInfo.forEach(function(info) {
var firstTick = info.tickValues[0],
correctedTick = firstTick * correctValue;
if (firstTick > 0) {
info.maxValue = correctedTick;
info.minValue = 0
} else {
if (firstTick < 0) {
info.minValue = correctedTick;
info.maxValue = 0
}
}
})
}
function updateMinorTicks(axesInfo) {
axesInfo.forEach(function(axisInfo) {
if (!axisInfo.minorTickInterval) {
return
}
var ticks = [];
var interval = axisInfo.minorTickInterval,
tickCount = axisInfo.tickInterval / interval - 1;
for (var i = 1; i < axisInfo.tickValues.length; i++) {
var tick = axisInfo.tickValues[i - 1];
for (var j = 0; j < tickCount; j++) {
tick += interval;
ticks.push(tick)
}
}
axisInfo.minorValues = ticks
})
}
var multiAxesSynchronizer = {
synchronize: function(valueAxes) {
(0, _iterator.each)(getValueAxesPerPanes(valueAxes), function(_, axes) {
var axesInfo, paddings;
if (axes.length > 1) {
axesInfo = populateAxesInfo(axes);
if (axesInfo.length < 2 || !getMainAxisInfo(axesInfo)) {
return
}
updateTickValues(axesInfo);
correctMinMaxValues(axesInfo);
paddings = calculatePaddings(axesInfo);
correctMinMaxValuesByPaddings(axesInfo, paddings);
correctAfterSynchronize(axesInfo);
updateTickValuesIfSynchronizedValueUsed(axesInfo);
updateMinorTicks(axesInfo);
axesInfo.forEach(function(info) {
convertAxisInfo(info, logConverter)
});
applyMinMaxValues(axesInfo)
}
})
}
};
module.exports = multiAxesSynchronizer
},
/*!*********************************************************************!*\
!*** ./artifacts/transpiled/viz/translators/category_translator.js ***!
\*********************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var isDefined = __webpack_require__( /*! ../../core/utils/type */ 1).isDefined,
adjust = __webpack_require__( /*! ../../core/utils/math */ 30).adjust,
round = Math.round;
function getValue(value) {
return value
}
module.exports = {
translate: function(category, directionOffset) {
var stickDelta, that = this,
canvasOptions = that._canvasOptions,
categoryIndex = that._categoriesToPoints[category.valueOf()],
specialValue = that.translateSpecialCase(category),
startPointIndex = canvasOptions.startPointIndex || 0,
stickInterval = that._options.stick ? 0 : .5;
if (isDefined(specialValue)) {
return round(specialValue)
}
if (!categoryIndex && 0 !== categoryIndex) {
return null
}
directionOffset = directionOffset || 0;
stickDelta = categoryIndex + stickInterval - startPointIndex + .5 * directionOffset;
return round(that._calculateProjection(canvasOptions.interval * stickDelta))
},
getInterval: function() {
return this._canvasOptions.interval
},
getEventScale: function(zoomEvent) {
var scale = zoomEvent.deltaScale || 1;
return 1 - (1 - scale) / (.75 + this.visibleCategories.length / this._categories.length)
},
zoom: function(translate, scale) {
var endCategoryIndex, newVisibleCategories, newInterval, that = this,
categories = that._categories,
canvasOptions = that._canvasOptions,
stick = that._options.stick,
invert = canvasOptions.invert,
interval = canvasOptions.interval * scale,
translateCategories = translate / interval,
visibleCount = (that.visibleCategories || []).length,
startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + translateCategories + .5),
categoriesLength = parseInt(adjust(canvasOptions.canvasLength / interval) + (stick ? 1 : 0)) || 1;
if (invert) {
startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + visibleCount - translateCategories + .5) - categoriesLength
}
if (startCategoryIndex < 0) {
startCategoryIndex = 0
}
endCategoryIndex = startCategoryIndex + categoriesLength;
if (endCategoryIndex > categories.length) {
endCategoryIndex = categories.length;
startCategoryIndex = endCategoryIndex - categoriesLength;
if (startCategoryIndex < 0) {
startCategoryIndex = 0
}
}
newVisibleCategories = categories.slice(parseInt(startCategoryIndex), parseInt(endCategoryIndex));
newInterval = that._getDiscreteInterval(newVisibleCategories.length, canvasOptions);
scale = newInterval / canvasOptions.interval;
translate = that.translate(!invert ? newVisibleCategories[0] : newVisibleCategories[newVisibleCategories.length - 1]) * scale - (canvasOptions.startPoint + (stick ? 0 : newInterval / 2));
return {
min: newVisibleCategories[0],
max: newVisibleCategories[newVisibleCategories.length - 1],
translate: translate,
scale: scale
}
},
getMinScale: function(zoom) {
var that = this,
canvasOptions = that._canvasOptions,
categoriesLength = (that.visibleCategories || that._categories).length;
categoriesLength += (parseInt(.1 * categoriesLength) || 1) * (zoom ? -2 : 2);
return canvasOptions.canvasLength / (Math.max(categoriesLength, 1) * canvasOptions.interval)
},
getScale: function(min, max) {
var that = this,
canvasOptions = that._canvasOptions,
visibleArea = that.getCanvasVisibleArea(),
stickOffset = !that._options.stick && 1,
minPoint = isDefined(min) ? that.translate(min, -stickOffset) : null,
maxPoint = isDefined(max) ? that.translate(max, +stickOffset) : null;
if (null === minPoint) {
minPoint = canvasOptions.invert ? visibleArea.max : visibleArea.min
}
if (null === maxPoint) {
maxPoint = canvasOptions.invert ? visibleArea.min : visibleArea.max
}
return that.canvasLength / Math.abs(maxPoint - minPoint)
},
isValid: function(value) {
return isDefined(value) ? this._categoriesToPoints[value.valueOf()] >= 0 : false
},
getCorrectValue: getValue,
to: function(value, direction) {
var canvasOptions = this._canvasOptions,
categoryIndex = this._categoriesToPoints[value.valueOf()],
startPointIndex = canvasOptions.startPointIndex || 0,
stickDelta = categoryIndex + (this._options.stick ? 0 : .5) - startPointIndex + (this._businessRange.invert ? -1 : 1) * direction * .5;
return round(this._calculateProjection(canvasOptions.interval * stickDelta))
},
from: function(position) {
var direction = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
var canvasOptions = this._canvasOptions,
startPoint = canvasOptions.startPoint,
categories = this.visibleCategories || this._categories,
categoriesLength = categories.length,
stickInterval = this._options.stick ? .5 : 0,
result = round((position - startPoint) / canvasOptions.interval + stickInterval - .5 - .5 * direction);
if (result >= categoriesLength) {
result = categoriesLength - 1
}
if (result < 0) {
result = 0
}
if (canvasOptions.invert) {
result = categoriesLength - result - 1
}
return categories[result]
},
_add: function() {
return NaN
},
_toValue: getValue,
isValueProlonged: true
}
},
/*!*********************************************************************!*\
!*** ./artifacts/transpiled/viz/translators/interval_translator.js ***!
\*********************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var typeUtils = __webpack_require__( /*! ../../core/utils/type */ 1),
isNumber = typeUtils.isNumeric,
isDefined = typeUtils.isDefined,
dateUtils = __webpack_require__( /*! ../../core/utils/date */ 22),
addInterval = dateUtils.addInterval,
dateToMilliseconds = dateUtils.dateToMilliseconds,
floor = Math.floor,
adjust = __webpack_require__( /*! ../../core/utils/math */ 30).adjust;
module.exports = {
_intervalize: function(value, interval) {
if (!isDefined(value)) {
return
}
if ("datetime" === this._businessRange.dataType) {
if (isNumber(value)) {
value = new Date(value)
} else {
value = new Date(value.getTime())
}
value = dateUtils.correctDateWithUnitBeginning(value, interval)
} else {
value = adjust(floor(adjust(value / interval)) * interval, interval)
}
return value
},
translate: function(bp, direction, interval) {
var that = this,
specialValue = that.translateSpecialCase(bp);
if (isDefined(specialValue)) {
return Math.round(specialValue)
}
interval = interval || that._options.interval;
if (!that.isValid(bp, interval)) {
return null
}
return that.to(bp, direction, interval)
},
getInterval: function() {
return Math.round(this._canvasOptions.ratioOfCanvasRange * (this._businessRange.interval || Math.abs(this._canvasOptions.rangeMax - this._canvasOptions.rangeMin)))
},
zoom: function() {},
getMinScale: function() {},
getScale: function() {},
_parse: function(value) {
return "datetime" === this._businessRange.dataType ? new Date(value) : Number(value)
},
_fromValue: function(value) {
return this._parse(value)
},
_toValue: function(value) {
return this._parse(value)
},
isValid: function(value, interval) {
var that = this,
co = that._canvasOptions,
rangeMin = co.rangeMin,
rangeMax = co.rangeMax;
interval = interval || that._options.interval;
if (null === value || isNaN(value)) {
return false
}
value = "datetime" === that._businessRange.dataType && isNumber(value) ? new Date(value) : value;
if (interval !== that._options.interval) {
rangeMin = that._intervalize(rangeMin, interval);
rangeMax = that._intervalize(rangeMax, interval)
}
if (value.valueOf() < rangeMin || value.valueOf() >= addInterval(rangeMax, interval)) {
return false
}
return true
},
to: function(bp, direction, interval) {
var that = this;
interval = interval || that._options.interval;
var v1 = that._intervalize(bp, interval),
v2 = addInterval(v1, interval),
res = that._to(v1),
p2 = that._to(v2);
if (!direction) {
res = floor((res + p2) / 2)
} else {
if (direction > 0) {
res = p2
}
}
return res
},
_to: function(value) {
var co = this._canvasOptions,
rMin = co.rangeMinVisible,
rMax = co.rangeMaxVisible,
offset = value - rMin;
if (value < rMin) {
offset = 0
} else {
if (value > rMax) {
offset = addInterval(rMax, this._options.interval) - rMin
}
}
return this._conversionValue(this._calculateProjection(offset * this._canvasOptions.ratioOfCanvasRange))
},
from: function(position, direction) {
var value, that = this,
origInterval = that._options.interval,
interval = origInterval,
co = that._canvasOptions,
rMin = co.rangeMinVisible,
rMax = co.rangeMaxVisible;
if ("datetime" === that._businessRange.dataType) {
interval = dateToMilliseconds(origInterval)
}
value = that._calculateUnProjection((position - that._canvasOptions.startPoint) / that._canvasOptions.ratioOfCanvasRange);
value = that._intervalize(addInterval(value, interval / 2, direction > 0), origInterval);
if (value < rMin) {
value = rMin
} else {
if (value > rMax) {
value = rMax
}
}
return value
},
_add: function() {
return NaN
},
isValueProlonged: true
}
},
/*!*********************************************************************!*\
!*** ./artifacts/transpiled/viz/translators/datetime_translator.js ***!
\*********************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
function parse(value) {
return null !== value ? new Date(value) : value
}
module.exports = {
_fromValue: parse,
_toValue: parse,
_add: __webpack_require__( /*! ../../core/utils/date */ 22).addDateInterval
}
},
/*!************************************************************************!*\
!*** ./artifacts/transpiled/viz/translators/logarithmic_translator.js ***!
\************************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var vizUtils = __webpack_require__( /*! ../core/utils */ 12),
isDefined = __webpack_require__( /*! ../../core/utils/type */ 1).isDefined,
raiseTo = vizUtils.raiseToExt,
getLog = vizUtils.getLogExt;
module.exports = {
_fromValue: function(value) {
return null !== value ? getLog(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value
},
_toValue: function(value) {
return null !== value ? raiseTo(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value
},
getMinBarSize: function(minBarSize) {
var visibleArea = this.getCanvasVisibleArea(),
minValue = this.from(visibleArea.min + minBarSize),
canvasOptions = this._canvasOptions;
return Math.pow(canvasOptions.base, canvasOptions.rangeMinVisible + this._fromValue(this.from(visibleArea.min)) - this._fromValue(!isDefined(minValue) ? this.from(visibleArea.max) : minValue))
},
checkMinBarSize: function(initialValue, minShownValue, stackValue) {
var minBarSize, updateValue, canvasOptions = this._canvasOptions,
prevValue = stackValue - initialValue,
baseMethod = this.constructor.prototype.checkMinBarSize;
if (isDefined(minShownValue) && prevValue > 0) {
minBarSize = baseMethod(this._fromValue(stackValue / prevValue), this._fromValue(minShownValue) - canvasOptions.rangeMinVisible);
updateValue = Math.pow(canvasOptions.base, this._fromValue(prevValue) + minBarSize) - prevValue
} else {
updateValue = baseMethod(initialValue, minShownValue)
}
return updateValue
}
}
},
/*!**********************************************************!*\
!*** ./artifacts/transpiled/viz/axes/datetime_breaks.js ***!
\**********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var dateUtils = __webpack_require__( /*! ../../core/utils/date */ 22),
days = [0, 1, 2, 3, 4, 5, 6];
function getWeekendDays(workdays) {
return days.filter(function(day) {
return !workdays.some(function(workDay) {
return workDay === day
})
})
}
function getNextDayIndex(dayIndex) {
return (dayIndex + 1) % 7
}
function dayBetweenWeekend(weekend, day) {
var start = weekend.start,
end = weekend.end;
while (start !== end) {
if (start === day) {
return true
}
start = getNextDayIndex(start)
}
return false
}
function getDaysDistance(day, end) {
var length = 0;
while (day !== end) {
day = getNextDayIndex(day);
length++
}
return length
}
function separateBreak(scaleBreak, day) {
var result = [],
dayEnd = new Date(day);
dayEnd.setDate(day.getDate() + 1);
if (day > scaleBreak.from) {
result.push({
from: scaleBreak.from,
to: day
})
}
if (dayEnd < scaleBreak.to) {
result.push({
from: dayEnd,
to: scaleBreak.to
})
}
return result
}
function getWeekEndDayIndices(workDays) {
var indices = getWeekendDays(workDays);
if (indices.length < 7) {
while (getNextDayIndex(indices[indices.length - 1]) === indices[0]) {
indices.unshift(indices.pop())
}
}
return indices
}
function generateDateBreaksForWeekend(min, max, weekendDayIndices) {
var day = min.getDate(),
breaks = [],
weekends = weekendDayIndices.reduce(function(obj, day) {
var currentWeekEnd = obj[1];
if (void 0 === currentWeekEnd.start) {
currentWeekEnd = {
start: day,
end: getNextDayIndex(day)
};
obj[0].push(currentWeekEnd);
return [obj[0], currentWeekEnd]
} else {
if (currentWeekEnd.end === day) {
currentWeekEnd.end = getNextDayIndex(day);
return obj
}
}
currentWeekEnd = {
start: day,
end: getNextDayIndex(day)
};
obj[0].push(currentWeekEnd);
return [obj[0], currentWeekEnd]
}, [
[], {}
]);
weekends[0].forEach(function(weekend) {
var currentDate = new Date(min);
currentDate = dateUtils.trimTime(currentDate);
while (currentDate < max) {
day = currentDate.getDay();
var date = currentDate.getDate();
if (dayBetweenWeekend(weekend, day)) {
var to, from = new Date(currentDate);
currentDate.setDate(date + getDaysDistance(day, weekend.end));
to = new Date(currentDate);
breaks.push({
from: from,
to: to
})
}
currentDate.setDate(currentDate.getDate() + 1)
}
});
return breaks
}
function excludeWorkDaysFromWeekEndBreaks(breaks, exactWorkDays) {
var i, result = breaks.slice(),
processWorkDay = function(workday) {
workday = dateUtils.trimTime(new Date(workday));
if (result[i].from <= workday && result[i].to > workday) {
var separatedBreak = separateBreak(result[i], workday);
if (2 === separatedBreak.length) {
result.splice(i, 1, separatedBreak[0], separatedBreak[1])
} else {
if (1 === separatedBreak.length) {
result.splice(i, 1, separatedBreak[0])
} else {
result.splice(i, 1)
}
}
}
};
for (i = 0; i < result.length; i++) {
exactWorkDays.forEach(processWorkDay)
}
return result
}
function generateBreaksForHolidays(min, max, holidays, weekendDayIndices) {
var day, dayInWeekend = function(dayIndex) {
return dayIndex === day
},
adjustedMin = dateUtils.trimTime(min),
adjustedMax = dateUtils.trimTime(max);
adjustedMax.setDate(max.getDate() + 1);
return holidays.reduce(function(breaks, holiday) {
var holidayStart, holidayEnd;
holiday = new Date(holiday);
day = holiday.getDay();
if (!weekendDayIndices.some(dayInWeekend) && holiday >= adjustedMin && holiday <= adjustedMax) {
holidayStart = dateUtils.trimTime(holiday);
holidayEnd = new Date(holidayStart);
holidayEnd.setDate(holidayStart.getDate() + 1);
breaks.push({
from: holidayStart,
to: holidayEnd
})
}
return breaks
}, [])
}
function calculateGaps(breaks) {
return breaks.map(function(b) {
return {
from: b.from,
to: b.to,
gapSize: dateUtils.convertMillisecondsToDateUnits(b.to - b.from)
}
})
}
exports.generateDateBreaks = function(min, max, workWeek, singleWorkdays, holidays) {
var weekendDayIndices = getWeekEndDayIndices(workWeek),
breaks = generateDateBreaksForWeekend(min, max, weekendDayIndices);
breaks.push.apply(breaks, generateBreaksForHolidays(min, max, holidays || [], weekendDayIndices));
return calculateGaps(excludeWorkDaysFromWeekEndBreaks(breaks, singleWorkdays || []))
}
},
/*!*****************************************************!*\
!*** ./artifacts/transpiled/viz/axes/polar_axes.js ***!
\*****************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var circularAxes, polarAxes, vizUtils = __webpack_require__( /*! ../core/utils */ 12),
isDefined = __webpack_require__( /*! ../../core/utils/type */ 1).isDefined,
extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
constants = __webpack_require__( /*! ./axes_constants */ 253),
xyAxesLinear = __webpack_require__( /*! ./xy_axes */ 416).linear,
tick = __webpack_require__( /*! ./tick */ 415).tick,
_map = vizUtils.map,
baseAxisModule = __webpack_require__( /*! ./base_axis */ 205),
_math = Math,
_abs = _math.abs,
_round = _math.round,
convertPolarToXY = vizUtils.convertPolarToXY,
_extend = extend,
_noop = __webpack_require__( /*! ../../core/utils/common */ 4).noop,
HALF_PI_ANGLE = 90;
function getPolarQuarter(angle) {
var quarter;
angle = vizUtils.normalizeAngle(angle);
if (angle >= 315 && angle <= 360 || angle < 45 && angle >= 0) {
quarter = 1
} else {
if (angle >= 45 && angle < 135) {
quarter = 2
} else {
if (angle >= 135 && angle < 225) {
quarter = 3
} else {
if (angle >= 225 && angle < 315) {
quarter = 4
}
}
}
}
return quarter
}
polarAxes = exports;
circularAxes = polarAxes.circular = {
_calculateValueMargins: function(ticks) {
var _getViewportRange = this._getViewportRange(),
minVisible = _getViewportRange.minVisible,
maxVisible = _getViewportRange.maxVisible;
if (ticks && ticks.length > 1) {
minVisible = minVisible < ticks[0].value ? minVisible : ticks[0].value;
maxVisible = minVisible > ticks[ticks.length - 1].value ? maxVisible : ticks[ticks.length - 1].value
}
return {
minValue: minVisible,
maxValue: maxVisible
}
},
applyMargins: function() {
var margins = this._calculateValueMargins(this._majorTicks);
var br = this._translator.getBusinessRange();
br.addRange({
minVisible: margins.minValue,
maxVisible: margins.maxValue,
interval: this._calculateRangeInterval(br.interval)
});
this._translator.updateBusinessRange(br)
},
_getTranslatorOptions: function() {
return {
isHorizontal: true,
conversionValue: true,
addSpiderCategory: this._getSpiderCategoryOption(),
stick: this._getStick()
}
},
getCenter: function() {
return this._center
},
getRadius: function() {
return this._radius
},
getAngles: function() {
var options = this._options;
return [options.startAngle, options.endAngle]
},
_updateRadius: function(canvas) {
var rad = Math.min(canvas.width - canvas.left - canvas.right, canvas.height - canvas.top - canvas.bottom) / 2;
this._radius = rad < 0 ? 0 : rad
},
_updateCenter: function(canvas) {
this._center = {
x: canvas.left + (canvas.width - canvas.right - canvas.left) / 2,
y: canvas.top + (canvas.height - canvas.top - canvas.bottom) / 2
}
},
_processCanvas: function(canvas) {
this._updateRadius(canvas);
this._updateCenter(canvas);
return {
left: 0,
right: 0,
width: this._getScreenDelta()
}
},
_createAxisElement: function() {
return this._renderer.circle()
},
_updateAxisElementPosition: function() {
var center = this.getCenter();
this._axisElement.attr({
cx: center.x,
cy: center.y,
r: this.getRadius()
})
},
_boundaryTicksVisibility: {
min: true
},
_getSpiderCategoryOption: function() {
return this._options.firstPointOnStartAngle
},
_validateOptions: function(options) {
var that = this;
var originValue = options.originValue;
var wholeRange = options.wholeRange = {};
var period = options.period;
if (isDefined(originValue)) {
originValue = that.validateUnit(originValue)
}
if (period > 0 && options.argumentType === constants.numeric) {
originValue = originValue || 0;
wholeRange.endValue = originValue + period;
that._viewport = vizUtils.getVizRangeObject([originValue, wholeRange.endValue])
}
if (isDefined(originValue)) {
wholeRange.startValue = originValue
}
},
getMargins: function() {
var tickOptions = this._options.tick;
var tickOuterLength = Math.max(tickOptions.visible ? tickOptions.length / 2 + tickOptions.shift : 0, 0);
var radius = this.getRadius();
var _center = this._center,
x = _center.x,
y = _center.y;
var labelBoxes = this._majorTicks.map(function(t) {
return t.label && t.label.getBBox()
}).filter(function(b) {
return b
});
var canvas = extend({}, this._canvas, {
left: x - radius,
top: y - radius,
right: this._canvas.width - (x + radius),
bottom: this._canvas.height - (y + radius)
});
var margins = baseAxisModule.calculateCanvasMargins(labelBoxes, canvas);
Object.keys(margins).forEach(function(k) {
return margins[k] = margins[k] < tickOuterLength ? tickOuterLength : margins[k]
});
return margins
},
updateSize: function() {
var that = this;
baseAxisModule.Axis.prototype.updateSize.apply(that, arguments);
baseAxisModule.measureLabels(that._majorTicks);
that._adjustLabelsCoord(0, 0, true);
this._checkBoundedLabelsOverlapping(this._majorTicks, this._majorTicks.map(function(t) {
return t.labelBBox
}))
},
_setVisualRange: _noop,
applyVisualRangeSetter: _noop,
allowToExtendVisualRange: function(isEnd) {
return true
},
_getStick: function() {
return this._options.firstPointOnStartAngle || this._options.type !== constants.discrete
},
_getTranslatedCoord: function(value, offset) {
return this._translator.translate(value, offset) - HALF_PI_ANGLE
},
_getCanvasStartEnd: function() {
return {
start: 0 - HALF_PI_ANGLE,
end: 360 - HALF_PI_ANGLE
}
},
_getStripGraphicAttributes: function(fromAngle, toAngle) {
var center = this.getCenter(),
angle = this.getAngles()[0],
r = this.getRadius();
return {
x: center.x,
y: center.y,
innerRadius: 0,
outerRadius: r,
startAngle: -toAngle - angle,
endAngle: -fromAngle - angle
}
},
_createStrip: function(coords) {
return this._renderer.arc(coords.x, coords.y, coords.innerRadius, coords.outerRadius, coords.startAngle, coords.endAngle)
},
_getStripLabelCoords: function(from, to) {
var that = this,
coords = that._getStripGraphicAttributes(from, to),
angle = coords.startAngle + (coords.endAngle - coords.startAngle) / 2,
cosSin = vizUtils.getCosAndSin(angle),
halfRad = that.getRadius() / 2,
center = that.getCenter(),
x = _round(center.x + halfRad * cosSin.cos),
y = _round(center.y - halfRad * cosSin.sin);
return {
x: x,
y: y,
align: constants.center
}
},
_getConstantLineGraphicAttributes: function(value) {
var center = this.getCenter(),
r = this.getRadius();
return {
points: [center.x, center.y, center.x + r, center.y]
}
},
_createConstantLine: function(value, attr) {
return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr)
},
_rotateConstantLine: function(line, value) {
var _getCenter = this.getCenter(),
x = _getCenter.x,
y = _getCenter.y;
line.rotate(value + this.getAngles()[0], x, y)
},
_getConstantLineLabelsCoords: function(value) {
var that = this,
cosSin = vizUtils.getCosAndSin(-value - that.getAngles()[0]),
halfRad = that.getRadius() / 2,
center = that.getCenter(),
x = _round(center.x + halfRad * cosSin.cos),
y = _round(center.y - halfRad * cosSin.sin);
return {
x: x,
y: y
}
},
_checkAlignmentConstantLineLabels: _noop,
_adjustDivisionFactor: function(val) {
return 180 * val / (this.getRadius() * Math.PI)
},
_getScreenDelta: function() {
var angles = this.getAngles();
return _math.abs(angles[0] - angles[1])
},
_getTickMarkPoints: function(coords, length, _ref) {
var _ref$shift = _ref.shift,
shift = void 0 === _ref$shift ? 0 : _ref$shift;
var center = this.getCenter(),
corrections = {
inside: -1,
center: -.5,
outside: 0
},
radiusWithTicks = this.getRadius() + length * corrections[this._options.tickOrientation || "center"];
return [center.x + radiusWithTicks + shift, center.y, center.x + radiusWithTicks + length + shift, center.y]
},
_getLabelAdjustedCoord: function(tick, _offset, _maxWidth, checkCanvas) {
var that = this,
labelCoords = tick.labelCoords,
labelY = labelCoords.y,
labelAngle = labelCoords.angle,
cosSin = vizUtils.getCosAndSin(labelAngle),
cos = cosSin.cos,
sin = cosSin.sin,
box = tick.labelBBox,
halfWidth = box.width / 2,
halfHeight = box.height / 2,
indentFromAxis = that._options.label.indentFromAxis || 0,
x = labelCoords.x + indentFromAxis * cos,
y = labelY + (labelY - box.y - halfHeight) + indentFromAxis * sin;
var shiftX = 0;
var shiftY = 0;
switch (getPolarQuarter(labelAngle)) {
case 1:
shiftX = halfWidth;
shiftY = halfHeight * sin;
break;
case 2:
shiftX = halfWidth * cos;
shiftY = halfHeight;
break;
case 3:
shiftX = -halfWidth;
shiftY = halfHeight * sin;
break;
case 4:
shiftX = halfWidth * cos;
shiftY = -halfHeight
}
if (checkCanvas) {
var canvas = that._canvas;
var boxShiftX = x - labelCoords.x + shiftX;
var boxShiftY = y - labelCoords.y + shiftY;
if (box.x + boxShiftX < canvas.originalLeft) {
shiftX -= box.x + boxShiftX - canvas.originalLeft
}
if (box.x + box.width + boxShiftX > canvas.width - canvas.originalRight) {
shiftX -= box.x + box.width + boxShiftX - (canvas.width - canvas.originalRight)
}
if (box.y + boxShiftY < canvas.originalTop) {
shiftY -= box.y + boxShiftY - canvas.originalTop
}
if (box.y + box.height + boxShiftY > canvas.height - canvas.originalBottom) {
shiftY -= box.y + box.height + boxShiftY - (canvas.height - canvas.originalBottom)
}
}
return {
x: x + shiftX,
y: y + shiftY
}
},
_getGridLineDrawer: function() {
var that = this;
return function(tick, gridStyle) {
var center = that.getCenter();
return that._createPathElement(that._getGridPoints().points, gridStyle).rotate(tick.coords.angle, center.x, center.y)
}
},
_getGridPoints: function() {
var r = this.getRadius(),
center = this.getCenter();
return {
points: [center.x, center.y, center.x + r, center.y]
}
},
_getTranslatedValue: function(value, offset) {
var startAngle = this.getAngles()[0],
angle = this._translator.translate(value, -offset),
coords = convertPolarToXY(this.getCenter(), startAngle, angle, this.getRadius());
return {
x: coords.x,
y: coords.y,
angle: angle + startAngle - HALF_PI_ANGLE
}
},
_getAdjustedStripLabelCoords: function(strip) {
var box = strip.labelBBox;
return {
translateY: strip.label.attr("y") - box.y - box.height / 2
}
},
coordsIn: function(x, y) {
return vizUtils.convertXYToPolar(this.getCenter(), x, y).r > this.getRadius()
},
_rotateTick: function(element, coords) {
var center = this.getCenter();
element.rotate(coords.angle, center.x, center.y)
},
_validateOverlappingMode: function(mode) {
return constants.validateOverlappingMode(mode)
},
_validateDisplayMode: function() {
return "standard"
},
_getStep: function(boxes) {
var that = this,
radius = that.getRadius() + (that._options.label.indentFromAxis || 0),
maxLabelBox = boxes.reduce(function(prevValue, box) {
var curValue = prevValue;
if (prevValue.width < box.width) {
curValue.width = box.width
}
if (prevValue.height < box.height) {
curValue.height = box.height
}
return curValue
}, {
width: 0,
height: 0
}),
angle1 = _abs(2 * _math.atan(maxLabelBox.height / (2 * radius - maxLabelBox.width)) * 180 / _math.PI),
angle2 = _abs(2 * _math.atan(maxLabelBox.width / (2 * radius - maxLabelBox.height)) * 180 / _math.PI);
return constants.getTicksCountInRange(that._majorTicks, "angle", _math.max(angle1, angle2))
},
_checkBoundedLabelsOverlapping: function(majorTicks, boxes, mode) {
var labelOpt = this._options.label;
mode = mode || this._validateOverlappingMode(labelOpt.overlappingBehavior);
if ("hide" !== mode) {
return
}
var lastVisibleLabelIndex = majorTicks.reduce(function(lastVisibleLabelIndex, tick, index) {
return tick.label ? index : lastVisibleLabelIndex
}, null);
if (!lastVisibleLabelIndex) {
return
}
if (constants.areLabelsOverlap(boxes[0], boxes[lastVisibleLabelIndex], labelOpt.minSpacing, constants.center)) {
"first" === labelOpt.hideFirstOrLast ? majorTicks[0].label.remove() : majorTicks[lastVisibleLabelIndex].label.remove()
}
},
shift: function(margins) {
this._axisGroup.attr({
translateX: margins.right,
translateY: margins.bottom
})
}
};
polarAxes.circularSpider = _extend({}, circularAxes, {
_createAxisElement: function() {
return this._renderer.path([], "area")
},
_updateAxisElementPosition: function() {
this._axisElement.attr({
points: _map(this.getSpiderTicks(), function(tick) {
return {
x: tick.coords.x,
y: tick.coords.y
}
})
})
},
_getStick: function() {
return true
},
_getSpiderCategoryOption: function() {
return true
},
getSpiderTicks: function() {
var that = this,
ticks = that.getFullTicks();
that._spiderTicks = ticks.map(tick(that, that.renderer, {}, {}, that._getSkippedCategory(ticks), true));
that._spiderTicks.forEach(function(tick) {
tick.initCoords()
});
return that._spiderTicks
},
_getStripGraphicAttributes: function(fromAngle, toAngle) {
var firstTick, lastTick, nextTick, tick, center = this.getCenter(),
spiderTicks = this.getSpiderTicks(),
points = [],
i = 0,
len = spiderTicks.length;
while (i < len) {
tick = spiderTicks[i].coords;
if (tick.angle >= fromAngle && tick.angle <= toAngle) {
if (!firstTick) {
firstTick = (spiderTicks[i - 1] || spiderTicks[spiderTicks.length - 1]).coords;
points.push((tick.x + firstTick.x) / 2, (tick.y + firstTick.y) / 2)
}
points.push(tick.x, tick.y);
nextTick = (spiderTicks[i + 1] || spiderTicks[0]).coords;
lastTick = {
x: (tick.x + nextTick.x) / 2,
y: (tick.y + nextTick.y) / 2
}
}
i++
}
points.push(lastTick.x, lastTick.y);
points.push(center.x, center.y);
return {
points: points
}
},
_createStrip: function(_ref2) {
var points = _ref2.points;
return this._renderer.path(points, "area")
},
_getTranslatedCoord: function(value, offset) {
return this._translator.translate(value, offset) - HALF_PI_ANGLE
},
_setTickOffset: function() {
this._tickOffset = false
}
});
polarAxes.linear = {
_resetMargins: function() {
this._reinitTranslator(this._getViewportRange())
},
_getStick: xyAxesLinear._getStick,
_getSpiderCategoryOption: _noop,
_getTranslatorOptions: function() {
return {
isHorizontal: true,
stick: this._getStick()
}
},
getRadius: circularAxes.getRadius,
getCenter: circularAxes.getCenter,
getAngles: circularAxes.getAngles,
_updateRadius: circularAxes._updateRadius,
_updateCenter: circularAxes._updateCenter,
_processCanvas: function(canvas) {
this._updateRadius(canvas);
this._updateCenter(canvas);
return {
left: 0,
right: 0,
startPadding: canvas.startPadding,
endPadding: canvas.endPadding,
width: this.getRadius()
}
},
_createAxisElement: xyAxesLinear._createAxisElement,
_updateAxisElementPosition: function() {
var centerCoord = this.getCenter();
this._axisElement.attr({
points: [centerCoord.x, centerCoord.y, centerCoord.x + this.getRadius(), centerCoord.y]
}).rotate(this.getAngles()[0] - HALF_PI_ANGLE, centerCoord.x, centerCoord.y)
},
_getScreenDelta: function() {
return this.getRadius()
},
_getTickMarkPoints: function(coords, length) {
return [coords.x - length / 2, coords.y, coords.x + length / 2, coords.y]
},
_getLabelAdjustedCoord: function(tick) {
var x, y, that = this,
labelCoords = tick.labelCoords,
labelY = labelCoords.y,
cosSin = vizUtils.getCosAndSin(labelCoords.angle),
indentFromAxis = that._options.label.indentFromAxis || 0,
box = tick.labelBBox;
x = labelCoords.x - _abs(indentFromAxis * cosSin.sin) + _abs(box.width / 2 * cosSin.cos) - box.width / 2;
y = labelY + (labelY - box.y) - _abs(box.height / 2 * cosSin.sin) + _abs(indentFromAxis * cosSin.cos);
return {
x: x,
y: y
}
},
_getGridLineDrawer: function() {
var that = this;
return function(tick, gridStyle) {
var grid = that._getGridPoints(tick.coords);
return that._renderer.circle(grid.cx, grid.cy, grid.r).attr(gridStyle).sharp()
}
},
_getGridPoints: function(coords) {
var pos = this.getCenter();
var radius = vizUtils.getDistance(pos.x, pos.y, coords.x, coords.y);
if (radius > this.getRadius()) {
return {
cx: null,
cy: null,
r: null
}
}
return {
cx: pos.x,
cy: pos.y,
r: radius
}
},
_getTranslatedValue: function(value, offset) {
var startAngle = this.getAngles()[0],
xy = convertPolarToXY(this.getCenter(), startAngle, 0, this._translator.translate(value, offset));
return {
x: xy.x,
y: xy.y,
angle: startAngle - HALF_PI_ANGLE
}
},
_getTranslatedCoord: function(value, offset) {
return this._translator.translate(value, offset)
},
_getCanvasStartEnd: function() {
var invert = this.getTranslator().getBusinessRange().invert;
var coords = [0, this.getRadius()];
invert && coords.reverse();
return {
start: coords[0],
end: coords[1]
}
},
_getStripGraphicAttributes: function(fromPoint, toPoint) {
var center = this.getCenter();
return {
x: center.x,
y: center.y,
innerRadius: fromPoint,
outerRadius: toPoint
}
},
_createStrip: function(attrs) {
return this._renderer.arc(attrs.x, attrs.y, attrs.innerRadius, attrs.outerRadius, 0, 360)
},
_getAdjustedStripLabelCoords: circularAxes._getAdjustedStripLabelCoords,
_getStripLabelCoords: function(from, to) {
var that = this,
labelPos = from + (to - from) / 2,
center = that.getCenter(),
y = _round(center.y - labelPos);
return {
x: center.x,
y: y,
align: constants.center
}
},
_getConstantLineGraphicAttributes: function(value) {
var center = this.getCenter();
return {
cx: center.x,
cy: center.y,
r: value
}
},
_createConstantLine: function(value, attr) {
var attrs = this._getConstantLineGraphicAttributes(value);
return this._renderer.circle(attrs.cx, attrs.cy, attrs.r).attr(attr).sharp()
},
_getConstantLineLabelsCoords: function(value) {
var that = this,
center = that.getCenter(),
y = _round(center.y - value);
return {
x: center.x,
y: y
}
},
_checkAlignmentConstantLineLabels: _noop,
_rotateTick: function(element, coords, isGridLine) {
!isGridLine && element.rotate(coords.angle + HALF_PI_ANGLE, coords.x, coords.y)
},
_validateOverlappingMode: circularAxes._validateOverlappingMode,
_validateDisplayMode: circularAxes._validateDisplayMode,
_getStep: function(boxes) {
var quarter = getPolarQuarter(this.getAngles()[0]),
spacing = this._options.label.minSpacing,
func = 2 === quarter || 4 === quarter ? function(box) {
return box.width + spacing
} : function(box) {
return box.height
},
maxLabelLength = boxes.reduce(function(prevValue, box) {
return _math.max(prevValue, func(box))
}, 0);
return constants.getTicksCountInRange(this._majorTicks, 2 === quarter || 4 === quarter ? "x" : "y", maxLabelLength)
}
};
polarAxes.linearSpider = _extend({}, polarAxes.linear, {
_createPathElement: function(points, attr) {
return this._renderer.path(points, "area").attr(attr).sharp()
},
setSpiderTicks: function(ticks) {
this._spiderTicks = ticks
},
_getGridLineDrawer: function() {
var that = this;
return function(tick, gridStyle, element) {
return that._createPathElement(that._getGridPoints(tick.coords).points, gridStyle)
}
},
_getGridPoints: function(coords) {
var pos = this.getCenter(),
radius = vizUtils.getDistance(pos.x, pos.y, coords.x, coords.y);
return this._getGridPointsByRadius(radius)
},
_getGridPointsByRadius: function(radius) {
var pos = this.getCenter();
if (radius > this.getRadius()) {
return {
points: null
}
}
return {
points: _map(this._spiderTicks, function(tick) {
var cosSin = vizUtils.getCosAndSin(tick.coords.angle);
return {
x: _round(pos.x + radius * cosSin.cos),
y: _round(pos.y + radius * cosSin.sin)
}
})
}
},
_getStripGraphicAttributes: function(fromPoint, toPoint) {
var innerPoints = this._getGridPointsByRadius(toPoint).points,
outerPoints = this._getGridPointsByRadius(fromPoint).points;
return {
points: [outerPoints, innerPoints.reverse()]
}
},
_createStrip: polarAxes.circularSpider._createStrip,
_getConstantLineGraphicAttributes: function(value) {
return this._getGridPointsByRadius(value)
},
_createConstantLine: function(value, attr) {
return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr)
}
})
},
/*!********************************************************!*\
!*** ./artifacts/transpiled/viz/axes/constant_line.js ***!
\********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createConstantLine;
var _type = __webpack_require__( /*! ../../core/utils/type */ 1);
function createConstantLine(axis, options) {
var labelOptions = options.label || {};
var labelPosition = labelOptions.position || "inside";
var parsedValue = void 0;
var valueIsParsed = false;
axis._checkAlignmentConstantLineLabels(labelOptions);
var storedCoord = void 0;
return {
options: options,
labelOptions: labelOptions,
labelPosition: labelPosition,
label: null,
line: null,
getParsedValue: function() {
if (!valueIsParsed) {
parsedValue = axis.validateUnit(options.value, "E2105", "constantLine");
valueIsParsed = true;
return parsedValue
}
return parsedValue
},
draw: function() {
if (!(0, _type.isDefined)(options.value) || axis._translator.getBusinessRange().isEmpty()) {
return this
}
var canvas = axis._getCanvasStartEnd();
var parsedValue = this.getParsedValue();
this.coord = axis._getConstantLinePos(parsedValue, canvas.start, canvas.end);
var rootGroup = options.displayBehindSeries ? axis._axisConstantLineGroups.under : axis._axisConstantLineGroups.above;
var group = rootGroup[labelPosition];
if (!group) {
var side = axis._isHorizontal ? labelOptions.verticalAlignment : labelOptions.horizontalAlignment;
group = rootGroup[side]
}
if (!(0, _type.isDefined)(this.coord)) {
return this
}
var path = axis._createConstantLine(this.coord, {
stroke: options.color,
"stroke-width": options.width,
dashStyle: options.dashStyle
});
this.line = path.append(rootGroup.inside);
this.label = labelOptions.visible ? axis._drawConstantLineLabels(parsedValue, labelOptions, this.coord, group) : null;
this.updatePosition();
return this
},
removeLabel: function() {
this.label && this.label.remove()
},
updatePosition: function(animate) {
var canvas = axis._getCanvasStartEnd();
var coord = axis._getConstantLinePos(this.getParsedValue(), canvas.start, canvas.end);
if (!(0, _type.isDefined)(coord)) {
return
}
this.coord = coord;
if (animate && storedCoord) {
this.label && this.label.attr(axis._getConstantLineLabelsCoords(storedCoord, this.labelOptions));
this.line && this.line.attr(axis._getConstantLineGraphicAttributes(storedCoord));
this.label && this.label.animate(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));
this.line && this.line.animate(axis._getConstantLineGraphicAttributes(this.coord))
} else {
this.label && this.label.attr(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));
this.line && this.line.attr(axis._getConstantLineGraphicAttributes(this.coord));
axis._rotateConstantLine(this.line, this.coord)
}
},
saveCoords: function() {
storedCoord = this.coord
}
}
}
},
/*!************************************************!*\
!*** ./artifacts/transpiled/viz/axes/strip.js ***!
\************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createStrip;
var _type = __webpack_require__( /*! ../../core/utils/type */ 1);
var _utils = __webpack_require__( /*! ../core/utils */ 12);
var _extend = __webpack_require__( /*! ../../core/utils/extend */ 0);
function createStrip(axis, options) {
var storedCoord = void 0;
var labelOptions = options.label || {};
return {
options: options,
label: null,
rect: null,
_getCoord: function() {
var canvas = axis._getCanvasStartEnd();
var range = axis._translator.getBusinessRange();
return axis._getStripPos(options.startValue, options.endValue, canvas.start, canvas.end, range)
},
_drawLabel: function(coords) {
return axis._renderer.text(labelOptions.text, coords.x, coords.y).css((0, _utils.patchFontOptions)((0, _extend.extend)({}, axis.getOptions().label.font, labelOptions.font))).attr({
align: "center",
"class": labelOptions.cssClass
}).append(axis._axisStripLabelGroup)
},
draw: function() {
if (axis._translator.getBusinessRange().isEmpty()) {
return
}
if (((0, _type.isDefined)(options.startValue) || (0, _type.isDefined)(options.endValue)) && (0, _type.isDefined)(options.color)) {
var stripPos = this._getCoord();
this.labelCoords = labelOptions.text ? axis._getStripLabelCoords(stripPos.from, stripPos.to, labelOptions) : null;
if (stripPos.to - stripPos.from === 0 || !(0, _type.isDefined)(stripPos.to) || !(0, _type.isDefined)(stripPos.from)) {
return
}
this.rect = axis._createStrip(axis._getStripGraphicAttributes(stripPos.from, stripPos.to)).attr({
fill: options.color
}).append(axis._axisStripGroup);
this.label = labelOptions.text ? this._drawLabel(this.labelCoords) : null
}
},
removeLabel: function() {},
updatePosition: function(animate) {
var stripPos = this._getCoord();
if (animate && storedCoord) {
this.label && this.label.attr(axis._getStripLabelCoords(storedCoord.from, storedCoord.to, options.label));
this.rect && this.rect.attr(axis._getStripGraphicAttributes(storedCoord.from, storedCoord.to));
this.label && this.label.animate(axis._getStripLabelCoords(stripPos.from, stripPos.to, options.label));
this.rect && this.rect.animate(axis._getStripGraphicAttributes(stripPos.from, stripPos.to))
} else {
this.label && this.label.attr(axis._getStripLabelCoords(stripPos.from, stripPos.to, options.label));
this.rect && this.rect.attr(axis._getStripGraphicAttributes(stripPos.from, stripPos.to))
}
},
saveCoords: function() {
storedCoord = this._getCoord()
}
}
}
},
/*!*****************************************************************!*\
!*** ./artifacts/transpiled/viz/chart_components/scroll_bar.js ***!
\*****************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _events_engine = __webpack_require__( /*! ../../events/core/events_engine */ 5);
var _events_engine2 = _interopRequireDefault(_events_engine);
var _utils = __webpack_require__( /*! ../../events/utils */ 8);
var _utils2 = _interopRequireDefault(_utils);
var _extend = __webpack_require__( /*! ../../core/utils/extend */ 0);
var _translator2d = __webpack_require__( /*! ../translators/translator2d */ 254);
var _translator2d2 = _interopRequireDefault(_translator2d);
var _type = __webpack_require__( /*! ../../core/utils/type */ 1);
var _common = __webpack_require__( /*! ../../core/utils/common */ 4);
var _drag = __webpack_require__( /*! ../../events/drag */ 68);
var _drag2 = _interopRequireDefault(_drag);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
var _min = Math.min;
var _max = Math.max;
var MIN_SCROLL_BAR_SIZE = 2;
var ScrollBar = function(renderer, group) {
this._translator = new _translator2d2.default.Translator2D({}, {}, {});
this._scroll = renderer.rect().append(group);
this._addEvents()
};
function _getXCoord(canvas, pos, offset, width) {
var x = 0;
if ("right" === pos) {
x = canvas.width - canvas.right + offset
} else {
if ("left" === pos) {
x = canvas.left - offset - width
}
}
return x
}
function _getYCoord(canvas, pos, offset, width) {
var y = 0;
if ("top" === pos) {
y = canvas.top - offset
} else {
if ("bottom" === pos) {
y = canvas.height - canvas.bottom + width + offset
}
}
return y
}
ScrollBar.prototype = {
_addEvents: function() {
var _this = this;
var scrollElement = this._scroll.element;
_events_engine2.default.on(scrollElement, _drag2.default.start, function(e) {
_utils2.default.fireEvent({
type: "dxc-scroll-start",
originalEvent: e,
target: scrollElement
})
});
_events_engine2.default.on(scrollElement, _drag2.default.move, function(e) {
var dX = -e.offset.x * _this._scale;
var dY = -e.offset.y * _this._scale;
var lx = _this._offset - (_this._layoutOptions.vertical ? dY : dX) / _this._scale;
_this._applyPosition(lx, lx + _this._translator.canvasLength / _this._scale);
_utils2.default.fireEvent({
type: "dxc-scroll-move",
originalEvent: e,
target: scrollElement,
offset: {
x: dX,
y: dY
}
})
});
_events_engine2.default.on(scrollElement, _drag2.default.end, function(e) {
_utils2.default.fireEvent({
type: "dxc-scroll-end",
originalEvent: e,
target: scrollElement,
offset: {
x: -e.offset.x * _this._scale,
y: -e.offset.y * _this._scale
}
})
})
},
update: function(options) {
var that = this,
position = options.position,
isVertical = options.rotated,
defaultPosition = isVertical ? "right" : "top",
secondaryPosition = isVertical ? "left" : "bottom";
if (position !== defaultPosition && position !== secondaryPosition) {
position = defaultPosition
}
that._scroll.attr({
rotate: !options.rotated ? -90 : 0,
rotateX: 0,
rotateY: 0,
fill: options.color,
width: options.width,
opacity: options.opacity
});
that._layoutOptions = {
width: options.width,
offset: options.offset,
vertical: isVertical,
position: position
};
return that
},
init: function(range, stick) {
var that = this;
var isDiscrete = "discrete" === range.axisType;
that._translateWithOffset = isDiscrete && !stick && 1 || 0;
that._translator.update((0, _extend.extend)({}, range, {
minVisible: null,
maxVisible: null,
visibleCategories: null
}, isDiscrete && {
min: null,
max: null
} || {}), that._canvas, {
isHorizontal: !that._layoutOptions.vertical,
stick: stick
});
return that
},
getOptions: function() {
return this._layoutOptions
},
setPane: function(panes) {
var pane, position = this._layoutOptions.position;
if ("left" === position || "top" === position) {
pane = panes[0]
} else {
pane = panes[panes.length - 1]
}
this.pane = pane.name;
return this
},
updateSize: function(canvas) {
this._canvas = (0, _extend.extend)({}, canvas);
var options = this._layoutOptions,
pos = options.position,
offset = options.offset,
width = options.width;
this._scroll.attr({
translateX: _getXCoord(canvas, pos, offset, width),
translateY: _getYCoord(canvas, pos, offset, width)
})
},
getMultipleAxesSpacing: function() {
return 0
},
estimateMargins: function() {
return this.getMargins()
},
getMargins: function() {
var options = this._layoutOptions,
margins = {
left: 0,
top: 0,
right: 0,
bottom: 0
};
margins[options.position] = options.width + options.offset;
return margins
},
draw: _common.noop,
shift: _common.noop,
hideTitle: _common.noop,
hideOuterElements: _common.noop,
prepareAnimation: _common.noop,
setPosition: function(min, max) {
var that = this,
translator = that._translator,
minPoint = (0, _type.isDefined)(min) ? translator.translate(min, -that._translateWithOffset) : translator.translate("canvas_position_start"),
maxPoint = (0, _type.isDefined)(max) ? translator.translate(max, that._translateWithOffset) : translator.translate("canvas_position_end");
that._offset = _min(minPoint, maxPoint);
that._scale = translator.getScale(min, max);
that._applyPosition(_min(minPoint, maxPoint), _max(minPoint, maxPoint))
},
dispose: function() {
this._scroll.dispose();
this._scroll = this._translator = null
},
_applyPosition: function(x1, x2) {
var height, that = this,
visibleArea = that._translator.getCanvasVisibleArea();
x1 = _max(x1, visibleArea.min);
x1 = _min(x1, visibleArea.max);
x2 = _min(x2, visibleArea.max);
x2 = _max(x2, visibleArea.min);
height = Math.abs(x2 - x1);
that._scroll.attr({
y: x1,
height: height < MIN_SCROLL_BAR_SIZE ? MIN_SCROLL_BAR_SIZE : height
})
}
};
exports.ScrollBar = ScrollBar
},
/*!*******************************************************************!*\
!*** ./artifacts/transpiled/viz/chart_components/shutter_zoom.js ***!
\*******************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var dragEvents = __webpack_require__( /*! ../../events/drag */ 68),
SHUTTER_EVENTS_NS = ".shutter-zoom",
DRAG_START_EVENT_NAME = dragEvents.start + SHUTTER_EVENTS_NS,
DRAG_UPDATE_EVENT_NAME = dragEvents.move + SHUTTER_EVENTS_NS,
DRAG_END_EVENT_NAME = dragEvents.end + SHUTTER_EVENTS_NS;
function getPointerCoord(rootOffset, canvas, rotated, e) {
var coord = Math.floor(rotated ? e.pageY - rootOffset.top : e.pageX - rootOffset.left),
min = rotated ? canvas.y1 : canvas.x1,
max = rotated ? canvas.y2 : canvas.x2;
if (coord < min) {
coord = min
} else {
if (coord > max) {
coord = max
}
}
return coord
}
function checkCoords(rootOffset, canvas, e) {
var x = e.pageX - rootOffset.left,
y = e.pageY - rootOffset.top;
return x >= canvas.x1 && x <= canvas.x2 && y >= canvas.y1 && y <= canvas.y2
}
function dragStartHandler(ctx) {
return function(e) {
var offset = ctx.getRootOffset(),
canvas = ctx.getCanvas();
if (!checkCoords(offset, canvas, e)) {
e.cancel = true;
return
}
ctx.rootOffset = offset;
ctx.canvas = canvas;
ctx.startCoord = getPointerCoord(offset, canvas, ctx.rotated, e);
ctx.triggerStart();
ctx.rect.attr({
x: canvas.x1,
y: canvas.y1,
width: canvas.width,
height: canvas.height
}).append(ctx.root)
}
}
function dragHandler(ctx) {
return function(e) {
var curCoord = getPointerCoord(ctx.rootOffset, ctx.canvas, ctx.rotated, e),
attr = {};
ctx.curCoord = curCoord;
attr[ctx.rotated ? "y" : "x"] = Math.min(ctx.startCoord, curCoord);
attr[ctx.rotated ? "height" : "width"] = Math.abs(ctx.startCoord - curCoord);
ctx.rect.attr(attr)
}
}
function dragEndHandler(ctx) {
return function(e) {
ctx.triggerEnd();
ctx.rect.remove()
}
}
function shutterZoom(options) {
var chart = options.chart,
renderer = options.renderer,
rotated = options.rotated,
rect = renderer.rect(0, 0, 0, 0).attr(options.shutterOptions),
shutter = {
rect: rect,
root: renderer.root,
rotated: rotated,
triggerStart: function() {
chart._eventTrigger("zoomStart")
},
triggerEnd: function() {
var tr = chart._argumentAxes[0].getTranslator(),
rangeStart = Math.min(this.startCoord, this.curCoord),
rangeEnd = Math.max(this.startCoord, this.curCoord);
chart._eventTrigger("zoomEnd", {
rangeStart: tr.from(rangeStart),
rangeEnd: tr.from(rangeEnd)
})
},
dispose: function() {
renderer.root.off(SHUTTER_EVENTS_NS);
rect.dispose()
},
getRootOffset: function() {
return renderer.getRootOffset()
},
getCanvas: function() {
var canvas = chart._canvas,
panes = chart.panes,
firstPane = panes[0].canvas,
lastPane = panes[panes.length - 1].canvas;
return {
x1: firstPane.left,
y1: firstPane.top,
x2: canvas.width - lastPane.right,
y2: canvas.height - lastPane.bottom,
width: canvas.width - firstPane.left - lastPane.right,
height: canvas.height - firstPane.top - lastPane.bottom
}
}
};
renderer.root.off(SHUTTER_EVENTS_NS).on(DRAG_START_EVENT_NAME, {
direction: rotated ? "vertical" : "horizontal",
immediate: true
}, dragStartHandler(shutter)).on(DRAG_UPDATE_EVENT_NAME, dragHandler(shutter)).on(DRAG_END_EVENT_NAME, dragEndHandler(shutter));
return shutter
}
module.exports = {
name: "shutter_zoom",
init: function() {
var options = this.option("shutterZoom") || {};
if (!options.enabled) {
return
}
this._shutterZoom = shutterZoom({
chart: this,
renderer: this._renderer,
rotated: this.option("rotated"),
shutterOptions: options
})
},
dispose: function() {
this._shutterZoom && this._shutterZoom.dispose()
}
}
},
/*!*******************************************************************!*\
!*** ./artifacts/transpiled/viz/chart_components/zoom_and_pan.js ***!
\*******************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _type = __webpack_require__( /*! ../../core/utils/type */ 1);
var _extend = __webpack_require__( /*! ../../core/utils/extend */ 0);
var _utils = __webpack_require__( /*! ../core/utils */ 12);
var _wheel = __webpack_require__( /*! ../../events/core/wheel */ 127);
var _transform = __webpack_require__( /*! ../../events/transform */ 292);
var _transform2 = _interopRequireDefault(_transform);
var _drag = __webpack_require__( /*! ../../events/drag */ 68);
var _drag2 = _interopRequireDefault(_drag);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
var EVENTS_NS = ".zoomAndPanNS";
var DRAG_START_EVENT_NAME = _drag2.default.start + EVENTS_NS;
var DRAG_EVENT_NAME = _drag2.default.move + EVENTS_NS;
var DRAG_END_EVENT_NAME = _drag2.default.end + EVENTS_NS;
var PINCH_START_EVENT_NAME = _transform2.default.pinchstart + EVENTS_NS;
var PINCH_EVENT_NAME = _transform2.default.pinch + EVENTS_NS;
var PINCH_END_EVENT_NAME = _transform2.default.pinchend + EVENTS_NS;
var SCROLL_BAR_START_EVENT_NAME = "dxc-scroll-start" + EVENTS_NS;
var SCROLL_BAR_MOVE_EVENT_NAME = "dxc-scroll-move" + EVENTS_NS;
var SCROLL_BAR_END_EVENT_NAME = "dxc-scroll-end" + EVENTS_NS;
var GESTURE_TIMEOUT = 300;
var MIN_DRAG_DELTA = 5;
var _min = Math.min;
var _max = Math.max;
var _abs = Math.abs;
function canvasToRect(canvas) {
return {
x: canvas.left,
y: canvas.top,
width: canvas.width - canvas.left - canvas.right,
height: canvas.height - canvas.top - canvas.bottom
}
}
function checkCoords(rect, coords) {
var x = coords.x,
y = coords.y;
return x >= rect.x && x <= rect.width + rect.x && y >= rect.y && y <= rect.height + rect.y
}
function sortAxes(axes, onlyAxisToNotify) {
if (onlyAxisToNotify) {
axes = axes.sort(function(a, b) {
if (a === onlyAxisToNotify) {
return -1
}
if (b === onlyAxisToNotify) {
return 1
}
return 0
})
}
return axes
}
function isNotEmptyAxisBusinessRange(axis) {
return !axis.getTranslator().getBusinessRange().isEmpty()
}
module.exports = {
name: "zoom_and_pan",
init: function() {
var chart = this,
renderer = this._renderer;
function cancelEvent(e) {
if (e.originalEvent) {
cancelEvent(e.originalEvent)
}
if (false !== e.cancelable) {
e.cancel = true
}
}
function startAxesViewportChanging(zoomAndPan, actionField, e) {
var options = zoomAndPan.options;
var actionData = zoomAndPan.actionData;
var axes = [];
if (options.argumentAxis[actionField]) {
axes.push(chart.getArgumentAxis())
}
if (options.valueAxis[actionField]) {
axes = axes.concat(actionData.valueAxes)
}
axes.reduce(function(isPrevented, axis) {
if (isPrevented) {
return isPrevented
}
if (isNotEmptyAxisBusinessRange(axis)) {
return axis.handleZooming(null, {
end: true
}, e, actionField).isPrevented
}
return isPrevented
}, false) && cancelEvent(e)
}
function axesViewportChanging(zoomAndPan, actionField, e, offsetCalc, centerCalc) {
function zoomAxes(axes, criteria, coordField, e, actionData) {
var zoom = {
zoomed: false
};
criteria && axes.filter(isNotEmptyAxisBusinessRange).forEach(function(axis) {
var options = axis.getOptions();
var viewport = axis.visualRange();
var scale = axis.getTranslator().getEventScale(e);
var translate = -offsetCalc(e, actionData, coordField, scale);
zoom = (0, _extend.extend)(true, zoom, axis.getTranslator().zoom(translate, scale, axis.getZoomBounds()));
var range = axis.adjustRange((0, _utils.getVizRangeObject)([zoom.min, zoom.max]));
var isMinZoom = axis.isZoomingLowerLimitOvercome(actionField, scale, range);
if (!(0, _type.isDefined)(viewport) || viewport.startValue.valueOf() !== range.startValue.valueOf() || viewport.endValue.valueOf() !== range.endValue.valueOf()) {
axis.handleZooming(isMinZoom ? null : range, {
start: true,
end: true
}, e, actionField);
if (!isMinZoom) {
zoom.zoomed = true;
zoom.deltaTranslate = translate - zoom.translate
}
} else {
if ("touch" === e.pointerType && "discrete" === options.type) {
var isMinPosition = axis.isExtremePosition(false);
var isMaxPosition = axis.isExtremePosition(true);
var zoomInEnabled = scale > 1 && !isMinZoom;
var zoomOutEnabled = scale < 1 && (!isMinPosition || !isMaxPosition);
var panningEnabled = 1 === scale && !(isMinPosition && (translate < 0 && !options.inverted || translate > 0 && options.inverted) || isMaxPosition && (translate > 0 && !options.inverted || translate < 0 && options.inverted));
zoom.enabled = zoomInEnabled || zoomOutEnabled || panningEnabled
}
}
});
return zoom
}
function storeOffset(e, actionData, zoom, coordField) {
if (zoom.zoomed) {
actionData.offset[coordField] = (e.offset ? e.offset[coordField] : actionData.offset[coordField]) + zoom.deltaTranslate
}
}
function storeCenter(center, actionData, zoom, coordField) {
if (zoom.zoomed) {
actionData.center[coordField] = center[coordField] + zoom.deltaTranslate
}
}
var rotated = chart.option("rotated");
var actionData = zoomAndPan.actionData;
var options = zoomAndPan.options;
var argZoom = {};
var valZoom = {};
if (!actionData.fallback) {
argZoom = zoomAxes(chart._argumentAxes, options.argumentAxis[actionField], rotated ? "y" : "x", e, actionData);
valZoom = zoomAxes(actionData.valueAxes, options.valueAxis[actionField], rotated ? "x" : "y", e, actionData);
chart._requestChange(["VISUAL_RANGE"]);
storeOffset(e, actionData, argZoom, rotated ? "y" : "x");
storeOffset(e, actionData, valZoom, rotated ? "x" : "y")
}
var center = centerCalc(e);
storeCenter(center, actionData, argZoom, rotated ? "y" : "x");
storeCenter(center, actionData, valZoom, rotated ? "x" : "y");
if (!argZoom.zoomed && !valZoom.zoomed) {
actionData.center = center
}
return argZoom.zoomed || valZoom.zoomed || actionData.fallback || argZoom.enabled || valZoom.enabled
}
function finishAxesViewportChanging(zoomAndPan, actionField, e, offsetCalc) {
function zoomAxes(axes, criteria, coordField, e, actionData, onlyAxisToNotify) {
var zoomStarted = false;
criteria && axes.forEach(function(axis) {
var silent = onlyAxisToNotify && axis !== onlyAxisToNotify;
var scale = e.scale || 1;
var zoom = axis.getTranslator().zoom(-offsetCalc(e, actionData, coordField, scale), scale, axis.getZoomBounds());
var range = {
startValue: zoom.min,
endValue: zoom.max
};
var isMinZoom = axis.isZoomingLowerLimitOvercome(actionField, scale, range);
axis.handleZooming(isMinZoom ? null : range, {
start: true,
end: silent
}, e, actionField);
isMinZoom ? axis.handleZoomEnd() : zoomStarted = true
});
return zoomStarted
}
var rotated = chart.option("rotated");
var actionData = zoomAndPan.actionData;
var options = zoomAndPan.options;
var zoomStarted = true;
if (actionData.fallback) {
zoomStarted &= zoomAxes(chart._argumentAxes, options.argumentAxis[actionField], rotated ? "y" : "x", e, actionData, chart.getArgumentAxis());
zoomStarted |= zoomAxes(actionData.valueAxes, options.valueAxis[actionField], rotated ? "x" : "y", e, actionData)
} else {
var axes = [];
if (options.argumentAxis[actionField]) {
axes.push(chart.getArgumentAxis())
}
if (options.valueAxis[actionField]) {
axes = axes.concat(actionData.valueAxes)
}
axes.filter(isNotEmptyAxisBusinessRange).forEach(function(axis) {
axis.handleZooming(null, {
start: true
}, e, actionField)
});
zoomStarted = zoomStarted && axes.length
}
zoomStarted && chart._requestChange(["VISUAL_RANGE"])
}
function prepareActionData(coords, action) {
var axes = chart._argumentAxes.filter(function(axis) {
return checkCoords(canvasToRect(axis.getCanvas()), coords)
});
return {
fallback: chart._lastRenderingTime > GESTURE_TIMEOUT,
cancel: !axes.length || !(0, _type.isDefined)(action),
action: action,
curAxisRect: axes.length && canvasToRect(axes[0].getCanvas()),
valueAxes: axes.length && chart._valueAxes.filter(function(axis) {
return checkCoords(canvasToRect(axis.getCanvas()), coords)
}),
offset: {
x: 0,
y: 0
},
center: coords,
startCenter: coords
}
}
function getPointerCoord(rect, e) {
var rootOffset = renderer.getRootOffset();
return {
x: _min(_max(e.pageX - rootOffset.left, rect.x), rect.width + rect.x),
y: _min(_max(e.pageY - rootOffset.top, rect.y), rect.height + rect.y)
}
}
function calcCenterForPinch(e) {
var rootOffset = renderer.getRootOffset();
var x1 = e.pointers[0].pageX,
x2 = e.pointers[1].pageX,
y1 = e.pointers[0].pageY,
y2 = e.pointers[1].pageY;
return {
x: _min(x1, x2) + _abs(x2 - x1) / 2 - rootOffset.left,
y: _min(y1, y2) + _abs(y2 - y1) / 2 - rootOffset.top
}
}
function calcCenterForDrag(e) {
var rootOffset = renderer.getRootOffset();
return {
x: e.pageX - rootOffset.left,
y: e.pageY - rootOffset.top
}
}
function calcOffsetForDrag(e, actionData, coordField) {
return e.offset[coordField] - actionData.offset[coordField]
}
function preventDefaults(e) {
if (false !== e.cancelable) {
e.preventDefault();
e.stopPropagation()
}
chart._stopCurrentHandling()
}
var zoomAndPan = {
dragStartHandler: function(e) {
var options = zoomAndPan.options;
var isTouch = "touch" === e.pointerType;
var wantPan = options.argumentAxis.pan || options.valueAxis.pan;
var wantZoom = options.argumentAxis.zoom || options.valueAxis.zoom;
var panKeyPressed = (0, _type.isDefined)(options.panKey) && e[(0, _utils.normalizeEnum)(options.panKey) + "Key"];
var dragToZoom = options.dragToZoom;
var action = void 0;
e._cancelPreventDefault = true;
if (isTouch) {
if (options.allowTouchGestures && wantPan) {
var cancelPanning = !zoomAndPan.panningVisualRangeEnabled() || zoomAndPan.skipEvent;
action = cancelPanning ? null : "pan"
}
} else {
if (dragToZoom && wantPan && panKeyPressed) {
action = "pan"
} else {
if (!dragToZoom && wantPan) {
action = "pan"
} else {
if (dragToZoom && wantZoom) {
action = "zoom"
}
}
}
}
var actionData = prepareActionData(calcCenterForDrag(e), action);
if (actionData.cancel) {
zoomAndPan.skipEvent = false;
if (false !== e.cancelable) {
e.cancel = true
}
return
}
zoomAndPan.actionData = actionData;
if ("zoom" === action) {
actionData.startCoords = getPointerCoord(actionData.curAxisRect, e);
actionData.rect = renderer.rect(0, 0, 0, 0).attr(options.dragBoxStyle).append(renderer.root)
} else {
startAxesViewportChanging(zoomAndPan, "pan", e)
}
},
dragHandler: function(e) {
var rotated = chart.option("rotated");
var options = zoomAndPan.options;
var actionData = zoomAndPan.actionData;
var isTouch = "touch" === e.pointerType;
e._cancelPreventDefault = true;
if (!actionData || isTouch && !zoomAndPan.panningVisualRangeEnabled()) {
return
}
if ("zoom" === actionData.action) {
preventDefaults(e);
var curCanvas = actionData.curAxisRect,
startCoords = actionData.startCoords,
curCoords = getPointerCoord(curCanvas, e),
zoomArg = options.argumentAxis.zoom,
zoomVal = options.valueAxis.zoom;
var rect = {
x: _min(startCoords.x, curCoords.x),
y: _min(startCoords.y, curCoords.y),
width: _abs(startCoords.x - curCoords.x),
height: _abs(startCoords.y - curCoords.y)
};
if (!zoomArg || !zoomVal) {
if (!zoomArg && !rotated || !zoomVal && rotated) {
rect.x = curCanvas.x;
rect.width = curCanvas.width
} else {
rect.y = curCanvas.y;
rect.height = curCanvas.height
}
}
actionData.rect.attr(rect)
} else {
if ("pan" === actionData.action) {
axesViewportChanging(zoomAndPan, "pan", e, calcOffsetForDrag, function(e) {
return e.offset
});
var deltaOffsetY = Math.abs(e.offset.y - actionData.offset.y);
var deltaOffsetX = Math.abs(e.offset.x - actionData.offset.x);
if (isTouch && (deltaOffsetY > MIN_DRAG_DELTA && deltaOffsetY > Math.abs(actionData.offset.x) || deltaOffsetX > MIN_DRAG_DELTA && deltaOffsetX > Math.abs(actionData.offset.y))) {
return
}
preventDefaults(e)
}
}
},
dragEndHandler: function(e) {
var rotated = chart.option("rotated");
var options = zoomAndPan.options;
var actionData = zoomAndPan.actionData;
var isTouch = "touch" === e.pointerType;
var panIsEmpty = actionData && "pan" === actionData.action && !actionData.fallback && 0 === actionData.offset.x && 0 === actionData.offset.y;
if (!actionData || isTouch && !zoomAndPan.panningVisualRangeEnabled() || panIsEmpty) {
return
}(!isTouch || !zoomAndPan.actionData.isNative) && preventDefaults(e);
if ("zoom" === actionData.action) {
var zoomAxes = function(axes, criteria, coordField, startCoords, curCoords, onlyAxisToNotify) {
axes = sortAxes(axes, onlyAxisToNotify);
var curCoord = curCoords[coordField];
var startCoord = startCoords[coordField];
var zoomStarted = false;
if (criteria && _abs(curCoord - startCoord) > MIN_DRAG_DELTA) {
axes.some(function(axis) {
var tr = axis.getTranslator();
if (tr.getBusinessRange().isEmpty()) {
return
}
var silent = onlyAxisToNotify && axis !== onlyAxisToNotify;
var range = [tr.from(startCoord), tr.from(curCoord)];
var isMinZoom = axis.isZoomingLowerLimitOvercome(actionData.action, tr.getMinScale(true), range);
var result = axis.handleZooming(isMinZoom ? null : range, {
start: !!silent,
end: !!silent
}, e, actionData.action);
isMinZoom ? axis.handleZoomEnd() : zoomStarted = true;
return onlyAxisToNotify && result.isPrevented
})
}
return zoomStarted
};
var curCoords = getPointerCoord(actionData.curAxisRect, e);
var argumentAxesZoomed = zoomAxes(chart._argumentAxes, options.argumentAxis.zoom, rotated ? "y" : "x", actionData.startCoords, curCoords, chart.getArgumentAxis());
var valueAxesZoomed = zoomAxes(actionData.valueAxes, options.valueAxis.zoom, rotated ? "x" : "y", actionData.startCoords, curCoords);
if (valueAxesZoomed || argumentAxesZoomed) {
chart._requestChange(["VISUAL_RANGE"])
}
actionData.rect.dispose()
} else {
if ("pan" === actionData.action) {
finishAxesViewportChanging(zoomAndPan, "pan", e, calcOffsetForDrag)
}
}
zoomAndPan.actionData = null
},
pinchStartHandler: function(e) {
var actionData = prepareActionData(calcCenterForPinch(e), "zoom");
actionData.isNative = !zoomAndPan.panningVisualRangeEnabled();
if (actionData.cancel) {
cancelEvent(e);
return
}
zoomAndPan.actionData = actionData;
startAxesViewportChanging(zoomAndPan, "zoom", e)
},
pinchHandler: function(e) {
if (!zoomAndPan.actionData) {
return
}
var viewportChanged = axesViewportChanging(zoomAndPan, "zoom", e, function(e, actionData, coordField, scale) {
return calcCenterForPinch(e)[coordField] - actionData.center[coordField] + (actionData.center[coordField] - actionData.center[coordField] * scale)
}, calcCenterForPinch);
zoomAndPan.defineTouchBehavior(!viewportChanged, e);
!viewportChanged && (zoomAndPan.actionData = null)
},
pinchEndHandler: function(e) {
if (!zoomAndPan.actionData) {
return
}
finishAxesViewportChanging(zoomAndPan, "zoom", e, function(e, actionData, coordField, scale) {
return actionData.center[coordField] - actionData.startCenter[coordField] + (actionData.startCenter[coordField] - actionData.startCenter[coordField] * scale)
});
zoomAndPan.actionData = null
},
cleanup: function() {
renderer.root.off(EVENTS_NS);
zoomAndPan.actionData && zoomAndPan.actionData.rect && zoomAndPan.actionData.rect.dispose();
zoomAndPan.actionData = null;
renderer.root.css({
"touch-action": "",
"-ms-touch-action": ""
})
},
setup: function(options) {
zoomAndPan.cleanup();
if (!options.argumentAxis.pan) {
renderer.root.on(SCROLL_BAR_START_EVENT_NAME, cancelEvent)
}
if (options.argumentAxis.none && options.valueAxis.none) {
return
}
zoomAndPan.options = options;
var rotated = chart.option("rotated");
if ((options.argumentAxis.zoom || options.valueAxis.zoom) && options.allowMouseWheel) {
renderer.root.on(_wheel.name + EVENTS_NS, function(e) {
function zoomAxes(axes, coord, delta, onlyAxisToNotify) {
axes = sortAxes(axes, onlyAxisToNotify);
var zoomStarted = false;
axes.some(function(axis) {
var translator = axis.getTranslator();
if (translator.getBusinessRange().isEmpty()) {
return
}
var silent = onlyAxisToNotify && axis !== onlyAxisToNotify;
var scale = translator.getMinScale(delta > 0);
var zoom = translator.zoom(-(coord - coord * scale), scale, axis.getZoomBounds());
var range = {
startValue: zoom.min,
endValue: zoom.max
};
var isMinZoom = axis.isZoomingLowerLimitOvercome("zoom", scale, range);
var result = axis.handleZooming(isMinZoom ? null : range, {
start: !!silent,
end: !!silent
}, e, "zoom");
isMinZoom ? axis.handleZoomEnd() : zoomStarted = true;
return onlyAxisToNotify && result.isPrevented
});
return !!zoomStarted
}
var coords = calcCenterForDrag(e);
var axesZoomed = false;
var targetAxes = void 0;
if (options.valueAxis.zoom) {
targetAxes = chart._valueAxes.filter(function(axis) {
return checkCoords(canvasToRect(axis.getCanvas()), coords)
});
if (0 === targetAxes.length) {
var targetCanvas = chart._valueAxes.reduce(function(r, axis) {
if (!r && axis.coordsIn(coords.x, coords.y)) {
r = axis.getCanvas()
}
return r
}, null);
if (targetCanvas) {
targetAxes = chart._valueAxes.filter(function(axis) {
return checkCoords(canvasToRect(axis.getCanvas()), {
x: targetCanvas.left,
y: targetCanvas.top
})
})
}
}
axesZoomed |= zoomAxes(targetAxes, rotated ? coords.x : coords.y, e.delta)
}
if (options.argumentAxis.zoom) {
var canZoom = chart._argumentAxes.some(function(axis) {
if (checkCoords(canvasToRect(axis.getCanvas()), coords) || axis.coordsIn(coords.x, coords.y)) {
return true
}
return false
});
axesZoomed |= canZoom && zoomAxes(chart._argumentAxes, rotated ? coords.y : coords.x, e.delta, chart.getArgumentAxis())
}
if (axesZoomed) {
chart._requestChange(["VISUAL_RANGE"]);
zoomAndPan.panningVisualRangeEnabled(targetAxes) && preventDefaults(e)
}
})
}
if (options.allowTouchGestures) {
if (options.argumentAxis.zoom || options.valueAxis.zoom) {
renderer.root.on(PINCH_START_EVENT_NAME, {
passive: false
}, zoomAndPan.pinchStartHandler).on(PINCH_EVENT_NAME, {
passive: false
}, zoomAndPan.pinchHandler).on(PINCH_END_EVENT_NAME, zoomAndPan.pinchEndHandler)
}
}
renderer.root.on(DRAG_START_EVENT_NAME, {
immediate: true,
passive: false
}, zoomAndPan.dragStartHandler).on(DRAG_EVENT_NAME, {
immediate: true,
passive: false
}, zoomAndPan.dragHandler).on(DRAG_END_EVENT_NAME, zoomAndPan.dragEndHandler);
if (options.argumentAxis.pan) {
renderer.root.on(SCROLL_BAR_START_EVENT_NAME, function(e) {
zoomAndPan.actionData = {
valueAxes: [],
offset: {
x: 0,
y: 0
},
center: {
x: 0,
y: 0
}
};
preventDefaults(e);
startAxesViewportChanging(zoomAndPan, "pan", e)
}).on(SCROLL_BAR_MOVE_EVENT_NAME, function(e) {
preventDefaults(e);
axesViewportChanging(zoomAndPan, "pan", e, calcOffsetForDrag, function(e) {
return e.offset
})
}).on(SCROLL_BAR_END_EVENT_NAME, function(e) {
preventDefaults(e);
finishAxesViewportChanging(zoomAndPan, "pan", e, calcOffsetForDrag);
zoomAndPan.actionData = null
})
}
},
defineTouchBehavior: function(isDefault, e) {
zoomAndPan.actionData && (zoomAndPan.actionData.isNative = isDefault);
if (!isDefault) {
preventDefaults(e)
}
},
panningVisualRangeEnabled: function(targetAxes) {
if (targetAxes && targetAxes.length) {
return targetAxes.some(function(axis) {
return !axis.isExtremePosition(false) || !axis.isExtremePosition(true)
})
}
var enablePanByValueAxis = chart._valueAxes.some(function(axis) {
return !axis.isExtremePosition(false) || !axis.isExtremePosition(true)
});
var enablePanByArgumentAxis = chart._argumentAxes.some(function(axis) {
return !axis.isExtremePosition(false) || !axis.isExtremePosition(true)
});
return enablePanByValueAxis || enablePanByArgumentAxis
}
};
this._zoomAndPan = zoomAndPan
},
members: {
_setupZoomAndPan: function() {
this._zoomAndPan.setup(this._themeManager.getOptions("zoomAndPan"))
}
},
dispose: function() {
this._zoomAndPan.cleanup()
},
customize: function(constructor) {
constructor.addChange({
code: "ZOOM_AND_PAN",
handler: function() {
this._setupZoomAndPan()
},
isThemeDependent: true,
isOptionChange: true,
option: "zoomAndPan"
})
}
}
},
/*!***********************************************!*\
!*** ./artifacts/transpiled/viz/pie_chart.js ***!
\***********************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _consts = __webpack_require__( /*! ./components/consts */ 119);
var _utils = __webpack_require__( /*! ./core/utils */ 12);
var _extend2 = __webpack_require__( /*! ../core/utils/extend */ 0);
var _type = __webpack_require__( /*! ../core/utils/type */ 1);
var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 3);
var _range = __webpack_require__( /*! ./translators/range */ 109);
var _range2 = _interopRequireDefault(_range);
var _component_registrator = __webpack_require__( /*! ../core/component_registrator */ 9);
var _component_registrator2 = _interopRequireDefault(_component_registrator);
var _base_chart = __webpack_require__( /*! ./chart_components/base_chart */ 245);
var _common = __webpack_require__( /*! ../core/utils/common */ 4);
var _translator1d = __webpack_require__( /*! ./translators/translator1d */ 420);
var _translator1d2 = _interopRequireDefault(_translator1d);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
var OPTIONS_FOR_REFRESH_SERIES = ["startAngle", "innerRadius", "segmentsDirection", "type"],
NORMAL_STATE = _consts.states.normalMark,
MAX_RESOLVE_ITERATION_COUNT = 5,
LEGEND_ACTIONS = [_consts.states.resetItem, _consts.states.applyHover, _consts.states.applySelected, _consts.states.applySelected];
function getLegendItemAction(points) {
var state = NORMAL_STATE;
points.forEach(function(point) {
state |= point.fullState
});
return LEGEND_ACTIONS[state]
}
function correctPercentValue(value) {
if ((0, _type.isNumeric)(value)) {
if (value > 1) {
value = 1
} else {
if (value < 0) {
value = 0
}
}
} else {
value = void 0
}
return value
}
var dxPieChart = _base_chart.BaseChart.inherit({
_themeSection: "pie",
_layoutManagerOptions: function() {
return (0, _extend2.extend)(true, {}, this.callBase(), {
piePercentage: correctPercentValue(this._themeManager.getOptions("diameter")),
minPiePercentage: correctPercentValue(this._themeManager.getOptions("minDiameter"))
})
},
_optionChangesMap: {
diameter: "REINIT",
minDiameter: "REINIT",
sizeGroup: "REINIT"
},
_disposeCore: function() {
pieSizeEqualizer.remove(this);
this.callBase()
},
_groupSeries: function() {
var series = this.series;
this._groupsData = {
groups: [{
series: series,
valueOptions: {
valueType: "numeric"
}
}],
argumentOptions: series[0] && series[0].getOptions()
}
},
getArgumentAxis: function() {
return null
},
_getValueAxis: function() {
var translator = (new _translator1d2.default.Translator1D).setCodomain(360, 0);
return {
getTranslator: function() {
return translator
},
setBusinessRange: function(range) {
translator.setDomain(range.min, range.max)
}
}
},
_populateBusinessRange: function() {
this.series.map(function(series) {
var range = new _range2.default.Range;
range.addRange(series.getRangeData().val);
series.getValueAxis().setBusinessRange(range);
return range
})
},
_specialProcessSeries: function() {
(0, _iterator.each)(this.series, function(_, singleSeries) {
singleSeries.arrangePoints()
})
},
_checkPaneName: function() {
return true
},
_processSingleSeries: function(singleSeries) {
this.callBase(singleSeries);
singleSeries.arrangePoints()
},
_handleSeriesDataUpdated: function() {
var maxPointCount = 0;
this.series.forEach(function(s) {
maxPointCount = Math.max(s.getPointsCount(), maxPointCount)
});
this.series.forEach(function(s) {
s.setMaxPointsCount(maxPointCount)
});
this.callBase()
},
_getLegendOptions: function(item) {
var legendItem = this.callBase(item);
var legendData = legendItem.legendData;
legendData.argument = item.argument;
legendData.argumentIndex = item.argumentIndex;
legendData.points = [item];
return legendItem
},
_getLegendTargets: function() {
var that = this;
var itemsByArgument = {};
(that.series || []).forEach(function(series) {
series.getPoints().forEach(function(point) {
var argument = point.argument.valueOf();
var index = series.getPointsByArg(argument).indexOf(point);
var key = argument.valueOf().toString() + index;
itemsByArgument[key] = itemsByArgument[key] || [];
var argumentCount = itemsByArgument[key].push(point);
point.index = itemsByArgument[key][argumentCount - 2] ? itemsByArgument[key][argumentCount - 2].index : Object.keys(itemsByArgument).length - 1;
point.argumentIndex = index
})
});
var items = [];
(0, _iterator.each)(itemsByArgument, function(_, points) {
points.forEach(function(point, index) {
if (0 === index) {
items.push(that._getLegendOptions(point));
return
}
var item = items[items.length - 1];
item.legendData.points.push(point);
if (!item.visible) {
item.visible = point.isVisible()
}
})
});
return items
},
_getLayoutTargets: function() {
return [{
canvas: this._canvas
}]
},
_getLayoutSeries: function(series, drawOptions) {
var layout, that = this,
canvas = that._canvas,
drawnLabels = false;
layout = that.layoutManager.applyPieChartSeriesLayout(canvas, series, true);
series.forEach(function(singleSeries) {
singleSeries.correctPosition(layout, canvas);
drawnLabels = singleSeries.drawLabelsWOPoints() || drawnLabels
});
if (drawnLabels) {
layout = that.layoutManager.applyPieChartSeriesLayout(canvas, series, drawOptions.hideLayoutLabels)
}
series.forEach(function(singleSeries) {
singleSeries.hideLabels()
});
that._sizeGroupLayout = {
x: layout.centerX,
y: layout.centerY,
radius: layout.radiusOuter,
drawOptions: drawOptions
};
return layout
},
_getLayoutSeriesForEqualPies: function(series, sizeGroupLayout) {
var canvas = this._canvas,
layout = this.layoutManager.applyEqualPieChartLayout(series, sizeGroupLayout);
series.forEach(function(s) {
s.correctPosition(layout, canvas);
s.drawLabelsWOPoints()
});
this.layoutManager.correctPieLabelRadius(series, layout, canvas);
return layout
},
_updateSeriesDimensions: function(drawOptions) {
var innerRad, delta, layout, that = this,
visibleSeries = that._getVisibleSeries(),
lengthVisibleSeries = visibleSeries.length,
sizeGroupLayout = drawOptions.sizeGroupLayout;
if (lengthVisibleSeries) {
layout = sizeGroupLayout ? that._getLayoutSeriesForEqualPies(visibleSeries, sizeGroupLayout) : that._getLayoutSeries(visibleSeries, drawOptions);
delta = (layout.radiusOuter - layout.radiusInner - _consts.pieSeriesSpacing * (lengthVisibleSeries - 1)) / lengthVisibleSeries;
innerRad = layout.radiusInner;
that._setGeometry(layout);
visibleSeries.forEach(function(singleSeries) {
singleSeries.correctRadius({
radiusInner: innerRad,
radiusOuter: innerRad + delta
});
innerRad += delta + _consts.pieSeriesSpacing
})
}
},
_renderSeries: function(drawOptions, isRotated, isLegendInside) {
this._calculateSeriesLayout(drawOptions, isRotated);
if (!drawOptions.sizeGroupLayout && this.getSizeGroup()) {
pieSizeEqualizer.queue(this);
this._clearCanvas();
return
}
this._renderSeriesElements(drawOptions, isRotated, isLegendInside)
},
_renderExtraElements: function() {
var template = this.option("centerTemplate");
if (this._centerTemplateGroup) {
this._centerTemplateGroup.clear()
}
if (!template) {
return
}
if (!this._centerTemplateGroup) {
this._centerTemplateGroup = this._renderer.g().attr({
"class": "dxc-hole-template"
}).css((0, _utils.patchFontOptions)(this._themeManager._font))
}
this._centerTemplateGroup.append(this._renderer.root);
template = this._getTemplate(template);
template.render({
model: this,
container: this._centerTemplateGroup.element
});
var bBox = this._centerTemplateGroup.getBBox();
this._centerTemplateGroup.move(this._center.x - (bBox.x + bBox.width / 2), this._center.y - (bBox.y + bBox.height / 2))
},
getInnerRadius: function() {
return this._innerRadius
},
_getLegendCallBack: function() {
var that = this,
legend = this._legend,
items = this._getLegendTargets().map(function(i) {
return i.legendData
});
return function(target) {
items.forEach(function(data) {
var points = [],
callback = legend.getActionCallback({
index: data.id
});
that.series.forEach(function(series) {
var seriesPoints = series.getPointsByKeys(data.argument, data.argumentIndex);
points.push.apply(points, seriesPoints)
});
if (target && target.argument === data.argument && target.argumentIndex === data.argumentIndex) {
points.push(target)
}
callback(getLegendItemAction(points))
})
}
},
_locateLabels: function(resolveLabelOverlapping) {
var iterationCount = 0;
var labelsWereOverlapped = void 0;
var wordWrapApplied = void 0;
do {
labelsWereOverlapped = this._resolveLabelOverlapping(resolveLabelOverlapping);
wordWrapApplied = this._adjustSeriesLabels("shift" === resolveLabelOverlapping)
} while ((labelsWereOverlapped || wordWrapApplied) && ++iterationCount < MAX_RESOLVE_ITERATION_COUNT)
},
_adjustSeriesLabels: function(moveLabelsFromCenter) {
return this.series.reduce(function(r, s) {
return s.adjustLabels(moveLabelsFromCenter) || r
}, false)
},
_applyExtraSettings: _common.noop,
_resolveLabelOverlappingShift: function() {
var that = this,
inverseDirection = "anticlockwise" === that.option("segmentsDirection"),
seriesByPosition = that.series.reduce(function(r, s) {
(r[s.getOptions().label.position] || r.outside).push(s);
return r
}, {
inside: [],
columns: [],
outside: []
}),
labelsOverlapped = false;
if (seriesByPosition.inside.length > 0) {
labelsOverlapped = resolve(seriesByPosition.inside.reduce(function(r, singleSeries) {
return singleSeries.getVisiblePoints().reduce(function(r, point) {
r.left.push(point);
return r
}, r)
}, {
left: [],
right: []
}), shiftInColumnFunction) || labelsOverlapped
}
labelsOverlapped = seriesByPosition.columns.reduce(function(r, singleSeries) {
return resolve(dividePoints(singleSeries), shiftInColumnFunction) || r
}, labelsOverlapped);
if (seriesByPosition.outside.length > 0) {
labelsOverlapped = resolve(seriesByPosition.outside.reduce(function(r, singleSeries) {
return dividePoints(singleSeries, r)
}, null), shiftFunction) || labelsOverlapped
}
return labelsOverlapped;
function dividePoints(series, points) {
return series.getVisiblePoints().reduce(function(r, point) {
var angle = (0, _utils.normalizeAngle)(point.middleAngle);
(angle <= 90 || angle >= 270 ? r.right : r.left).push(point);
return r
}, points || {
left: [],
right: []
})
}
function resolve(points, shiftCallback) {
var overlapped = false;
if (inverseDirection) {
points.left.reverse();
points.right.reverse()
}
overlapped = _base_chart.overlapping.resolveLabelOverlappingInOneDirection(points.left, that._canvas, false, shiftCallback);
return _base_chart.overlapping.resolveLabelOverlappingInOneDirection(points.right, that._canvas, false, shiftCallback) || overlapped
}
function shiftFunction(box, length) {
return (0, _utils.getVerticallyShiftedAngularCoords)(box, -length, that._center)
}
function shiftInColumnFunction(box, length) {
return {
x: box.x,
y: box.y - length
}
}
},
_setGeometry: function(_ref) {
var x = _ref.centerX,
y = _ref.centerY,
radiusInner = _ref.radiusInner;
this._center = {
x: x,
y: y
};
this._innerRadius = radiusInner
},
_disposeSeries: function(seriesIndex) {
this.callBase.apply(this, arguments);
this._abstractSeries = null
},
_legendDataField: "point",
_legendItemTextField: "argument",
_applyPointMarkersAutoHiding: _common.noop,
_renderTrackers: _common.noop,
_trackerType: "PieTracker",
_createScrollBar: _common.noop,
_updateAxesLayout: _common.noop,
_applyClipRects: _common.noop,
_appendAdditionalSeriesGroups: _common.noop,
_prepareToRender: _common.noop,
_isLegendInside: _common.noop,
_renderAxes: _common.noop,
_shrinkAxes: _common.noop,
_isRotated: _common.noop,
_seriesPopulatedHandlerCore: _common.noop,
_reinitAxes: _common.noop,
_correctAxes: _common.noop,
_getExtraOptions: function() {
var that = this;
return {
startAngle: that.option("startAngle"),
innerRadius: that.option("innerRadius"),
segmentsDirection: that.option("segmentsDirection"),
type: that.option("type")
}
},
getSizeGroup: function() {
return this._themeManager.getOptions("sizeGroup")
},
getSizeGroupLayout: function() {
return this._sizeGroupLayout || {}
}
});
(0, _iterator.each)(OPTIONS_FOR_REFRESH_SERIES, function(_, name) {
dxPieChart.prototype._optionChangesMap[name] = "REFRESH_SERIES_DATA_INIT"
});
(0, _component_registrator2.default)("dxPieChart", dxPieChart);
module.exports = dxPieChart;
var pieSizeEqualizer = function() {
function equalize(group, allPies) {
var pies = allPies.filter(function(p) {
return p._isVisible() && p.getSizeGroup() === group
}),
minRadius = Math.min.apply(null, pies.map(function(p) {
return p.getSizeGroupLayout().radius
})),
minPie = pies.filter(function(p) {
return p.getSizeGroupLayout().radius === minRadius
});
pies.forEach(function(p) {
return p.render({
force: true,
sizeGroupLayout: minPie.length ? minPie[0].getSizeGroupLayout() : {}
})
})
}
function removeFromList(list, item) {
return list.filter(function(li) {
return li !== item
})
}
function addToList(list, item) {
return removeFromList(list, item).concat(item)
}
var pies = [],
timers = {};
return {
queue: function(pie) {
var group = pie.getSizeGroup();
pies = addToList(pies, pie);
clearTimeout(timers[group]);
timers[group] = setTimeout(function() {
equalize(group, pies)
})
},
remove: function(pie) {
pies = removeFromList(pies, pie);
if (!pies.length) {
timers = {}
}
}
}
}()
},
/*!*************************************************!*\
!*** ./artifacts/transpiled/viz/polar_chart.js ***!
\*************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _noop = __webpack_require__( /*! ../core/utils/common */ 4).noop,
registerComponent = __webpack_require__( /*! ../core/component_registrator */ 9),
extend = __webpack_require__( /*! ../core/utils/extend */ 0).extend,
vizUtils = __webpack_require__( /*! ./core/utils */ 12),
AdvancedChart = __webpack_require__( /*! ./chart_components/advanced_chart */ 412).AdvancedChart,
DEFAULT_PANE_NAME = "default";
var dxPolarChart = AdvancedChart.inherit({
_themeSection: "polar",
_createPanes: function() {
this.callBase();
return [{
name: DEFAULT_PANE_NAME
}]
},
_checkPaneName: function() {
return true
},
_getAxisRenderingOptions: function(typeSelector) {
var isArgumentAxis = "argumentAxis" === typeSelector,
type = isArgumentAxis ? "circular" : "linear",
useSpiderWeb = this.option("useSpiderWeb");
if (useSpiderWeb) {
type += "Spider"
}
return {
axisType: "polarAxes",
drawingType: type
}
},
_prepareAxisOptions: function(typeSelector, axisOptions) {
var isArgumentAxis = "argumentAxis" === typeSelector,
themeManager = this._themeManager,
axisUserOptions = this.option("argumentAxis"),
argumentAxisOptions = themeManager.getOptions("argumentAxis", axisUserOptions) || {},
startAngle = isFinite(argumentAxisOptions.startAngle) ? vizUtils.normalizeAngle(argumentAxisOptions.startAngle) : 0;
return {
type: this.option("useSpiderWeb") && isArgumentAxis ? "discrete" : axisOptions.type,
isHorizontal: true,
showCustomBoundaryTicks: isArgumentAxis,
startAngle: startAngle,
endAngle: startAngle + 360
}
},
_optionChangesMap: {
useSpiderWeb: "AXES_AND_PANES"
},
_getExtraOptions: function() {
return {
spiderWidget: this.option("useSpiderWeb")
}
},
_prepareToRender: function() {
this._appendAxesGroups();
return {}
},
_calcCanvas: function() {
var canvas = extend({}, this._canvas);
var argumentAxis = this.getArgumentAxis();
var margins = argumentAxis.getMargins();
Object.keys(margins).forEach(function(margin) {
return canvas[margin] = canvas["original" + margin[0].toUpperCase() + margin.slice(1)] + margins[margin]
});
return canvas
},
_renderAxes: function(drawOptions) {
var that = this,
valueAxis = that._getValueAxis(),
argumentAxis = that.getArgumentAxis();
argumentAxis.draw(that._canvas);
valueAxis.setSpiderTicks(argumentAxis.getSpiderTicks());
var canvas = that._calcCanvas();
argumentAxis.updateSize(canvas);
valueAxis.draw(canvas);
return canvas
},
_getValueAxis: function() {
return this._valueAxes[0]
},
_shrinkAxes: function(sizeStorage) {
var valueAxis = this._getValueAxis(),
argumentAxis = this.getArgumentAxis();
if (sizeStorage && (sizeStorage.width || sizeStorage.height)) {
argumentAxis.hideOuterElements();
var canvas = this._calcCanvas();
argumentAxis.updateSize(canvas);
valueAxis.updateSize(canvas)
}
},
checkForMoreSpaceForPanesCanvas: function() {
return this.layoutManager.needMoreSpaceForPanesCanvas([{
canvas: this.getArgumentAxis().getCanvas()
}], this._isRotated())
},
_getLayoutTargets: function() {
return [{
canvas: this._canvas
}]
},
_getSeriesForPane: function() {
return this.series
},
_applyClipRects: function() {
var canvasClipRectID = this._getCanvasClipRectID();
this._createClipPathForPane();
this.getArgumentAxis().applyClipRects(this._getElementsClipRectID(), canvasClipRectID);
this._getValueAxis().applyClipRects(this._getElementsClipRectID(), canvasClipRectID)
},
_createClipPathForPane: function() {
var that = this;
var valueAxis = that._getValueAxis();
var center = valueAxis.getCenter();
var radius = valueAxis.getRadius();
var panesClipRects = that._panesClipRects;
center = {
x: Math.round(center.x),
y: Math.round(center.y)
};
that._createClipCircle(panesClipRects.fixed, center.x, center.y, radius);
that._createClipCircle(panesClipRects.base, center.x, center.y, radius);
if (that.series.some(function(s) {
return s.areErrorBarsVisible()
})) {
that._createClipCircle(panesClipRects.wide, center.x, center.y, radius)
} else {
panesClipRects.wide[0] = null
}
},
_createClipCircle: function(clipArray, left, top, radius) {
var that = this;
var clipCircle = clipArray[0];
if (!clipCircle) {
clipCircle = that._renderer.clipCircle(left, top, radius);
clipArray[0] = clipCircle
} else {
clipCircle.attr({
cx: left,
cy: top,
r: radius
})
}
},
_applyExtraSettings: function(series) {
var wideClipRect = this._panesClipRects.wide[0];
series.setClippingParams(this._panesClipRects.base[0].id, wideClipRect && wideClipRect.id, false, false)
},
_applyPointMarkersAutoHiding: _noop,
_createScrollBar: _noop,
_isRotated: _noop,
_getCrosshairOptions: _noop,
_isLegendInside: _noop
});
registerComponent("dxPolarChart", dxPolarChart);
module.exports = dxPolarChart
},
/*!**************************************************!*\
!*** ./artifacts/transpiled/viz/linear_gauge.js ***!
\**************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
module.exports = __webpack_require__( /*! ./gauges/linear_gauge */ 822)
},
/*!*********************************************************!*\
!*** ./artifacts/transpiled/viz/gauges/linear_gauge.js ***!
\*********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _each = __webpack_require__( /*! ../../core/utils/iterator */ 3).each,
_max = Math.max,
_min = Math.min,
_round = Math.round,
registerComponent = __webpack_require__( /*! ../../core/component_registrator */ 9),
extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
objectUtils = __webpack_require__( /*! ../../core/utils/object */ 47),
dxBaseGauge = __webpack_require__( /*! ./base_gauge */ 147).dxBaseGauge,
dxGauge = __webpack_require__( /*! ./common */ 206).dxGauge,
_normalizeEnum = __webpack_require__( /*! ../core/utils */ 12).normalizeEnum,
linearIndicatorsModule = __webpack_require__( /*! ./linear_indicators */ 825),
createIndicatorCreator = __webpack_require__( /*! ./common */ 206).createIndicatorCreator,
LinearRangeContainer = __webpack_require__( /*! ./linear_range_container */ 826);
var dxLinearGauge = dxGauge.inherit({
_rootClass: "dxg-linear-gauge",
_factoryMethods: {
rangeContainer: "createLinearRangeContainer",
indicator: "createLinearIndicator"
},
_gridSpacingFactor: 25,
_scaleTypes: {
type: "xyAxes",
drawingType: "linear"
},
_getTicksOrientation: function(scaleOptions) {
return scaleOptions.isHorizontal ? scaleOptions.verticalOrientation : scaleOptions.horizontalOrientation
},
_getThemeManagerOptions: function() {
var options = this.callBase.apply(this, arguments);
options.subTheme = "_linear";
return options
},
_updateScaleTickIndent: function(scaleOptions) {
var orientation, textCorrection, tickCorrection, indentFromTick = scaleOptions.label.indentFromTick,
length = scaleOptions.tick.length,
textParams = this._scale.measureLabels(extend({}, this._canvas)),
verticalTextCorrection = scaleOptions.isHorizontal ? textParams.height + textParams.y : 0,
isIndentPositive = indentFromTick > 0;
if (scaleOptions.isHorizontal) {
orientation = isIndentPositive ? {
center: .5,
top: 0,
bottom: 1
} : {
center: .5,
top: 1,
bottom: 0
};
tickCorrection = length * orientation[scaleOptions.verticalOrientation];
textCorrection = textParams.y
} else {
orientation = isIndentPositive ? {
center: .5,
left: 0,
right: 1
} : {
center: .5,
left: 1,
right: 0
};
tickCorrection = length * orientation[scaleOptions.horizontalOrientation];
textCorrection = -textParams.width
}
scaleOptions.label.indentFromAxis = -indentFromTick + (isIndentPositive ? -tickCorrection + textCorrection : tickCorrection - verticalTextCorrection);
this._scale.updateOptions(scaleOptions)
},
_shiftScale: function(layout, scaleOptions) {
var that = this,
canvas = extend({}, that._canvas),
isHorizontal = scaleOptions.isHorizontal,
scale = that._scale;
canvas[isHorizontal ? "left" : "top"] = that._area[isHorizontal ? "startCoord" : "endCoord"];
canvas[isHorizontal ? "right" : "bottom"] = canvas[isHorizontal ? "width" : "height"] - that._area[isHorizontal ? "endCoord" : "startCoord"];
scale.draw(canvas);
scale.shift({
left: -layout.x,
top: -layout.y
})
},
_setupCodomain: function() {
var that = this,
geometry = that.option("geometry") || {},
vertical = "vertical" === _normalizeEnum(geometry.orientation),
initialStartCoord = -100,
initialEndCoord = 100;
that._area = {
vertical: vertical,
x: 0,
y: 0,
startCoord: initialStartCoord,
endCoord: initialEndCoord
};
that._rangeContainer.vertical = vertical;
that._translator.setCodomain(initialStartCoord, initialEndCoord)
},
_getScaleLayoutValue: function() {
return this._area[this._area.vertical ? "x" : "y"]
},
_getTicksCoefficients: function(options) {
var coefs = {
inner: 0,
outer: 1
};
if (this._area.vertical) {
if ("left" === options.horizontalOrientation) {
coefs.inner = 1;
coefs.outer = 0
} else {
if ("center" === options.horizontalOrientation) {
coefs.inner = coefs.outer = .5
}
}
} else {
if ("top" === options.verticalOrientation) {
coefs.inner = 1;
coefs.outer = 0
} else {
if ("center" === options.verticalOrientation) {
coefs.inner = coefs.outer = .5
}
}
}
return coefs
},
_correctScaleIndents: function(result, indentFromTick, textParams) {
var vertical = this._area.vertical;
if (indentFromTick >= 0) {
result.max += indentFromTick + textParams[vertical ? "width" : "height"]
} else {
result.min -= -indentFromTick + textParams[vertical ? "width" : "height"]
}
result.indent = textParams[vertical ? "height" : "width"] / 2
},
_measureMainElements: function(elements, scaleMeasurement) {
var that = this,
x = that._area.x,
y = that._area.y,
minBound = 1e3,
maxBound = 0,
indent = 0,
scale = that._scale;
_each(elements.concat(scale), function(_, element) {
var bounds = element.measure ? element.measure({
x: x + element.getOffset(),
y: y + element.getOffset()
}) : scaleMeasurement;
void 0 !== bounds.max && (maxBound = _max(maxBound, bounds.max));
void 0 !== bounds.min && (minBound = _min(minBound, bounds.min));
bounds.indent > 0 && (indent = _max(indent, bounds.indent))
});
return {
minBound: minBound,
maxBound: maxBound,
indent: indent
}
},
_applyMainLayout: function(elements, scaleMeasurement) {
var rect, offset, that = this,
measurements = that._measureMainElements(elements, scaleMeasurement),
area = that._area;
if (area.vertical) {
rect = selectRectBySizes(that._innerRect, {
width: measurements.maxBound - measurements.minBound
});
offset = (rect.left + rect.right) / 2 - (measurements.minBound + measurements.maxBound) / 2;
area.startCoord = rect.bottom - measurements.indent;
area.endCoord = rect.top + measurements.indent;
area.x = _round(area.x + offset)
} else {
rect = selectRectBySizes(that._innerRect, {
height: measurements.maxBound - measurements.minBound
});
offset = (rect.top + rect.bottom) / 2 - (measurements.minBound + measurements.maxBound) / 2;
area.startCoord = rect.left + measurements.indent;
area.endCoord = rect.right - measurements.indent;
area.y = _round(area.y + offset)
}
that._translator.setCodomain(area.startCoord, area.endCoord);
that._innerRect = rect
},
_getElementLayout: function(offset) {
return {
x: _round(this._area.x + offset),
y: _round(this._area.y + offset)
}
},
_getApproximateScreenRange: function() {
var that = this,
area = that._area,
s = area.vertical ? that._canvas.height : that._canvas.width;
s > area.totalSize && (s = area.totalSize);
s = .8 * s;
return s
},
_getDefaultSize: function() {
var geometry = this.option("geometry") || {};
if ("vertical" === geometry.orientation) {
return {
width: 100,
height: 300
}
} else {
return {
width: 300,
height: 100
}
}
},
_factory: objectUtils.clone(dxBaseGauge.prototype._factory)
});
function selectRectBySizes(srcRect, sizes, margins) {
var step, rect = extend({}, srcRect);
margins = margins || {};
if (sizes) {
rect.left += margins.left || 0;
rect.right -= margins.right || 0;
rect.top += margins.top || 0;
rect.bottom -= margins.bottom || 0;
if (sizes.width > 0) {
step = (rect.right - rect.left - sizes.width) / 2;
if (step > 0) {
rect.left += step;
rect.right -= step
}
}
if (sizes.height > 0) {
step = (rect.bottom - rect.top - sizes.height) / 2;
if (step > 0) {
rect.top += step;
rect.bottom -= step
}
}
}
return rect
}
dxLinearGauge._TESTS_selectRectBySizes = selectRectBySizes;
var indicators = dxLinearGauge.prototype._factory.indicators = {};
dxLinearGauge.prototype._factory.createIndicator = createIndicatorCreator(indicators);
indicators._default = linearIndicatorsModule._default;
indicators.rectangle = linearIndicatorsModule.rectangle;
indicators.rhombus = linearIndicatorsModule.rhombus;
indicators.circle = linearIndicatorsModule.circle;
indicators.trianglemarker = linearIndicatorsModule.trianglemarker;
indicators.textcloud = linearIndicatorsModule.textcloud;
indicators.rangebar = linearIndicatorsModule.rangebar;
dxLinearGauge.prototype._factory.RangeContainer = LinearRangeContainer;
registerComponent("dxLinearGauge", dxLinearGauge);
module.exports = dxLinearGauge
},
/*!**********************************************************!*\
!*** ./artifacts/transpiled/viz/gauges/theme_manager.js ***!
\**********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
_extend = extend,
BaseThemeManager = __webpack_require__( /*! ../core/base_theme_manager */ 246).BaseThemeManager;
var ThemeManager = BaseThemeManager.inherit({
ctor: function(options) {
this.callBase.apply(this, arguments);
this._subTheme = options.subTheme
},
_initializeTheme: function() {
var subTheme, that = this;
if (that._subTheme) {
subTheme = _extend(true, {}, that._theme[that._subTheme], that._theme);
_extend(true, that._theme, subTheme)
}
that.callBase.apply(that, arguments)
}
});
module.exports = {
ThemeManager: ThemeManager
}
},
/*!****************************************************!*\
!*** ./artifacts/transpiled/viz/gauges/tracker.js ***!
\****************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var eventsEngine = __webpack_require__( /*! ../../events/core/events_engine */ 5),
Class = __webpack_require__( /*! ../../core/class */ 15),
domAdapter = __webpack_require__( /*! ../../core/dom_adapter */ 13),
ready = __webpack_require__( /*! ../../core/utils/ready_callbacks */ 49).add,
wheelEvent = __webpack_require__( /*! ../../events/core/wheel */ 127),
TOOLTIP_HIDE_DELAY = 100;
var Tracker = Class.inherit({
ctor: function(parameters) {
var debug = __webpack_require__( /*! ../../core/utils/console */ 65).debug;
debug.assertParam(parameters, "parameters");
debug.assertParam(parameters.renderer, "parameters.renderer");
debug.assertParam(parameters.container, "parameters.container");
var that = this;
that._element = parameters.renderer.g().attr({
"class": "dxg-tracker",
stroke: "none",
"stroke-width": 0,
fill: "#000000",
opacity: 1e-4
}).linkOn(parameters.container, {
name: "tracker",
after: "peripheral"
});
that._showTooltipCallback = function() {
var target = that._tooltipEvent.target,
data_target = target["gauge-data-target"],
data_info = target["gauge-data-info"];
that._targetEvent = null;
if (that._tooltipTarget !== target && that._callbacks["tooltip-show"](data_target, data_info)) {
that._tooltipTarget = target
}
};
that._hideTooltipCallback = function() {
that._hideTooltipTimeout = null;
that._targetEvent = null;
if (that._tooltipTarget) {
that._callbacks["tooltip-hide"]();
that._tooltipTarget = null
}
};
that._dispose = function() {
clearTimeout(that._hideTooltipTimeout);
that._showTooltipCallback = that._hideTooltipCallback = that._dispose = null
};
that._DEBUG_hideTooltipTimeoutSet = that._DEBUG_hideTooltipTimeoutCleared = 0;
that.TOOLTIP_HIDE_DELAY = TOOLTIP_HIDE_DELAY
},
dispose: function() {
var that = this;
that._dispose();
that.deactivate();
that._element.linkOff();
that._element = that._context = that._callbacks = null;
return that
},
activate: function() {
this._element.linkAppend();
return this
},
deactivate: function() {
this._element.linkRemove().clear();
return this
},
attach: function(element, target, info) {
element.data({
"gauge-data-target": target,
"gauge-data-info": info
}).append(this._element);
return this
},
detach: function(element) {
element.remove();
return this
},
setTooltipState: function(state) {
var data, that = this;
that._element.off(tooltipMouseEvents).off(tooltipTouchEvents).off(tooltipMouseWheelEvents);
if (state) {
data = {
tracker: that
};
that._element.on(tooltipMouseEvents, data).on(tooltipTouchEvents, data).on(tooltipMouseWheelEvents, data)
}
return that
},
setCallbacks: function(callbacks) {
this._callbacks = callbacks;
return this
},
_showTooltip: function(event) {
var that = this;
that._hideTooltipTimeout && ++that._DEBUG_hideTooltipTimeoutCleared;
clearTimeout(that._hideTooltipTimeout);
that._hideTooltipTimeout = null;
if (that._tooltipTarget === event.target) {
return
}
that._tooltipEvent = event;
that._showTooltipCallback()
},
_hideTooltip: function(delay) {
var that = this;
clearTimeout(that._hideTooltipTimeout);
if (delay) {
++that._DEBUG_hideTooltipTimeoutSet;
that._hideTooltipTimeout = setTimeout(that._hideTooltipCallback, delay)
} else {
that._hideTooltipCallback()
}
}
});
var tooltipMouseEvents = {
"mouseover.gauge-tooltip": handleTooltipMouseOver,
"mouseout.gauge-tooltip": handleTooltipMouseOut
};
var tooltipMouseMoveEvents = {
"mousemove.gauge-tooltip": handleTooltipMouseMove
};
var tooltipMouseWheelEvents = {};
tooltipMouseWheelEvents[wheelEvent.name + ".gauge-tooltip"] = handleTooltipMouseWheel;
var tooltipTouchEvents = {
"touchstart.gauge-tooltip": handleTooltipTouchStart
};
function handleTooltipMouseOver(event) {
var tracker = event.data.tracker;
tracker._x = event.pageX;
tracker._y = event.pageY;
tracker._element.off(tooltipMouseMoveEvents).on(tooltipMouseMoveEvents, event.data);
tracker._showTooltip(event)
}
function handleTooltipMouseMove(event) {
var tracker = event.data.tracker;
tracker._x = event.pageX;
tracker._y = event.pageY;
tracker._showTooltip(event)
}
function handleTooltipMouseOut(event) {
var tracker = event.data.tracker;
tracker._element.off(tooltipMouseMoveEvents);
tracker._hideTooltip(TOOLTIP_HIDE_DELAY)
}
function handleTooltipMouseWheel(event) {
event.data.tracker._hideTooltip()
}
var active_touch_tooltip_tracker = null;
Tracker._DEBUG_reset = function() {
active_touch_tooltip_tracker = null
};
function handleTooltipTouchStart(event) {
event.preventDefault();
var tracker = active_touch_tooltip_tracker;
if (tracker && tracker !== event.data.tracker) {
tracker._hideTooltip(TOOLTIP_HIDE_DELAY)
}
tracker = active_touch_tooltip_tracker = event.data.tracker;
tracker._showTooltip(event);
tracker._touch = true
}
function handleTooltipDocumentTouchStart() {
var tracker = active_touch_tooltip_tracker;
if (tracker) {
if (!tracker._touch) {
tracker._hideTooltip(TOOLTIP_HIDE_DELAY);
active_touch_tooltip_tracker = null
}
tracker._touch = null
}
}
function handleTooltipDocumentTouchEnd() {
var tracker = active_touch_tooltip_tracker;
if (tracker) {
tracker._hideTooltip(TOOLTIP_HIDE_DELAY);
active_touch_tooltip_tracker = null
}
}
ready(function() {
eventsEngine.subscribeGlobal(domAdapter.getDocument(), {
"touchstart.gauge-tooltip": handleTooltipDocumentTouchStart,
"touchend.gauge-tooltip": handleTooltipDocumentTouchEnd
})
});
module.exports = Tracker
},
/*!**************************************************************!*\
!*** ./artifacts/transpiled/viz/gauges/linear_indicators.js ***!
\**************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var baseIndicatorsModule = __webpack_require__( /*! ./base_indicators */ 255),
BaseIndicator = baseIndicatorsModule.BaseIndicator,
BaseTextCloudMarker = baseIndicatorsModule.BaseTextCloudMarker,
BaseRangeBar = baseIndicatorsModule.BaseRangeBar,
_Number = Number,
_normalizeEnum = __webpack_require__( /*! ../core/utils */ 12).normalizeEnum;
var SimpleIndicator = BaseIndicator.inherit({
_move: function() {
var that = this,
delta = that._actualPosition - that._zeroPosition;
that._rootElement.move(that.vertical ? 0 : delta, that.vertical ? delta : 0);
that._trackerElement && that._trackerElement.move(that.vertical ? 0 : delta, that.vertical ? delta : 0)
},
_isEnabled: function() {
this.vertical = this._options.vertical;
return this._options.length > 0 && this._options.width > 0
},
_isVisible: function() {
return true
},
_getTrackerSettings: function() {
var x1, x2, y1, y2, options = this._options,
width = options.width / 2,
length = options.length / 2,
p = this._zeroPosition;
width > 10 || (width = 10);
length > 10 || (length = 10);
if (this.vertical) {
x1 = options.x - length;
x2 = options.x + length;
y1 = p + width;
y2 = p - width
} else {
x1 = p - width;
x2 = p + width;
y1 = options.y + length;
y2 = options.y - length
}
return {
points: [x1, y1, x1, y2, x2, y2, x2, y1]
}
},
_render: function() {
var that = this;
that._zeroPosition = that._translator.getCodomainStart()
},
_clear: function() {
delete this._element
},
measure: function(layout) {
var p = this.vertical ? layout.x : layout.y;
return {
min: p - this._options.length / 2,
max: p + this._options.length / 2
}
},
getTooltipParameters: function() {
var that = this,
options = that._options,
p = that._actualPosition,
parameters = {
x: p,
y: p,
value: that._currentValue,
color: options.color,
offset: options.width / 2
};
that.vertical ? parameters.x = options.x : parameters.y = options.y;
return parameters
}
});
var rectangle = SimpleIndicator.inherit({
_render: function() {
var p, x1, x2, y1, y2, that = this,
options = that._options;
that.callBase();
p = that._zeroPosition;
if (that.vertical) {
x1 = options.x - options.length / 2;
x2 = options.x + options.length / 2;
y1 = p + options.width / 2;
y2 = p - options.width / 2
} else {
x1 = p - options.width / 2;
x2 = p + options.width / 2;
y1 = options.y + options.length / 2;
y2 = options.y - options.length / 2
}
that._element = that._element || that._renderer.path([], "area").append(that._rootElement);
that._element.attr({
points: [x1, y1, x1, y2, x2, y2, x2, y1]
})
}
});
var rhombus = SimpleIndicator.inherit({
_render: function() {
var x, y, dx, dy, that = this,
options = that._options;
that.callBase();
if (that.vertical) {
x = options.x;
y = that._zeroPosition;
dx = options.length / 2 || 0;
dy = options.width / 2 || 0
} else {
x = that._zeroPosition;
y = options.y;
dx = options.width / 2 || 0;
dy = options.length / 2 || 0
}
that._element = that._element || that._renderer.path([], "area").append(that._rootElement);
that._element.attr({
points: [x - dx, y, x, y - dy, x + dx, y, x, y + dy]
})
}
});
var circle = SimpleIndicator.inherit({
_render: function() {
var x, y, r, that = this,
options = that._options;
that.callBase();
if (that.vertical) {
x = options.x;
y = that._zeroPosition
} else {
x = that._zeroPosition;
y = options.y
}
r = options.length / 2 || 0;
that._element = that._element || that._renderer.circle().append(that._rootElement);
that._element.attr({
cx: x,
cy: y,
r: r
})
}
});
var triangleMarker = SimpleIndicator.inherit({
_isEnabled: function() {
var that = this;
that.vertical = that._options.vertical;
that._inverted = that.vertical ? "right" === _normalizeEnum(that._options.horizontalOrientation) : "bottom" === _normalizeEnum(that._options.verticalOrientation);
return that._options.length > 0 && that._options.width > 0
},
_isVisible: function() {
return true
},
_render: function() {
var x1, x2, y1, y2, that = this,
options = that._options,
settings = {
stroke: "none",
"stroke-width": 0,
"stroke-linecap": "square"
};
that.callBase();
if (that.vertical) {
x1 = options.x;
y1 = that._zeroPosition;
x2 = x1 + _Number(that._inverted ? options.length : -options.length);
settings.points = [x1, y1, x2, y1 - options.width / 2, x2, y1 + options.width / 2]
} else {
y1 = options.y;
x1 = that._zeroPosition;
y2 = y1 + _Number(that._inverted ? options.length : -options.length);
settings.points = [x1, y1, x1 - options.width / 2, y2, x1 + options.width / 2, y2]
}
if (options.space > 0) {
settings["stroke-width"] = Math.min(options.space, options.width / 4) || 0;
settings.stroke = settings["stroke-width"] > 0 ? options.containerBackgroundColor || "none" : "none"
}
that._element = that._element || that._renderer.path([], "area").append(that._rootElement);
that._element.attr(settings).sharp()
},
_getTrackerSettings: function() {
var x1, x2, y1, y2, result, that = this,
options = that._options,
width = options.width / 2,
length = _Number(options.length);
width > 10 || (width = 10);
length > 20 || (length = 20);
if (that.vertical) {
x1 = x2 = options.x;
x2 = x1 + (that._inverted ? length : -length);
y1 = that._zeroPosition + width;
y2 = that._zeroPosition - width;
result = [x1, y1, x2, y1, x2, y2, x1, y2]
} else {
y1 = options.y;
y2 = y1 + (that._inverted ? length : -length);
x1 = that._zeroPosition - width;
x2 = that._zeroPosition + width;
result = [x1, y1, x1, y2, x2, y2, x2, y1]
}
return {
points: result
}
},
measure: function(layout) {
var minBound, maxBound, that = this,
length = _Number(that._options.length);
if (that.vertical) {
minBound = maxBound = layout.x;
if (that._inverted) {
maxBound = minBound + length
} else {
minBound = maxBound - length
}
} else {
minBound = maxBound = layout.y;
if (that._inverted) {
maxBound = minBound + length
} else {
minBound = maxBound - length
}
}
return {
min: minBound,
max: maxBound,
indent: that._options.width / 2
}
},
getTooltipParameters: function() {
var that = this,
options = that._options,
s = (that._inverted ? options.length : -options.length) / 2,
parameters = that.callBase();
that.vertical ? parameters.x += s : parameters.y += s;
parameters.offset = options.length / 2;
return parameters
}
});
var textCloud = BaseTextCloudMarker.inherit({
_isEnabled: function() {
var that = this;
that.vertical = that._options.vertical;
that._inverted = that.vertical ? "right" === _normalizeEnum(that._options.horizontalOrientation) : "bottom" === _normalizeEnum(that._options.verticalOrientation);
return true
},
_isVisible: function() {
return true
},
_getTextCloudOptions: function() {
var type, that = this,
x = that._actualPosition,
y = that._actualPosition;
if (that.vertical) {
x = that._options.x;
type = that._inverted ? "top-left" : "top-right"
} else {
y = that._options.y;
type = that._inverted ? "right-top" : "right-bottom"
}
return {
x: x,
y: y,
type: type
}
},
measure: function(layout) {
var minBound, maxBound, indent, that = this,
arrowLength = _Number(that._options.arrowLength) || 0;
that._measureText();
if (that.vertical) {
indent = that._textFullHeight;
if (that._inverted) {
minBound = layout.x;
maxBound = layout.x + arrowLength + that._textFullWidth
} else {
minBound = layout.x - arrowLength - that._textFullWidth;
maxBound = layout.x
}
} else {
indent = that._textFullWidth;
if (that._inverted) {
minBound = layout.y;
maxBound = layout.y + arrowLength + that._textFullHeight
} else {
minBound = layout.y - arrowLength - that._textFullHeight;
maxBound = layout.y
}
}
return {
min: minBound,
max: maxBound,
indent: indent
}
}
});
var rangeBar = BaseRangeBar.inherit({
_isEnabled: function() {
var that = this;
that.vertical = that._options.vertical;
that._inverted = that.vertical ? "right" === _normalizeEnum(that._options.horizontalOrientation) : "bottom" === _normalizeEnum(that._options.verticalOrientation);
return that._options.size > 0
},
_isVisible: function() {
return true
},
_createBarItem: function() {
return this._renderer.path([], "area").append(this._rootElement)
},
_createTracker: function() {
return this._renderer.path([], "area")
},
_setBarSides: function() {
var minSide, maxSide, that = this,
options = that._options,
size = _Number(options.size);
if (that.vertical) {
if (that._inverted) {
minSide = options.x;
maxSide = options.x + size
} else {
minSide = options.x - size;
maxSide = options.x
}
} else {
if (that._inverted) {
minSide = options.y;
maxSide = options.y + size
} else {
minSide = options.y - size;
maxSide = options.y
}
}
that._minSide = minSide;
that._maxSide = maxSide;
that._minBound = minSide;
that._maxBound = maxSide
},
_getSpace: function() {
var options = this._options;
return options.space > 0 ? _Number(options.space) : 0
},
_isTextVisible: function() {
var textOptions = this._options.text || {};
return textOptions.indent > 0 || textOptions.indent < 0
},
_getTextAlign: function() {
return this.vertical ? this._options.text.indent > 0 ? "left" : "right" : "center"
},
_setTextItemsSides: function() {
var that = this,
indent = _Number(that._options.text.indent);
if (indent > 0) {
that._lineStart = that._maxSide;
that._lineEnd = that._maxSide + indent;
that._textPosition = that._lineEnd + (that.vertical ? 2 : that._textHeight / 2);
that._maxBound = that._textPosition + (that.vertical ? that._textWidth : that._textHeight / 2)
} else {
if (indent < 0) {
that._lineStart = that._minSide;
that._lineEnd = that._minSide + indent;
that._textPosition = that._lineEnd - (that.vertical ? 2 : that._textHeight / 2);
that._minBound = that._textPosition - (that.vertical ? that._textWidth : that._textHeight / 2)
}
}
},
_getPositions: function() {
var mainPosition1, mainPosition2, backPosition1, backPosition2, that = this,
startPosition = that._startPosition,
endPosition = that._endPosition,
space = that._space,
basePosition = that._basePosition,
actualPosition = that._actualPosition;
if (startPosition < endPosition) {
if (basePosition < actualPosition) {
mainPosition1 = basePosition;
mainPosition2 = actualPosition
} else {
mainPosition1 = actualPosition;
mainPosition2 = basePosition
}
backPosition1 = mainPosition1 - space;
backPosition2 = mainPosition2 + space
} else {
if (basePosition > actualPosition) {
mainPosition1 = basePosition;
mainPosition2 = actualPosition
} else {
mainPosition1 = actualPosition;
mainPosition2 = basePosition
}
backPosition1 = mainPosition1 + space;
backPosition2 = mainPosition2 - space
}
return {
start: startPosition,
end: endPosition,
main1: mainPosition1,
main2: mainPosition2,
back1: backPosition1,
back2: backPosition2
}
},
_buildItemSettings: function(from, to) {
var that = this,
side1 = that._minSide,
side2 = that._maxSide,
points = that.vertical ? [side1, from, side1, to, side2, to, side2, from] : [from, side1, from, side2, to, side2, to, side1];
return {
points: points
}
},
_updateTextPosition: function() {
var that = this;
that._text.attr(that.vertical ? {
x: that._textPosition,
y: that._actualPosition + that._textVerticalOffset
} : {
x: that._actualPosition,
y: that._textPosition + that._textVerticalOffset
})
},
_updateLinePosition: function() {
var side1, side2, points, that = this,
actualPosition = that._actualPosition;
if (that.vertical) {
if (that._basePosition >= actualPosition) {
side1 = actualPosition;
side2 = actualPosition + 2
} else {
side1 = actualPosition - 2;
side2 = actualPosition
}
points = [that._lineStart, side1, that._lineStart, side2, that._lineEnd, side2, that._lineEnd, side1]
} else {
if (that._basePosition <= actualPosition) {
side1 = actualPosition - 2;
side2 = actualPosition
} else {
side1 = actualPosition;
side2 = actualPosition + 2
}
points = [side1, that._lineStart, side1, that._lineEnd, side2, that._lineEnd, side2, that._lineStart]
}
that._line.attr({
points: points
}).sharp()
},
_getTooltipPosition: function() {
var that = this,
crossCenter = (that._minSide + that._maxSide) / 2,
alongCenter = (that._basePosition + that._actualPosition) / 2;
return that.vertical ? {
x: crossCenter,
y: alongCenter
} : {
x: alongCenter,
y: crossCenter
}
},
measure: function(layout) {
var minBound, maxBound, indent, that = this,
size = _Number(that._options.size),
textIndent = _Number(that._options.text.indent);
that._measureText();
if (that.vertical) {
minBound = maxBound = layout.x;
if (that._inverted) {
maxBound += size
} else {
minBound -= size
}
if (that._hasText) {
indent = that._textHeight / 2;
if (textIndent > 0) {
maxBound += textIndent + that._textWidth
}
if (textIndent < 0) {
minBound += textIndent - that._textWidth
}
}
} else {
minBound = maxBound = layout.y;
if (that._inverted) {
maxBound += size
} else {
minBound -= size
}
if (that._hasText) {
indent = that._textWidth / 2;
if (textIndent > 0) {
maxBound += textIndent + that._textHeight
}
if (textIndent < 0) {
minBound += textIndent - that._textHeight
}
}
}
return {
min: minBound,
max: maxBound,
indent: indent
}
}
});
exports._default = rangeBar;
exports.rectangle = rectangle;
exports.rhombus = rhombus;
exports.circle = circle;
exports.trianglemarker = triangleMarker;
exports.textcloud = textCloud;
exports.rangebar = rangeBar
},
/*!*******************************************************************!*\
!*** ./artifacts/transpiled/viz/gauges/linear_range_container.js ***!
\*******************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var BaseRangeContainer = __webpack_require__( /*! ./base_range_container */ 421),
_Number = Number,
_max = Math.max,
_normalizeEnum = __webpack_require__( /*! ../core/utils */ 12).normalizeEnum;
var LinearRangeContainer = BaseRangeContainer.inherit({
_processOptions: function() {
var that = this;
that.vertical = that._options.vertical;
that._inner = that._outer = 0;
if (that.vertical) {
switch (_normalizeEnum(that._options.horizontalOrientation)) {
case "left":
that._inner = 1;
break;
case "center":
that._inner = that._outer = .5;
break;
default:
that._outer = 1
}
} else {
switch (_normalizeEnum(that._options.verticalOrientation)) {
case "top":
that._inner = 1;
break;
case "center":
that._inner = that._outer = .5;
break;
default:
that._outer = 1
}
}
},
_isVisible: function() {
return true
},
_createRange: function(range, layout) {
var points, that = this,
inner = that._inner,
outer = that._outer,
startPosition = that._translator.translate(range.start),
endPosition = that._translator.translate(range.end),
x = layout.x,
y = layout.y,
startWidth = range.startWidth,
endWidth = range.endWidth;
if (that.vertical) {
points = [x - startWidth * inner, startPosition, x - endWidth * inner, endPosition, x + endWidth * outer, endPosition, x + startWidth * outer, startPosition]
} else {
points = [startPosition, y + startWidth * outer, startPosition, y - startWidth * inner, endPosition, y - endWidth * inner, endPosition, y + endWidth * outer]
}
return that._renderer.path(points, "area")
},
measure: function(layout) {
var width, result = {};
result.min = result.max = layout[this.vertical ? "x" : "y"];
width = this._options.width;
width = _Number(width) || _max(_Number(width.start), _Number(width.end));
result.min -= this._inner * width;
result.max += this._outer * width;
return result
}
});
module.exports = LinearRangeContainer
},
/*!****************************************************!*\
!*** ./artifacts/transpiled/viz/circular_gauge.js ***!
\****************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
module.exports = __webpack_require__( /*! ./gauges/circular_gauge */ 422)
},
/*!****************************************************************!*\
!*** ./artifacts/transpiled/viz/gauges/circular_indicators.js ***!
\****************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var baseIndicatorsModule = __webpack_require__( /*! ./base_indicators */ 255),
BaseIndicator = baseIndicatorsModule.BaseIndicator,
BaseTextCloudMarker = baseIndicatorsModule.BaseTextCloudMarker,
BaseRangeBar = baseIndicatorsModule.BaseRangeBar,
vizUtils = __webpack_require__( /*! ../core/utils */ 12),
_Number = Number,
_getCosAndSin = vizUtils.getCosAndSin,
_convertAngleToRendererSpace = vizUtils.convertAngleToRendererSpace;
var SimpleIndicator = BaseIndicator.inherit({
_move: function() {
var that = this,
options = that._options,
angle = _convertAngleToRendererSpace(that._actualPosition);
that._rootElement.rotate(angle, options.x, options.y);
that._trackerElement && that._trackerElement.rotate(angle, options.x, options.y)
},
_isEnabled: function() {
return this._options.width > 0
},
_isVisible: function(layout) {
return layout.radius - _Number(this._options.indentFromCenter) > 0
},
_getTrackerSettings: function() {
var options = this._options,
radius = this._getRadius(),
indentFromCenter = this._getIndentFromCenter(),
x = options.x,
y = options.y - (radius + indentFromCenter) / 2,
width = options.width / 2,
length = (radius - indentFromCenter) / 2;
width > 10 || (width = 10);
length > 10 || (length = 10);
return {
points: [x - width, y - length, x - width, y + length, x + width, y + length, x + width, y - length]
}
},
_render: function() {
var that = this;
that._renderPointer()
},
_clearPointer: function() {
delete this._element
},
_clear: function() {
this._clearPointer()
},
_getIndentFromCenter: function(radius) {
return Number(this._options.indentFromCenter) || 0
},
_getRadius: function() {
return 0
},
measure: function(layout) {
var result = {
max: layout.radius
};
if (this._options.indentFromCenter < 0) {
result.inverseHorizontalOffset = result.inverseVerticalOffset = -_Number(this._options.indentFromCenter)
}
return result
},
getTooltipParameters: function() {
var options = this._options,
cosSin = _getCosAndSin(this._actualPosition),
r = (this._getRadius() + this._getIndentFromCenter()) / 2;
return {
x: options.x + cosSin.cos * r,
y: options.y - cosSin.sin * r,
value: this._currentValue,
color: options.color,
offset: options.width / 2
}
}
});
var NeedleIndicator = SimpleIndicator.inherit({
_isVisible: function(layout) {
var indentFromCenter = this._adjustOffset(Number(this._options.indentFromCenter), layout.radius),
offset = this._adjustOffset(Number(this._options.offset), layout.radius);
return layout.radius - indentFromCenter - offset > 0
},
getOffset: function() {
return 0
},
_adjustOffset: function(value, radius) {
var minRadius = Number(this._options.beginAdaptingAtRadius),
diff = radius / minRadius;
if (diff < 1) {
value = Math.floor(value * diff)
}
return value || 0
},
_getIndentFromCenter: function(radius) {
return this._adjustOffset(Number(this._options.indentFromCenter), this._options.radius)
},
_getRadius: function() {
var options = this._options;
return options.radius - this._adjustOffset(Number(options.offset), options.radius)
},
_renderSpindle: function() {
var gapSize, that = this,
options = that._options,
radius = options.radius,
spindleSize = 2 * this._adjustOffset(_Number(options.spindleSize) / 2, radius);
gapSize = 2 * this._adjustOffset(_Number(options.spindleGapSize) / 2, radius) || 0;
if (gapSize > 0) {
gapSize = gapSize <= spindleSize ? gapSize : spindleSize
}
if (spindleSize > 0) {
that._spindleOuter = that._spindleOuter || that._renderer.circle().append(that._rootElement);
that._spindleInner = that._spindleInner || that._renderer.circle().append(that._rootElement);
that._spindleOuter.attr({
"class": "dxg-spindle-border",
cx: options.x,
cy: options.y,
r: spindleSize / 2
});
that._spindleInner.attr({
"class": "dxg-spindle-hole",
cx: options.x,
cy: options.y,
r: gapSize / 2,
fill: options.containerBackgroundColor
})
}
},
_render: function() {
var that = this;
that.callBase();
that._renderSpindle()
},
_clear: function() {
this.callBase();
delete this._spindleOuter;
delete this._spindleInner
}
});
var rectangleNeedle = NeedleIndicator.inherit({
_renderPointer: function() {
var that = this,
options = that._options,
y2 = options.y - this._getRadius(),
y1 = options.y - this._getIndentFromCenter(),
x1 = options.x - options.width / 2,
x2 = x1 + _Number(options.width);
that._element = that._element || that._renderer.path([], "area").append(that._rootElement);
that._element.attr({
points: [x1, y1, x1, y2, x2, y2, x2, y1]
})
}
});
var triangleNeedle = NeedleIndicator.inherit({
_renderPointer: function() {
var that = this,
options = that._options,
y2 = options.y - this._getRadius(),
y1 = options.y - this._getIndentFromCenter(),
x1 = options.x - options.width / 2,
x2 = options.x + options.width / 2;
that._element = that._element || that._renderer.path([], "area").append(that._rootElement);
that._element.attr({
points: [x1, y1, options.x, y2, x2, y1]
})
}
});
var twoColorNeedle = NeedleIndicator.inherit({
_renderPointer: function() {
var y2, y3, that = this,
options = that._options,
x1 = options.x - options.width / 2,
x2 = options.x + options.width / 2,
y4 = options.y - this._getRadius(),
y1 = options.y - this._getIndentFromCenter(),
fraction = _Number(options.secondFraction) || 0;
if (fraction >= 1) {
y2 = y3 = y1
} else {
if (fraction <= 0) {
y2 = y3 = y4
} else {
y3 = y4 + (y1 - y4) * fraction;
y2 = y3 + _Number(options.space)
}
}
that._firstElement = that._firstElement || that._renderer.path([], "area").append(that._rootElement);
that._spaceElement = that._spaceElement || that._renderer.path([], "area").append(that._rootElement);
that._secondElement = that._secondElement || that._renderer.path([], "area").append(that._rootElement);
that._firstElement.attr({
points: [x1, y1, x1, y2, x2, y2, x2, y1]
});
that._spaceElement.attr({
points: [x1, y2, x1, y3, x2, y3, x2, y2],
"class": "dxg-hole",
fill: options.containerBackgroundColor
});
that._secondElement.attr({
points: [x1, y3, x1, y4, x2, y4, x2, y3],
"class": "dxg-part",
fill: options.secondColor
})
},
_clearPointer: function() {
delete this._firstElement;
delete this._secondElement;
delete this._spaceElement
}
});
var triangleMarker = SimpleIndicator.inherit({
_isEnabled: function() {
return this._options.length > 0 && this._options.width > 0
},
_isVisible: function(layout) {
return layout.radius > 0
},
_render: function() {
var settings, that = this,
options = that._options,
x = options.x,
y1 = options.y - options.radius,
dx = options.width / 2 || 0,
y2 = y1 - _Number(options.length);
that._element = that._element || that._renderer.path([], "area").append(that._rootElement);
settings = {
points: [x, y1, x - dx, y2, x + dx, y2],
stroke: "none",
"stroke-width": 0,
"stroke-linecap": "square"
};
if (options.space > 0) {
settings["stroke-width"] = Math.min(options.space, options.width / 4) || 0;
settings.stroke = settings["stroke-width"] > 0 ? options.containerBackgroundColor || "none" : "none"
}
that._element.attr(settings).sharp()
},
_clear: function() {
delete this._element
},
_getTrackerSettings: function() {
var options = this._options,
x = options.x,
y = options.y - options.radius - options.length / 2,
width = options.width / 2,
length = options.length / 2;
width > 10 || (width = 10);
length > 10 || (length = 10);
return {
points: [x - width, y - length, x - width, y + length, x + width, y + length, x + width, y - length]
}
},
measure: function(layout) {
return {
min: layout.radius,
max: layout.radius + _Number(this._options.length)
}
},
getTooltipParameters: function() {
var options = this._options,
cosSin = _getCosAndSin(this._actualPosition),
r = options.radius + options.length / 2,
parameters = this.callBase();
parameters.x = options.x + cosSin.cos * r;
parameters.y = options.y - cosSin.sin * r;
parameters.offset = options.length / 2;
return parameters
}
});
var textCloud = BaseTextCloudMarker.inherit({
_isEnabled: function() {
return true
},
_isVisible: function(layout) {
return layout.radius > 0
},
_getTextCloudOptions: function() {
var that = this,
cosSin = _getCosAndSin(that._actualPosition),
nAngle = vizUtils.normalizeAngle(that._actualPosition);
return {
x: that._options.x + cosSin.cos * that._options.radius,
y: that._options.y - cosSin.sin * that._options.radius,
type: nAngle > 270 ? "left-top" : nAngle > 180 ? "top-right" : nAngle > 90 ? "right-bottom" : "bottom-left"
}
},
measure: function(layout) {
var verticalOffset, horizontalOffset, that = this,
arrowLength = _Number(that._options.arrowLength) || 0;
that._measureText();
verticalOffset = that._textFullHeight + arrowLength;
horizontalOffset = that._textFullWidth + arrowLength;
return {
min: layout.radius,
max: layout.radius,
horizontalOffset: horizontalOffset,
verticalOffset: verticalOffset,
inverseHorizontalOffset: horizontalOffset,
inverseVerticalOffset: verticalOffset
}
}
});
var rangeBar = BaseRangeBar.inherit({
_isEnabled: function() {
return this._options.size > 0
},
_isVisible: function(layout) {
return layout.radius - _Number(this._options.size) > 0
},
_createBarItem: function() {
return this._renderer.arc().attr({
"stroke-linejoin": "round"
}).append(this._rootElement)
},
_createTracker: function() {
return this._renderer.arc().attr({
"stroke-linejoin": "round"
})
},
_setBarSides: function() {
var that = this;
that._maxSide = that._options.radius;
that._minSide = that._maxSide - _Number(that._options.size)
},
_getSpace: function() {
var options = this._options;
return options.space > 0 ? 180 * options.space / options.radius / Math.PI : 0
},
_isTextVisible: function() {
var options = this._options.text || {};
return options.indent > 0
},
_setTextItemsSides: function() {
var that = this,
options = that._options,
indent = _Number(options.text.indent);
that._lineFrom = options.y - options.radius;
that._lineTo = that._lineFrom - indent;
that._textRadius = options.radius + indent
},
_getPositions: function() {
var mainPosition1, mainPosition2, that = this,
basePosition = that._basePosition,
actualPosition = that._actualPosition;
if (basePosition >= actualPosition) {
mainPosition1 = basePosition;
mainPosition2 = actualPosition
} else {
mainPosition1 = actualPosition;
mainPosition2 = basePosition
}
return {
start: that._startPosition,
end: that._endPosition,
main1: mainPosition1,
main2: mainPosition2,
back1: Math.min(mainPosition1 + that._space, that._startPosition),
back2: Math.max(mainPosition2 - that._space, that._endPosition)
}
},
_buildItemSettings: function(from, to) {
var that = this;
return {
x: that._options.x,
y: that._options.y,
innerRadius: that._minSide,
outerRadius: that._maxSide,
startAngle: to,
endAngle: from
}
},
_updateTextPosition: function() {
var that = this,
cosSin = _getCosAndSin(that._actualPosition),
x = that._options.x + that._textRadius * cosSin.cos,
y = that._options.y - that._textRadius * cosSin.sin;
x += cosSin.cos * that._textWidth * .6;
y -= cosSin.sin * that._textHeight * .6;
that._text.attr({
x: x,
y: y + that._textVerticalOffset
})
},
_updateLinePosition: function() {
var x1, x2, that = this,
x = that._options.x;
if (that._basePosition > that._actualPosition) {
x1 = x - 2;
x2 = x
} else {
if (that._basePosition < that._actualPosition) {
x1 = x;
x2 = x + 2
} else {
x1 = x - 1;
x2 = x + 1
}
}
that._line.attr({
points: [x1, that._lineFrom, x1, that._lineTo, x2, that._lineTo, x2, that._lineFrom]
}).rotate(_convertAngleToRendererSpace(that._actualPosition), x, that._options.y).sharp()
},
_getTooltipPosition: function() {
var that = this,
cosSin = _getCosAndSin((that._basePosition + that._actualPosition) / 2),
r = (that._minSide + that._maxSide) / 2;
return {
x: that._options.x + cosSin.cos * r,
y: that._options.y - cosSin.sin * r
}
},
measure: function(layout) {
var that = this,
result = {
min: layout.radius - _Number(that._options.size),
max: layout.radius
};
that._measureText();
if (that._hasText) {
result.max += _Number(that._options.text.indent);
result.horizontalOffset = that._textWidth;
result.verticalOffset = that._textHeight
}
return result
}
});
exports._default = rectangleNeedle;
exports.rectangleneedle = rectangleNeedle;
exports.triangleneedle = triangleNeedle;
exports.twocolorneedle = twoColorNeedle;
exports.trianglemarker = triangleMarker;
exports.textcloud = textCloud;
exports.rangebar = rangeBar
},
/*!*********************************************************************!*\
!*** ./artifacts/transpiled/viz/gauges/circular_range_container.js ***!
\*********************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var BaseRangeContainer = __webpack_require__( /*! ./base_range_container */ 421),
_Number = Number,
_max = Math.max,
_normalizeEnum = __webpack_require__( /*! ../core/utils */ 12).normalizeEnum;
var CircularRangeContainer = BaseRangeContainer.inherit({
_processOptions: function() {
var that = this;
that._inner = that._outer = 0;
switch (_normalizeEnum(that._options.orientation)) {
case "inside":
that._inner = 1;
break;
case "center":
that._inner = that._outer = .5;
break;
default:
that._outer = 1
}
},
_isVisible: function(layout) {
var width = this._options.width;
width = _Number(width) || _max(_Number(width.start), _Number(width.end));
return layout.radius - this._inner * width > 0
},
_createRange: function(range, layout) {
var that = this,
width = (range.startWidth + range.endWidth) / 2;
return that._renderer.arc(layout.x, layout.y, layout.radius - that._inner * width, layout.radius + that._outer * width, that._translator.translate(range.end), that._translator.translate(range.start)).attr({
"stroke-linejoin": "round"
})
},
measure: function(layout) {
var width = this._options.width;
width = _Number(width) || _max(_Number(width.start), _Number(width.end));
return {
min: layout.radius - this._inner * width,
max: layout.radius + this._outer * width
}
}
});
module.exports = CircularRangeContainer
},
/*!***********************************************!*\
!*** ./artifacts/transpiled/viz/bar_gauge.js ***!
\***********************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
module.exports = __webpack_require__( /*! ./gauges/bar_gauge */ 831).dxBarGauge
},
/*!******************************************************!*\
!*** ./artifacts/transpiled/viz/gauges/bar_gauge.js ***!
\******************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var PI_DIV_180 = Math.PI / 180,
_abs = Math.abs,
_round = Math.round,
_floor = Math.floor,
_min = Math.min,
_max = Math.max,
registerComponent = __webpack_require__( /*! ../../core/component_registrator */ 9),
objectUtils = __webpack_require__( /*! ../../core/utils/object */ 47),
commonUtils = __webpack_require__( /*! ../../core/utils/common */ 4),
extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
_normalizeEnum = __webpack_require__( /*! ../core/utils */ 12).normalizeEnum,
baseGaugeModule = __webpack_require__( /*! ./base_gauge */ 147),
dxBaseGauge = baseGaugeModule.dxBaseGauge,
_getSampleText = baseGaugeModule.getSampleText,
_formatValue = baseGaugeModule.formatValue,
_compareArrays = baseGaugeModule.compareArrays,
dxCircularGauge = __webpack_require__( /*! ./circular_gauge */ 422),
_isArray = Array.isArray,
vizUtils = __webpack_require__( /*! ../core/utils */ 12),
_convertAngleToRendererSpace = vizUtils.convertAngleToRendererSpace,
_getCosAndSin = vizUtils.getCosAndSin,
_patchFontOptions = vizUtils.patchFontOptions,
_Number = Number,
_isFinite = isFinite,
_noop = commonUtils.noop,
_extend = extend,
OPTION_VALUES = "values";
var dxBarGauge = dxBaseGauge.inherit({
_rootClass: "dxbg-bar-gauge",
_themeSection: "barGauge",
_fontFields: ["label.font", "legend.font", "legend.title.font", "legend.title.subtitle.font"],
_initCore: function() {
var that = this;
that.callBase.apply(that, arguments);
that._barsGroup = that._renderer.g().attr({
"class": "dxbg-bars"
}).linkOn(that._renderer.root, "bars");
that._values = [];
that._context = {
renderer: that._renderer,
translator: that._translator,
tracker: that._tracker,
group: that._barsGroup
};
that._animateStep = function(pos) {
var i, ii, bars = that._bars;
for (i = 0, ii = bars.length; i < ii; ++i) {
bars[i].animate(pos)
}
};
that._animateComplete = function() {
that._bars.forEach(function(bar) {
return bar.endAnimation()
});
that._checkOverlap()
}
},
_disposeCore: function() {
var that = this;
that._barsGroup.linkOff();
that._barsGroup = that._values = that._context = that._animateStep = that._animateComplete = null;
that.callBase.apply(that, arguments)
},
_setupDomainCore: function() {
var that = this,
startValue = that.option("startValue"),
endValue = that.option("endValue");
_isFinite(startValue) || (startValue = 0);
_isFinite(endValue) || (endValue = 100);
that._translator.setDomain(startValue, endValue);
that._baseValue = that._translator.adjust(that.option("baseValue"));
_isFinite(that._baseValue) || (that._baseValue = startValue < endValue ? startValue : endValue)
},
_getDefaultSize: function() {
return {
width: 300,
height: 300
}
},
_setupCodomain: dxCircularGauge.prototype._setupCodomain,
_getApproximateScreenRange: function() {
var that = this,
sides = that._area.sides,
width = that._canvas.width / (sides.right - sides.left),
height = that._canvas.height / (sides.down - sides.up),
r = width < height ? width : height;
return -that._translator.getCodomainRange() * r * PI_DIV_180
},
_setupAnimationSettings: function() {
var that = this;
that.callBase.apply(that, arguments);
if (that._animationSettings) {
that._animationSettings.step = that._animateStep;
that._animationSettings.complete = that._animateComplete
}
},
_cleanContent: function() {
var that = this;
that._barsGroup.linkRemove();
that._animationSettings && that._barsGroup.stopAnimation();
that._barsGroup.clear()
},
_renderContent: function() {
var text, bBox, that = this,
labelOptions = that.option("label"),
context = that._context;
that._barsGroup.linkAppend();
context.textEnabled = void 0 === labelOptions || labelOptions && (!("visible" in labelOptions) || labelOptions.visible);
if (context.textEnabled) {
context.textColor = labelOptions && labelOptions.font && labelOptions.font.color || null;
labelOptions = _extend(true, {}, that._themeManager.theme().label, labelOptions);
context.formatOptions = {
format: void 0 !== labelOptions.format ? labelOptions.format : that._defaultFormatOptions,
customizeText: labelOptions.customizeText
};
context.textOptions = {
align: "center"
};
context.fontStyles = _patchFontOptions(_extend({}, that._themeManager.theme().label.font, labelOptions.font, {
color: null
}));
that._textIndent = labelOptions.indent > 0 ? _Number(labelOptions.indent) : 0;
context.lineWidth = labelOptions.connectorWidth > 0 ? _Number(labelOptions.connectorWidth) : 0;
context.lineColor = labelOptions.connectorColor || null;
text = that._renderer.text(_getSampleText(that._translator, context.formatOptions), 0, 0).attr(context.textOptions).css(context.fontStyles).append(that._barsGroup);
bBox = text.getBBox();
text.remove();
context.textY = bBox.y;
context.textWidth = bBox.width;
context.textHeight = bBox.height
}
dxCircularGauge.prototype._applyMainLayout.call(that);
that._renderBars()
},
_measureMainElements: function() {
var result = {
maxRadius: this._area.radius
};
if (this._context.textEnabled) {
result.horizontalMargin = this._context.textWidth;
result.verticalMargin = this._context.textHeight;
result.inverseHorizontalMargin = this._context.textWidth / 2;
result.inverseVerticalMargin = this._context.textHeight / 2
}
return result
},
_renderBars: function() {
var relativeInnerRadius, radius, that = this,
options = _extend({}, that._themeManager.theme(), that.option()),
area = that._area;
relativeInnerRadius = options.relativeInnerRadius > 0 && options.relativeInnerRadius < 1 ? _Number(options.relativeInnerRadius) : .1;
radius = area.radius;
if (that._context.textEnabled) {
that._textIndent = _round(_min(that._textIndent, radius / 2));
radius -= that._textIndent
}
that._outerRadius = _floor(radius);
that._innerRadius = _floor(radius * relativeInnerRadius);
that._barSpacing = options.barSpacing > 0 ? _Number(options.barSpacing) : 0;
_extend(that._context, {
backgroundColor: options.backgroundColor,
x: area.x,
y: area.y,
startAngle: area.startCoord,
endAngle: area.endCoord,
baseAngle: that._translator.translate(that._baseValue)
});
that._arrangeBars()
},
_arrangeBars: function() {
var spacing, colors, unitOffset, i, that = this,
radius = that._outerRadius - that._innerRadius,
context = that._context;
var count = that._bars.length;
that._beginValueChanging();
context.barSize = count > 0 ? _max((radius - (count - 1) * that._barSpacing) / count, 1) : 0;
spacing = count > 1 ? _max(_min((radius - count * context.barSize) / (count - 1), that._barSpacing), 0) : 0;
var _count = _min(_floor((radius + spacing) / context.barSize), count);
that._setBarsCount(count);
radius = that._outerRadius;
context.textRadius = radius;
context.textIndent = that._textIndent;
that._palette.reset();
unitOffset = context.barSize + spacing;
colors = that._palette.generateColors(_count);
for (i = 0; i < _count; ++i, radius -= unitOffset) {
that._bars[i].arrange({
radius: radius,
color: colors[i]
})
}
for (var _i = _count; _i < count; _i++) {
that._bars[_i].hide()
}
if (that._animationSettings && !that._noAnimation) {
that._animateBars()
} else {
that._updateBars()
}
that._endValueChanging()
},
_setBarsCount: function() {
var that = this;
if (that._bars.length > 0) {
if (that._dummyBackground) {
that._dummyBackground.dispose();
that._dummyBackground = null
}
} else {
if (!that._dummyBackground) {
that._dummyBackground = that._renderer.arc().attr({
"stroke-linejoin": "round"
})
}
that._dummyBackground.attr({
x: that._context.x,
y: that._context.y,
outerRadius: that._outerRadius,
innerRadius: that._innerRadius,
startAngle: that._context.endAngle,
endAngle: that._context.startAngle,
fill: that._context.backgroundColor
}).append(that._barsGroup)
}
},
_updateBars: function() {
this._bars.forEach(function(bar) {
return bar.applyValue()
});
this._checkOverlap()
},
_checkOverlap: function() {
var that = this,
bars = that._bars,
overlapStrategy = _normalizeEnum(that._getOption("resolveLabelOverlapping", true));
if ("none" === overlapStrategy) {
return
}
var sortedBars = bars.concat().sort(function(a, b) {
return a.getValue() - b.getValue()
});
var currentIndex = 0;
var nextIndex = 1;
while (currentIndex < sortedBars.length && nextIndex < sortedBars.length) {
var current = sortedBars[currentIndex];
var next = sortedBars[nextIndex];
if (current.checkIntersect(next)) {
next.hideLabel();
nextIndex++
} else {
currentIndex = nextIndex;
nextIndex = currentIndex + 1
}
}
},
_animateBars: function() {
var i, that = this,
ii = that._bars.length;
if (ii > 0) {
for (i = 0; i < ii; ++i) {
that._bars[i].beginAnimation()
}
that._barsGroup.animate({
_: 0
}, that._animationSettings)
}
},
_buildNodes: function() {
var that = this;
var options = that._options;
that._palette = that._themeManager.createPalette(options.palette, {
useHighlight: true,
extensionMode: options.paletteExtensionMode
});
that._palette.reset();
that._bars = that._bars || [];
that._animationSettings && that._barsGroup.stopAnimation();
var barValues = that._values.filter(_isFinite);
var count = barValues.length;
if (that._bars.length > count) {
var ii = that._bars.length;
for (var i = count; i < ii; ++i) {
that._bars[i].dispose()
}
that._bars.splice(count, ii - count)
} else {
if (that._bars.length < count) {
for (var _i2 = that._bars.length; _i2 < count; ++_i2) {
that._bars.push(new BarWrapper(_i2, that._context))
}
}
}
that._bars.forEach(function(bar, index) {
bar.update({
color: that._palette.getNextColor(count),
value: barValues[index]
})
})
},
_updateValues: function(values) {
var i, value, that = this,
list = _isArray(values) && values || _isFinite(values) && [values] || [],
ii = list.length;
that._values.length = ii;
for (i = 0; i < ii; ++i) {
value = list[i];
that._values[i] = value = _Number(_isFinite(value) ? value : that._values[i])
}
if (!that._resizing) {
if (!_compareArrays(that._values, that.option(OPTION_VALUES))) {
that.option(OPTION_VALUES, that._values.slice())
}
}
this._change(["NODES"])
},
values: function(arg) {
if (void 0 !== arg) {
this._updateValues(arg);
return this
} else {
return this._values.slice(0)
}
},
_optionChangesMap: {
backgroundColor: "MOSTLY_TOTAL",
relativeInnerRadius: "MOSTLY_TOTAL",
barSpacing: "MOSTLY_TOTAL",
label: "MOSTLY_TOTAL",
resolveLabelOverlapping: "MOSTLY_TOTAL",
palette: "MOSTLY_TOTAL",
paletteExtensionMode: "MOSTLY_TOTAL",
values: "VALUES"
},
_change_VALUES: function() {
this._updateValues(this.option(OPTION_VALUES))
},
_factory: objectUtils.clone(dxBaseGauge.prototype._factory),
_optionChangesOrder: ["VALUES", "NODES"],
_initialChanges: ["VALUES"],
_change_NODES: function() {
this._buildNodes()
},
_change_MOSTLY_TOTAL: function() {
this._change(["NODES"]);
this.callBase()
},
_proxyData: [],
_getLegendData: function() {
var that = this,
formatOptions = {},
options = that._options,
labelFormatOptions = (options.label || {}).format,
legendFormatOptions = (options.legend || {}).itemTextFormat;
if (legendFormatOptions) {
formatOptions.format = legendFormatOptions
} else {
formatOptions.format = labelFormatOptions || that._defaultFormatOptions
}
return (this._bars || []).map(function(b) {
return {
id: b.index,
item: {
value: b.getValue(),
color: b.getColor(),
index: b.index
},
text: _formatValue(b.getValue(), formatOptions),
visible: true,
states: {
normal: {
fill: b.getColor()
}
}
}
})
}
});
var BarWrapper = function(index, context) {
var that = this;
that._context = context;
that._tracker = context.renderer.arc().attr({
"stroke-linejoin": "round"
});
that.index = index
};
_extend(BarWrapper.prototype, {
dispose: function() {
var that = this;
that._background.dispose();
that._bar.dispose();
if (that._context.textEnabled) {
that._line.dispose();
that._text.dispose()
}
that._context.tracker.detach(that._tracker);
that._context = that._settings = that._background = that._bar = that._line = that._text = that._tracker = null;
return that
},
arrange: function(options) {
var that = this,
context = that._context;
this._visible = true;
context.tracker.attach(that._tracker, that, {
index: that.index
});
that._background = context.renderer.arc().attr({
"stroke-linejoin": "round",
fill: context.backgroundColor
}).append(context.group);
that._settings = that._settings || {
x: context.x,
y: context.y,
startAngle: context.baseAngle,
endAngle: context.baseAngle
};
that._bar = context.renderer.arc().attr(_extend({
"stroke-linejoin": "round"
}, that._settings)).append(context.group);
if (context.textEnabled) {
that._line = context.renderer.path([], "line").attr({
"stroke-width": context.lineWidth
}).append(context.group);
that._text = context.renderer.text().css(context.fontStyles).attr(context.textOptions).append(context.group)
}
that._angle = isFinite(that._angle) ? that._angle : context.baseAngle;
that._settings.outerRadius = options.radius;
that._settings.innerRadius = options.radius - context.barSize;
that._settings.x = context.x;
that._settings.y = context.y;
that._background.attr(_extend({}, that._settings, {
startAngle: context.endAngle,
endAngle: context.startAngle,
fill: that._context.backgroundColor
}));
that._bar.attr({
x: context.x,
y: context.y,
outerRadius: that._settings.outerRadius,
innerRadius: that._settings.innerRadius,
fill: that._color
});
that._tracker.attr(that._settings);
if (context.textEnabled) {
that._line.attr({
points: [context.x, context.y - that._settings.innerRadius, context.x, context.y - context.textRadius - context.textIndent],
stroke: context.lineColor || that._color
}).sharp();
that._text.css({
fill: context.textColor || that._color
})
}
return that
},
getTooltipParameters: function() {
var that = this,
cosSin = _getCosAndSin((that._angle + that._context.baseAngle) / 2);
return {
x: _round(that._context.x + (that._settings.outerRadius + that._settings.innerRadius) / 2 * cosSin.cos),
y: _round(that._context.y - (that._settings.outerRadius + that._settings.innerRadius) / 2 * cosSin.sin),
offset: 0,
color: that._color,
value: that._value
}
},
setAngle: function(angle) {
var cosSin, that = this,
context = that._context,
settings = that._settings;
that._angle = angle;
setAngles(settings, context.baseAngle, angle);
that._bar.attr(settings);
that._tracker.attr(settings);
if (context.textEnabled) {
cosSin = _getCosAndSin(angle);
var indent = context.textIndent,
radius = context.textRadius + indent,
x = context.x + radius * cosSin.cos,
y = context.y - radius * cosSin.sin,
halfWidth = .5 * context.textWidth,
textHeight = context.textHeight,
textY = context.textY;
if (_abs(x - context.x) > indent) {
x += x < context.x ? -halfWidth : halfWidth
}
if (_abs(y - context.y) <= indent) {
y -= textY + .5 * textHeight
} else {
y -= y < context.y ? textY + textHeight : textY
}
var text = _formatValue(that._value, context.formatOptions, {
index: that.index
}),
visibility = "" === text ? "hidden" : null;
that._text.attr({
text: text,
x: x,
y: y,
visibility: visibility
});
that._line.attr({
visibility: visibility
});
that._line.rotate(_convertAngleToRendererSpace(angle), context.x, context.y)
}
return that
},
hideLabel: function() {
this._text.attr({
visibility: "hidden"
});
this._line.attr({
visibility: "hidden"
})
},
checkIntersect: function(anotherBar) {
var coords = this.calculateLabelCoords();
var anotherCoords = anotherBar.calculateLabelCoords();
if (!coords || !anotherCoords) {
return false
}
var width = Math.max(0, Math.min(coords.bottomRight.x, anotherCoords.bottomRight.x) - Math.max(coords.topLeft.x, anotherCoords.topLeft.x));
var height = Math.max(0, Math.min(coords.bottomRight.y, anotherCoords.bottomRight.y) - Math.max(coords.topLeft.y, anotherCoords.topLeft.y));
return width * height !== 0
},
calculateLabelCoords: function() {
if (!this._text) {
return
}
var box = this._text.getBBox();
return {
topLeft: {
x: box.x,
y: box.y
},
bottomRight: {
x: box.x + box.width,
y: box.y + box.height
}
}
},
_processValue: function(value) {
return this._context.translator.translate(this._context.translator.adjust(value))
},
applyValue: function() {
if (!this._visible) {
return this
}
return this.setAngle(this._processValue(this.getValue()))
},
update: function(_ref) {
var color = _ref.color,
value = _ref.value;
this._color = color;
this._value = value
},
hide: function() {
this._visible = false
},
getColor: function() {
return this._color
},
getValue: function() {
return this._value
},
beginAnimation: function() {
if (!this._visible) {
return this
}
var that = this,
angle = this._processValue(this.getValue());
if (!compareFloats(that._angle, angle)) {
that._start = that._angle;
that._delta = angle - that._angle;
that._tracker.attr({
visibility: "hidden"
});
if (that._context.textEnabled) {
that._line.attr({
visibility: "hidden"
});
that._text.attr({
visibility: "hidden"
})
}
} else {
that.animate = _noop;
that.setAngle(that._angle)
}
},
animate: function(pos) {
if (!this._visible) {
return this
}
var that = this;
that._angle = that._start + that._delta * pos;
setAngles(that._settings, that._context.baseAngle, that._angle);
that._bar.attr(that._settings)
},
endAnimation: function() {
var that = this;
if (void 0 !== that._delta) {
if (compareFloats(that._angle, that._start + that._delta)) {
that._tracker.attr({
visibility: null
});
that.setAngle(that._angle)
}
} else {
delete that.animate
}
delete that._start;
delete that._delta
}
});
function setAngles(target, angle1, angle2) {
target.startAngle = angle1 < angle2 ? angle1 : angle2;
target.endAngle = angle1 < angle2 ? angle2 : angle1
}
function compareFloats(value1, value2) {
return _abs(value1 - value2) < 1e-4
}
registerComponent("dxBarGauge", dxBarGauge);
exports.dxBarGauge = dxBarGauge;
dxBarGauge.addPlugin(__webpack_require__( /*! ../components/legend */ 202).plugin);
var __BarWrapper = BarWrapper;
exports.BarWrapper = __BarWrapper;
exports.stubBarWrapper = function(barWrapperType) {
BarWrapper = barWrapperType
};
exports.restoreBarWrapper = function() {
BarWrapper = __BarWrapper
}
},
/*!****************************************************!*\
!*** ./artifacts/transpiled/viz/range_selector.js ***!
\****************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
module.exports = __webpack_require__( /*! ./range_selector/range_selector */ 833)
},
/*!*******************************************************************!*\
!*** ./artifacts/transpiled/viz/range_selector/range_selector.js ***!
\*******************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _component_registrator = __webpack_require__( /*! ../../core/component_registrator */ 9);
var _component_registrator2 = _interopRequireDefault(_component_registrator);
var _type2 = __webpack_require__( /*! ../../core/utils/type */ 1);
var _extend = __webpack_require__( /*! ../../core/utils/extend */ 0);
var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 3);
var _utils = __webpack_require__( /*! ../core/utils */ 12);
var _date = __webpack_require__( /*! ../../core/utils/date */ 22);
var _math = __webpack_require__( /*! ../../core/utils/math */ 30);
var _range = __webpack_require__( /*! ../translators/range */ 109);
var _range2 = _interopRequireDefault(_range);
var _base_axis = __webpack_require__( /*! ../axes/base_axis */ 205);
var _base_axis2 = _interopRequireDefault(_base_axis);
var _parse_utils = __webpack_require__( /*! ../components/parse_utils */ 249);
var _parse_utils2 = _interopRequireDefault(_parse_utils);
var _format_helper = __webpack_require__( /*! ../../format_helper */ 63);
var _format_helper2 = _interopRequireDefault(_format_helper);
var _common = __webpack_require__( /*! ./common */ 207);
var _common2 = _interopRequireDefault(_common);
var _sliders_controller = __webpack_require__( /*! ./sliders_controller */ 834);
var _sliders_controller2 = _interopRequireDefault(_sliders_controller);
var _tracker = __webpack_require__( /*! ./tracker */ 837);
var _range_view = __webpack_require__( /*! ./range_view */ 838);
var _range_view2 = _interopRequireDefault(_range_view);
var _series_data_source = __webpack_require__( /*! ./series_data_source */ 839);
var _series_data_source2 = _interopRequireDefault(_series_data_source);
var _tick_generator = __webpack_require__( /*! ../axes/tick_generator */ 414);
var _tick_generator2 = _interopRequireDefault(_tick_generator);
var _base_widget = __webpack_require__( /*! ../core/base_widget */ 98);
var _base_widget2 = _interopRequireDefault(_base_widget);
var _export = __webpack_require__( /*! ../core/export */ 95);
var _title = __webpack_require__( /*! ../core/title */ 106);
var _loading_indicator = __webpack_require__( /*! ../core/loading_indicator */ 121);
var _data_source = __webpack_require__( /*! ../core/data_source */ 146);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
var _max = Math.max;
var _ceil = Math.ceil;
var _floor = Math.floor;
var START_VALUE = "startValue";
var END_VALUE = "endValue";
var DATETIME = "datetime";
var VALUE = "value";
var DISCRETE = "discrete";
var SEMIDISCRETE = "semidiscrete";
var STRING = "string";
var VALUE_CHANGED = VALUE + "Changed";
var CONTAINER_BACKGROUND_COLOR = "containerBackgroundColor";
var SLIDER_MARKER = "sliderMarker";
var OPTION_BACKGROUND = "background";
var LOGARITHMIC = "logarithmic";
var KEEP = "keep";
var SHIFT = "shift";
var RESET = "reset";
var INVISIBLE_POS = -1e3;
var SEMIDISCRETE_GRID_SPACING_FACTOR = 50;
var DEFAULT_AXIS_DIVISION_FACTOR = 30;
var DEFAULT_MINOR_AXIS_DIVISION_FACTOR = 15;
var logarithmBase = 10;
function calculateMarkerHeight(renderer, value, sliderMarkerOptions) {
var formattedText = void 0 === value ? _common2.default.consts.emptySliderMarkerText : _common2.default.formatValue(value, sliderMarkerOptions),
textBBox = getTextBBox(renderer, formattedText, sliderMarkerOptions.font);
return _ceil(textBBox.height) + 2 * sliderMarkerOptions.paddingTopBottom + _common2.default.consts.pointerSize
}
function calculateScaleLabelHalfWidth(renderer, value, scaleOptions, tickIntervalsInfo) {
var formattedText = _common2.default.formatValue(value, scaleOptions.label, tickIntervalsInfo, scaleOptions.valueType, scaleOptions.type, scaleOptions.logarithmBase),
textBBox = getTextBBox(renderer, formattedText, scaleOptions.label.font);
return _ceil(textBBox.width / 2)
}
function calculateIndents(renderer, scale, sliderMarkerOptions, indentOptions, tickIntervalsInfo) {
var leftMarkerHeight, rightMarkerHeight, placeholderWidthLeft, placeholderWidthRight, placeholderHeight, startTickValue, endTickValue, leftScaleLabelWidth = 0,
rightScaleLabelWidth = 0,
ticks = "semidiscrete" === scale.type ? scale.customTicks : tickIntervalsInfo.ticks;
indentOptions = indentOptions || {};
placeholderWidthLeft = indentOptions.left;
placeholderWidthRight = indentOptions.right;
placeholderHeight = sliderMarkerOptions.placeholderHeight;
if (sliderMarkerOptions.visible) {
leftMarkerHeight = calculateMarkerHeight(renderer, scale.startValue, sliderMarkerOptions);
rightMarkerHeight = calculateMarkerHeight(renderer, scale.endValue, sliderMarkerOptions);
if (void 0 === placeholderHeight) {
placeholderHeight = _max(leftMarkerHeight, rightMarkerHeight)
}
}
if (scale.label.visible) {
startTickValue = (0, _type2.isDefined)(scale.startValue) ? ticks[0] : void 0;
endTickValue = (0, _type2.isDefined)(scale.endValue) ? ticks[ticks.length - 1] : void 0;
leftScaleLabelWidth = calculateScaleLabelHalfWidth(renderer, startTickValue, scale, tickIntervalsInfo);
rightScaleLabelWidth = calculateScaleLabelHalfWidth(renderer, endTickValue, scale, tickIntervalsInfo)
}
placeholderWidthLeft = void 0 !== placeholderWidthLeft ? placeholderWidthLeft : leftScaleLabelWidth;
placeholderWidthRight = (void 0 !== placeholderWidthRight ? placeholderWidthRight : rightScaleLabelWidth) || 1;
return {
left: placeholderWidthLeft,
right: placeholderWidthRight,
top: placeholderHeight || 0,
bottom: 0
}
}
function calculateValueType(firstValue, secondValue) {
var typeFirstValue = (0, _type2.type)(firstValue),
typeSecondValue = (0, _type2.type)(secondValue),
validType = function(type) {
return typeFirstValue === type || typeSecondValue === type
};
return validType("date") ? DATETIME : validType("number") ? "numeric" : validType(STRING) ? STRING : ""
}
function showScaleMarkers(scaleOptions) {
return scaleOptions.valueType === DATETIME && scaleOptions.marker.visible
}
function updateTranslatorRangeInterval(translatorRange, scaleOptions) {
var intervalX = scaleOptions.minorTickInterval || scaleOptions.tickInterval;
if ("datetime" === scaleOptions.valueType) {
intervalX = (0, _date.dateToMilliseconds)(intervalX)
}
translatorRange.addRange({
interval: intervalX
})
}
function checkLogarithmicOptions(options, defaultLogarithmBase, incidentOccurred) {
var logarithmBase;
if (!options) {
return
}
logarithmBase = options.logarithmBase;
if (options.type === LOGARITHMIC && logarithmBase <= 0 || logarithmBase && !(0, _type2.isNumeric)(logarithmBase)) {
options.logarithmBase = defaultLogarithmBase;
incidentOccurred("E2104")
} else {
if (options.type !== LOGARITHMIC) {
options.logarithmBase = void 0
}
}
}
function calculateScaleAreaHeight(renderer, scaleOptions, visibleMarkers, tickIntervalsInfo) {
var labelScaleOptions = scaleOptions.label,
markerScaleOptions = scaleOptions.marker,
placeholderHeight = scaleOptions.placeholderHeight,
ticks = "semidiscrete" === scaleOptions.type ? scaleOptions.customTicks : tickIntervalsInfo.ticks,
text = _common2.default.formatValue(ticks[0], labelScaleOptions);
if (placeholderHeight) {
return placeholderHeight
} else {
return (labelScaleOptions.visible ? labelScaleOptions.topIndent + getTextBBox(renderer, text, labelScaleOptions.font).height : 0) + (visibleMarkers ? markerScaleOptions.topIndent + markerScaleOptions.separatorHeight : 0)
}
}
function getMinorTickIntervalUnit(tickInterval, minorTickInterval, withCorrection) {
var interval = (0, _date.getDateUnitInterval)(minorTickInterval),
majorUnit = (0, _date.getDateUnitInterval)(tickInterval),
idx = _date.dateUnitIntervals.indexOf(interval);
if (withCorrection && interval === majorUnit && idx > 0) {
interval = _date.dateUnitIntervals[idx - 1]
}
return interval
}
function getNextTickInterval(tickInterval, minorTickInterval, isDateType) {
if (!tickInterval) {
tickInterval = minorTickInterval
} else {
if (isDateType) {
tickInterval = (0, _date.getNextDateUnit)(tickInterval)
} else {
tickInterval += minorTickInterval
}
}
return tickInterval
}
function calculateTickIntervalsForSemidiscreteScale(scaleOptions, min, max, screenDelta) {
var interval, tickCountByInterval, tickCountByScreen, minorTickInterval = scaleOptions.minorTickInterval,
tickInterval = scaleOptions.tickInterval,
isDateType = "datetime" === scaleOptions.valueType,
gridSpacingFactor = scaleOptions.axisDivisionFactor || {};
if (!tickInterval) {
do {
interval = getNextTickInterval(tickInterval, minorTickInterval, isDateType);
if (tickInterval !== interval) {
tickInterval = interval
} else {
break
}
if (isDateType) {
interval = (0, _date.dateToMilliseconds)(tickInterval)
}
tickCountByInterval = _ceil((max - min) / interval);
tickCountByScreen = _floor(screenDelta / (gridSpacingFactor[tickInterval] || SEMIDISCRETE_GRID_SPACING_FACTOR)) || 1
} while (interval && tickCountByInterval > tickCountByScreen)
}
return {
tickInterval: tickInterval,
minorTickInterval: minorTickInterval,
bounds: {
minVisible: min,
maxVisible: max
},
ticks: []
}
}
function updateTickIntervals(scaleOptions, screenDelta, incidentOccurred, range) {
var result, ticksInfo, length, min = (0, _type2.isDefined)(range.minVisible) ? range.minVisible : range.min,
max = (0, _type2.isDefined)(range.maxVisible) ? range.maxVisible : range.max,
categoriesInfo = scaleOptions._categoriesInfo,
bounds = {};
if (scaleOptions.type === SEMIDISCRETE) {
result = calculateTickIntervalsForSemidiscreteScale(scaleOptions, min, max, screenDelta)
} else {
ticksInfo = _tick_generator2.default.tickGenerator({
axisType: scaleOptions.type,
dataType: scaleOptions.valueType,
logBase: scaleOptions.logarithmBase,
allowNegatives: true,
linearThreshold: Math.abs(scaleOptions.linearThreshold || 0),
axisDivisionFactor: scaleOptions.axisDivisionFactor,
minorAxisDivisionFactor: scaleOptions.minorAxisDivisionFactor,
calculateMinors: true,
allowDecimals: scaleOptions.allowDecimals,
endOnTick: scaleOptions.endOnTick,
incidentOccurred: incidentOccurred,
rangeIsEmpty: range.isEmpty()
})({
min: min,
max: max,
categories: (0, _type2.isDefined)(categoriesInfo) ? categoriesInfo.categories : []
}, screenDelta, scaleOptions.tickInterval, scaleOptions.forceUserTickInterval, void 0, scaleOptions.minorTickInterval, scaleOptions.minorTickCount);
length = ticksInfo.ticks.length;
bounds.minVisible = ticksInfo.ticks[0] < min ? ticksInfo.ticks[0] : min;
bounds.maxVisible = ticksInfo.ticks[length - 1] > max ? ticksInfo.ticks[length - 1] : max;
result = {
tickInterval: ticksInfo.tickInterval,
minorTickInterval: 0 === scaleOptions.minorTickInterval ? 0 : ticksInfo.minorTickInterval,
bounds: bounds,
ticks: ticksInfo.ticks
}
}
return result
}
function calculateTranslatorRange(seriesDataSource, scaleOptions) {
var minValue, maxValue, categories, categoriesInfo, rangeForCategories, inverted = false,
startValue = scaleOptions.startValue,
endValue = scaleOptions.endValue,
translatorRange = seriesDataSource ? seriesDataSource.getBoundRange().arg : new _range2.default.Range,
isDate = "datetime" === scaleOptions.valueType,
minRange = scaleOptions.minRange;
if (scaleOptions.type === DISCRETE) {
rangeForCategories = new _range2.default.Range({
minVisible: startValue,
maxVisible: endValue
});
rangeForCategories.addRange(translatorRange);
translatorRange = rangeForCategories;
categories = seriesDataSource ? seriesDataSource.argCategories : scaleOptions.categories || !seriesDataSource && startValue && endValue && [startValue, endValue];
categories = categories || [];
scaleOptions._categoriesInfo = categoriesInfo = (0, _utils.getCategoriesInfo)(categories, startValue, endValue)
}
if (scaleOptions.type === SEMIDISCRETE) {
startValue = scaleOptions.startValue = correctValueByInterval(scaleOptions.startValue, isDate, minRange);
endValue = scaleOptions.endValue = correctValueByInterval(scaleOptions.endValue, isDate, minRange);
translatorRange.minVisible = correctValueByInterval(translatorRange.minVisible, isDate, minRange);
translatorRange.maxVisible = correctValueByInterval(translatorRange.maxVisible, isDate, minRange);
translatorRange.min = correctValueByInterval(translatorRange.min, isDate, minRange);
translatorRange.max = correctValueByInterval(translatorRange.max, isDate, minRange)
}
if ((0, _type2.isDefined)(startValue) && (0, _type2.isDefined)(endValue)) {
inverted = categoriesInfo ? categoriesInfo.inverted : startValue > endValue;
minValue = categoriesInfo ? categoriesInfo.start : inverted ? endValue : startValue;
maxValue = categoriesInfo ? categoriesInfo.end : inverted ? startValue : endValue
} else {
if ((0, _type2.isDefined)(startValue) || (0, _type2.isDefined)(endValue)) {
minValue = startValue;
maxValue = endValue
} else {
if (categoriesInfo) {
minValue = categoriesInfo.start;
maxValue = categoriesInfo.end
}
}
}
translatorRange.addRange({
invert: inverted,
min: minValue,
max: maxValue,
minVisible: minValue,
maxVisible: maxValue,
dataType: scaleOptions.valueType
});
translatorRange.addRange({
categories: !seriesDataSource ? categories : void 0,
base: scaleOptions.logarithmBase,
axisType: scaleOptions.type,
dataType: scaleOptions.valueType
});
seriesDataSource && translatorRange.sortCategories(categories);
return translatorRange
}
function startEndNotDefined(start, end) {
return !(0, _type2.isDefined)(start) || !(0, _type2.isDefined)(end)
}
function getTextBBox(renderer, text, fontOptions) {
var textElement = renderer.text(text, INVISIBLE_POS, INVISIBLE_POS).css((0, _utils.patchFontOptions)(fontOptions)).append(renderer.root);
var textBBox = textElement.getBBox();
textElement.remove();
return textBBox
}
function getDateMarkerVisibilityChecker(screenDelta) {
return function(isDateScale, isMarkerVisible, min, max, tickInterval) {
if (isMarkerVisible && isDateScale) {
if (!(0, _type2.isDefined)(tickInterval) || tickInterval.years || tickInterval.months >= 6 || screenDelta / SEMIDISCRETE_GRID_SPACING_FACTOR < _ceil((max - min) / (0, _date.dateToMilliseconds)("year")) + 1) {
isMarkerVisible = false
}
}
return isMarkerVisible
}
}
function updateScaleOptions(scaleOptions, seriesDataSource, translatorRange, tickIntervalsInfo, checkDateMarkerVisibility) {
var bounds, isEmptyInterval, intervals, categoriesInfo = scaleOptions._categoriesInfo,
isDateTime = scaleOptions.valueType === DATETIME;
if (seriesDataSource && !seriesDataSource.isEmpty() && !translatorRange.isEmpty()) {
bounds = tickIntervalsInfo.bounds;
translatorRange.addRange(bounds);
scaleOptions.startValue = translatorRange.invert ? bounds.maxVisible : bounds.minVisible;
scaleOptions.endValue = translatorRange.invert ? bounds.minVisible : bounds.maxVisible
}
scaleOptions.marker.visible = checkDateMarkerVisibility(isDateTime && scaleOptions.type.indexOf(DISCRETE) === -1, scaleOptions.marker.visible, scaleOptions.startValue, scaleOptions.endValue, tickIntervalsInfo.tickInterval);
if (categoriesInfo) {
scaleOptions.startValue = categoriesInfo.start;
scaleOptions.endValue = categoriesInfo.end
}
if (scaleOptions.type.indexOf(DISCRETE) === -1) {
isEmptyInterval = (0, _type2.isDate)(scaleOptions.startValue) && (0, _type2.isDate)(scaleOptions.endValue) && scaleOptions.startValue.getTime() === scaleOptions.endValue.getTime() || scaleOptions.startValue === scaleOptions.endValue
}
scaleOptions.isEmpty = startEndNotDefined(scaleOptions.startValue, scaleOptions.endValue) || isEmptyInterval;
if (scaleOptions.isEmpty) {
scaleOptions.startValue = scaleOptions.endValue = void 0
} else {
scaleOptions.minorTickInterval = tickIntervalsInfo.minorTickInterval;
scaleOptions.tickInterval = tickIntervalsInfo.tickInterval;
if (isDateTime && (!(0, _type2.isDefined)(scaleOptions.label.format) || scaleOptions.type === SEMIDISCRETE && scaleOptions.minorTickInterval !== scaleOptions.tickInterval)) {
if (scaleOptions.type === DISCRETE) {
scaleOptions.label.format = _format_helper2.default.getDateFormatByTicks(tickIntervalsInfo.ticks)
} else {
if (!scaleOptions.marker.visible) {
scaleOptions.label.format = _format_helper2.default.getDateFormatByTickInterval(scaleOptions.startValue, scaleOptions.endValue, scaleOptions.tickInterval)
} else {
scaleOptions.label.format = (0, _date.getDateFormatByTickInterval)(scaleOptions.tickInterval)
}
}
}
}
if (scaleOptions.type === SEMIDISCRETE) {
intervals = getIntervalCustomTicks(scaleOptions);
scaleOptions.customMinorTicks = intervals.altIntervals;
scaleOptions.customTicks = intervals.intervals;
scaleOptions.customBoundTicks = [scaleOptions.customTicks[0]]
}
}
function prepareScaleOptions(scaleOption, calculatedValueType, incidentOccurred, containerColor) {
var parser, parsedValue = 0,
valueType = _parse_utils2.default.correctValueType((0, _utils.normalizeEnum)(scaleOption.valueType)),
validateStartEndValues = function(field, parser) {
var messageToIncidentOccurred = field === START_VALUE ? "start" : "end";
if ((0, _type2.isDefined)(scaleOption[field])) {
parsedValue = parser(scaleOption[field]);
if ((0, _type2.isDefined)(parsedValue)) {
scaleOption[field] = parsedValue
} else {
scaleOption[field] = void 0;
incidentOccurred("E2202", [messageToIncidentOccurred])
}
}
};
valueType = calculatedValueType || valueType;
if (!valueType) {
valueType = calculateValueType(scaleOption.startValue, scaleOption.endValue) || "numeric"
}
if (valueType === STRING || scaleOption.categories) {
scaleOption.type = DISCRETE;
valueType = STRING
}
scaleOption.containerColor = containerColor;
scaleOption.valueType = valueType;
scaleOption.dataType = valueType;
parser = _parse_utils2.default.getParser(valueType);
validateStartEndValues(START_VALUE, parser);
validateStartEndValues(END_VALUE, parser);
checkLogarithmicOptions(scaleOption, logarithmBase, incidentOccurred);
if (!scaleOption.type) {
scaleOption.type = "continuous"
}
scaleOption.parser = parser;
if (scaleOption.type === SEMIDISCRETE) {
scaleOption.minorTick.visible = false;
scaleOption.minorTickInterval = scaleOption.minRange;
scaleOption.marker.visible = false;
scaleOption.maxRange = void 0
}
scaleOption.forceUserTickInterval |= (0, _type2.isDefined)(scaleOption.tickInterval) && !(0, _type2.isDefined)(scaleOption.axisDivisionFactor);
scaleOption.axisDivisionFactor = (0, _type2.isDefined)(scaleOption.axisDivisionFactor) ? scaleOption.axisDivisionFactor : DEFAULT_AXIS_DIVISION_FACTOR;
scaleOption.minorAxisDivisionFactor = (0, _type2.isDefined)(scaleOption.minorAxisDivisionFactor) ? scaleOption.minorAxisDivisionFactor : DEFAULT_MINOR_AXIS_DIVISION_FACTOR;
return scaleOption
}
function correctValueByInterval(value, isDate, interval) {
if ((0, _type2.isDefined)(value)) {
value = isDate ? (0, _date.correctDateWithUnitBeginning)(new Date(value), interval) : (0, _math.adjust)(_floor((0, _math.adjust)(value / interval)) * interval)
}
return value
}
function getIntervalCustomTicks(options) {
var min = options.startValue,
max = options.endValue,
isDate = "datetime" === options.valueType,
tickInterval = options.tickInterval,
res = {
intervals: []
};
if (!(0, _type2.isDefined)(min) || !(0, _type2.isDefined)(max)) {
return res
}
res.intervals = (0, _date.getSequenceByInterval)(min, max, options.minorTickInterval);
if (tickInterval !== options.minorTickInterval) {
res.altIntervals = res.intervals;
min = correctValueByInterval(min, isDate, tickInterval);
max = correctValueByInterval(max, isDate, tickInterval);
res.intervals = (0, _date.getSequenceByInterval)(min, max, tickInterval);
res.intervals[0] = res.altIntervals[0]
}
return res
}
function getPrecisionForSlider(startValue, endValue, screenDelta) {
var d = Math.abs(endValue - startValue) / screenDelta,
tail = d - _floor(d);
return tail > 0 ? _ceil(Math.abs((0, _math.adjust)((0, _utils.getLog)(tail, 10)))) : 0
}
var dxRangeSelector = _base_widget2.default.inherit({
_toggleParentsScrollSubscription: function() {},
_eventsMap: {
onValueChanged: {
name: VALUE_CHANGED
}
},
_setDeprecatedOptions: function() {
this.callBase.apply(this, arguments);
(0, _extend.extend)(this._deprecatedOptions, {
"chart.barWidth": {
since: "18.1",
message: "Use the 'chart.commonSeriesSettings.barPadding' or 'chart.series.barPadding' option instead"
},
"chart.equalBarWidth": {
since: "18.1",
message: "Use the 'chart.commonSeriesSettings.ignoreEmptyPoints' or 'chart.series.ignoreEmptyPoints' option instead"
},
"chart.useAggregation": {
since: "18.1",
message: "Use the 'chart.commonSeriesSettings.aggregation.enabled' or 'chart.series.aggregation.enabled' option instead"
}
})
},
_rootClassPrefix: "dxrs",
_rootClass: "dxrs-range-selector",
_dataIsReady: function() {
return this._dataIsLoaded()
},
_initialChanges: ["DATA_SOURCE", "VALUE"],
_themeDependentChanges: ["MOSTLY_TOTAL"],
_themeSection: "rangeSelector",
_fontFields: ["scale.label.font", "sliderMarker.font"],
_initCore: function() {
var rangeViewGroup, slidersGroup, scaleGroup, scaleBreaksGroup, trackersGroup, that = this,
renderer = that._renderer,
root = renderer.root;
root.css({
"touch-action": "pan-y"
});
that._clipRect = renderer.clipRect();
rangeViewGroup = renderer.g().attr({
"class": "dxrs-view"
}).append(root);
slidersGroup = renderer.g().attr({
"class": "dxrs-slidersContainer",
"clip-path": that._clipRect.id
}).append(root);
scaleGroup = renderer.g().attr({
"class": "dxrs-scale",
"clip-path": that._clipRect.id
}).append(root);
scaleBreaksGroup = renderer.g().attr({
"class": "dxrs-scale-breaks"
}).append(root);
trackersGroup = renderer.g().attr({
"class": "dxrs-trackers"
}).append(root);
that._axis = new AxisWrapper({
renderer: renderer,
root: scaleGroup,
scaleBreaksGroup: scaleBreaksGroup,
updateSelectedRange: function(range, e) {
that.setValue((0, _utils.convertVisualRangeObject)(range), e)
},
incidentOccurred: that._incidentOccurred
});
that._rangeView = new _range_view2.default.RangeView({
renderer: renderer,
root: rangeViewGroup,
translator: that._axis.getTranslator()
});
that._slidersController = new _sliders_controller2.default.SlidersController({
renderer: renderer,
root: slidersGroup,
trackersGroup: trackersGroup,
updateSelectedRange: function(range, lastSelectedRange, e) {
if (!that._rangeOption) {
that.option(VALUE, (0, _utils.convertVisualRangeObject)(range, (0, _type2.isPlainObject)(that._options[VALUE])))
}
that._eventTrigger(VALUE_CHANGED, {
value: (0, _utils.convertVisualRangeObject)(range),
previousValue: (0, _utils.convertVisualRangeObject)(lastSelectedRange),
event: e
})
},
axis: that._axis,
translator: that._axis.getTranslator()
});
that._tracker = new _tracker.Tracker({
renderer: renderer,
controller: that._slidersController
})
},
_getDefaultSize: function() {
return {
width: 400,
height: 160
}
},
_disposeCore: function() {
this._axis.dispose();
this._slidersController.dispose();
this._tracker.dispose()
},
_applySize: function(rect) {
this._clientRect = rect.slice();
this._change(["MOSTLY_TOTAL"])
},
_optionChangesMap: {
scale: "SCALE",
value: "VALUE",
dataSource: "DATA_SOURCE"
},
_optionChangesOrder: ["SCALE", "DATA_SOURCE"],
_change_SCALE: function() {
this._change(["MOSTLY_TOTAL"])
},
_setValueByDataSource: function() {
var that = this;
var options = that._options;
var axis = that._axis;
if (options.dataSource) {
var selectedRangeUpdateMode = that.option("selectedRangeUpdateMode");
var value = that.getValue();
var valueIsReady = (0, _type2.isDefined)(value[0]) && (0, _type2.isDefined)(value[1]);
if ((0, _type2.isDefined)(selectedRangeUpdateMode)) {
selectedRangeUpdateMode = (0, _utils.normalizeEnum)(selectedRangeUpdateMode);
that.__skipAnimation = true
} else {
if (valueIsReady) {
selectedRangeUpdateMode = RESET
}
}
if ("auto" === selectedRangeUpdateMode && valueIsReady) {
var rangesInfo = axis.allScaleSelected(value);
if (rangesInfo.startValue && rangesInfo.endValue) {
selectedRangeUpdateMode = RESET
} else {
if (rangesInfo.endValue) {
selectedRangeUpdateMode = SHIFT
} else {
selectedRangeUpdateMode = KEEP
}
}
}
if (selectedRangeUpdateMode === RESET) {
options[VALUE] = null
} else {
if (selectedRangeUpdateMode === SHIFT && valueIsReady) {
var _value = that.getValue();
that.__skipAnimation = true;
options[VALUE] = {
length: axis.getVisualRangeLength({
minVisible: _value[0],
maxVisible: _value[1]
})
}
} else {
if (selectedRangeUpdateMode === KEEP) {
that.__skipAnimation = true
}
}
}
}
},
_change_DATA_SOURCE: function() {
if (this._options.dataSource) {
this._updateDataSource()
}
},
_customChangesOrder: ["MOSTLY_TOTAL", "VALUE", "SLIDER_SELECTION"],
_change_MOSTLY_TOTAL: function() {
this._applyMostlyTotalChange()
},
_change_SLIDER_SELECTION: function() {
var that = this,
value = that._options[VALUE];
that._slidersController.setSelectedRange(value && (0, _utils.getVizRangeObject)(value))
},
_change_VALUE: function() {
var that = this,
option = that._rangeOption;
if (option) {
that._options[VALUE] = option;
that.setValue(option)
}
},
_validateRange: function(start, end) {
var that = this,
translator = that._axis.getTranslator();
if ((0, _type2.isDefined)(start) && !translator.isValid(start) || (0, _type2.isDefined)(end) && !translator.isValid(end)) {
that._incidentOccurred("E2203")
}
},
_applyChanges: function() {
var that = this,
value = that._options[VALUE];
if (that._changes.has("VALUE") && value) {
that._rangeOption = value
}
that.callBase.apply(that, arguments);
that._rangeOption = null;
that.__isResizing = that.__skipAnimation = false
},
_applyMostlyTotalChange: function() {
var currentAnimationEnabled, that = this,
renderer = that._renderer,
rect = that._clientRect,
canvas = {
left: rect[0],
top: rect[1],
width: rect[2] - rect[0],
height: rect[3] - rect[1]
};
if (that.__isResizing || that.__skipAnimation) {
currentAnimationEnabled = renderer.animationEnabled();
renderer.updateAnimationOptions({
enabled: false
})
}
that._clipRect.attr({
x: rect[0],
y: rect[1],
width: rect[2] - rect[0],
height: rect[3] - rect[1]
});
that._axis.getTranslator().update(new _range2.default.Range, canvas, {
isHorizontal: true
});
that._updateContent({
left: rect[0],
top: rect[1],
width: rect[2] - rect[0],
height: rect[3] - rect[1]
});
if (that.__isResizing || that.__skipAnimation) {
renderer.updateAnimationOptions({
enabled: currentAnimationEnabled
})
}
that._drawn()
},
_dataSourceChangedHandler: function() {
this._setValueByDataSource();
this._requestChange(["MOSTLY_TOTAL"])
},
_completeSeriesDataSourceCreation: function(scaleOptions, seriesDataSource) {
var rect = this._clientRect;
var canvas = {
left: rect[0],
top: rect[1],
width: rect[2] - rect[0],
height: rect[3] - rect[1]
};
this._axis.updateOptions((0, _extend.extend)({}, scaleOptions, {
isHorizontal: true,
label: {}
}));
seriesDataSource.isShowChart() && this._axis.setMarginOptions(seriesDataSource.getMarginOptions(canvas));
this._axis.updateCanvas(canvas);
seriesDataSource.createPoints()
},
_updateContent: function(canvas) {
var that = this;
var chartOptions = that.option("chart");
var seriesDataSource = that._createSeriesDataSource(chartOptions);
var isCompactMode = !(seriesDataSource && seriesDataSource.isShowChart() || that.option("background.image.url"));
var scaleOptions = prepareScaleOptions(that._getOption("scale"), seriesDataSource && seriesDataSource.getCalculatedValueType(), that._incidentOccurred, this._getOption("containerBackgroundColor", true));
seriesDataSource && that._completeSeriesDataSourceCreation(scaleOptions, seriesDataSource);
var argTranslatorRange = calculateTranslatorRange(seriesDataSource, scaleOptions);
var tickIntervalsInfo = updateTickIntervals(scaleOptions, canvas.width, that._incidentOccurred, argTranslatorRange);
var sliderMarkerOptions = void 0;
var indents = void 0;
var rangeContainerCanvas = void 0;
var chartThemeManager = seriesDataSource && seriesDataSource.isShowChart() && seriesDataSource.getThemeManager();
if (chartThemeManager) {
checkLogarithmicOptions(chartOptions && chartOptions.valueAxis, chartThemeManager.getOptions("valueAxis").logarithmBase, that._incidentOccurred)
}
updateScaleOptions(scaleOptions, seriesDataSource, argTranslatorRange, tickIntervalsInfo, getDateMarkerVisibilityChecker(canvas.width));
updateTranslatorRangeInterval(argTranslatorRange, scaleOptions);
sliderMarkerOptions = that._prepareSliderMarkersOptions(scaleOptions, canvas.width, tickIntervalsInfo, argTranslatorRange);
indents = calculateIndents(that._renderer, scaleOptions, sliderMarkerOptions, that.option("indent"), tickIntervalsInfo);
rangeContainerCanvas = {
left: canvas.left + indents.left,
top: canvas.top + indents.top,
width: canvas.left + indents.left + _max(canvas.width - indents.left - indents.right, 1),
height: _max(!isCompactMode ? canvas.height - indents.top - indents.bottom - calculateScaleAreaHeight(that._renderer, scaleOptions, showScaleMarkers(scaleOptions), tickIntervalsInfo) : _common2.default.HEIGHT_COMPACT_MODE, 0),
right: 0,
bottom: 0
};
that._axis.update(scaleOptions, isCompactMode, rangeContainerCanvas, argTranslatorRange, seriesDataSource);
scaleOptions.minorTickInterval = scaleOptions.isEmpty ? 0 : scaleOptions.minorTickInterval;
that._updateElements(scaleOptions, sliderMarkerOptions, isCompactMode, rangeContainerCanvas, seriesDataSource);
if (chartThemeManager) {
chartThemeManager.dispose()
}
},
_updateElements: function(scaleOptions, sliderMarkerOptions, isCompactMode, canvas, seriesDataSource) {
var that = this,
behavior = that._getOption("behavior"),
shutterOptions = that._getOption("shutter"),
isNotSemiDiscrete = scaleOptions.type !== SEMIDISCRETE;
shutterOptions.color = shutterOptions.color || that._getOption(CONTAINER_BACKGROUND_COLOR, true);
that._rangeView.update(that.option("background"), that._themeManager.theme("background"), canvas, isCompactMode, behavior.animationEnabled && that._renderer.animationEnabled(), seriesDataSource);
that._isUpdating = true;
that._slidersController.update([canvas.top, canvas.top + canvas.height], behavior, isCompactMode, that._getOption("sliderHandle"), sliderMarkerOptions, shutterOptions, {
minRange: isNotSemiDiscrete ? that.option("scale.minRange") : void 0,
maxRange: isNotSemiDiscrete ? that.option("scale.maxRange") : void 0
}, that._axis.getFullTicks(), that._getOption("selectedRangeColor", true));
that._requestChange(["SLIDER_SELECTION"]);
that._isUpdating = false;
that._tracker.update(!that._axis.getTranslator().getBusinessRange().isEmpty(), behavior)
},
_createSeriesDataSource: function(chartOptions) {
var seriesDataSource, that = this,
dataSource = that._dataSourceItems(),
scaleOptions = that._getOption("scale"),
valueType = scaleOptions.valueType || calculateValueType(scaleOptions.startValue, scaleOptions.endValue),
valueAxis = new _base_axis2.default.Axis({
renderer: that._renderer,
axisType: "xyAxes",
drawingType: "linear"
});
valueAxis.updateOptions({
isHorizontal: false,
label: {},
categoriesSortingMethod: that._getOption("chart").valueAxis.categoriesSortingMethod
});
if (dataSource || chartOptions && chartOptions.series) {
chartOptions = (0, _extend.extend)({}, chartOptions, {
theme: that.option("theme")
});
seriesDataSource = new _series_data_source2.default.SeriesDataSource({
renderer: that._renderer,
dataSource: dataSource,
valueType: (0, _utils.normalizeEnum)(valueType),
axisType: scaleOptions.type,
chart: chartOptions,
dataSourceField: that.option("dataSourceField"),
incidentOccurred: that._incidentOccurred,
categories: scaleOptions.categories,
argumentAxis: that._axis,
valueAxis: valueAxis
})
}
return seriesDataSource
},
_prepareSliderMarkersOptions: function(scaleOptions, screenDelta, tickIntervalsInfo, argRange) {
var that = this,
minorTickInterval = tickIntervalsInfo.minorTickInterval,
tickInterval = tickIntervalsInfo.tickInterval,
interval = tickInterval,
endValue = scaleOptions.endValue,
startValue = scaleOptions.startValue,
sliderMarkerOptions = that._getOption(SLIDER_MARKER),
doNotSnap = !that._getOption("behavior").snapToTicks,
isTypeDiscrete = scaleOptions.type === DISCRETE,
isValueTypeDatetime = scaleOptions.valueType === DATETIME;
sliderMarkerOptions.borderColor = that._getOption(CONTAINER_BACKGROUND_COLOR, true);
if (!sliderMarkerOptions.format && !argRange.isEmpty()) {
if (doNotSnap && (0, _type2.isNumeric)(scaleOptions.startValue)) {
sliderMarkerOptions.format = {
type: "fixedPoint",
precision: getPrecisionForSlider(startValue, endValue, screenDelta)
}
}
if (isValueTypeDatetime && !isTypeDiscrete) {
if ((0, _type2.isDefined)(minorTickInterval) && 0 !== minorTickInterval) {
interval = getMinorTickIntervalUnit(tickInterval, minorTickInterval, doNotSnap)
}
if (!scaleOptions.marker.visible) {
if ((0, _type2.isDefined)(startValue) && (0, _type2.isDefined)(endValue)) {
sliderMarkerOptions.format = _format_helper2.default.getDateFormatByTickInterval(startValue, endValue, interval)
}
} else {
sliderMarkerOptions.format = (0, _date.getDateFormatByTickInterval)(interval)
}
}
if (isValueTypeDatetime && isTypeDiscrete && tickIntervalsInfo.ticks.length) {
sliderMarkerOptions.format = _format_helper2.default.getDateFormatByTicks(tickIntervalsInfo.ticks)
}
}
return sliderMarkerOptions
},
getValue: function() {
return (0, _utils.convertVisualRangeObject)(this._slidersController.getSelectedRange())
},
setValue: function(value, e) {
var current;
var visualRange = (0, _utils.getVizRangeObject)(value);
if (!this._isUpdating && value) {
this._validateRange(visualRange.startValue, visualRange.endValue);
current = this._slidersController.getSelectedRange();
if (!current || current.startValue !== visualRange.startValue || current.endValue !== visualRange.endValue) {
this._slidersController.setSelectedRange((0, _utils.getVizRangeObject)(value), e)
}
}
},
_setContentSize: function() {
this.__isResizing = 2 === this._changes.count();
this.callBase.apply(this, arguments)
}
});
(0, _iterator.each)(["selectedRangeColor", "containerBackgroundColor", "sliderMarker", "sliderHandle", "shutter", OPTION_BACKGROUND, "behavior", "chart", "indent"], function(_, name) {
dxRangeSelector.prototype._optionChangesMap[name] = "MOSTLY_TOTAL"
});
function prepareAxisOptions(scaleOptions, isCompactMode, height, axisPosition) {
scaleOptions.marker.label.font = scaleOptions.label.font;
scaleOptions.color = scaleOptions.marker.color = scaleOptions.tick.color;
scaleOptions.opacity = scaleOptions.marker.opacity = scaleOptions.tick.opacity;
scaleOptions.width = scaleOptions.marker.width = scaleOptions.tick.width;
scaleOptions.placeholderSize = (scaleOptions.placeholderHeight || 0) + axisPosition;
scaleOptions.argumentType = scaleOptions.valueType;
scaleOptions.visible = isCompactMode;
scaleOptions.isHorizontal = true;
scaleOptions.calculateMinors = true;
scaleOptions.semiDiscreteInterval = scaleOptions.minRange;
if (!isCompactMode) {
scaleOptions.minorTick.length = scaleOptions.tick.length = height
}
scaleOptions.label.indentFromAxis = scaleOptions.label.topIndent + axisPosition;
return scaleOptions
}
function createDateMarkersEvent(scaleOptions, markerTrackers, setSelectedRange) {
(0, _iterator.each)(markerTrackers, function(_, value) {
value.on("dxpointerdown", onPointerDown);
});
function onPointerDown(e) {
var range = e.target.range,
minRange = scaleOptions.minRange ? (0, _date.addInterval)(range.startValue, scaleOptions.minRange) : void 0,
maxRange = scaleOptions.maxRange ? (0, _date.addInterval)(range.startValue, scaleOptions.maxRange) : void 0;
if (!(minRange && minRange > range.endValue || maxRange && maxRange < range.endValue)) {
setSelectedRange(range, e)
}
}
}
function getShiftDirection() {
return 1
}
function getTickStartPositionShift(length) {
return length % 2 === 1 ? -_floor(length / 2) : -length / 2
}
function AxisWrapper(params) {
var that = this;
that._axis = new _base_axis2.default.Axis({
renderer: params.renderer,
axesContainerGroup: params.root,
scaleBreaksGroup: params.scaleBreaksGroup,
incidentOccurred: params.incidentOccurred,
axisType: "xyAxes",
drawingType: "linear",
widgetClass: "dxrs",
axisClass: "range-selector",
isArgumentAxis: true
});
that._updateSelectedRangeCallback = params.updateSelectedRange;
that._axis.getAxisSharpDirection = that._axis.getSharpDirectionByCoords = getShiftDirection;
that._axis.getTickStartPositionShift = getTickStartPositionShift
}
AxisWrapper.prototype = {
constructor: AxisWrapper,
dispose: function() {
this._axis.dispose()
},
calculateInterval: function(value, prevValue) {
return this._axis.calculateInterval(value, prevValue)
},
update: function(options, isCompactMode, canvas, businessRange, seriesDataSource) {
var axis = this._axis;
axis.updateOptions(prepareAxisOptions(options, isCompactMode, canvas.height, canvas.height / 2 - _ceil(options.width / 2)));
axis.validate();
axis.setBusinessRange(businessRange, true);
if (void 0 !== seriesDataSource && seriesDataSource.isShowChart()) {
axis.setMarginOptions(seriesDataSource.getMarginOptions(canvas))
}
axis.draw(canvas);
axis.shift({
left: 0,
bottom: -canvas.height / 2 + canvas.top
});
if (axis.getMarkerTrackers()) {
createDateMarkersEvent(options, axis.getMarkerTrackers(), this._updateSelectedRangeCallback)
}
axis.drawScaleBreaks({
start: canvas.top,
end: canvas.top + canvas.height
})
},
visualRange: function() {},
getViewport: function() {
return {}
},
allScaleSelected: function(value) {
var _axis$visualRange = this._axis.visualRange(),
startValue = _axis$visualRange.startValue,
endValue = _axis$visualRange.endValue;
return {
startValue: value[0].valueOf() === startValue.valueOf(),
endValue: value[1].valueOf() === endValue.valueOf()
}
},
getOptions: function() {
return this._axis.getOptions() || {}
}
};
["setMarginOptions", "getFullTicks", "updateCanvas", "updateOptions", "getAggregationInfo", "getTranslator", "getVisualRangeLength", "getVisibleArea", "getMarginOptions"].forEach(function(methodName) {
AxisWrapper.prototype[methodName] = function() {
var axis = this._axis;
return axis[methodName].apply(axis, arguments)
}
});
(0, _component_registrator2.default)("dxRangeSelector", dxRangeSelector);
module.exports = dxRangeSelector;
dxRangeSelector.addPlugin(_export.plugin);
dxRangeSelector.addPlugin(_title.plugin);
dxRangeSelector.addPlugin(_loading_indicator.plugin);
dxRangeSelector.addPlugin(_data_source.plugin)
},
/*!***********************************************************************!*\
!*** ./artifacts/transpiled/viz/range_selector/sliders_controller.js ***!
\***********************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var noop = __webpack_require__( /*! ../../core/utils/common */ 4).noop,
commonModule = __webpack_require__( /*! ./common */ 207),
animationSettings = commonModule.utils.animationSettings,
emptySliderMarkerText = commonModule.consts.emptySliderMarkerText,
Slider = __webpack_require__( /*! ./slider */ 835),
_normalizeEnum = __webpack_require__( /*! ../core/utils */ 12).normalizeEnum,
typeUtils = __webpack_require__( /*! ../../core/utils/type */ 1),
isNumeric = typeUtils.isNumeric,
vizUtils = __webpack_require__( /*! ../core/utils */ 12),
adjust = __webpack_require__( /*! ../../core/utils/math */ 30).adjust;
function buildRectPoints(left, top, right, bottom) {
return [left, top, right, top, right, bottom, left, bottom]
}
function valueOf(value) {
return value && value.valueOf()
}
function isLess(a, b) {
return a < b
}
function isGreater(a, b) {
return a > b
}
function selectClosestValue(target, values) {
var middle, start = 0,
end = values ? values.length - 1 : 0,
val = target;
while (end - start > 1) {
middle = start + end >> 1;
val = values[middle];
if (val === target) {
return target
} else {
if (target < val) {
end = middle
} else {
start = middle
}
}
}
if (values) {
val = values[target - values[start] <= values[end] - target ? start : end]
}
return val
}
function dummyProcessSelectionChanged() {
this._lastSelectedRange = this.getSelectedRange();
delete this._processSelectionChanged
}
function suppressSetSelectedRange(controller) {
controller.setSelectedRange = noop;
if (controller._processSelectionChanged === dummyProcessSelectionChanged) {
controller._processSelectionChanged()
}
}
function restoreSetSelectedRange(controller) {
delete controller.setSelectedRange
}
function SlidersController(params) {
var that = this,
sliderParams = {
renderer: params.renderer,
root: params.root,
trackersGroup: params.trackersGroup,
translator: params.translator
};
that._params = params;
that._areaTracker = params.renderer.path(null, "area").attr({
"class": "area-tracker",
fill: "#000000",
opacity: 1e-4
}).append(params.trackersGroup);
that._selectedAreaTracker = params.renderer.path(null, "area").attr({
"class": "selected-area-tracker",
fill: "#000000",
opacity: 1e-4
}).append(params.trackersGroup);
that._shutter = params.renderer.path(null, "area").append(params.root);
that._sliders = [new Slider(sliderParams, 0), new Slider(sliderParams, 1)];
that._processSelectionChanged = dummyProcessSelectionChanged
}
SlidersController.prototype = {
constructor: SlidersController,
dispose: function() {
this._sliders[0].dispose();
this._sliders[1].dispose()
},
getTrackerTargets: function() {
return {
area: this._areaTracker,
selectedArea: this._selectedAreaTracker,
sliders: this._sliders
}
},
_processSelectionChanged: function(e) {
var that = this,
selectedRange = that.getSelectedRange();
if (valueOf(selectedRange.startValue) !== valueOf(that._lastSelectedRange.startValue) || valueOf(selectedRange.endValue) !== valueOf(that._lastSelectedRange.endValue)) {
that._params.updateSelectedRange(selectedRange, that._lastSelectedRange, e);
that._lastSelectedRange = selectedRange
}
},
update: function(verticalRange, behavior, isCompactMode, sliderHandleOptions, sliderMarkerOptions, shutterOptions, rangeBounds, fullTicks, selectedRangeColor) {
var that = this,
screenRange = that._params.translator.getScreenRange();
that._verticalRange = verticalRange;
that._minRange = rangeBounds.minRange;
that._maxRange = rangeBounds.maxRange;
that._animationEnabled = behavior.animationEnabled && that._params.renderer.animationEnabled();
that._allowSlidersSwap = behavior.allowSlidersSwap;
that._sliders[0].update(verticalRange, sliderHandleOptions, sliderMarkerOptions);
that._sliders[1].update(verticalRange, sliderHandleOptions, sliderMarkerOptions);
that._sliders[0]._position = that._sliders[1]._position = screenRange[0];
that._values = !that._params.translator.isValueProlonged && behavior.snapToTicks ? fullTicks : null;
that._areaTracker.attr({
points: buildRectPoints(screenRange[0], verticalRange[0], screenRange[1], verticalRange[1])
});
that._isCompactMode = isCompactMode;
that._shutterOffset = sliderHandleOptions.width / 2;
that._updateSelectedView(shutterOptions, selectedRangeColor);
that._isOnMoving = "onmoving" === _normalizeEnum(behavior.callValueChanged);
that._updateSelectedRange();
that._applyTotalPosition(false)
},
_updateSelectedView: function(shutterOptions, selectedRangeColor) {
var settings = {
fill: null,
"fill-opacity": null,
stroke: null,
"stroke-width": null
};
if (this._isCompactMode) {
settings.stroke = selectedRangeColor;
settings["stroke-width"] = 3;
settings.sharp = "v"
} else {
settings.fill = shutterOptions.color;
settings["fill-opacity"] = shutterOptions.opacity
}
this._shutter.attr(settings)
},
_updateSelectedRange: function() {
var that = this,
sliders = that._sliders;
sliders[0].cancelAnimation();
sliders[1].cancelAnimation();
that._shutter.stopAnimation();
if (that._params.translator.getBusinessRange().isEmpty()) {
sliders[0]._setText(emptySliderMarkerText);
sliders[1]._setText(emptySliderMarkerText);
sliders[0]._value = sliders[1]._value = void 0;
sliders[0]._position = that._params.translator.getScreenRange()[0];
sliders[1]._position = that._params.translator.getScreenRange()[1];
that._applyTotalPosition(false);
suppressSetSelectedRange(that)
} else {
restoreSetSelectedRange(that)
}
},
_applyTotalPosition: function(isAnimated) {
var areOverlapped, sliders = this._sliders;
isAnimated = this._animationEnabled && isAnimated;
sliders[0].applyPosition(isAnimated);
sliders[1].applyPosition(isAnimated);
areOverlapped = sliders[0].getCloudBorder() > sliders[1].getCloudBorder();
sliders[0].setOverlapped(areOverlapped);
sliders[1].setOverlapped(areOverlapped);
this._applyAreaTrackersPosition();
this._applySelectedRangePosition(isAnimated)
},
_applyAreaTrackersPosition: function() {
var that = this,
position1 = that._sliders[0].getPosition(),
position2 = that._sliders[1].getPosition();
that._selectedAreaTracker.attr({
points: buildRectPoints(position1, that._verticalRange[0], position2, that._verticalRange[1])
}).css({
cursor: Math.abs(that._params.translator.getScreenRange()[1] - that._params.translator.getScreenRange()[0] - position2 + position1) < .001 ? "default" : "pointer"
})
},
_applySelectedRangePosition: function(isAnimated) {
var screenRange, points, that = this,
verticalRange = that._verticalRange,
pos1 = that._sliders[0].getPosition(),
pos2 = that._sliders[1].getPosition();
if (that._isCompactMode) {
points = [pos1 + Math.ceil(that._shutterOffset), (verticalRange[0] + verticalRange[1]) / 2, pos2 - Math.floor(that._shutterOffset), (verticalRange[0] + verticalRange[1]) / 2]
} else {
screenRange = that._params.axis.getVisibleArea();
points = [buildRectPoints(screenRange[0], verticalRange[0], Math.max(pos1 - Math.floor(that._shutterOffset), screenRange[0]), verticalRange[1]), buildRectPoints(screenRange[1], verticalRange[0], Math.min(pos2 + Math.ceil(that._shutterOffset), screenRange[1]), verticalRange[1])]
}
if (isAnimated) {
that._shutter.animate({
points: points
}, animationSettings)
} else {
that._shutter.attr({
points: points
})
}
},
getSelectedRange: function() {
return {
startValue: this._sliders[0].getValue(),
endValue: this._sliders[1].getValue()
}
},
setSelectedRange: function(visualRange, e) {
visualRange = visualRange || {};
var that = this;
var translator = that._params.translator;
var businessRange = translator.getBusinessRange();
var compare = "discrete" === businessRange.axisType ? function(a, b) {
return a < b
} : function(a, b) {
return a <= b
};
var _vizUtils$adjustVisua = vizUtils.adjustVisualRange({
dataType: businessRange.dataType,
axisType: businessRange.axisType,
base: businessRange.base
}, {
startValue: translator.isValid(visualRange.startValue) ? translator.getCorrectValue(visualRange.startValue, 1) : void 0,
endValue: translator.isValid(visualRange.endValue) ? translator.getCorrectValue(visualRange.endValue, -1) : void 0,
length: visualRange.length
}, {
min: businessRange.minVisible,
max: businessRange.maxVisible,
categories: businessRange.categories
}),
startValue = _vizUtils$adjustVisua.startValue,
endValue = _vizUtils$adjustVisua.endValue;
startValue = isNumeric(startValue) ? adjust(startValue) : startValue;
endValue = isNumeric(endValue) ? adjust(endValue) : endValue;
var values = compare(translator.to(startValue, -1), translator.to(endValue, 1)) ? [startValue, endValue] : [endValue, startValue];
that._sliders[0].setDisplayValue(values[0]);
that._sliders[1].setDisplayValue(values[1]);
that._sliders[0]._position = translator.to(values[0], -1);
that._sliders[1]._position = translator.to(values[1], 1);
that._applyTotalPosition(true);
that._processSelectionChanged(e)
},
beginSelectedAreaMoving: function(initialPosition) {
var that = this,
sliders = that._sliders,
offset = (sliders[0].getPosition() + sliders[1].getPosition()) / 2 - initialPosition,
currentPosition = initialPosition;
move.complete = function(e) {
that._dockSelectedArea(e)
};
return move;
function move(position, e) {
if (position !== currentPosition && position > currentPosition === position > (sliders[0].getPosition() + sliders[1].getPosition()) / 2 - offset) {
that._moveSelectedArea(position + offset, false, e)
}
currentPosition = position
}
},
_dockSelectedArea: function(e) {
var translator = this._params.translator,
sliders = this._sliders;
sliders[0]._position = translator.to(sliders[0].getValue(), -1);
sliders[1]._position = translator.to(sliders[1].getValue(), 1);
this._applyTotalPosition(true);
this._processSelectionChanged(e)
},
moveSelectedArea: function(screenPosition, e) {
this._moveSelectedArea(screenPosition, true, e);
this._dockSelectedArea(e)
},
_moveSelectedArea: function(screenPosition, isAnimated, e) {
var startValue, that = this,
translator = that._params.translator,
sliders = that._sliders,
interval = sliders[1].getPosition() - sliders[0].getPosition(),
startPosition = screenPosition - interval / 2,
endPosition = screenPosition + interval / 2;
if (startPosition < translator.getScreenRange()[0]) {
startPosition = translator.getScreenRange()[0];
endPosition = startPosition + interval
}
if (endPosition > translator.getScreenRange()[1]) {
endPosition = translator.getScreenRange()[1];
startPosition = endPosition - interval
}
startValue = selectClosestValue(translator.from(startPosition, -1), that._values);
sliders[0].setDisplayValue(startValue);
sliders[1].setDisplayValue(selectClosestValue(translator.from(translator.to(startValue, -1) + interval, 1), that._values));
sliders[0]._position = startPosition;
sliders[1]._position = endPosition;
that._applyTotalPosition(isAnimated);
if (that._isOnMoving) {
that._processSelectionChanged(e)
}
},
placeSliderAndBeginMoving: function(firstPosition, secondPosition, e) {
var thresholdPosition, handler, that = this,
translator = that._params.translator,
sliders = that._sliders,
index = firstPosition < secondPosition ? 0 : 1,
dir = index > 0 ? 1 : -1,
compare = index > 0 ? isGreater : isLess,
antiCompare = index > 0 ? isLess : isGreater,
positions = [],
values = [];
values[index] = translator.from(firstPosition, dir);
values[1 - index] = translator.from(secondPosition, -dir);
positions[1 - index] = secondPosition;
if (translator.isValueProlonged) {
if (compare(firstPosition, translator.to(values[index], dir))) {
values[index] = translator.from(firstPosition, -dir)
}
if (compare(secondPosition, translator.to(values[index], -dir))) {
values[1 - index] = values[index]
}
}
if (that._minRange) {
thresholdPosition = translator.to(translator.add(selectClosestValue(values[index], that._values), that._minRange, -dir), -dir);
if (compare(secondPosition, thresholdPosition)) {
values[1 - index] = translator.add(values[index], that._minRange, -dir)
}
thresholdPosition = translator.to(translator.add(translator.getRange()[1 - index], that._minRange, dir), -dir);
if (antiCompare(firstPosition, thresholdPosition)) {
values[1 - index] = translator.getRange()[1 - index];
values[index] = translator.add(values[1 - index], that._minRange, dir);
positions[1 - index] = firstPosition
}
}
values[0] = selectClosestValue(values[0], that._values);
values[1] = selectClosestValue(values[1], that._values);
positions[index] = translator.to(values[index], dir);
sliders[0].setDisplayValue(values[0]);
sliders[1].setDisplayValue(values[1]);
sliders[0]._position = positions[0];
sliders[1]._position = positions[1];
that._applyTotalPosition(true);
if (that._isOnMoving) {
that._processSelectionChanged(e)
}
handler = that.beginSliderMoving(1 - index, secondPosition);
sliders[1 - index]._sliderGroup.stopAnimation();
that._shutter.stopAnimation();
handler(secondPosition);
return handler
},
beginSliderMoving: function(initialIndex, initialPosition) {
var that = this,
translator = that._params.translator,
sliders = that._sliders,
minPosition = translator.getScreenRange()[0],
maxPosition = translator.getScreenRange()[1],
index = initialIndex,
staticPosition = sliders[1 - index].getPosition(),
currentPosition = initialPosition,
dir = index > 0 ? 1 : -1,
compareMin = index > 0 ? isLess : isGreater,
compareMax = index > 0 ? isGreater : isLess,
moveOffset = sliders[index].getPosition() - initialPosition,
swapOffset = compareMin(sliders[index].getPosition(), initialPosition) ? -moveOffset : moveOffset;
move.complete = function(e) {
sliders[index]._setValid(true);
that._dockSelectedArea(e)
};
return move;
function move(position, e) {
var isValid, temp, pos, slider, value;
if (position !== currentPosition) {
if (compareMin(position + swapOffset, staticPosition)) {
isValid = that._allowSlidersSwap;
if (isValid && !translator.isValueProlonged && that._minRange) {
isValid = translator.isValid(translator.add(sliders[1 - index].getValue(), that._minRange, -dir))
}
if (isValid) {
that._changeMovingSlider(index);
index = 1 - index;
dir = -dir;
temp = compareMin;
compareMin = compareMax;
compareMax = temp;
moveOffset = -dir * Math.abs(moveOffset);
swapOffset = -moveOffset
}
}
if (compareMax(position + moveOffset, staticPosition)) {
isValid = true;
slider = sliders[index];
value = sliders[1 - index].getValue();
pos = Math.max(Math.min(position + moveOffset, maxPosition), minPosition);
if (isValid && translator.isValueProlonged) {
isValid = !compareMin(pos, translator.to(value, dir))
}
if (isValid && that._minRange) {
isValid = !compareMin(pos, translator.to(translator.add(value, that._minRange, dir), dir))
}
if (isValid && that._maxRange) {
isValid = !compareMax(pos, translator.to(translator.add(value, that._maxRange, dir), dir))
}
slider._setValid(isValid);
slider.setDisplayValue(isValid ? selectClosestValue(translator.from(pos, dir), that._values) : slider.getValue());
slider._position = pos;
that._applyTotalPosition(false);
slider.toForeground();
if (that._isOnMoving) {
that._processSelectionChanged(e)
}
}
}
currentPosition = position
}
},
_changeMovingSlider: function(index) {
var newValue, that = this,
translator = that._params.translator,
sliders = that._sliders,
position = sliders[1 - index].getPosition(),
dir = index > 0 ? 1 : -1;
sliders[index].setDisplayValue(selectClosestValue(translator.from(position, dir), that._values));
newValue = translator.from(position, -dir);
if (translator.isValueProlonged) {
newValue = translator.from(position, dir)
} else {
if (that._minRange) {
newValue = translator.add(newValue, that._minRange, -dir)
}
}
sliders[1 - index].setDisplayValue(selectClosestValue(newValue, that._values));
sliders[index]._setValid(true);
sliders[index]._marker._update();
sliders[0]._position = sliders[1]._position = position
},
foregroundSlider: function(index) {
this._sliders[index].toForeground()
}
};
exports.SlidersController = SlidersController
},
/*!***********************************************************!*\
!*** ./artifacts/transpiled/viz/range_selector/slider.js ***!
\***********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var commonModule = __webpack_require__( /*! ./common */ 207),
animationSettings = commonModule.utils.animationSettings,
formatValue = commonModule.formatValue,
SliderMarker = __webpack_require__( /*! ./slider_marker */ 836),
support = __webpack_require__( /*! ../../core/utils/support */ 44),
SPLITTER_WIDTH = 8,
TOUCH_SPLITTER_WIDTH = 20;
function getSliderTrackerWidth(sliderHandleWidth) {
return support.touchEvents || support.pointer ? TOUCH_SPLITTER_WIDTH : SPLITTER_WIDTH < sliderHandleWidth ? sliderHandleWidth : SPLITTER_WIDTH
}
function Slider(params, index) {
var that = this;
that._translator = params.translator;
that._sliderGroup = params.renderer.g().attr({
"class": "slider"
}).append(params.root);
that._line = params.renderer.path(null, "line").append(that._sliderGroup);
that._marker = new SliderMarker(params.renderer, that._sliderGroup, 1 === index);
that._tracker = params.renderer.rect().attr({
"class": "slider-tracker",
fill: "#000000",
opacity: 1e-4
}).css({
cursor: "w-resize"
}).append(params.trackersGroup)
}
Slider.prototype = {
constructor: Slider,
cancelAnimation: function() {
this._sliderGroup.stopAnimation();
this._tracker.stopAnimation()
},
applyPosition: function(isAnimated) {
var that = this,
slider = that._sliderGroup,
tracker = that._tracker,
attrs = {
translateX: that._position
};
that._marker.setPosition(that._position);
if (isAnimated) {
slider.animate(attrs, animationSettings);
tracker.animate(attrs, animationSettings)
} else {
slider.attr(attrs);
tracker.attr(attrs)
}
},
_setValid: function(isValid) {
this._marker.setValid(isValid);
this._line.attr({
stroke: this._colors[Number(isValid)]
})
},
_setText: function(text) {
this._marker.setText(text)
},
update: function(verticalRange, sliderHandleOptions, sliderMarkerOptions) {
var that = this;
that._formatOptions = {
format: sliderMarkerOptions.format,
customizeText: sliderMarkerOptions.customizeText
};
that._marker.applyOptions(sliderMarkerOptions, that._translator.getScreenRange());
that._colors = [sliderMarkerOptions.invalidRangeColor, sliderHandleOptions.color];
that._sliderGroup.attr({
translateY: verticalRange[0]
});
that._line.attr({
"stroke-width": sliderHandleOptions.width,
stroke: sliderHandleOptions.color,
"stroke-opacity": sliderHandleOptions.opacity,
sharp: "h",
points: [0, 0, 0, verticalRange[1] - verticalRange[0]]
});
var trackerWidth = getSliderTrackerWidth(sliderHandleOptions.width);
that._tracker.attr({
x: -trackerWidth / 2,
y: 0,
width: trackerWidth,
height: verticalRange[1] - verticalRange[0],
translateY: verticalRange[0]
})
},
toForeground: function() {
this._sliderGroup.toForeground()
},
getSliderTracker: function() {
return this._tracker
},
getPosition: function() {
return this._position
},
setDisplayValue: function(value) {
this._value = value;
this._setText(formatValue(value, this._formatOptions))
},
setOverlapped: function(isOverlapped) {
this._marker.setOverlapped(isOverlapped)
},
getValue: function() {
return this._value
},
on: function(event, handler) {
this._tracker.on(event, handler);
this._marker.getTracker().on(event, handler)
},
getCloudBorder: function() {
return this._marker.getBorderPosition()
},
dispose: function() {
this._marker.dispose()
}
};
module.exports = Slider
},
/*!******************************************************************!*\
!*** ./artifacts/transpiled/viz/range_selector/slider_marker.js ***!
\******************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var patchFontOptions = __webpack_require__( /*! ../core/utils */ 12).patchFontOptions,
SLIDER_MARKER_UPDATE_DELAY = 75,
POINTER_SIZE = __webpack_require__( /*! ./common */ 207).consts.pointerSize;
function SliderMarker(renderer, root, isLeftPointer) {
var that = this;
that._isLeftPointer = isLeftPointer;
that._isOverlapped = false;
that._group = renderer.g().attr({
"class": "slider-marker"
}).append(root);
that._area = renderer.path(null, "area").append(that._group);
that._label = renderer.text().attr({
align: "left"
}).append(that._group);
that._tracker = renderer.rect().attr({
"class": "slider-marker-tracker",
fill: "#000000",
opacity: 1e-4
}).css({
cursor: "pointer"
}).append(that._group);
that._border = renderer.rect(0, 0, 1, 0)
}
SliderMarker.prototype = {
constructor: SliderMarker,
_getRectSize: function(textSize) {
return {
width: Math.round(2 * this._paddingLeftRight + textSize.width),
height: Math.round(2 * this._paddingTopBottom + textSize.height)
}
},
_getTextSize: function() {
var textSize = this._label.getBBox();
if (!this._textHeight && isFinite(textSize.height)) {
this._textHeight = textSize.height
}
return {
width: textSize.width,
height: this._textHeight,
y: textSize.y
}
},
_getAreaPointsInfo: function(textSize) {
var that = this,
rectSize = that._getRectSize(textSize),
rectWidth = rectSize.width,
rectHeight = rectSize.height,
rectLeftBorder = -rectWidth,
rectRightBorder = 0,
pointerRightPoint = POINTER_SIZE,
pointerCenterPoint = 0,
pointerLeftPoint = -POINTER_SIZE,
position = that._position,
isLeft = that._isLeftPointer,
correctCloudBorders = function() {
rectLeftBorder++;
rectRightBorder++;
pointerRightPoint++;
pointerCenterPoint++;
pointerLeftPoint++
},
checkPointerBorders = function() {
if (pointerRightPoint > rectRightBorder) {
pointerRightPoint = rectRightBorder
} else {
if (pointerLeftPoint < rectLeftBorder) {
pointerLeftPoint = rectLeftBorder
}
}
isLeft && correctCloudBorders()
},
borderPosition = position;
if (isLeft) {
if (position > that._range[1] - rectWidth) {
rectRightBorder = -position + that._range[1];
rectLeftBorder = rectRightBorder - rectWidth;
checkPointerBorders();
borderPosition += rectLeftBorder
} else {
rectLeftBorder = pointerLeftPoint = 0;
rectRightBorder = rectWidth
}
} else {
if (position - that._range[0] < rectWidth) {
rectLeftBorder = -(position - that._range[0]);
rectRightBorder = rectLeftBorder + rectWidth;
checkPointerBorders();
borderPosition += rectRightBorder
} else {
pointerRightPoint = 0;
correctCloudBorders()
}
}
that._borderPosition = borderPosition;
return {
offset: rectLeftBorder,
isCut: (!isLeft || pointerCenterPoint !== pointerLeftPoint) && (isLeft || pointerCenterPoint !== pointerRightPoint),
points: [rectLeftBorder, 0, rectRightBorder, 0, rectRightBorder, rectHeight, pointerRightPoint, rectHeight, pointerCenterPoint, rectHeight + POINTER_SIZE, pointerLeftPoint, rectHeight, rectLeftBorder, rectHeight]
}
},
_update: function() {
var textSize, currentTextSize, rectSize, that = this;
clearTimeout(that._timeout);
that._label.attr({
text: that._text || ""
});
currentTextSize = that._getTextSize();
rectSize = that._getRectSize(currentTextSize);
textSize = that._textSize || currentTextSize;
textSize = that._textSize = currentTextSize.width > textSize.width || currentTextSize.height > textSize.height ? currentTextSize : textSize;
that._timeout = setTimeout(function() {
updateSliderMarker(currentTextSize, rectSize);
that._textSize = currentTextSize
}, SLIDER_MARKER_UPDATE_DELAY);
function updateSliderMarker(size, rectSize) {
var points, pointsData, offset;
rectSize = rectSize || that._getRectSize(size);
that._group.attr({
translateY: -(rectSize.height + POINTER_SIZE)
});
pointsData = that._getAreaPointsInfo(size);
points = pointsData.points;
offset = pointsData.offset;
that._area.attr({
points: points
});
that._border.attr({
x: that._isLeftPointer ? points[0] - 1 : points[2],
height: pointsData.isCut ? rectSize.height : rectSize.height + POINTER_SIZE
});
that._tracker.attr({
translateX: offset,
width: rectSize.width,
height: rectSize.height + POINTER_SIZE
});
that._label.attr({
translateX: that._paddingLeftRight + offset,
translateY: rectSize.height / 2 - (size.y + size.height / 2)
})
}
updateSliderMarker(textSize)
},
setText: function(value) {
this._text = value
},
setPosition: function(position) {
this._position = position;
this._update()
},
applyOptions: function(options, screenRange) {
var that = this;
that._range = screenRange;
that._paddingLeftRight = options.paddingLeftRight;
that._paddingTopBottom = options.paddingTopBottom;
that._textHeight = null;
that._colors = [options.invalidRangeColor, options.color];
that._area.attr({
fill: options.color
});
that._border.attr({
fill: options.borderColor
});
that._label.css(patchFontOptions(options.font));
that._update()
},
getTracker: function() {
return this._tracker
},
setValid: function(isValid) {
this._area.attr({
fill: this._colors[Number(isValid)]
})
},
setColor: function(color) {
this._area.attr({
fill: color
})
},
dispose: function() {
clearTimeout(this._timeout)
},
setOverlapped: function(isOverlapped) {
var that = this;
if (that._isOverlapped !== isOverlapped) {
if (isOverlapped) {
that._border.append(that._group)
} else {
that._isOverlapped && that._border.remove()
}
that._isOverlapped = isOverlapped
}
},
getBorderPosition: function() {
return this._borderPosition
}
};
module.exports = SliderMarker
},
/*!************************************************************!*\
!*** ./artifacts/transpiled/viz/range_selector/tracker.js ***!
\************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Tracker = Tracker;
var _events_engine = __webpack_require__( /*! ../../events/core/events_engine */ 5);
var _events_engine2 = _interopRequireDefault(_events_engine);
var _pointer = __webpack_require__( /*! ../../events/pointer */ 23);
var _pointer2 = _interopRequireDefault(_pointer);
var _window = __webpack_require__( /*! ../../core/utils/window */ 7);
var _window2 = _interopRequireDefault(_window);
var _dom_adapter = __webpack_require__( /*! ../../core/dom_adapter */ 13);
var _dom_adapter2 = _interopRequireDefault(_dom_adapter);
var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 3);
var _support = __webpack_require__( /*! ../../core/utils/support */ 44);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
})
} else {
obj[key] = value
}
return obj
}
var MIN_MANUAL_SELECTING_WIDTH = 10;
var window = _window2.default.getWindow();
function isLeftButtonPressed(event) {
var e = event || window.event,
originalEvent = e.originalEvent,
touches = e.touches,
pointerType = originalEvent ? originalEvent.pointerType : false,
eventTouches = originalEvent ? originalEvent.touches : false,
isMSPointerLeftClick = originalEvent && void 0 !== pointerType && (pointerType === (originalEvent.MSPOINTER_TYPE_TOUCH || "touch") || pointerType === (originalEvent.MSPOINTER_TYPE_MOUSE || "mouse") && 1 === originalEvent.buttons),
isTouches = touches && touches.length > 0 || eventTouches && eventTouches.length > 0;
return 1 === e.which || isMSPointerLeftClick || isTouches
}
function isMultiTouches(event) {
var originalEvent = event.originalEvent,
touches = event.touches,
eventTouches = originalEvent && originalEvent.touches;
return touches && touches.length > 1 || eventTouches && eventTouches.length > 1 || null
}
function preventDefault(e) {
if (!isMultiTouches(e)) {
e.preventDefault()
}
}
function stopPropagationAndPreventDefault(e) {
if (!isMultiTouches(e)) {
e.stopPropagation();
e.preventDefault()
}
}
function isTouchEventArgs(e) {
return e && e.type && 0 === e.type.indexOf("touch")
}
function getEventPageX(event) {
var originalEvent = event.originalEvent,
result = 0;
if (event.pageX) {
result = event.pageX
} else {
if (originalEvent && originalEvent.pageX) {
result = originalEvent.pageX
}
}
if (originalEvent && originalEvent.touches) {
if (originalEvent.touches.length > 0) {
result = originalEvent.touches[0].pageX
} else {
if (originalEvent.changedTouches.length > 0) {
result = originalEvent.changedTouches[0].pageX
}
}
}
return result
}
function initializeAreaEvents(controller, area, state, getRootOffsetLeft) {
var _docEvents;
var isTouchEvent, initialPosition, isActive = false,
movingHandler = null,
docEvents = (_docEvents = {}, _defineProperty(_docEvents, _pointer2.default.move, function(e) {
var position, offset;
if (isTouchEvent !== isTouchEventArgs(e)) {
return
}
if (!isLeftButtonPressed(e)) {
cancel(e)
}
if (isActive) {
position = getEventPageX(e);
offset = getRootOffsetLeft();
if (movingHandler) {
movingHandler(position - offset, e)
} else {
if (state.manualRangeSelectionEnabled && Math.abs(initialPosition - position) >= MIN_MANUAL_SELECTING_WIDTH) {
movingHandler = controller.placeSliderAndBeginMoving(initialPosition - offset, position - offset, e)
}
}
}
}), _defineProperty(_docEvents, _pointer2.default.up, function(e) {
var position;
if (isActive) {
position = getEventPageX(e);
if (!movingHandler && state.moveSelectedRangeByClick && Math.abs(initialPosition - position) < MIN_MANUAL_SELECTING_WIDTH) {
controller.moveSelectedArea(position - getRootOffsetLeft(), e)
}
cancel(e)
}
}), _docEvents);
function cancel(e) {
if (isActive) {
isActive = false;
if (movingHandler) {
movingHandler.complete(e);
movingHandler = null
}
}
}
area.on(_pointer2.default.down, function(e) {
if (!state.enabled || !isLeftButtonPressed(e) || isActive) {
return
}
isActive = true;
isTouchEvent = isTouchEventArgs(e);
initialPosition = getEventPageX(e)
});
return docEvents
}
function initializeSelectedAreaEvents(controller, area, state, getRootOffsetLeft) {
var _docEvents2;
var isTouchEvent, isActive = false,
movingHandler = null,
docEvents = (_docEvents2 = {}, _defineProperty(_docEvents2, _pointer2.default.move, function(e) {
if (isTouchEvent !== isTouchEventArgs(e)) {
return
}
if (!isLeftButtonPressed(e)) {
cancel(e)
}
if (isActive) {
preventDefault(e);
movingHandler(getEventPageX(e) - getRootOffsetLeft(), e)
}
}), _defineProperty(_docEvents2, _pointer2.default.up, cancel), _docEvents2);
function cancel(e) {
if (isActive) {
isActive = false;
movingHandler.complete(e);
movingHandler = null
}
}
area.on(_pointer2.default.down, function(e) {
if (!state.enabled || !isLeftButtonPressed(e) || isActive) {
return
}
isActive = true;
isTouchEvent = isTouchEventArgs(e);
movingHandler = controller.beginSelectedAreaMoving(getEventPageX(e) - getRootOffsetLeft());
stopPropagationAndPreventDefault(e)
});
return docEvents
}
function initializeSliderEvents(controller, sliders, state, getRootOffsetLeft) {
var _docEvents3;
var isTouchEvent, isActive = false,
movingHandler = null,
docEvents = (_docEvents3 = {}, _defineProperty(_docEvents3, _pointer2.default.move, function(e) {
if (isTouchEvent !== isTouchEventArgs(e)) {
return
}
if (!isLeftButtonPressed(e)) {
cancel(e)
}
if (isActive) {
preventDefault(e);
movingHandler(getEventPageX(e) - getRootOffsetLeft(), e)
}
}), _defineProperty(_docEvents3, _pointer2.default.up, cancel), _docEvents3);
(0, _iterator.each)(sliders, function(i, slider) {
var _slider$on;
slider.on((_slider$on = {}, _defineProperty(_slider$on, _pointer2.default.down, function(e) {
if (!state.enabled || !isLeftButtonPressed(e) || isActive) {
return
}
isActive = true;
isTouchEvent = isTouchEventArgs(e);
movingHandler = controller.beginSliderMoving(i, getEventPageX(e) - getRootOffsetLeft());
stopPropagationAndPreventDefault(e)
}), _defineProperty(_slider$on, _pointer2.default.move, function() {
if (!movingHandler) {
controller.foregroundSlider(i)
}
}), _slider$on))
});
function cancel(e) {
if (isActive) {
isActive = false;
movingHandler.complete(e);
movingHandler = null
}
}
return docEvents
}
function Tracker(params) {
var state = this._state = {},
targets = params.controller.getTrackerTargets();
if (_support.pointer) {
params.renderer.root.css({
msTouchAction: "pinch-zoom"
})
}
this._docEvents = [initializeSelectedAreaEvents(params.controller, targets.selectedArea, state, getRootOffsetLeft), initializeAreaEvents(params.controller, targets.area, state, getRootOffsetLeft), initializeSliderEvents(params.controller, targets.sliders, state, getRootOffsetLeft)];
(0, _iterator.each)(this._docEvents, function(_, events) {
_events_engine2.default.on(_dom_adapter2.default.getDocument(), events)
});
function getRootOffsetLeft() {
return params.renderer.getRootOffset().left
}
}
Tracker.prototype = {
constructor: Tracker,
dispose: function() {
(0, _iterator.each)(this._docEvents, function(_, events) {
_events_engine2.default.off(_dom_adapter2.default.getDocument(), events)
})
},
update: function(enabled, behavior) {
var state = this._state;
state.enabled = enabled;
state.moveSelectedRangeByClick = behavior.moveSelectedRangeByClick;
state.manualRangeSelectionEnabled = behavior.manualRangeSelectionEnabled
}
}
},
/*!***************************************************************!*\
!*** ./artifacts/transpiled/viz/range_selector/range_view.js ***!
\***************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
function drawSeriesView(root, seriesDataSource, canvas, isAnimationEnabled) {
var seriesList = seriesDataSource.getSeries();
if (!seriesList.length) {
return
}
var valueAxis = seriesList[0].getValueAxis();
valueAxis.updateCanvas({
top: canvas.top,
bottom: 0,
height: canvas.height + canvas.top
});
seriesDataSource.adjustSeriesDimensions();
var valueRange = seriesDataSource.getBoundRange().val;
valueRange.sortCategories(valueAxis.getCategoriesSorter());
valueAxis.setBusinessRange(valueRange);
seriesList.forEach(function(series) {
series._extGroups.seriesGroup = series._extGroups.labelsGroup = root;
series.draw(isAnimationEnabled)
})
}
function merge(a, b) {
return void 0 !== a ? a : b
}
function RangeView(params) {
this._params = params;
this._clipRect = params.renderer.clipRect();
params.root.attr({
"clip-path": this._clipRect.id
})
}
RangeView.prototype = {
constructor: RangeView,
update: function(backgroundOption, backgroundTheme, canvas, isCompactMode, isAnimationEnabled, seriesDataSource) {
var seriesGroup, renderer = this._params.renderer,
root = this._params.root,
canvasWidth = canvas.width - canvas.left;
backgroundOption = backgroundOption || {};
root.clear();
this._clipRect.attr({
x: canvas.left,
y: canvas.top,
width: canvasWidth,
height: canvas.height
});
if (!isCompactMode) {
if (merge(backgroundOption.visible, backgroundTheme.visible)) {
if (backgroundOption.color) {
renderer.rect(canvas.left, canvas.top, canvasWidth + 1, canvas.height).attr({
fill: merge(backgroundOption.color, backgroundTheme.color),
"class": "dx-range-selector-background"
}).append(root)
}
if (backgroundOption.image && backgroundOption.image.url) {
renderer.image(canvas.left, canvas.top, canvasWidth + 1, canvas.height, backgroundOption.image.url, merge(backgroundOption.image.location, backgroundTheme.image.location)).append(root)
}
}
if (seriesDataSource && seriesDataSource.isShowChart()) {
seriesGroup = renderer.g().attr({
"class": "dxrs-series-group"
}).append(root);
drawSeriesView(seriesGroup, seriesDataSource, canvas, isAnimationEnabled)
}
}
}
};
exports.RangeView = RangeView
},
/*!***********************************************************************!*\
!*** ./artifacts/transpiled/viz/range_selector/series_data_source.js ***!
\***********************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var SeriesDataSource, seriesModule = __webpack_require__( /*! ../series/base_series */ 250),
seriesFamilyModule = __webpack_require__( /*! ../core/series_family */ 417),
typeUtils = __webpack_require__( /*! ../../core/utils/type */ 1),
extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
inArray = __webpack_require__( /*! ../../core/utils/array */ 14).inArray,
each = __webpack_require__( /*! ../../core/utils/iterator */ 3).each,
vizUtils = __webpack_require__( /*! ../core/utils */ 12),
rangeModule = __webpack_require__( /*! ../translators/range */ 109),
dataValidatorModule = __webpack_require__( /*! ../components/data_validator */ 248),
ChartThemeManager = __webpack_require__( /*! ../components/chart_theme_manager */ 409).ThemeManager;
var createThemeManager = function(chartOptions) {
return new ChartThemeManager({
options: chartOptions,
themeSection: "rangeSelector.chart",
fontFields: ["commonSeriesSettings.label.font"]
})
};
var processSeriesFamilies = function(series, equalBarWidth, minBubbleSize, maxBubbleSize, barOptions, negativesAsZeroes) {
var families = [],
types = [];
each(series, function(i, item) {
if (inArray(item.type, types) === -1) {
types.push(item.type)
}
});
each(types, function(_, type) {
var family = new seriesFamilyModule.SeriesFamily({
type: type,
equalBarWidth: equalBarWidth,
minBubbleSize: minBubbleSize,
maxBubbleSize: maxBubbleSize,
barWidth: barOptions.barWidth,
barGroupPadding: barOptions.barGroupPadding,
barGroupWidth: barOptions.barGroupWidth,
negativesAsZeroes: negativesAsZeroes
});
family.add(series);
family.adjustSeriesValues();
families.push(family)
});
return families
};
SeriesDataSource = function(options) {
var topIndent, bottomIndent, that = this,
themeManager = that._themeManager = createThemeManager(options.chart);
themeManager.setTheme(options.chart.theme);
topIndent = themeManager.getOptions("topIndent");
bottomIndent = themeManager.getOptions("bottomIndent");
that._indent = {
top: topIndent >= 0 && topIndent < 1 ? topIndent : 0,
bottom: bottomIndent >= 0 && bottomIndent < 1 ? bottomIndent : 0
};
that._valueAxis = themeManager.getOptions("valueAxisRangeSelector") || {};
that._hideChart = false;
that._series = that._calculateSeries(options);
that._seriesFamilies = []
};
SeriesDataSource.prototype = {
constructor: SeriesDataSource,
_calculateSeries: function(options) {
var particularSeriesOptions, seriesTheme, parsedData, dataSourceField, i, newSeries, groupsData, that = this,
series = [],
data = options.dataSource || [],
chartThemeManager = that._themeManager,
seriesTemplate = chartThemeManager.getOptions("seriesTemplate"),
allSeriesOptions = seriesTemplate ? vizUtils.processSeriesTemplate(seriesTemplate, data) : options.chart.series,
valueAxis = that._valueAxis;
if (options.dataSource && !allSeriesOptions) {
dataSourceField = options.dataSourceField || "arg";
allSeriesOptions = {
argumentField: dataSourceField,
valueField: dataSourceField
};
that._hideChart = true
}
allSeriesOptions = Array.isArray(allSeriesOptions) ? allSeriesOptions : allSeriesOptions ? [allSeriesOptions] : [];
for (i = 0; i < allSeriesOptions.length; i++) {
particularSeriesOptions = extend(true, {}, allSeriesOptions[i]);
particularSeriesOptions.rotated = false;
seriesTheme = chartThemeManager.getOptions("series", particularSeriesOptions, allSeriesOptions.length);
seriesTheme.argumentField = seriesTheme.argumentField || options.dataSourceField;
if (!seriesTheme.name) {
seriesTheme.name = "Series " + (i + 1).toString()
}
if (data && data.length > 0) {
newSeries = new seriesModule.Series({
renderer: options.renderer,
argumentAxis: options.argumentAxis,
valueAxis: options.valueAxis,
incidentOccurred: options.incidentOccurred
}, seriesTheme);
series.push(newSeries)
}
}
if (series.length) {
groupsData = {
groups: [{
series: series,
valueAxis: options.valueAxis,
valueOptions: {
type: valueAxis.type,
valueType: dataSourceField ? options.valueType : valueAxis.valueType
}
}],
argumentOptions: {
categories: options.categories,
argumentType: options.valueType,
type: options.axisType
}
};
parsedData = dataValidatorModule.validateData(data, groupsData, options.incidentOccurred, chartThemeManager.getOptions("dataPrepareSettings"));
that.argCategories = groupsData.categories;
for (i = 0; i < series.length; i++) {
series[i].updateData(parsedData[series[i].getArgumentField()])
}
}
return series
},
createPoints: function() {
if (0 === this._series.length) {
return
}
var series = this._series,
viewport = new rangeModule.Range,
axis = series[0].getArgumentAxis(),
themeManager = this._themeManager,
negativesAsZeroes = themeManager.getOptions("negativesAsZeroes"),
negativesAsZeros = themeManager.getOptions("negativesAsZeros");
series.forEach(function(s) {
viewport.addRange(s.getArgumentRange())
});
axis.getTranslator().updateBusinessRange(viewport);
series.forEach(function(s) {
s.createPoints()
});
this._seriesFamilies = processSeriesFamilies(series, themeManager.getOptions("equalBarWidth"), themeManager.getOptions("minBubbleSize"), themeManager.getOptions("maxBubbleSize"), {
barWidth: themeManager.getOptions("barWidth"),
barGroupPadding: themeManager.getOptions("barGroupPadding"),
barGroupWidth: themeManager.getOptions("barGroupWidth")
}, typeUtils.isDefined(negativesAsZeroes) ? negativesAsZeroes : negativesAsZeros)
},
adjustSeriesDimensions: function() {
each(this._seriesFamilies, function(_, family) {
family.adjustSeriesDimensions()
})
},
getBoundRange: function() {
var rangeData, rangeYSize, rangeVisibleSizeY, minIndent, maxIndent, that = this,
valueAxis = that._valueAxis,
valRange = new rangeModule.Range({
min: valueAxis.min,
minVisible: valueAxis.min,
max: valueAxis.max,
maxVisible: valueAxis.max,
axisType: valueAxis.type,
base: valueAxis.logarithmBase
}),
argRange = new rangeModule.Range({});
each(that._series, function(_, series) {
rangeData = series.getRangeData();
valRange.addRange(rangeData.val);
argRange.addRange(rangeData.arg)
});
if (!valRange.isEmpty() && !argRange.isEmpty()) {
minIndent = valueAxis.inverted ? that._indent.top : that._indent.bottom;
maxIndent = valueAxis.inverted ? that._indent.bottom : that._indent.top;
rangeYSize = valRange.max - valRange.min;
rangeVisibleSizeY = (typeUtils.isNumeric(valRange.maxVisible) ? valRange.maxVisible : valRange.max) - (typeUtils.isNumeric(valRange.minVisible) ? valRange.minVisible : valRange.min);
if (typeUtils.isDate(valRange.min)) {
valRange.min = new Date(valRange.min.valueOf() - rangeYSize * minIndent)
} else {
valRange.min -= rangeYSize * minIndent
}
if (typeUtils.isDate(valRange.max)) {
valRange.max = new Date(valRange.max.valueOf() + rangeYSize * maxIndent)
} else {
valRange.max += rangeYSize * maxIndent
}
if (typeUtils.isNumeric(rangeVisibleSizeY)) {
valRange.maxVisible = valRange.maxVisible ? valRange.maxVisible + rangeVisibleSizeY * maxIndent : void 0;
valRange.minVisible = valRange.minVisible ? valRange.minVisible - rangeVisibleSizeY * minIndent : void 0
}
valRange.invert = valueAxis.inverted
}
return {
arg: argRange,
val: valRange
}
},
getMarginOptions: function(canvas) {
var bubbleSize = Math.min(canvas.width, canvas.height) * this._themeManager.getOptions("maxBubbleSize");
return this._series.reduce(function(marginOptions, series) {
var seriesOptions = series.getMarginOptions();
if (true === seriesOptions.processBubbleSize) {
seriesOptions.size = bubbleSize
}
return vizUtils.mergeMarginOptions(marginOptions, seriesOptions)
}, {})
},
getSeries: function() {
return this._series
},
isEmpty: function() {
return 0 === this.getSeries().length
},
isShowChart: function() {
return !this._hideChart
},
getCalculatedValueType: function() {
var series = this._series[0];
return series && series.argumentType
},
getThemeManager: function() {
return this._themeManager
}
};
exports.SeriesDataSource = SeriesDataSource
},
/*!************************************************!*\
!*** ./artifacts/transpiled/viz/vector_map.js ***!
\************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
module.exports = __webpack_require__( /*! ./vector_map/vector_map */ 841)
},
/*!***********************************************************!*\
!*** ./artifacts/transpiled/viz/vector_map/vector_map.js ***!
\***********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _utils = __webpack_require__( /*! ../core/utils */ 12);
var _projection = __webpack_require__( /*! ./projection.main */ 423);
var _control_bar = __webpack_require__( /*! ./control_bar */ 842);
var _control_bar2 = _interopRequireDefault(_control_bar);
var _gesture_handler = __webpack_require__( /*! ./gesture_handler */ 843);
var _gesture_handler2 = _interopRequireDefault(_gesture_handler);
var _tracker = __webpack_require__( /*! ./tracker */ 844);
var _tracker2 = _interopRequireDefault(_tracker);
var _data_exchanger = __webpack_require__( /*! ./data_exchanger */ 845);
var _data_exchanger2 = _interopRequireDefault(_data_exchanger);
var _legend = __webpack_require__( /*! ./legend */ 846);
var _legend2 = _interopRequireDefault(_legend);
var _layout = __webpack_require__( /*! ./layout */ 847);
var _layout2 = _interopRequireDefault(_layout);
var _map_layer = __webpack_require__( /*! ./map_layer */ 848);
var _tooltip_viewer = __webpack_require__( /*! ./tooltip_viewer */ 849);
var _tooltip_viewer2 = _interopRequireDefault(_tooltip_viewer);
__webpack_require__( /*! ./projection */ 425);
var _base_widget = __webpack_require__( /*! ../core/base_widget */ 98);
var _base_widget2 = _interopRequireDefault(_base_widget);
var _component_registrator = __webpack_require__( /*! ../../core/component_registrator */ 9);
var _component_registrator2 = _interopRequireDefault(_component_registrator);
var _export = __webpack_require__( /*! ../core/export */ 95);
var _title = __webpack_require__( /*! ../core/title */ 106);
var _tooltip = __webpack_require__( /*! ../core/tooltip */ 108);
var _loading_indicator = __webpack_require__( /*! ../core/loading_indicator */ 121);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
var DEFAULT_WIDTH = 800;
var DEFAULT_HEIGHT = 400;
var RE_STARTS_LAYERS = /^layers/;
var RE_ENDS_DATA_SOURCE = /\.dataSource$/;
var nextDataKey = 1;
function generateDataKey() {
return "vectormap-data-" + nextDataKey++
}
function mergeBounds(sumBounds, dataBounds) {
return dataBounds ? [Math.min(dataBounds[0], dataBounds[2], sumBounds[0]), Math.min(dataBounds[1], dataBounds[3], sumBounds[3]), Math.max(dataBounds[0], dataBounds[2], sumBounds[2]), Math.max(dataBounds[1], dataBounds[3], sumBounds[1])] : sumBounds
}
var dxVectorMap = _base_widget2.default.inherit({
_eventsMap: {
onClick: {
name: "click"
},
onCenterChanged: {
name: "centerChanged"
},
onZoomFactorChanged: {
name: "zoomFactorChanged"
},
onHoverChanged: {
name: "hoverChanged"
},
onSelectionChanged: {
name: "selectionChanged"
}
},
_rootClassPrefix: "dxm",
_rootClass: "dxm-vector-map",
_themeSection: "map",
_fontFields: ["layer:area.label.font", "layer:marker:dot.label.font", "layer:marker:bubble.label.font", "layer:marker:pie.label.font", "layer:marker:image.label.font", "legend.font", "legend.title.font", "legend.title.subtitle.font"],
_initLayerCollection: function(dataKey) {
var that = this;
that._layerCollection = new _map_layer.MapLayerCollection({
renderer: that._renderer,
projection: that._projection,
themeManager: that._themeManager,
tracker: that._tracker,
dataKey: dataKey,
eventTrigger: that._eventTrigger,
dataExchanger: that._dataExchanger,
tooltip: that._tooltip,
notifyDirty: that._notifyDirty,
notifyReady: that._notifyReady,
dataReady: function() {
var bounds = void 0;
if (that.option("getBoundsFromData") && !that.option("bounds")) {
that._preventProjectionEvents();
bounds = that._getBoundsFromData();
that._projection.setBounds(bounds);
that._allowProjectionEvents()
}
if (!that.option("projection")) {
bounds = bounds || that._getBoundsFromData();
if (Math.ceil(bounds[0]) < -180 || Math.ceil(bounds[3]) < -90 || Math.floor(bounds[2]) > 180 || Math.floor(bounds[1]) > 90) {
var longitudeLength = bounds[2] - bounds[0];
var latitudeLength = bounds[1] - bounds[3];
that._projection.setEngine({
to: function(coordinates) {
return [2 * (coordinates[0] - bounds[0]) / longitudeLength - 1, 2 * (coordinates[1] - bounds[3]) / latitudeLength - 1]
},
from: function(coordinates) {
return [(coordinates[0] + 1) * longitudeLength / 2 + bounds[0], (coordinates[1] + 1) * latitudeLength / 2 + bounds[3]]
}
})
}
}
}
})
},
_getBoundsFromData: function() {
var bounds = this._getBoundingBoxFromDataSource();
if (!bounds) {
var boundsByData = (0, _map_layer.getMaxBound)(this.getLayers().map(function(l) {
return l.getBounds()
}));
if (boundsByData) {
bounds = boundsByData
}
}
bounds = bounds || [];
bounds = [bounds[0], bounds[3], bounds[2], bounds[1]];
return bounds
},
_initLegendsControl: function() {
var that = this;
that._legendsControl = new _legend2.default.LegendsControl({
renderer: that._renderer,
container: that._root,
widget: that,
layoutControl: that._layoutControl,
themeManager: that._themeManager,
dataExchanger: that._dataExchanger,
notifyDirty: that._notifyDirty,
notifyReady: that._notifyReady
})
},
_initControlBar: function(dataKey) {
var that = this;
that._controlBar = new _control_bar2.default.ControlBar({
renderer: that._renderer,
container: that._root,
layoutControl: that._layoutControl,
projection: that._projection,
tracker: that._tracker,
dataKey: dataKey
})
},
_initElements: function() {
var that = this,
dataKey = generateDataKey(),
notifyCounter = 0;
var preventProjectionEvents;
that._preventProjectionEvents = function() {
preventProjectionEvents = true
};
that._allowProjectionEvents = function() {
preventProjectionEvents = false
};
that._notifyDirty = function() {
that._resetIsReady();
++notifyCounter
};
that._notifyReady = function() {
that._allowProjectionEvents();
if (0 === --notifyCounter) {
that._drawn()
}
};
that._preventProjectionEvents();
that._dataExchanger = new _data_exchanger2.default.DataExchanger;
that._projection = new _projection.Projection({
centerChanged: function(value) {
if (!preventProjectionEvents) {
that._eventTrigger("centerChanged", {
center: value
})
}
},
zoomChanged: function(value) {
if (!preventProjectionEvents) {
that._eventTrigger("zoomFactorChanged", {
zoomFactor: value
})
}
}
});
that._tracker = new _tracker2.default.Tracker({
root: that._root,
projection: that._projection,
dataKey: dataKey
});
that._gestureHandler = new _gesture_handler2.default.GestureHandler({
projection: that._projection,
renderer: that._renderer,
tracker: that._tracker
});
that._layoutControl = new _layout2.default.LayoutControl;
that._layoutControl.suspend();
that._initLayerCollection(dataKey);
that._initControlBar(dataKey);
that._initLegendsControl();
that._tooltipViewer = new _tooltip_viewer2.default.TooltipViewer({
tracker: that._tracker,
tooltip: that._tooltip,
layerCollection: that._layerCollection
})
},
_change_RESUME_LAYOUT: function() {
this._layoutControl.resume()
},
_initialChanges: ["PROJECTION", "RESUME_LAYOUT", "LAYOUT_INIT", "BOUNDS", "MAX_ZOOM_FACTOR", "ZOOM_FACTOR", "CENTER"],
_layoutChangesOrder: ["RESUME_LAYOUT", "LAYERS"],
_initCore: function() {
this._root = this._renderer.root.attr({
align: "center",
cursor: "default"
});
this._initElements()
},
_disposeCore: function() {
var that = this;
that._controlBar.dispose();
that._gestureHandler.dispose();
that._tracker.dispose();
that._legendsControl.dispose();
that._layerCollection.dispose();
that._layoutControl.dispose();
that._tooltipViewer.dispose();
that._dataExchanger.dispose();
that._projection.dispose();
that._dataExchanger = that._gestureHandler = that._projection = that._tracker = that._layoutControl = that._root = that._layerCollection = that._controlBar = that._legendsControl = null
},
_setupInteraction: function() {
var options = {
centeringEnabled: !!(0, _utils.parseScalar)(this._getOption("panningEnabled", true), true),
zoomingEnabled: !!(0, _utils.parseScalar)(this._getOption("zoomingEnabled", true), true)
};
this._gestureHandler.setInteraction(options);
this._controlBar.setInteraction(options)
},
_getDefaultSize: function() {
return {
width: DEFAULT_WIDTH,
height: DEFAULT_HEIGHT
}
},
_applySize: function(rect) {
var layout = {
left: rect[0],
top: rect[1],
width: rect[2] - rect[0],
height: rect[3] - rect[1],
right: 0,
bottom: 0
};
this._projection.setSize(layout);
this._layoutControl.setSize(layout);
this._layerCollection.setRect([layout.left, layout.top, layout.width, layout.height])
},
_optionChanging: function(name, currentValue, nextValue) {
if (currentValue && nextValue) {
if (RE_STARTS_LAYERS.test(name)) {
if (currentValue.dataSource && nextValue.dataSource && currentValue !== nextValue) {
currentValue.dataSource = null
} else {
if (RE_ENDS_DATA_SOURCE.test(name)) {
this.option(name, null)
}
}
}
}
},
_applyChanges: function() {
this._notifyDirty();
this.callBase.apply(this, arguments);
this._notifyReady()
},
_optionChangesMap: {
background: "BACKGROUND",
layers: "LAYERS",
controlBar: "CONTROL_BAR",
legends: "LEGENDS",
touchEnabled: "TRACKER",
wheelEnabled: "TRACKER",
panningEnabled: "INTERACTION",
zoomingEnabled: "INTERACTION",
projection: "PROJECTION",
bounds: "BOUNDS",
maxZoomFactor: "MAX_ZOOM_FACTOR",
zoomFactor: "ZOOM_FACTOR",
center: "CENTER"
},
_optionChangesOrder: ["PROJECTION", "BOUNDS", "MAX_ZOOM_FACTOR", "ZOOM_FACTOR", "CENTER", "BACKGROUND", "CONTROL_BAR", "LEGENDS", "TRACKER", "INTERACTION"],
_change_PROJECTION: function() {
this._setProjection()
},
_change_BOUNDS: function() {
this._setBounds()
},
_change_MAX_ZOOM_FACTOR: function() {
this._setMaxZoom()
},
_change_ZOOM_FACTOR: function() {
this._setZoom()
},
_change_CENTER: function() {
this._setCenter()
},
_change_BACKGROUND: function() {
this._setBackgroundOptions()
},
_change_LAYERS: function() {
this._setLayerCollectionOptions()
},
_change_CONTROL_BAR: function() {
this._setControlBarOptions()
},
_change_LEGENDS: function() {
this._setLegendsOptions()
},
_change_TRACKER: function() {
this._setTrackerOptions()
},
_change_INTERACTION: function() {
this._setupInteraction()
},
_themeDependentChanges: ["BACKGROUND", "LAYERS", "CONTROL_BAR", "LEGENDS", "TRACKER", "INTERACTION"],
_setProjection: function() {
this._projection.setEngine(this.option("projection"))
},
_setBounds: function() {
this._projection.setBounds(this.option("bounds"))
},
_setMaxZoom: function() {
this._projection.setMaxZoom(this.option("maxZoomFactor"))
},
_setZoom: function() {
this._projection.setZoom(this.option("zoomFactor"))
},
_setCenter: function() {
this._projection.setCenter(this.option("center"))
},
_setBackgroundOptions: function() {
this._layerCollection.setBackgroundOptions(this._getOption("background"))
},
_setLayerCollectionOptions: function() {
this._layerCollection.setOptions(this.option("layers"))
},
_getBoundingBoxFromDataSource: function() {
var that = this;
var layers = that._layerCollection.items();
var infinityBounds = [1 / 0, -(1 / 0), -(1 / 0), 1 / 0];
var resultBBox = layers && layers.length ? layers.reduce(function(sumBBox, l) {
var layerData = l.getData();
var itemCount = layerData.count();
if (itemCount > 0) {
var rootBBox = layerData.getBBox();
if (rootBBox) {
sumBBox = mergeBounds(sumBBox, rootBBox)
} else {
for (var i = 0; i < itemCount; i++) {
sumBBox = mergeBounds(sumBBox, layerData.getBBox(i))
}
}
}
return sumBBox
}, infinityBounds) : void 0;
return resultBBox === infinityBounds ? void 0 : resultBBox
},
_setControlBarOptions: function() {
this._controlBar.setOptions(this._getOption("controlBar"))
},
_setLegendsOptions: function() {
this._legendsControl.setOptions(this.option("legends"))
},
_setTrackerOptions: function() {
this._tracker.setOptions({
touchEnabled: this._getOption("touchEnabled", true),
wheelEnabled: this._getOption("wheelEnabled", true)
})
},
getLayers: function() {
return this._layerCollection.items().map(function(l) {
return l.proxy
})
},
getLayerByIndex: function(index) {
var layer = this._layerCollection.byIndex(index);
return layer ? layer.proxy : null
},
getLayerByName: function(name) {
var layer = this._layerCollection.byName(name);
return layer ? layer.proxy : null
},
clearSelection: function(_noEvent) {
var i, layers = this._layerCollection.items(),
ii = layers.length;
for (i = 0; i < ii; ++i) {
layers[i].clearSelection(_noEvent)
}
return this
},
center: function(value) {
var that = this;
if (void 0 === value) {
return that._projection.getCenter()
} else {
that._projection.setCenter(value);
return that
}
},
zoomFactor: function(value) {
var that = this;
if (void 0 === value) {
return that._projection.getZoom()
} else {
that._projection.setZoom(value);
return that
}
},
viewport: function(value) {
var that = this;
if (void 0 === value) {
return that._projection.getViewport()
} else {
that._projection.setViewport(value);
return that
}
},
convertCoordinates: function(coordinates) {
coordinates = coordinates && coordinates.length ? coordinates : [arguments[0], arguments[1]];
return this.convertToGeo(coordinates[0], coordinates[1])
},
convertToGeo: function(x, y) {
return this._projection.fromScreenPoint([x, y])
},
convertToXY: function(longitude, latitude) {
return this._projection.toScreenPoint([longitude, latitude])
}
});
(0, _component_registrator2.default)("dxVectorMap", dxVectorMap);
module.exports = dxVectorMap;
module.exports._TESTS_resetDataKey = function() {
nextDataKey = 1
};
dxVectorMap.addPlugin(_export.plugin);
dxVectorMap.addPlugin(_title.plugin);
dxVectorMap.addPlugin(_tooltip.plugin);
dxVectorMap.addPlugin(_loading_indicator.plugin)
},
/*!************************************************************!*\
!*** ./artifacts/transpiled/viz/vector_map/control_bar.js ***!
\************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _math = Math,
_min = _math.min,
_max = _math.max,
_round = _math.round,
_floor = _math.floor,
_sqrt = _math.sqrt,
vizUtils = __webpack_require__( /*! ../core/utils */ 12),
_parseScalar = vizUtils.parseScalar,
parseHorizontalAlignment = vizUtils.enumParser(["left", "center", "right"]),
parseVerticalAlignment = vizUtils.enumParser(["top", "bottom"]),
COMMAND_RESET = "command-reset",
COMMAND_MOVE_UP = "command-move-up",
COMMAND_MOVE_RIGHT = "command-move-right",
COMMAND_MOVE_DOWN = "command-move-down",
COMMAND_MOVE_LEFT = "command-move-left",
COMMAND_ZOOM_IN = "command-zoom-in",
COMMAND_ZOOM_OUT = "command-zoom-out",
COMMAND_ZOOM_DRAG_LINE = "command-zoom-drag-line",
COMMAND_ZOOM_DRAG = "command-zoom-drag",
EVENT_TARGET_TYPE = "control-bar",
FLAG_CENTERING = 1,
FLAG_ZOOMING = 2,
SIZE_OPTIONS = {
bigCircleSize: 58,
smallCircleSize: 28,
buttonSize: 10,
arrowButtonOffset: 20,
incDecButtonSize: 11,
incButtonOffset: 66,
decButtonOffset: 227,
sliderLineStartOffset: 88.5,
sliderLineEndOffset: 205.5,
sliderLength: 20,
sliderWidth: 8,
trackerGap: 4
},
OFFSET_X = 30.5,
OFFSET_Y = 30.5,
TOTAL_WIDTH = 61,
TOTAL_HEIGHT = 274,
COMMAND_TO_TYPE_MAP = {};
COMMAND_TO_TYPE_MAP[COMMAND_RESET] = ResetCommand;
COMMAND_TO_TYPE_MAP[COMMAND_MOVE_UP] = COMMAND_TO_TYPE_MAP[COMMAND_MOVE_RIGHT] = COMMAND_TO_TYPE_MAP[COMMAND_MOVE_DOWN] = COMMAND_TO_TYPE_MAP[COMMAND_MOVE_LEFT] = MoveCommand;
COMMAND_TO_TYPE_MAP[COMMAND_ZOOM_IN] = COMMAND_TO_TYPE_MAP[COMMAND_ZOOM_OUT] = ZoomCommand;
COMMAND_TO_TYPE_MAP[COMMAND_ZOOM_DRAG] = ZoomDragCommand;
function ControlBar(parameters) {
var that = this;
that._params = parameters;
that._createElements(parameters.renderer, parameters.container, parameters.dataKey);
parameters.layoutControl.addItem(that);
that._subscribeToProjection(parameters.projection);
that._subscribeToTracker(parameters.tracker);
that._createCallbacks(parameters.projection)
}
ControlBar.prototype = {
constructor: ControlBar,
_flags: 0,
dispose: function() {
var that = this;
that._params.layoutControl.removeItem(that);
that._root.linkRemove().linkOff();
that._offProjection();
that._offTracker();
that._params = that._root = that._offProjection = that._offTracker = that._callbacks = null
},
_subscribeToProjection: function(projection) {
var that = this;
that._offProjection = projection.on({
engine: function() {
that._update()
},
zoom: updateZoom,
"max-zoom": function() {
that._zoomPartition = projection.getZoomScalePartition();
that._sliderUnitLength = that._sliderLineLength / that._zoomPartition;
updateZoom()
}
});
function updateZoom() {
that._adjustZoom(projection.getScaledZoom())
}
},
_subscribeToTracker: function(tracker) {
var that = this,
isActive = false;
that._offTracker = tracker.on({
start: function(arg) {
isActive = arg.data.name === EVENT_TARGET_TYPE;
if (isActive) {
that._processStart(arg.data.index, arg)
}
},
move: function(arg) {
if (isActive) {
that._processMove(arg.data.index, arg)
}
},
end: function() {
if (isActive) {
that._processEnd();
isActive = false
}
}
})
},
_createCallbacks: function(projection) {
var that = this;
that._callbacks = {
reset: function(isCenter, isZoom) {
if (isCenter) {
projection.setCenter(null)
}
if (isZoom) {
projection.setZoom(null)
}
},
beginMove: function() {
projection.beginMoveCenter()
},
endMove: function() {
projection.endMoveCenter()
},
move: function(shift) {
projection.moveCenter(shift)
},
zoom: function(_zoom) {
projection.setScaledZoom(_zoom)
}
}
},
_createElements: function(renderer, container, dataKey) {
var buttonsGroups, trackersGroup, that = this;
that._root = renderer.g().attr({
"class": "dxm-control-bar"
}).linkOn(container, "control-bar");
buttonsGroups = that._buttonsGroup = renderer.g().attr({
"class": "dxm-control-buttons"
}).append(that._root);
trackersGroup = renderer.g().attr({
stroke: "none",
"stroke-width": 0,
fill: "#000000",
opacity: 1e-4
}).css({
cursor: "pointer"
}).append(that._root);
that._createButtons(renderer, dataKey, buttonsGroups);
that._createTrackers(renderer, dataKey, trackersGroup)
},
_createButtons: function(renderer, dataKey, group) {
var that = this,
options = SIZE_OPTIONS,
size = options.buttonSize / 2,
offset1 = options.arrowButtonOffset - size,
offset2 = options.arrowButtonOffset,
incDecButtonSize = options.incDecButtonSize / 2,
directionOptions = {
"stroke-linecap": "square",
fill: "none"
},
line = "line";
renderer.circle(0, 0, options.bigCircleSize / 2).append(group);
renderer.circle(0, 0, size).attr({
fill: "none"
}).append(group);
renderer.path([-size, -offset1, 0, -offset2, size, -offset1], line).attr(directionOptions).append(group);
renderer.path([offset1, -size, offset2, 0, offset1, size], line).attr(directionOptions).append(group);
renderer.path([size, offset1, 0, offset2, -size, offset1], line).attr(directionOptions).append(group);
renderer.path([-offset1, size, -offset2, 0, -offset1, -size], line).attr(directionOptions).append(group);
renderer.circle(0, options.incButtonOffset, options.smallCircleSize / 2).append(group);
renderer.path([
[-incDecButtonSize, options.incButtonOffset, incDecButtonSize, options.incButtonOffset],
[0, options.incButtonOffset - incDecButtonSize, 0, options.incButtonOffset + incDecButtonSize]
], "area").append(group);
renderer.circle(0, options.decButtonOffset, options.smallCircleSize / 2).append(group);
renderer.path([-incDecButtonSize, options.decButtonOffset, incDecButtonSize, options.decButtonOffset], "area").append(group);
that._zoomLine = renderer.path([], "line").append(group);
that._zoomDrag = renderer.rect(_floor(-options.sliderLength / 2), _floor(options.sliderLineEndOffset - options.sliderWidth / 2), options.sliderLength, options.sliderWidth).append(group);
that._sliderLineLength = options.sliderLineEndOffset - options.sliderLineStartOffset
},
_createTrackers: function(renderer, dataKey, group) {
var options = SIZE_OPTIONS,
size = _round((options.arrowButtonOffset - options.trackerGap) / 2),
offset1 = options.arrowButtonOffset - size,
offset2 = _round(_sqrt(options.bigCircleSize * options.bigCircleSize / 4 - size * size)),
size2 = offset2 - offset1;
renderer.rect(-size, -size, 2 * size, 2 * size).data(dataKey, {
index: COMMAND_RESET,
name: EVENT_TARGET_TYPE
}).append(group);
renderer.rect(-size, -offset2, 2 * size, size2).data(dataKey, {
index: COMMAND_MOVE_UP,
name: EVENT_TARGET_TYPE
}).append(group);
renderer.rect(offset1, -size, size2, 2 * size).data(dataKey, {
index: COMMAND_MOVE_RIGHT,
name: EVENT_TARGET_TYPE
}).append(group);
renderer.rect(-size, offset1, 2 * size, size2).data(dataKey, {
index: COMMAND_MOVE_DOWN,
name: EVENT_TARGET_TYPE
}).append(group);
renderer.rect(-offset2, -size, size2, 2 * size).data(dataKey, {
index: COMMAND_MOVE_LEFT,
name: EVENT_TARGET_TYPE
}).append(group);
renderer.circle(0, options.incButtonOffset, options.smallCircleSize / 2).data(dataKey, {
index: COMMAND_ZOOM_IN,
name: EVENT_TARGET_TYPE
}).append(group);
renderer.circle(0, options.decButtonOffset, options.smallCircleSize / 2).data(dataKey, {
index: COMMAND_ZOOM_OUT,
name: EVENT_TARGET_TYPE
}).append(group);
renderer.rect(-2, options.sliderLineStartOffset - 2, 4, options.sliderLineEndOffset - options.sliderLineStartOffset + 4).css({
cursor: "default"
}).data(dataKey, {
index: COMMAND_ZOOM_DRAG_LINE,
name: EVENT_TARGET_TYPE
}).append(group);
this._zoomDragTracker = renderer.rect(-options.sliderLength / 2, options.sliderLineEndOffset - options.sliderWidth / 2, options.sliderLength, options.sliderWidth).data(dataKey, {
index: COMMAND_ZOOM_DRAG,
name: EVENT_TARGET_TYPE
}).append(group)
},
resize: function(size) {
if (this._isActive) {
this._root.attr({
visibility: null !== size ? null : "hidden"
})
}
},
getLayoutOptions: function() {
return this._isActive ? this._layoutOptions : null
},
locate: function(x, y) {
this._root.attr({
translateX: x + this._margin + OFFSET_X,
translateY: y + this._margin + OFFSET_Y
})
},
_update: function() {
var that = this;
that._isActive = that._isEnabled && that._flags && that._params.projection.isInvertible();
if (that._isActive) {
that._root.linkAppend()
} else {
that._root.linkRemove()
}
that._processEnd();
that.updateLayout()
},
setInteraction: function(interaction) {
var that = this;
if (_parseScalar(interaction.centeringEnabled, true)) {
that._flags |= FLAG_CENTERING
} else {
that._flags &= ~FLAG_CENTERING
}
if (_parseScalar(interaction.zoomingEnabled, true)) {
that._flags |= FLAG_ZOOMING
} else {
that._flags &= ~FLAG_ZOOMING
}
that._update()
},
setOptions: function(options) {
var that = this;
that._isEnabled = !!_parseScalar(options.enabled, true);
that._margin = options.margin || 0;
that._layoutOptions = {
width: 2 * that._margin + TOTAL_WIDTH,
height: 2 * that._margin + TOTAL_HEIGHT,
horizontalAlignment: parseHorizontalAlignment(options.horizontalAlignment, "left"),
verticalAlignment: parseVerticalAlignment(options.verticalAlignment, "top")
};
that._buttonsGroup.attr({
"stroke-width": options.borderWidth,
stroke: options.borderColor,
fill: options.color,
"fill-opacity": options.opacity
});
that._update()
},
_adjustZoom: function(zoom) {
var transform, y, that = this,
start = SIZE_OPTIONS.sliderLineStartOffset,
end = SIZE_OPTIONS.sliderLineEndOffset,
h = SIZE_OPTIONS.sliderWidth;
that._zoomFactor = _max(_min(_round(zoom), that._zoomPartition), 0);
transform = {
translateY: -_round(that._zoomFactor * that._sliderUnitLength)
};
y = end - h / 2 + transform.translateY;
that._zoomLine.attr({
points: [
[0, start, 0, _max(start, y)],
[0, _min(end, y + h), 0, end]
]
});
that._zoomDrag.attr(transform);
that._zoomDragTracker.attr(transform)
},
_applyZoom: function() {
this._callbacks.zoom(this._zoomFactor)
},
_processStart: function(command, arg) {
var commandType;
if (this._isActive) {
commandType = COMMAND_TO_TYPE_MAP[command];
this._command = commandType && commandType.flags & this._flags ? new commandType(this, command, arg) : null
}
},
_processMove: function(command, arg) {
this._command && this._command.update(command, arg)
},
_processEnd: function() {
this._command && this._command.finish();
this._command = null
}
};
function disposeCommand(command) {
delete command._owner;
command.update = function() {};
command.finish = function() {}
}
function ResetCommand(owner, command) {
this._owner = owner;
this._command = command
}
ResetCommand.flags = FLAG_CENTERING | FLAG_ZOOMING;
ResetCommand.prototype.update = function(command) {
command !== this._command && disposeCommand(this)
};
ResetCommand.prototype.finish = function() {
var flags = this._owner._flags;
this._owner._callbacks.reset(!!(flags & FLAG_CENTERING), !!(flags & FLAG_ZOOMING));
disposeCommand(this)
};
function MoveCommand(owner, command, arg) {
this._command = command;
var timeout = null,
interval = 100,
dx = 0,
dy = 0;
switch (this._command) {
case COMMAND_MOVE_UP:
dy = -10;
break;
case COMMAND_MOVE_RIGHT:
dx = 10;
break;
case COMMAND_MOVE_DOWN:
dy = 10;
break;
case COMMAND_MOVE_LEFT:
dx = -10
}
function callback() {
owner._callbacks.move([dx, dy]);
timeout = setTimeout(callback, interval)
}
this._stop = function() {
clearTimeout(timeout);
owner._callbacks.endMove();
this._stop = owner = null;
return this
};
arg = null;
owner._callbacks.beginMove();
callback()
}
MoveCommand.flags = FLAG_CENTERING;
MoveCommand.prototype.update = function(command) {
this._command !== command && this.finish()
};
MoveCommand.prototype.finish = function() {
disposeCommand(this._stop())
};
function ZoomCommand(owner, command) {
this._owner = owner;
this._command = command;
var timeout = null,
interval = 150,
dZoom = this._command === COMMAND_ZOOM_IN ? 1 : -1;
function callback() {
owner._adjustZoom(owner._zoomFactor + dZoom);
timeout = setTimeout(callback, interval)
}
this._stop = function() {
clearTimeout(timeout);
this._stop = owner = null;
return this
};
callback()
}
ZoomCommand.flags = FLAG_ZOOMING;
ZoomCommand.prototype.update = function(command) {
this._command !== command && this.finish()
};
ZoomCommand.prototype.finish = function() {
this._owner._applyZoom();
disposeCommand(this._stop())
};
function ZoomDragCommand(owner, command, arg) {
this._owner = owner;
this._zoomFactor = owner._zoomFactor;
this._pos = arg.y
}
ZoomDragCommand.flags = FLAG_ZOOMING;
ZoomDragCommand.prototype.update = function(command, arg) {
var owner = this._owner;
owner._adjustZoom(this._zoomFactor + owner._zoomPartition * (this._pos - arg.y) / owner._sliderLineLength)
};
ZoomDragCommand.prototype.finish = function() {
this._owner._applyZoom();
disposeCommand(this)
};
exports.ControlBar = ControlBar;
var COMMAND_TO_TYPE_MAP__ORIGINAL = COMMAND_TO_TYPE_MAP;
exports._TESTS_stubCommandToTypeMap = function(map) {
COMMAND_TO_TYPE_MAP = map
};
exports._TESTS_restoreCommandToTypeMap = function() {
COMMAND_TO_TYPE_MAP = COMMAND_TO_TYPE_MAP__ORIGINAL
}
},
/*!****************************************************************!*\
!*** ./artifacts/transpiled/viz/vector_map/gesture_handler.js ***!
\****************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _ln = Math.log,
_LN2 = Math.LN2;
function GestureHandler(params) {
var that = this;
that._projection = params.projection;
that._renderer = params.renderer;
that._x = that._y = 0;
that._subscribeToTracker(params.tracker)
}
GestureHandler.prototype = {
constructor: GestureHandler,
dispose: function() {
this._offTracker();
this._offTracker = null
},
_subscribeToTracker: function(tracker) {
var that = this,
isActive = false;
that._offTracker = tracker.on({
start: function(arg) {
isActive = "control-bar" !== arg.data.name;
if (isActive) {
that._processStart(arg)
}
},
move: function(arg) {
if (isActive) {
that._processMove(arg)
}
},
end: function() {
if (isActive) {
that._processEnd()
}
},
zoom: function(arg) {
that._processZoom(arg)
}
})
},
setInteraction: function(options) {
this._processEnd();
this._centeringEnabled = options.centeringEnabled;
this._zoomingEnabled = options.zoomingEnabled
},
_processStart: function(arg) {
if (this._centeringEnabled) {
this._x = arg.x;
this._y = arg.y;
this._projection.beginMoveCenter()
}
},
_processMove: function(arg) {
var that = this;
if (that._centeringEnabled) {
that._renderer.root.attr({
cursor: "move"
});
that._projection.moveCenter([that._x - arg.x, that._y - arg.y]);
that._x = arg.x;
that._y = arg.y
}
},
_processEnd: function() {
if (this._centeringEnabled) {
this._renderer.root.attr({
cursor: "default"
});
this._projection.endMoveCenter()
}
},
_processZoom: function(arg) {
var delta, screenPosition, coords, that = this;
if (that._zoomingEnabled) {
if (arg.delta) {
delta = arg.delta
} else {
if (arg.ratio) {
delta = _ln(arg.ratio) / _LN2
}
}
if (that._centeringEnabled) {
screenPosition = that._renderer.getRootOffset();
screenPosition = [arg.x - screenPosition.left, arg.y - screenPosition.top];
coords = that._projection.fromScreenPoint(screenPosition)
}
that._projection.changeScaledZoom(delta);
if (that._centeringEnabled) {
that._projection.setCenterByPoint(coords, screenPosition)
}
}
}
};
exports.GestureHandler = GestureHandler
},
/*!********************************************************!*\
!*** ./artifacts/transpiled/viz/vector_map/tracker.js ***!
\********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _events_engine = __webpack_require__( /*! ../../events/core/events_engine */ 5);
var _events_engine2 = _interopRequireDefault(_events_engine);
var _window = __webpack_require__( /*! ../../core/utils/window */ 7);
var _window2 = _interopRequireDefault(_window);
var _dom_adapter = __webpack_require__( /*! ../../core/dom_adapter */ 13);
var _dom_adapter2 = _interopRequireDefault(_dom_adapter);
var _event_emitter = __webpack_require__( /*! ./event_emitter */ 424);
var _event_emitter2 = _interopRequireDefault(_event_emitter);
var _utils = __webpack_require__( /*! ../../events/utils */ 8);
var _utils2 = _interopRequireDefault(_utils);
var _wheel = __webpack_require__( /*! ../../events/core/wheel */ 127);
var _utils3 = __webpack_require__( /*! ../core/utils */ 12);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
var navigator = _window2.default.getNavigator();
var _math = Math;
var _abs = _math.abs;
var _sqrt = _math.sqrt;
var _round = _math.round;
var _addNamespace = _utils2.default.addNamespace;
var _now = Date.now;
var _NAME = "dxVectorMap";
var EVENT_START = "start";
var EVENT_MOVE = "move";
var EVENT_END = "end";
var EVENT_ZOOM = "zoom";
var EVENT_HOVER_ON = "hover-on";
var EVENT_HOVER_OFF = "hover-off";
var EVENT_CLICK = "click";
var EVENT_FOCUS_ON = "focus-on";
var EVENT_FOCUS_MOVE = "focus-move";
var EVENT_FOCUS_OFF = "focus-off";
var CLICK_TIME_THRESHOLD = 500;
var CLICK_COORD_THRESHOLD_MOUSE = 5;
var CLICK_COORD_THRESHOLD_TOUCH = 20;
var DRAG_COORD_THRESHOLD_MOUSE = 5;
var DRAG_COORD_THRESHOLD_TOUCH = 10;
var FOCUS_OFF_DELAY = 100;
var WHEEL_COOLDOWN = 50;
var WHEEL_DIRECTION_COOLDOWN = 300;
var EVENTS = void 0;
setupEvents();
function Tracker(parameters) {
var that = this;
that._root = parameters.root;
that._createEventHandlers(parameters.dataKey);
that._createProjectionHandlers(parameters.projection);
that._initEvents();
that._focus = new Focus(function(name, arg) {
that._fire(name, arg)
});
that._attachHandlers()
}
Tracker.prototype = {
constructor: Tracker,
dispose: function() {
var that = this;
that._detachHandlers();
that._disposeEvents();
that._focus.dispose();
that._root = that._focus = that._docHandlers = that._rootHandlers = null
},
_eventNames: [EVENT_START, EVENT_MOVE, EVENT_END, EVENT_ZOOM, EVENT_CLICK, EVENT_HOVER_ON, EVENT_HOVER_OFF, EVENT_FOCUS_ON, EVENT_FOCUS_OFF, EVENT_FOCUS_MOVE],
_startClick: function(event, data) {
if (!data) {
return
}
var coords = getEventCoords(event);
this._clickState = {
x: coords.x,
y: coords.y,
threshold: isTouchEvent(event) ? CLICK_COORD_THRESHOLD_TOUCH : CLICK_COORD_THRESHOLD_MOUSE,
time: _now()
}
},
_endClick: function(event, data) {
var threshold, coords, state = this._clickState;
if (!state) {
return
}
if (data && _now() - state.time <= CLICK_TIME_THRESHOLD) {
threshold = state.threshold;
coords = getEventCoords(event);
if (_abs(coords.x - state.x) <= threshold && _abs(coords.y - state.y) <= threshold) {
this._fire(EVENT_CLICK, {
data: data,
x: coords.x,
y: coords.y,
$event: event
})
}
}
this._clickState = null
},
_startDrag: function(event, data) {
if (!data) {
return
}
var coords = getEventCoords(event),
state = this._dragState = {
x: coords.x,
y: coords.y,
data: data
};
this._fire(EVENT_START, {
x: state.x,
y: state.y,
data: state.data
})
},
_moveDrag: function(event, data) {
var coords, threshold, state = this._dragState;
if (!state) {
return
}
coords = getEventCoords(event);
threshold = isTouchEvent(event) ? DRAG_COORD_THRESHOLD_TOUCH : DRAG_COORD_THRESHOLD_MOUSE;
if (state.active || _abs(coords.x - state.x) > threshold || _abs(coords.y - state.y) > threshold) {
state.x = coords.x;
state.y = coords.y;
state.active = true;
state.data = data || {};
this._fire(EVENT_MOVE, {
x: state.x,
y: state.y,
data: state.data
})
}
},
_endDrag: function() {
var state = this._dragState;
if (!state) {
return
}
this._dragState = null;
this._fire(EVENT_END, {
x: state.x,
y: state.y,
data: state.data
})
},
_wheelZoom: function(event, data) {
if (!data) {
return
}
var delta, coords, that = this,
lock = that._wheelLock,
time = _now();
if (time - lock.time <= WHEEL_COOLDOWN) {
return
}
if (time - lock.dirTime > WHEEL_DIRECTION_COOLDOWN) {
lock.dir = 0
}
delta = adjustWheelDelta(event.delta / 120 || 0, lock);
if (0 === delta) {
return
}
coords = getEventCoords(event);
that._fire(EVENT_ZOOM, {
delta: delta,
x: coords.x,
y: coords.y
});
lock.time = lock.dirTime = time
},
_startZoom: function(event, data) {
if (!isTouchEvent(event) || !data) {
return
}
var coords, pointer2, state = this._zoomState = this._zoomState || {};
if (state.pointer1 && state.pointer2) {
return
}
if (void 0 === state.pointer1) {
state.pointer1 = getPointerId(event) || 0;
coords = getMultitouchEventCoords(event, state.pointer1);
state.x1 = state.x1_0 = coords.x;
state.y1 = state.y1_0 = coords.y
}
if (void 0 === state.pointer2) {
pointer2 = getPointerId(event) || 1;
if (pointer2 !== state.pointer1) {
coords = getMultitouchEventCoords(event, pointer2);
if (coords) {
state.x2 = state.x2_0 = coords.x;
state.y2 = state.y2_0 = coords.y;
state.pointer2 = pointer2;
state.ready = true;
this._endDrag()
}
}
}
},
_moveZoom: function(event) {
var coords, state = this._zoomState;
if (!state || !isTouchEvent(event)) {
return
}
if (void 0 !== state.pointer1) {
coords = getMultitouchEventCoords(event, state.pointer1);
if (coords) {
state.x1 = coords.x;
state.y1 = coords.y
}
}
if (void 0 !== state.pointer2) {
coords = getMultitouchEventCoords(event, state.pointer2);
if (coords) {
state.x2 = coords.x;
state.y2 = coords.y
}
}
},
_endZoom: function(event) {
var startDistance, currentDistance, state = this._zoomState;
if (!state || !isTouchEvent(event)) {
return
}
if (state.ready) {
startDistance = getDistance(state.x1_0, state.y1_0, state.x2_0, state.y2_0);
currentDistance = getDistance(state.x1, state.y1, state.x2, state.y2);
this._fire(EVENT_ZOOM, {
ratio: currentDistance / startDistance,
x: (state.x1_0 + state.x2_0) / 2,
y: (state.y1_0 + state.y2_0) / 2
})
}
this._zoomState = null
},
_startHover: function(event, data) {
this._doHover(event, data, true)
},
_moveHover: function(event, data) {
this._doHover(event, data, false)
},
_doHover: function(event, data, isTouch) {
var that = this;
if (that._dragState && that._dragState.active || that._zoomState && that._zoomState.ready) {
that._cancelHover();
return
}
if (isTouchEvent(event) !== isTouch || that._hoverTarget === event.target || that._hoverState && that._hoverState.data === data) {
return
}
that._cancelHover();
if (data) {
that._hoverState = {
data: data
};
that._fire(EVENT_HOVER_ON, {
data: data
})
}
that._hoverTarget = event.target
},
_cancelHover: function() {
var state = this._hoverState;
this._hoverState = this._hoverTarget = null;
if (state) {
this._fire(EVENT_HOVER_OFF, {
data: state.data
})
}
},
_startFocus: function(event, data) {
this._doFocus(event, data, true)
},
_moveFocus: function(event, data) {
this._doFocus(event, data, false)
},
_doFocus: function(event, data, isTouch) {
var that = this;
if (that._dragState && that._dragState.active || that._zoomState && that._zoomState.ready) {
that._cancelFocus();
return
}
if (isTouchEvent(event) !== isTouch) {
return
}
that._focus.turnOff();
data && that._focus.turnOn(data, getEventCoords(event))
},
_cancelFocus: function() {
this._focus.cancel()
},
_createEventHandlers: function(DATA_KEY) {
var that = this;
that._docHandlers = {};
that._rootHandlers = {};
that._rootHandlers[EVENTS.start] = that._docHandlers[EVENTS.start] = function(event) {
var isTouch = isTouchEvent(event),
data = getData(event);
if (isTouch && !that._isTouchEnabled) {
return
}
if (data) {
event.preventDefault();
event.stopPropagation()
}
that._startClick(event, data);
that._startDrag(event, data);
that._startZoom(event, data);
that._startHover(event, data);
that._startFocus(event, data)
};
that._docHandlers[EVENTS.move] = function(event) {
var isTouch = isTouchEvent(event),
data = getData(event);
if (isTouch && !that._isTouchEnabled) {
return
}
that._moveDrag(event, data);
that._moveZoom(event, data);
that._moveHover(event, data);
that._moveFocus(event, data)
};
that._docHandlers[EVENTS.end] = function(event) {
var isTouch = isTouchEvent(event),
data = getData(event);
if (isTouch && !that._isTouchEnabled) {
return
}
that._endClick(event, data);
that._endDrag(event, data);
that._endZoom(event, data)
};
that._rootHandlers[EVENTS.wheel] = function(event) {
that._cancelFocus();
if (!that._isWheelEnabled) {
return
}
var data = getData(event);
if (data) {
event.preventDefault();
event.stopPropagation();
that._wheelZoom(event, data)
}
};
that._wheelLock = {
dir: 0
};
function getData(event) {
var target = event.target;
return ("tspan" === target.tagName ? target.parentNode : target)[DATA_KEY]
}
},
_createProjectionHandlers: function(projection) {
var that = this;
projection.on({
center: handler,
zoom: handler
});
function handler() {
that._cancelFocus()
}
},
reset: function() {
var that = this;
that._clickState = null;
that._endDrag();
that._cancelHover();
that._cancelFocus()
},
setOptions: function(options) {
var that = this;
that.reset();
that._detachHandlers();
that._isTouchEnabled = !!(0, _utils3.parseScalar)(options.touchEnabled, true);
that._isWheelEnabled = !!(0, _utils3.parseScalar)(options.wheelEnabled, true);
that._attachHandlers()
},
_detachHandlers: function() {
var that = this;
if (that._isTouchEnabled) {
that._root.css({
"touch-action": "",
"-webkit-user-select": ""
}).off(_addNamespace("MSHoldVisual", _NAME)).off(_addNamespace("contextmenu", _NAME))
}
_events_engine2.default.off(_dom_adapter2.default.getDocument(), that._docHandlers);
that._root.off(that._rootHandlers)
},
_attachHandlers: function() {
var that = this;
if (that._isTouchEnabled) {
that._root.css({
"touch-action": "none",
"-webkit-user-select": "none"
}).on(_addNamespace("MSHoldVisual", _NAME), function(event) {
event.preventDefault()
}).on(_addNamespace("contextmenu", _NAME), function(event) {
isTouchEvent(event) && event.preventDefault()
})
}
_events_engine2.default.on(_dom_adapter2.default.getDocument(), that._docHandlers);
that._root.on(that._rootHandlers)
}
};
var Focus = function(fire) {
var _x, _y, that = this,
_activeData = null,
_data = null,
_disabled = false,
_offTimer = null;
that.dispose = function() {
clearTimeout(_offTimer);
that.turnOn = that.turnOff = that.cancel = that.dispose = that = fire = _activeData = _data = _offTimer = null
};
that.turnOn = function(data, coords) {
if (data === _data && _disabled) {
return
}
_disabled = false;
_data = data;
if (_activeData) {
_x = coords.x;
_y = coords.y;
if (_data === _activeData) {
fire(EVENT_FOCUS_MOVE, {
data: _data,
x: _x,
y: _y
});
onCheck(true)
} else {
fire(EVENT_FOCUS_ON, {
data: _data,
x: _x,
y: _y,
done: onCheck
})
}
} else {
_x = coords.x;
_y = coords.y;
fire(EVENT_FOCUS_ON, {
data: _data,
x: _x,
y: _y,
done: onCheck
})
}
function onCheck(result) {
_disabled = !result;
if (result) {
_activeData = _data;
clearTimeout(_offTimer);
_offTimer = null
}
}
};
that.turnOff = function() {
_data = null;
if (_activeData && !_disabled) {
_offTimer = _offTimer || setTimeout(function() {
_offTimer = null;
fire(EVENT_FOCUS_OFF, {
data: _activeData
});
_activeData = null
}, FOCUS_OFF_DELAY)
}
};
that.cancel = function() {
clearTimeout(_offTimer);
if (_activeData) {
fire(EVENT_FOCUS_OFF, {
data: _activeData
})
}
_activeData = _data = _offTimer = null
}
};
_event_emitter2.default.makeEventEmitter(Tracker);
exports.Tracker = Tracker;
var originFocus = Focus;
exports._DEBUG_forceEventMode = function(mode) {
setupEvents(mode)
};
exports.Focus = Focus;
exports._DEBUG_stubFocusType = function(focusType) {
Focus = focusType
};
exports._DEBUG_restoreFocusType = function() {
Focus = originFocus
};
function getDistance(x1, y1, x2, y2) {
return _sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))
}
function isTouchEvent(event) {
var type = event.originalEvent.type,
pointerType = event.originalEvent.pointerType;
return /^touch/.test(type) || /^MSPointer/.test(type) && 4 !== pointerType || /^pointer/.test(type) && "mouse" !== pointerType
}
function selectItem(flags, items) {
var item, i = 0,
ii = flags.length;
for (; i < ii; ++i) {
if (flags[i]) {
item = items[i];
break
}
}
return _addNamespace(item || items[i], _NAME)
}
function setupEvents() {
var flags = [navigator.pointerEnabled, navigator.msPointerEnabled, _window2.default.hasProperty("ontouchstart")];
if (arguments.length) {
flags = ["pointer" === arguments[0], "MSPointer" === arguments[0], "touch" === arguments[0]]
}
EVENTS = {
start: selectItem(flags, ["pointerdown", "MSPointerDown", "touchstart mousedown", "mousedown"]),
move: selectItem(flags, ["pointermove", "MSPointerMove", "touchmove mousemove", "mousemove"]),
end: selectItem(flags, ["pointerup", "MSPointerUp", "touchend mouseup", "mouseup"]),
wheel: _addNamespace(_wheel.name, _NAME)
}
}
function getEventCoords(event) {
var originalEvent = event.originalEvent,
touch = originalEvent.touches && originalEvent.touches[0] || {};
return {
x: touch.pageX || originalEvent.pageX || event.pageX,
y: touch.pageY || originalEvent.pageY || event.pageY
}
}
function getPointerId(event) {
return event.originalEvent.pointerId
}
function getMultitouchEventCoords(event, pointerId) {
var originalEvent = event.originalEvent;
if (void 0 !== originalEvent.pointerId) {
originalEvent = originalEvent.pointerId === pointerId ? originalEvent : null
} else {
originalEvent = originalEvent.touches[pointerId]
}
return originalEvent ? {
x: originalEvent.pageX || event.pageX,
y: originalEvent.pageY || event.pageY
} : null
}
function adjustWheelDelta(delta, lock) {
if (0 === delta) {
return 0
}
var _delta = _abs(delta),
sign = _round(delta / _delta);
if (lock.dir && sign !== lock.dir) {
return 0
}
lock.dir = sign;
if (_delta < .1) {
_delta = 0
} else {
if (_delta < 1) {
_delta = 1
} else {
if (_delta > 4) {
_delta = 4
} else {
_delta = _round(_delta)
}
}
}
return sign * _delta
}
},
/*!***************************************************************!*\
!*** ./artifacts/transpiled/viz/vector_map/data_exchanger.js ***!
\***************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var Callbacks = __webpack_require__( /*! ../../core/utils/callbacks */ 27);
function DataExchanger() {
this._store = {}
}
DataExchanger.prototype = {
constructor: DataExchanger,
dispose: function() {
this._store = null;
return this
},
_get: function(category, name) {
var store = this._store[category] || (this._store[category] = {});
return store[name] || (store[name] = {
callbacks: Callbacks()
})
},
set: function(category, name, data) {
var item = this._get(category, name);
item.data = data;
item.callbacks.fire(data);
return this
},
bind: function(category, name, callback) {
var item = this._get(category, name);
item.callbacks.add(callback);
item.data && callback(item.data);
return this
},
unbind: function(category, name, callback) {
var item = this._get(category, name);
item.callbacks.remove(callback);
return this
}
};
exports.DataExchanger = DataExchanger
},
/*!*******************************************************!*\
!*** ./artifacts/transpiled/viz/vector_map/legend.js ***!
\*******************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
each = __webpack_require__( /*! ../../core/utils/iterator */ 3).each,
_extend = extend,
_each = each,
legendModule = __webpack_require__( /*! ../components/legend */ 202),
_BaseLegend = legendModule.Legend;
var unknownSource = {
category: "UNKNOWN",
name: "UNKNOWN"
};
function buildData(partition, values, field) {
var i, item, ii = values.length,
list = [];
for (i = 0; i < ii; ++i) {
list[i] = item = {
start: partition[i],
end: partition[i + 1],
index: i
};
item[field] = values[i];
item.states = {
normal: {
fill: item.color
}
};
item.visible = true
}
return list
}
var Legend = function(parameters) {
var that = this;
that._params = parameters;
that._root = parameters.renderer.g().attr({
"class": "dxm-legend"
}).linkOn(parameters.container, {
name: "legend",
after: "legend-base"
}).enableLinks().linkAppend();
parameters.layoutControl.addItem(that);
_BaseLegend.call(that, {
renderer: parameters.renderer,
widget: parameters.widget,
group: that._root,
backgroundClass: null,
itemsGroupClass: null,
textField: "text",
getFormatObject: function(data) {
return data
}
});
that._onDataChanged = function(data) {
that._updateData(data)
}
};
Legend.prototype = _extend(__webpack_require__( /*! ../../core/utils/object */ 47).clone(_BaseLegend.prototype), {
constructor: Legend,
dispose: function() {
var that = this;
that._params.layoutControl.removeItem(that);
that._unbindData();
that._root.linkRemove().linkOff();
that._params = that._root = that._onDataChanged = null;
return _BaseLegend.prototype.dispose.apply(that, arguments)
},
resize: function(size) {
this._params.notifyDirty();
if (null === size) {
this.erase()
} else {
this.draw(size.width, size.height)
}
this._params.notifyReady()
},
locate: _BaseLegend.prototype.shift,
_updateData: function(data) {
this._options.defaultColor = data && data.defaultColor;
this.update(data ? buildData(data.partition, data.values, this._dataName) : [], this._options, this._params.themeManager.theme("legend").title);
this.updateLayout()
},
_unbindData: function() {
if (this._dataCategory) {
this._params.dataExchanger.unbind(this._dataCategory, this._dataName, this._onDataChanged)
}
},
_bindData: function(arg) {
this._params.dataExchanger.bind(this._dataCategory = arg.category, this._dataName = arg.name, this._onDataChanged)
},
setOptions: function(options) {
var that = this;
that.update(that._data, options, this._params.themeManager.theme("legend").title);
that._unbindData();
var source = options.source;
that._bindData(source ? {
category: source.layer,
name: source.grouping
} : unknownSource);
that.updateLayout();
return that
}
});
function LegendsControl(parameters) {
this._params = parameters;
this._items = [];
parameters.container.virtualLink("legend-base")
}
LegendsControl.prototype = {
constructor: LegendsControl,
dispose: function() {
_each(this._items, function(_, item) {
item.dispose()
});
this._params = this._items = null
},
setOptions: function(options) {
var i, optionList = options && options.length ? options : [],
items = this._items,
ii = optionList.length,
params = this._params,
theme = params.themeManager.theme("legend");
for (i = items.length; i < ii; ++i) {
items[i] = new Legend(params)
}
for (i = items.length - 1; i >= ii; --i) {
items[i].dispose();
items.splice(i, 1)
}
params.layoutControl.suspend();
for (i = 0; i < ii; ++i) {
items[i].setOptions(_extend(true, {}, theme, optionList[i]))
}
params.layoutControl.resume()
}
};
exports.LegendsControl = LegendsControl;
var originalLegend = Legend;
exports._TESTS_Legend = Legend;
exports._TESTS_stubLegendType = function(stub) {
Legend = stub
};
exports._TESTS_restoreLegendType = function() {
Legend = originalLegend
}
},
/*!*******************************************************!*\
!*** ./artifacts/transpiled/viz/vector_map/layout.js ***!
\*******************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var inArray = __webpack_require__( /*! ../../core/utils/array */ 14).inArray,
each = __webpack_require__( /*! ../../core/utils/iterator */ 3).each,
_round = Math.round,
_min = Math.min,
_max = Math.max,
_each = each,
_inArray = inArray,
horizontalAlignmentMap = {
left: 0,
center: 1,
right: 2
},
verticalAlignmentMap = {
top: 0,
bottom: 1
};
function getCellIndex(options) {
return 3 * verticalAlignmentMap[options.verticalAlignment] + horizontalAlignmentMap[options.horizontalAlignment]
}
function createCells(canvas, items) {
var hStep = (canvas.right - canvas.left) / 3,
vStep = (canvas.bottom - canvas.top) / 2,
h1 = canvas.left,
h2 = _round(h1 + hStep),
h3 = _round(h1 + hStep + hStep),
h4 = canvas.right,
v1 = canvas.top,
v2 = _round(v1 + vStep),
v3 = canvas.bottom,
cells = [{
rect: [h1, v1, h2, v2]
}, {
rect: [h2, v1, h3, v2],
center: true
}, {
rect: [h3, v1, h4, v2],
horInversion: true
}, {
rect: [h1, v2, h2, v3],
verInversion: true
}, {
rect: [h2, v2, h3, v3],
center: true,
verInversion: true
}, {
rect: [h3, v2, h4, v3],
horInversion: true,
verInversion: true
}],
itemsList = [
[],
[],
[],
[],
[],
[]
];
_each(items, function(_, item) {
var options = item.getLayoutOptions();
if (options) {
itemsList[getCellIndex(options)].push({
item: item,
width: options.width,
height: options.height
})
}
});
_each(cells, function(i, cell) {
if (itemsList[i].length) {
cell.items = itemsList[i]
} else {
if (cell.center) {
cell.rect[0] = cell.rect[2] = (cell.rect[0] + cell.rect[2]) / 2
} else {
cell.rect[cell.horInversion ? 0 : 2] = cell.rect[cell.horInversion ? 2 : 0]
}
cell.rect[cell.verInversion ? 1 : 3] = cell.rect[cell.verInversion ? 3 : 1]
}
});
return cells
}
function adjustCellSizes(cells) {
_each([0, 1, 2, 3, 4, 5], function(_, index) {
var cell = cells[index],
otherCell = cells[(index + 3) % 6];
if (cell.items) {
if (!otherCell.items) {
cell.rect[1] = _min(cell.rect[1], otherCell.rect[3]);
cell.rect[3] = _max(cell.rect[3], otherCell.rect[1])
}
}
});
_each([1, 4], function(_, index) {
var size1, size2, cell = cells[index],
otherCell1 = cells[index - 1],
otherCell2 = cells[index + 1];
if (cell.items) {
if (!otherCell1.items && !otherCell2.items) {
size1 = cell.rect[0] - otherCell1.rect[2];
size2 = otherCell2.rect[0] - cell.rect[2];
if (size1 > size2) {
if (size1 / size2 >= 2) {
cell.rect[0] -= size1;
cell.right = true
} else {
cell.rect[0] -= size2;
cell.rect[2] += size2
}
} else {
if (size2 / size1 >= 2) {
cell.rect[2] += size2;
cell.center = null
} else {
cell.rect[0] -= size1;
cell.rect[2] += size1
}
}
}
} else {
if (otherCell1.items) {
otherCell1.rect[2] = (cell.rect[0] + cell.rect[2]) / 2
}
if (otherCell2.items) {
otherCell2.rect[0] = (cell.rect[0] + cell.rect[2]) / 2
}
}
})
}
function adjustCellsAndApplyLayout(cells, forceMode) {
var hasHiddenItems = false;
adjustCellSizes(cells);
_each(cells, function(_, cell) {
if (cell.items) {
hasHiddenItems = applyCellLayout(cell, forceMode) || hasHiddenItems
}
});
return hasHiddenItems
}
function applyCellLayout(cell, forceMode) {
var cellRect = cell.rect,
cellWidth = cellRect[2] - cellRect[0],
cellHeight = cellRect[3] - cellRect[1],
xOffset = 0,
yOffset = 0,
currentHeight = 0,
totalL = cellRect[2],
totalT = cellRect[3],
totalR = cellRect[0],
totalB = cellRect[1],
moves = [],
hasHiddenItems = false;
_each(cell.items, function(_, item) {
if (item.width > cellWidth || item.height > cellHeight) {
moves.push(null);
hasHiddenItems = true;
return forceMode || false
}
if (xOffset + item.width > cellWidth) {
yOffset += currentHeight;
xOffset = currentHeight = 0
}
if (yOffset + item.height > cellHeight) {
moves.push(null);
hasHiddenItems = true;
return forceMode || false
}
currentHeight = _max(currentHeight, item.height);
var dx = cell.horInversion ? cellRect[2] - item.width - xOffset : cellRect[0] + xOffset,
dy = cell.verInversion ? cellRect[3] - item.height - yOffset : cellRect[1] + yOffset;
xOffset += item.width;
totalL = _min(totalL, dx);
totalT = _min(totalT, dy);
totalR = _max(totalR, dx + item.width);
totalB = _max(totalB, dy + item.height);
moves.push([dx, dy])
});
if (forceMode || !hasHiddenItems) {
xOffset = 0;
if (cell.right) {
xOffset = cellRect[2] - cellRect[0] - totalR + totalL
} else {
if (cell.center) {
xOffset = _round((cellRect[2] - cellRect[0] - totalR + totalL) / 2)
}
}
_each(cell.items, function(i, item) {
var move = moves[i];
if (move) {
item.item.locate(move[0] + xOffset, move[1])
} else {
item.item.resize(null)
}
});
cell.rect = [totalL, totalT, totalR, totalB];
cell.items = null
}
return hasHiddenItems
}
function applyLayout(canvas, items) {
var cells = createCells(canvas, items);
if (adjustCellsAndApplyLayout(cells)) {
adjustCellsAndApplyLayout(cells, true)
}
}
function LayoutControl() {
var that = this;
that._items = [];
that._suspended = 0;
that._updateLayout = function() {
that._update()
}
}
LayoutControl.prototype = {
constructor: LayoutControl,
dispose: function() {
this._items = this._updateLayout = null
},
setSize: function(canvas) {
this._canvas = canvas;
this._update()
},
suspend: function() {
++this._suspended
},
resume: function() {
if (0 === --this._suspended) {
this._update()
}
},
addItem: function(item) {
this._items.push(item);
item.updateLayout = this._updateLayout
},
removeItem: function(item) {
this._items.splice(_inArray(item, this._items), 1);
item.updateLayout = null
},
_update: function() {
var canvas;
if (0 === this._suspended) {
canvas = this._canvas;
_each(this._items, function(_, item) {
item.resize(canvas)
});
applyLayout({
left: canvas.left,
top: canvas.top,
right: canvas.width + canvas.left,
bottom: canvas.height + canvas.top
}, this._items)
}
}
};
exports.LayoutControl = LayoutControl
},
/*!**********************************************************!*\
!*** ./artifacts/transpiled/viz/vector_map/map_layer.js ***!
\**********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports._TESTS_findGroupingIndex = exports._TESTS_groupBySize = exports._TESTS_stub_groupBySize = exports._TESTS_groupByColor = exports._TESTS_stub_groupByColor = exports._TESTS_performGrouping = exports._TESTS_stub_performGrouping = exports._TESTS_createProxy = exports._TESTS_stub_MapLayerElement = exports._TESTS_MapLayerElement = exports._TESTS_stub_selectStrategy = exports._TESTS_selectStrategy = exports._TESTS_stub_MapLayer = exports._TESTS_MapLayer = void 0;
exports.getMaxBound = getMaxBound;
exports.MapLayerCollection = MapLayerCollection;
var _common = __webpack_require__( /*! ../../core/utils/common */ 4);
var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 0);
var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 3);
var _data_helper = __webpack_require__( /*! ../../data_helper */ 79);
var _data_helper2 = _interopRequireDefault(_data_helper);
var _type = __webpack_require__( /*! ../../core/utils/type */ 1);
var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 6);
var _deferred2 = _interopRequireDefault(_deferred);
var _utils = __webpack_require__( /*! ../core/utils */ 12);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
var _noop = _common.noop;
var _extend = _extend2.extend;
var _each = _iterator.each;
var _concat = Array.prototype.concat;
var TYPE_AREA = "area";
var TYPE_LINE = "line";
var TYPE_MARKER = "marker";
var STATE_DEFAULT = 0;
var STATE_HOVERED = 1;
var STATE_SELECTED = 2;
var STATE_TO_INDEX = [0, 1, 2, 2];
var TOLERANCE = 1;
var SELECTIONS = {
none: null,
single: -1,
multiple: NaN
};
var _isArray = Array.isArray;
var _Number = Number;
var _String = String;
var _abs = Math.abs;
var _round = Math.round;
var _min = Math.min;
var _max = Math.max;
var _sqrt = Math.sqrt;
function getMaxBound(arr) {
return arr.reduce(function(a, c) {
return c ? [_min(a[0], c[0]), _min(a[1], c[1]), _max(a[2], c[2]), _max(a[3], c[3])] : a
}, arr[0])
}
function getSelection(selectionMode) {
var selection = (0, _utils.normalizeEnum)(selectionMode);
selection = selection in SELECTIONS ? SELECTIONS[selection] : SELECTIONS.single;
if (null !== selection) {
selection = {
state: {},
single: selection
}
}
return selection
}
function getName(opt, index) {
return (opt[index] || {}).name
}
function EmptySource() {}
EmptySource.prototype.count = function() {
return 0
};
function ArraySource(raw) {
this.raw = raw
}
ArraySource.prototype = {
constructor: ArraySource,
count: function() {
return this.raw.length
},
item: function(index) {
return this.raw[index]
},
geometry: function(item) {
return {
coordinates: item.coordinates
}
},
attributes: function(item) {
return item.attributes
},
getBBox: function(index) {
return 0 === arguments.length ? void 0 : this.raw[index].bbox
}
};
function GeoJsonSource(raw) {
this.raw = raw
}
GeoJsonSource.prototype = {
constructor: GeoJsonSource,
count: function() {
return this.raw.features.length
},
item: function(index) {
return this.raw.features[index]
},
geometry: function(item) {
return item.geometry
},
attributes: function(item) {
return item.properties
},
getBBox: function(index) {
return 0 === arguments.length ? this.raw.bbox : this.raw.features[index].bbox
}
};
function isGeoJsonObject(obj) {
return _isArray(obj.features)
}
function unwrapFromDataSource(source) {
var sourceType;
if (source) {
if (isGeoJsonObject(source)) {
sourceType = GeoJsonSource
} else {
if (1 === source.length && source[0] && isGeoJsonObject(source[0])) {
sourceType = GeoJsonSource;
source = source[0]
} else {
if (_isArray(source)) {
sourceType = ArraySource
}
}
}
}
sourceType = sourceType || EmptySource;
return new sourceType(source)
}
function wrapToDataSource(option) {
return option ? isGeoJsonObject(option) ? [option] : option : []
}
function customizeHandles(proxies, callback, widget) {
callback.call(widget, proxies)
}
function setAreaLabelVisibility(label) {
label.text.attr({
visibility: label.size[0] / label.spaceSize[0] < TOLERANCE && label.size[1] / label.spaceSize[1] < TOLERANCE ? null : "hidden"
})
}
function setLineLabelVisibility(label) {
label.text.attr({
visibility: label.size[0] / label.spaceSize[0] < TOLERANCE || label.size[1] / label.spaceSize[1] < TOLERANCE ? null : "hidden"
})
}
function getDataValue(proxy, dataField) {
return proxy.attribute(dataField)
}
var TYPE_TO_TYPE_MAP = {
Point: TYPE_MARKER,
MultiPoint: TYPE_LINE,
LineString: TYPE_LINE,
MultiLineString: TYPE_LINE,
Polygon: TYPE_AREA,
MultiPolygon: TYPE_AREA
};
function pick(a, b) {
return void 0 !== a ? a : b
}
function guessTypeByData(sample) {
var type = TYPE_TO_TYPE_MAP[sample.type],
coordinates = sample.coordinates;
if (!type) {
if ("number" === typeof coordinates[0]) {
type = TYPE_MARKER
} else {
if ("number" === typeof coordinates[0][0]) {
type = TYPE_LINE
} else {
type = TYPE_AREA
}
}
}
return type
}
var selectStrategy = function(options, data) {
var sample, type = (0, _utils.normalizeEnum)(options.type),
elementType = (0, _utils.normalizeEnum)(options.elementType),
strategy = _extend({}, emptyStrategy);
if (data.count() > 0) {
sample = data.geometry(data.item(0));
type = strategiesByType[type] ? type : guessTypeByData(sample);
_extend(strategy, strategiesByType[type]);
strategy.fullType = strategy.type = type;
if (strategiesByGeometry[type]) {
_extend(strategy, strategiesByGeometry[type](sample))
}
if (strategiesByElementType[type]) {
elementType = strategiesByElementType[type][elementType] ? elementType : strategiesByElementType[type]._default;
_extend(strategy, strategiesByElementType[type][elementType]);
strategy.elementType = elementType;
strategy.fullType += ":" + elementType
}
}
return strategy
};
function applyElementState(figure, styles, state, field) {
figure[field].attr(styles[field][state])
}
var emptyStrategy = {
setup: _noop,
reset: _noop,
arrange: _noop,
updateGrouping: _noop,
getDefaultColor: _noop
};
var strategiesByType = {};
strategiesByType[TYPE_AREA] = {
projectLabel: projectAreaLabel,
transform: transformPointList,
transformLabel: transformAreaLabel,
draw: function(context, figure, data) {
figure.root = context.renderer.path([], "area").data(context.dataKey, data)
},
refresh: _noop,
getLabelOffset: function(label) {
setAreaLabelVisibility(label);
return [0, 0]
},
getStyles: function(settings) {
var color = settings.color || null,
borderColor = settings.borderColor || null,
borderWidth = pick(settings.borderWidth, null),
opacity = pick(settings.opacity, null);
return {
root: [{
"class": "dxm-area",
stroke: borderColor,
"stroke-width": borderWidth,
fill: color,
opacity: opacity
}, {
"class": "dxm-area dxm-area-hovered",
stroke: settings.hoveredBorderColor || borderColor,
"stroke-width": pick(settings.hoveredBorderWidth, borderWidth),
fill: settings.hoveredColor || color,
opacity: pick(settings.hoveredOpacity, opacity)
}, {
"class": "dxm-area dxm-area-selected",
stroke: settings.selectedBorderColor || borderColor,
"stroke-width": pick(settings.selectedBorderWidth, borderWidth),
fill: settings.selectedColor || color,
opacity: pick(settings.selectedOpacity, opacity)
}]
}
},
setState: function(figure, styles, state) {
applyElementState(figure, styles, state, "root")
},
hasLabelsGroup: true,
updateGrouping: function(context) {
groupByColor(context)
},
getDefaultColor: _noop
};
strategiesByType[TYPE_LINE] = {
projectLabel: projectLineLabel,
transform: transformPointList,
transformLabel: transformLineLabel,
draw: function(context, figure, data) {
figure.root = context.renderer.path([], "line").data(context.dataKey, data)
},
refresh: _noop,
getLabelOffset: function(label) {
setLineLabelVisibility(label);
return [0, 0]
},
getStyles: function(settings) {
var color = settings.color || settings.borderColor || null,
width = pick(settings.borderWidth, null),
opacity = pick(settings.opacity, null);
return {
root: [{
"class": "dxm-line",
stroke: color,
"stroke-width": width,
opacity: opacity
}, {
"class": "dxm-line dxm-line-hovered",
stroke: settings.hoveredColor || settings.hoveredBorderColor || color,
"stroke-width": pick(settings.hoveredBorderWidth, width),
opacity: pick(settings.hoveredOpacity, opacity)
}, {
"class": "dxm-line dxm-line-selected",
stroke: settings.selectedColor || settings.selectedBorderColor || color,
"stroke-width": pick(settings.selectedBorderWidth, width),
opacity: pick(settings.selectedOpacity, opacity)
}]
}
},
setState: function(figure, styles, state) {
applyElementState(figure, styles, state, "root")
},
hasLabelsGroup: true,
updateGrouping: function(context) {
groupByColor(context)
},
getDefaultColor: _noop
};
strategiesByType[TYPE_MARKER] = {
project: projectPoint,
transform: transformPoint,
draw: function(context, figure, data) {
figure.root = context.renderer.g();
this._draw(context, figure, data)
},
refresh: _noop,
hasLabelsGroup: false,
getLabelOffset: function(label, settings) {
return [_round((label.size[0] + _max(settings.size || 0, 0)) / 2) + 2, 0]
},
getStyles: function(settings) {
var styles = {
root: [{
"class": "dxm-marker"
}, {
"class": "dxm-marker dxm-marker-hovered"
}, {
"class": "dxm-marker dxm-marker-selected"
}]
};
this._getStyles(styles, settings);
return styles
},
setState: function(figure, styles, state) {
applyElementState(figure, styles, state, "root");
this._setState(figure, styles, state)
},
updateGrouping: function(context) {
groupByColor(context);
groupBySize(context)
},
getDefaultColor: function(ctx, palette) {
return ctx.params.themeManager.getAccentColor(palette)
}
};
var strategiesByGeometry = {};
strategiesByGeometry[TYPE_AREA] = function(sample) {
var coordinates = sample.coordinates;
return {
project: coordinates[0] && coordinates[0][0] && coordinates[0][0][0] && "number" === typeof coordinates[0][0][0][0] ? projectMultiPolygon : projectPolygon
}
};
strategiesByGeometry[TYPE_LINE] = function(sample) {
var coordinates = sample.coordinates;
return {
project: coordinates[0] && coordinates[0][0] && "number" === typeof coordinates[0][0][0] ? projectPolygon : projectLineString
}
};
var strategiesByElementType = {};
strategiesByElementType[TYPE_MARKER] = {
_default: "dot",
dot: {
setup: function(context) {
context.filter = context.renderer.shadowFilter("-40%", "-40%", "180%", "200%", 0, 1, 1, "#000000", .2)
},
reset: function(context) {
context.filter.dispose();
context.filter = null
},
_draw: function(ctx, figure, data) {
figure.back = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root);
figure.dot = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)
},
refresh: function(ctx, figure, data, proxy, settings) {
figure.dot.attr({
filter: settings.shadow ? ctx.filter.id : null
})
},
_getStyles: function(styles, style) {
var size = style.size > 0 ? _Number(style.size) : 0,
hoveredSize = size,
selectedSize = size + (style.selectedStep > 0 ? _Number(style.selectedStep) : 0),
hoveredBackSize = hoveredSize + (style.backStep > 0 ? _Number(style.backStep) : 0),
selectedBackSize = selectedSize + (style.backStep > 0 ? _Number(style.backStep) : 0),
color = style.color || null,
borderColor = style.borderColor || null,
borderWidth = pick(style.borderWidth, null),
opacity = pick(style.opacity, null),
backColor = style.backColor || null,
backOpacity = pick(style.backOpacity, null);
styles.dot = [{
r: size / 2,
stroke: borderColor,
"stroke-width": borderWidth,
fill: color,
opacity: opacity
}, {
r: hoveredSize / 2,
stroke: style.hoveredBorderColor || borderColor,
"stroke-width": pick(style.hoveredBorderWidth, borderWidth),
fill: style.hoveredColor || color,
opacity: pick(style.hoveredOpacity, opacity)
}, {
r: selectedSize / 2,
stroke: style.selectedBorderColor || borderColor,
"stroke-width": pick(style.selectedBorderWidth, borderWidth),
fill: style.selectedColor || color,
opacity: pick(style.selectedOpacity, opacity)
}];
styles.back = [{
r: size / 2,
stroke: "none",
"stroke-width": 0,
fill: backColor,
opacity: backOpacity
}, {
r: hoveredBackSize / 2,
stroke: "none",
"stroke-width": 0,
fill: backColor,
opacity: backOpacity
}, {
r: selectedBackSize / 2,
stroke: "none",
"stroke-width": 0,
fill: backColor,
opacity: backOpacity
}]
},
_setState: function(figure, styles, state) {
applyElementState(figure, styles, state, "dot");
applyElementState(figure, styles, state, "back")
}
},
bubble: {
_draw: function(ctx, figure, data) {
figure.bubble = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)
},
refresh: function(ctx, figure, data, proxy, settings) {
figure.bubble.attr({
r: settings.size / 2
})
},
_getStyles: function(styles, style) {
var color = style.color || null,
borderColor = style.borderColor || null,
borderWidth = pick(style.borderWidth, null),
opacity = pick(style.opacity, null);
styles.bubble = [{
stroke: borderColor,
"stroke-width": borderWidth,
fill: color,
opacity: opacity
}, {
stroke: style.hoveredBorderColor || borderColor,
"stroke-width": pick(style.hoveredBorderWidth, borderWidth),
fill: style.hoveredColor || style.color,
opacity: pick(style.hoveredOpacity, opacity)
}, {
stroke: style.selectedBorderColor || borderColor,
"stroke-width": pick(style.selectedBorderWidth, borderWidth),
fill: style.selectedColor || style.color,
opacity: pick(style.selectedOpacity, opacity)
}]
},
_setState: function(figure, styles, state) {
applyElementState(figure, styles, state, "bubble")
},
arrange: function(context, handles) {
var i, minValue, maxValue, deltaValue, deltaSize, values = [],
ii = values.length = handles.length,
settings = context.settings,
dataField = settings.dataField,
minSize = settings.minSize > 0 ? _Number(settings.minSize) : 0,
maxSize = settings.maxSize > minSize ? _Number(settings.maxSize) : minSize;
if (settings.sizeGroups) {
return
}
for (i = 0; i < ii; ++i) {
values[i] = _max(getDataValue(handles[i].proxy, dataField) || 0, 0)
}
minValue = _min.apply(null, values);
maxValue = _max.apply(null, values);
deltaValue = maxValue - minValue || 1;
deltaSize = maxSize - minSize;
for (i = 0; i < ii; ++i) {
handles[i]._settings.size = minSize + deltaSize * (values[i] - minValue) / deltaValue
}
},
updateGrouping: function(context) {
var dataField = context.settings.dataField;
strategiesByType[TYPE_MARKER].updateGrouping(context);
groupBySize(context, function(proxy) {
return getDataValue(proxy, dataField)
})
}
},
pie: {
_draw: function(ctx, figure, data) {
figure.pie = ctx.renderer.g().append(figure.root);
figure.border = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)
},
refresh: function(ctx, figure, data, proxy, settings) {
var values = getDataValue(proxy, ctx.settings.dataField) || [],
colors = settings._colors,
sum = 0,
pie = figure.pie,
renderer = ctx.renderer,
dataKey = ctx.dataKey,
r = (settings.size > 0 ? _Number(settings.size) : 0) / 2,
start = 90,
end = start,
zeroSum = false;
sum = values.reduce(function(total, item) {
return total + (item || 0)
}, 0);
if (0 === sum) {
zeroSum = true;
sum = 360 / values.length
}
values.forEach(function(item, i) {
start = end;
end += zeroSum ? sum : (item || 0) / sum * 360;
renderer.arc(0, 0, 0, r, start, end).attr({
"stroke-linejoin": "round",
fill: colors[i]
}).data(dataKey, data).append(pie)
});
figure.border.attr({
r: r
})
},
_getStyles: function(styles, style) {
var opacity = pick(style.opacity, null),
borderColor = style.borderColor || null,
borderWidth = pick(style.borderWidth, null);
styles.pie = [{
opacity: opacity
}, {
opacity: pick(style.hoveredOpacity, opacity)
}, {
opacity: pick(style.selectedOpacity, opacity)
}];
styles.border = [{
stroke: borderColor,
"stroke-width": borderWidth
}, {
stroke: style.hoveredBorderColor || borderColor,
"stroke-width": pick(style.hoveredBorderWidth, borderWidth)
}, {
stroke: style.selectedBorderColor || borderColor,
"stroke-width": pick(style.selectedBorderWidth, borderWidth)
}]
},
_setState: function(figure, styles, state) {
applyElementState(figure, styles, state, "pie");
applyElementState(figure, styles, state, "border")
},
arrange: function(context, handles) {
var i, values, palette, ii = handles.length,
dataField = context.settings.dataField,
count = 0;
for (i = 0; i < ii; ++i) {
values = getDataValue(handles[i].proxy, dataField);
if (values && values.length > count) {
count = values.length
}
}
if (count > 0) {
palette = context.params.themeManager.createPalette(context.settings.palette, {
useHighlight: true,
extensionMode: "alternate"
});
values = palette.generateColors(count);
context.settings._colors = values;
context.grouping.color = {
callback: _noop,
field: "",
partition: [],
values: []
};
context.params.dataExchanger.set(context.name, "color", {
partition: [],
values: values
})
}
}
},
image: {
_draw: function(ctx, figure, data) {
figure.image = ctx.renderer.image(null, null, null, null, null, "center").attr({
"pointer-events": "visible"
}).data(ctx.dataKey, data).append(figure.root)
},
refresh: function(ctx, figure, data, proxy) {
figure.image.attr({
href: getDataValue(proxy, ctx.settings.dataField)
})
},
_getStyles: function(styles, style) {
var size = style.size > 0 ? _Number(style.size) : 0,
hoveredSize = size + (style.hoveredStep > 0 ? _Number(style.hoveredStep) : 0),
selectedSize = size + (style.selectedStep > 0 ? _Number(style.selectedStep) : 0),
opacity = pick(style.opacity, null);
styles.image = [{
x: -size / 2,
y: -size / 2,
width: size,
height: size,
opacity: opacity
}, {
x: -hoveredSize / 2,
y: -hoveredSize / 2,
width: hoveredSize,
height: hoveredSize,
opacity: pick(style.hoveredOpacity, opacity)
}, {
x: -selectedSize / 2,
y: -selectedSize / 2,
width: selectedSize,
height: selectedSize,
opacity: pick(style.selectedOpacity, opacity)
}]
},
_setState: function(figure, styles, state) {
applyElementState(figure, styles, state, "image")
}
}
};
function projectPoint(projection, coordinates) {
return projection.project(coordinates)
}
function projectPointList(projection, coordinates) {
var i, output = [],
ii = output.length = coordinates.length;
for (i = 0; i < ii; ++i) {
output[i] = projection.project(coordinates[i])
}
return output
}
function projectLineString(projection, coordinates) {
return [projectPointList(projection, coordinates)]
}
function projectPolygon(projection, coordinates) {
var i, output = [],
ii = output.length = coordinates.length;
for (i = 0; i < ii; ++i) {
output[i] = projectPointList(projection, coordinates[i])
}
return output
}
function projectMultiPolygon(projection, coordinates) {
var i, output = [],
ii = output.length = coordinates.length;
for (i = 0; i < ii; ++i) {
output[i] = projectPolygon(projection, coordinates[i])
}
return _concat.apply([], output)
}
function transformPoint(content, projection, coordinates) {
var data = projection.transform(coordinates);
content.root.attr({
translateX: data[0],
translateY: data[1]
})
}
function transformList(projection, coordinates) {
var i, item, output = [],
ii = coordinates.length,
k = 0;
output.length = 2 * ii;
for (i = 0; i < ii; ++i) {
item = projection.transform(coordinates[i]);
output[k++] = item[0];
output[k++] = item[1]
}
return output
}
function transformPointList(content, projection, coordinates) {
var i, output = [],
ii = output.length = coordinates.length;
for (i = 0; i < ii; ++i) {
output[i] = transformList(projection, coordinates[i])
}
content.root.attr({
points: output
})
}
function transformAreaLabel(label, projection, coordinates) {
var data = projection.transform(coordinates[0]);
label.spaceSize = projection.getSquareSize(coordinates[1]);
label.text.attr({
translateX: data[0],
translateY: data[1]
});
setAreaLabelVisibility(label)
}
function transformLineLabel(label, projection, coordinates) {
var data = projection.transform(coordinates[0]);
label.spaceSize = projection.getSquareSize(coordinates[1]);
label.text.attr({
translateX: data[0],
translateY: data[1]
});
setLineLabelVisibility(label)
}
function getItemSettings(context, proxy, settings) {
var result = combineSettings(context.settings, settings);
applyGrouping(context.grouping, proxy, result);
if (void 0 === settings.color && settings.paletteIndex >= 0) {
result.color = result._colors[settings.paletteIndex]
}
return result
}
function applyGrouping(grouping, proxy, settings) {
_each(grouping, function(name, data) {
var index = findGroupingIndex(data.callback(proxy, data.field), data.partition);
if (index >= 0) {
settings[name] = data.values[index]
}
})
}
function findGroupingIndex(value, partition) {
var middle, start = 0,
end = partition.length - 1,
index = -1;
if (partition[start] <= value && value <= partition[end]) {
if (value === partition[end]) {
index = end - 1
} else {
while (end - start > 1) {
middle = start + end >> 1;
if (value < partition[middle]) {
end = middle
} else {
start = middle
}
}
index = start
}
}
return index
}
function raiseChanged(context, handle, state, name) {
context.params.eventTrigger(name, {
target: handle.proxy,
state: state
})
}
function combineSettings(common, partial) {
var obj = _extend({}, common, partial);
obj.label = _extend({}, common.label, obj.label);
obj.label.font = _extend({}, common.label.font, obj.label.font);
return obj
}
function processCommonSettings(context, options) {
var colors, i, palette, themeManager = context.params.themeManager,
strategy = context.str,
settings = combineSettings(_extend({
label: {},
color: strategy.getDefaultColor(context, options.palette)
}, themeManager.theme("layer:" + strategy.fullType)), options);
if (settings.paletteSize > 0) {
palette = themeManager.createDiscretePalette(settings.palette, settings.paletteSize);
for (i = 0, colors = []; i < settings.paletteSize; ++i) {
colors.push(palette.getColor(i))
}
settings._colors = colors
}
return settings
}
function valueCallback(proxy, dataField) {
return proxy.attribute(dataField)
}
var performGrouping = function(context, partition, settingField, dataField, valuesCallback) {
var values;
if (dataField && partition && partition.length > 1) {
values = valuesCallback(partition.length - 1);
context.grouping[settingField] = {
callback: (0, _type.isFunction)(dataField) ? dataField : valueCallback,
field: dataField,
partition: partition,
values: values
};
context.params.dataExchanger.set(context.name, settingField, {
partition: partition,
values: values,
defaultColor: context.settings.color
})
}
};
function dropGrouping(context) {
var name = context.name,
dataExchanger = context.params.dataExchanger;
_each(context.grouping, function(field) {
dataExchanger.set(name, field, null)
});
context.grouping = {}
}
var groupByColor = function(context) {
performGrouping(context, context.settings.colorGroups, "color", context.settings.colorGroupingField, function(count) {
var i, _palette = context.params.themeManager.createDiscretePalette(context.settings.palette, count),
list = [];
for (i = 0; i < count; ++i) {
list.push(_palette.getColor(i))
}
return list
})
};
var groupBySize = function(context, valueCallback) {
var settings = context.settings;
performGrouping(context, settings.sizeGroups, "size", valueCallback || settings.sizeGroupingField, function(count) {
var minSize = settings.minSize > 0 ? _Number(settings.minSize) : 0,
maxSize = settings.maxSize >= minSize ? _Number(settings.maxSize) : 0,
i = 0,
sizes = [];
if (count > 1) {
for (i = 0; i < count; ++i) {
sizes.push((minSize * (count - i - 1) + maxSize * i) / (count - 1))
}
} else {
if (1 === count) {
sizes.push((minSize + maxSize) / 2)
}
}
return sizes
})
};
function setFlag(flags, flag, state) {
if (state) {
flags |= flag
} else {
flags &= ~flag
}
return flags
}
function hasFlag(flags, flag) {
return !!(flags & flag)
}
function createLayerProxy(layer, name, index) {
var proxy = {
index: index,
name: name,
getElements: function() {
return layer.getProxies()
},
clearSelection: function(_noEvent) {
layer.clearSelection(_noEvent);
return proxy
},
getDataSource: function() {
return layer.getDataSource()
},
getBounds: function() {
return layer.getBounds()
}
};
return proxy
}
var MapLayer = function(params, container, name, index) {
var that = this;
that._params = params;
that._onProjection();
that.proxy = createLayerProxy(that, name, index);
that._context = {
name: name,
layer: that.proxy,
renderer: params.renderer,
projection: params.projection,
params: params,
dataKey: params.dataKey,
str: emptyStrategy,
hover: false,
selection: null,
grouping: {},
root: params.renderer.g().attr({
"class": "dxm-layer"
}).linkOn(container, name).linkAppend()
};
that._container = container;
that._options = {};
that._handles = [];
that._data = new EmptySource;
that._dataSourceLoaded = null
};
MapLayer.prototype = _extend({
constructor: MapLayer,
getDataReadyCallback: function() {
return this._dataSourceLoaded
},
_onProjection: function() {
var that = this;
that._removeHandlers = that._params.projection.on({
engine: function() {
that._project()
},
screen: function() {
that._transform()
},
center: function() {
that._transformCore()
},
zoom: function() {
that._transform()
}
})
},
getData: function() {
return this._data
},
_dataSourceLoadErrorHandler: function() {
this._dataSourceChangedHandler()
},
_dataSourceChangedHandler: function() {
var that = this;
that._data = unwrapFromDataSource(that._dataSource && that._dataSource.items());
that._update(true)
},
_dataSourceOptions: function() {
return {
paginate: false
}
},
_getSpecificDataSourceOption: function() {
return this._specificDataSourceOption
},
_offProjection: function() {
this._removeHandlers();
this._removeHandlers = null
},
dispose: function() {
var that = this;
that._disposeDataSource();
that._destroyHandles();
dropGrouping(that._context);
that._context.root.linkRemove().linkOff();
that._context.labelRoot && that._context.labelRoot.linkRemove().linkOff();
that._context.str.reset(that._context);
that._offProjection();
that._params = that._container = that._context = that.proxy = null;
return that
},
TESTS_getContext: function() {
return this._context
},
setOptions: function(options) {
var that = this;
options = that._options = options || {};
that._dataSourceLoaded = new _deferred2.default.Deferred;
if ("dataSource" in options && options.dataSource !== that._options_dataSource) {
that._options_dataSource = options.dataSource;
that._params.notifyDirty();
that._specificDataSourceOption = wrapToDataSource(options.dataSource);
that._refreshDataSource()
} else {
if (that._data.count() > 0) {
that._params.notifyDirty();
that._update(void 0 !== options.type && options.type !== that._context.str.type || void 0 !== options.elementType && options.elementType !== that._context.str.elementType)
}
}
that._transformCore()
},
_update: function(isContextChanged) {
var that = this,
context = that._context;
if (isContextChanged) {
context.str.reset(context);
context.root.clear();
context.labelRoot && context.labelRoot.clear();
that._params.tracker.reset();
that._destroyHandles();
context.str = selectStrategy(that._options, that._data);
context.str.setup(context);
that.proxy.type = context.str.type;
that.proxy.elementType = context.str.elementType
}
context.settings = processCommonSettings(context, that._options);
context.hasSeparateLabel = !!(context.settings.label.enabled && context.str.hasLabelsGroup);
context.hover = !!(0, _utils.parseScalar)(context.settings.hoverEnabled, true);
if (context.selection) {
_each(context.selection.state, function(_, handle) {
handle && handle.resetSelected()
})
}
context.selection = getSelection(context.settings.selectionMode);
if (context.hasSeparateLabel) {
if (!context.labelRoot) {
context.labelRoot = context.renderer.g().attr({
"class": "dxm-layer-labels"
}).linkOn(that._container, {
name: context.name + "-labels",
after: context.name
}).linkAppend();
that._transformCore()
}
} else {
if (context.labelRoot) {
context.labelRoot.linkRemove().linkOff();
context.labelRoot = null
}
}
if (isContextChanged) {
that._createHandles()
}
dropGrouping(context);
context.str.arrange(context, that._handles);
context.str.updateGrouping(context);
that._updateHandles();
that._params.notifyReady();
that._dataSourceLoaded.resolve();
that._dataSourceLoaded = null
},
getBounds: function() {
return getMaxBound(this._handles.map(function(_ref) {
var proxy = _ref.proxy;
return proxy.coordinates().map(function(coords) {
if (!_isArray(coords)) {
return
}
var initValue = coords[0];
return coords.reduce(function(min, c) {
return [_min(min[0], c[0]), _min(min[1], c[1]), _max(min[2], c[0]), _max(min[3], c[1])]
}, [initValue[0], initValue[1], initValue[0], initValue[1]])
})
}).map(getMaxBound))
},
_destroyHandles: function() {
this._handles.forEach(function(h) {
return h.dispose()
});
if (this._context.selection) {
this._context.selection.state = {}
}
this._handles = []
},
_createHandles: function() {
var i, handle, dataItem, that = this,
handles = that._handles = [],
data = that._data,
ii = handles.length = data.count(),
context = that._context,
geometry = data.geometry,
attributes = data.attributes;
for (i = 0; i < ii; ++i) {
dataItem = data.item(i);
handles[i] = new MapLayerElement(context, i, geometry(dataItem), attributes(dataItem))
}(0, _type.isFunction)(that._options.customize) && customizeHandles(that.getProxies(), that._options.customize, that._params.widget);
for (i = 0; i < ii; ++i) {
handle = handles[i];
handle.project();
handle.draw();
handle.transform()
}
if (context.selection) {
_each(context.selection.state, function(_, handle) {
handle && handle.restoreSelected()
})
}
},
_updateHandles: function() {
var i, handles = this._handles,
ii = handles.length;
for (i = 0; i < ii; ++i) {
handles[i].refresh()
}
if (this._context.settings.label.enabled) {
for (i = 0; i < ii; ++i) {
handles[i].measureLabel()
}
for (i = 0; i < ii; ++i) {
handles[i].adjustLabel()
}
}
},
_transformCore: function() {
var transform = this._params.projection.getTransform();
this._context.root.attr(transform);
this._context.labelRoot && this._context.labelRoot.attr(transform)
},
_project: function() {
var i, handles = this._handles,
ii = handles.length;
for (i = 0; i < ii; ++i) {
handles[i].project()
}
},
_transform: function() {
var i, handles = this._handles,
ii = handles.length;
this._transformCore();
for (i = 0; i < ii; ++i) {
handles[i].transform()
}
},
getProxies: function() {
return this._handles.map(function(p) {
return p.proxy
})
},
getProxy: function(index) {
return this._handles[index].proxy
},
raiseClick: function(i, dxEvent) {
this._params.eventTrigger("click", {
target: this._handles[i].proxy,
event: dxEvent
})
},
hoverItem: function(i, state) {
this._handles[i].setHovered(state)
},
selectItem: function(i, state, _noEvent) {
this._handles[i].setSelected(state, _noEvent)
},
clearSelection: function() {
var selection = this._context.selection;
if (selection) {
_each(selection.state, function(_, handle) {
handle && handle.setSelected(false)
});
selection.state = {}
}
}
}, _data_helper2.default);
function createProxy(handle, coords, attrs) {
var proxy = {
coordinates: function() {
return coords
},
attribute: function(name, value) {
if (arguments.length > 1) {
attrs[name] = value;
return proxy
} else {
return arguments.length > 0 ? attrs[name] : attrs
}
},
selected: function(state, _noEvent) {
if (arguments.length > 0) {
handle.setSelected(state, _noEvent);
return proxy
} else {
return handle.isSelected()
}
},
applySettings: function(settings) {
handle.update(settings);
return proxy
}
};
return proxy
}
var MapLayerElement = function(context, index, geometry, attributes) {
var that = this,
proxy = that.proxy = createProxy(that, geometry.coordinates, _extend({}, attributes));
that._ctx = context;
that._index = index;
that._fig = that._label = null;
that._state = STATE_DEFAULT;
that._coordinates = geometry.coordinates;
that._settings = {
label: {}
};
proxy.index = index;
proxy.layer = context.layer;
that._data = {
name: context.name,
index: index
}
};
MapLayerElement.prototype = {
constructor: MapLayerElement,
dispose: function() {
var that = this;
that._ctx = that.proxy = that._settings = that._fig = that._label = that.data = null;
return that
},
project: function() {
var context = this._ctx;
this._projection = context.str.project(context.projection, this._coordinates);
if (context.hasSeparateLabel && this._label) {
this._projectLabel()
}
},
_projectLabel: function() {
this._labelProjection = this._ctx.str.projectLabel(this._projection)
},
draw: function() {
var that = this,
context = this._ctx;
context.str.draw(context, that._fig = {}, that._data);
that._fig.root.append(context.root)
},
transform: function() {
var that = this,
context = that._ctx;
context.str.transform(that._fig, context.projection, that._projection);
if (context.hasSeparateLabel && that._label) {
that._transformLabel()
}
},
_transformLabel: function() {
this._ctx.str.transformLabel(this._label, this._ctx.projection, this._labelProjection)
},
refresh: function() {
var that = this,
strategy = that._ctx.str,
settings = getItemSettings(that._ctx, that.proxy, that._settings);
that._styles = strategy.getStyles(settings);
strategy.refresh(that._ctx, that._fig, that._data, that.proxy, settings);
that._refreshLabel(settings);
that._setState()
},
_refreshLabel: function(settings) {
var that = this,
context = that._ctx,
labelSettings = settings.label,
label = that._label;
if (context.settings.label.enabled) {
if (!label) {
label = that._label = {
root: context.labelRoot || that._fig.root,
text: context.renderer.text().attr({
"class": "dxm-label"
}),
size: [0, 0]
};
if (context.hasSeparateLabel) {
that._projectLabel();
that._transformLabel()
}
}
label.value = _String(that.proxy.text || that.proxy.attribute(labelSettings.dataField) || "");
if (label.value) {
label.text.attr({
text: label.value,
x: 0,
y: 0
}).css((0, _utils.patchFontOptions)(labelSettings.font)).attr({
align: "center",
stroke: labelSettings.stroke,
"stroke-width": labelSettings["stroke-width"],
"stroke-opacity": labelSettings["stroke-opacity"]
}).data(context.dataKey, that._data).append(label.root);
label.settings = settings
}
} else {
if (label) {
label.text.remove();
that._label = null
}
}
},
measureLabel: function() {
var bBox, label = this._label;
if (label.value) {
bBox = label.text.getBBox();
label.size = [bBox.width, bBox.height, -bBox.y - bBox.height / 2]
}
},
adjustLabel: function() {
var offset, label = this._label;
if (label.value) {
offset = this._ctx.str.getLabelOffset(label, label.settings);
label.settings = null;
label.text.attr({
x: offset[0],
y: offset[1] + label.size[2]
})
}
},
update: function(settings) {
var that = this;
that._settings = combineSettings(that._settings, settings);
if (that._fig) {
that.refresh();
if (that._label && that._label.value) {
that.measureLabel();
that.adjustLabel()
}
}
},
_setState: function() {
this._ctx.str.setState(this._fig, this._styles, STATE_TO_INDEX[this._state])
},
_setForeground: function() {
var root = this._fig.root;
this._state ? root.toForeground() : root.toBackground()
},
setHovered: function(state) {
var that = this,
currentState = hasFlag(that._state, STATE_HOVERED),
newState = !!state;
if (that._ctx.hover && currentState !== newState) {
that._state = setFlag(that._state, STATE_HOVERED, newState);
that._setState();
that._setForeground();
raiseChanged(that._ctx, that, newState, "hoverChanged")
}
return that
},
setSelected: function(state, _noEvent) {
var tmp, that = this,
currentState = hasFlag(that._state, STATE_SELECTED),
newState = !!state,
selection = that._ctx.selection;
if (selection && currentState !== newState) {
that._state = setFlag(that._state, STATE_SELECTED, newState);
tmp = selection.state[selection.single];
selection.state[selection.single] = null;
if (tmp) {
tmp.setSelected(false)
}
selection.state[selection.single || that._index] = state ? that : null;
if (that._fig) {
that._setState();
that._setForeground();
if (!_noEvent) {
raiseChanged(that._ctx, that, newState, "selectionChanged");
}
}
}
},
isSelected: function() {
return hasFlag(this._state, STATE_SELECTED)
},
resetSelected: function() {
this._state = setFlag(this._state, STATE_SELECTED, false)
},
restoreSelected: function() {
this._fig.root.toForeground()
}
};
function calculatePolygonCentroid(coordinates) {
var i, v1, cross, length = coordinates.length,
v2 = coordinates[length - 1],
cx = 0,
cy = 0,
area = 0,
minX = 1 / 0,
maxX = -(1 / 0),
minY = 1 / 0,
maxY = -(1 / 0);
for (i = 0; i < length; ++i) {
v1 = v2;
v2 = coordinates[i];
cross = v1[0] * v2[1] - v2[0] * v1[1];
area += cross;
cx += (v1[0] + v2[0]) * cross;
cy += (v1[1] + v2[1]) * cross;
minX = _min(minX, v2[0]);
maxX = _max(maxX, v2[0]);
minY = _min(minY, v2[1]);
maxY = _max(maxY, v2[1])
}
return {
area: _abs(area) / 2,
center: [2 * cx / 3 / area - (minX + maxX) / 2, 2 * cy / 3 / area - (minY + maxY) / 2]
}
}
function calculateLineStringData(coordinates) {
var i, v1, t, ii = coordinates.length,
v2 = coordinates[0] || [],
totalLength = 0,
items = [0],
min0 = v2[0],
max0 = v2[0],
min1 = v2[1],
max1 = v2[1];
for (i = 1; i < ii; ++i) {
v1 = v2;
v2 = coordinates[i];
totalLength += _sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]));
items[i] = totalLength;
min0 = _min(min0, v2[0]);
max0 = _max(max0, v2[0]);
min1 = _min(min1, v2[1]);
max1 = _max(max1, v2[1])
}
i = findGroupingIndex(totalLength / 2, items);
v1 = coordinates[i];
v2 = coordinates[i + 1];
t = (totalLength / 2 - items[i]) / (items[i + 1] - items[i]);
return ii ? [
[v1[0] * (1 - t) + v2[0] * t, v1[1] * (1 - t) + v2[1] * t],
[max0 - min0, max1 - min1], totalLength
] : []
}
function projectAreaLabel(coordinates) {
var i, centroid, resultCentroid, ii = coordinates.length,
maxArea = 0;
for (i = 0; i < ii; ++i) {
centroid = calculatePolygonCentroid(coordinates[i]);
if (centroid.area > maxArea) {
maxArea = centroid.area;
resultCentroid = centroid
}
}
return resultCentroid ? [resultCentroid.center, [_sqrt(resultCentroid.area), _sqrt(resultCentroid.area)]] : [
[],
[]
]
}
function projectLineLabel(coordinates) {
var i, data, resultData, ii = coordinates.length,
maxLength = 0;
for (i = 0; i < ii; ++i) {
data = calculateLineStringData(coordinates[i]);
if (data[2] > maxLength) {
maxLength = data[2];
resultData = data
}
}
return resultData || [
[],
[]
]
}
function MapLayerCollection(params) {
var that = this,
renderer = params.renderer;
that._params = params;
that._layers = [];
that._layerByName = {};
that._rect = [0, 0, 0, 0];
that._clip = renderer.clipRect();
that._background = renderer.rect().attr({
"class": "dxm-background"
}).data(params.dataKey, {
name: "background"
}).append(renderer.root);
that._container = renderer.g().attr({
"class": "dxm-layers",
"clip-path": that._clip.id
}).append(renderer.root).enableLinks();
that._subscribeToTracker(params.tracker, renderer, params.eventTrigger);
that._dataReady = params.dataReady
}
MapLayerCollection.prototype = {
constructor: MapLayerCollection,
dispose: function() {
var that = this;
that._clip.dispose();
that._layers.forEach(function(l) {
return l.dispose()
});
that._offTracker();
that._params = that._offTracker = that._layers = that._layerByName = that._clip = that._background = that._container = null
},
_subscribeToTracker: function(tracker, renderer, eventTrigger) {
var that = this;
that._offTracker = tracker.on({
click: function(arg) {
var offset = renderer.getRootOffset(),
layer = that.byName(arg.data.name);
arg.$event.x = arg.x - offset.left;
arg.$event.y = arg.y - offset.top;
if (layer) {
layer.raiseClick(arg.data.index, arg.$event)
} else {
if ("background" === arg.data.name) {
eventTrigger("click", {
event: arg.$event
})
}
}
},
"hover-on": function(arg) {
var layer = that.byName(arg.data.name);
if (layer) {
layer.hoverItem(arg.data.index, true)
}
},
"hover-off": function(arg) {
var layer = that.byName(arg.data.name);
if (layer) {
layer.hoverItem(arg.data.index, false)
}
}
})
},
setOptions: function(options) {
var that = this;
var optionList = options ? _isArray(options) ? options : [options] : [];
var layerByName = that._layerByName;
var layers = that._layers;
var readyCallbacks = [];
var needToCreateLayers = optionList.length !== layers.length || layers.some(function(l, i) {
var name = getName(optionList, i);
return (0, _type.isDefined)(name) && name !== l.proxy.name
});
if (needToCreateLayers) {
that._params.tracker.reset();
that._layers.forEach(function(l) {
return l.dispose()
});
that._layerByName = layerByName = {};
that._layers = layers = [];
for (var i = 0, ii = optionList.length; i < ii; ++i) {
var name = getName(optionList, i) || "map-layer-" + i;
var layer = layers[i] = new MapLayer(that._params, that._container, name, i);
layerByName[name] = layer
}
}
layers.forEach(function(l, i) {
l.setOptions(optionList[i])
});
readyCallbacks = layers.map(function(l) {
return l.getDataReadyCallback()
});
readyCallbacks.length && _deferred2.default.when.apply(void 0, readyCallbacks).done(that._dataReady)
},
_updateClip: function() {
var rect = this._rect,
bw = this._borderWidth;
this._clip.attr({
x: rect[0] + bw,
y: rect[1] + bw,
width: _max(rect[2] - 2 * bw, 0),
height: _max(rect[3] - 2 * bw, 0)
})
},
setBackgroundOptions: function(options) {
this._background.attr({
stroke: options.borderColor,
"stroke-width": options.borderWidth,
fill: options.color
});
this._borderWidth = _max(options.borderWidth, 0);
this._updateClip()
},
setRect: function(rect) {
this._rect = rect;
this._background.attr({
x: rect[0],
y: rect[1],
width: rect[2],
height: rect[3]
});
this._updateClip()
},
byIndex: function(index) {
return this._layers[index]
},
byName: function(name) {
return this._layerByName[name]
},
items: function() {
return this._layers
}
};
exports._TESTS_MapLayer = MapLayer;
exports._TESTS_stub_MapLayer = function(stub) {
MapLayer = stub
};
exports._TESTS_selectStrategy = selectStrategy;
exports._TESTS_stub_selectStrategy = function(stub) {
selectStrategy = stub
};
exports._TESTS_MapLayerElement = MapLayerElement;
exports._TESTS_stub_MapLayerElement = function(stub) {
MapLayerElement = stub
};
exports._TESTS_createProxy = createProxy;
exports._TESTS_stub_performGrouping = function(stub) {
performGrouping = stub
};
exports._TESTS_performGrouping = performGrouping;
exports._TESTS_stub_groupByColor = function(stub) {
groupByColor = stub
};
exports._TESTS_groupByColor = groupByColor;
exports._TESTS_stub_groupBySize = function(stub) {
groupBySize = stub
};
exports._TESTS_groupBySize = groupBySize;
exports._TESTS_findGroupingIndex = findGroupingIndex
},
/*!***************************************************************!*\
!*** ./artifacts/transpiled/viz/vector_map/tooltip_viewer.js ***!
\***************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var TOOLTIP_OFFSET = 12;
function TooltipViewer(params) {
this._subscribeToTracker(params.tracker, params.tooltip, params.layerCollection)
}
TooltipViewer.prototype = {
constructor: TooltipViewer,
dispose: function() {
this._offTracker();
this._offTracker = null
},
_subscribeToTracker: function(tracker, tooltip, layerCollection) {
this._offTracker = tracker.on({
"focus-on": function(arg) {
var layer, proxy, result = false;
if (tooltip.isEnabled()) {
layer = layerCollection.byName(arg.data.name);
proxy = layer && layer.getProxy(arg.data.index);
if (proxy && tooltip.show(proxy, {
x: 0,
y: 0,
offset: 0
}, {
target: proxy
})) {
tooltip.move(arg.x, arg.y, TOOLTIP_OFFSET);
result = true
}
}
arg.done(result)
},
"focus-move": function(arg) {
tooltip.move(arg.x, arg.y, TOOLTIP_OFFSET)
},
"focus-off": function() {
tooltip.hide()
}
})
}
};
exports.TooltipViewer = TooltipViewer
},
/*!***********************************************!*\
!*** ./artifacts/transpiled/viz/sparkline.js ***!
\***********************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
module.exports = __webpack_require__( /*! ./sparklines/sparkline */ 851)
},
/*!**********************************************************!*\
!*** ./artifacts/transpiled/viz/sparklines/sparkline.js ***!
\**********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var BaseSparkline = __webpack_require__( /*! ./base_sparkline */ 426),
dataValidatorModule = __webpack_require__( /*! ../components/data_validator */ 248),
seriesModule = __webpack_require__( /*! ../series/base_series */ 250),
MIN_BAR_WIDTH = 1,
MAX_BAR_WIDTH = 50,
DEFAULT_BAR_INTERVAL = 4,
DEFAULT_CANVAS_WIDTH = 250,
DEFAULT_CANVAS_HEIGHT = 30,
DEFAULT_POINT_BORDER = 2,
ALLOWED_TYPES = {
line: true,
spline: true,
stepline: true,
area: true,
steparea: true,
splinearea: true,
bar: true,
winloss: true
},
_math = Math,
_abs = _math.abs,
_round = _math.round,
_max = _math.max,
_min = _math.min,
_isFinite = isFinite,
vizUtils = __webpack_require__( /*! ../core/utils */ 12),
_map = vizUtils.map,
_normalizeEnum = vizUtils.normalizeEnum,
_isDefined = __webpack_require__( /*! ../../core/utils/type */ 1).isDefined,
_Number = Number,
_String = String;
function findMinMax(data, valField) {
var value, i, firstItem = data[0] || {},
firstValue = firstItem[valField] || 0,
min = firstValue,
max = firstValue,
minIndexes = [0],
maxIndexes = [0],
dataLength = data.length;
for (i = 1; i < dataLength; i++) {
value = data[i][valField];
if (value < min) {
min = value;
minIndexes = [i]
} else {
if (value === min) {
minIndexes.push(i)
}
}
if (value > max) {
max = value;
maxIndexes = [i]
} else {
if (value === max) {
maxIndexes.push(i)
}
}
}
if (max === min) {
minIndexes = maxIndexes = []
}
return {
minIndexes: minIndexes,
maxIndexes: maxIndexes
}
}
function parseNumericDataSource(data, argField, valField, ignoreEmptyPoints) {
return _map(data, function(dataItem, index) {
var isDataNumber, value, item = null;
if (void 0 !== dataItem) {
item = {};
isDataNumber = _isFinite(dataItem);
item[argField] = isDataNumber ? _String(index) : dataItem[argField];
value = isDataNumber ? dataItem : dataItem[valField];
item[valField] = null === value ? ignoreEmptyPoints ? void 0 : value : _Number(value);
item = void 0 !== item[argField] && void 0 !== item[valField] ? item : null
}
return item
})
}
function parseWinlossDataSource(data, argField, valField, target) {
var lowBarValue = -1,
zeroBarValue = 0,
highBarValue = 1,
delta = 1e-4;
return _map(data, function(dataItem) {
var item = {};
item[argField] = dataItem[argField];
if (_abs(dataItem[valField] - target) < delta) {
item[valField] = zeroBarValue
} else {
if (dataItem[valField] > target) {
item[valField] = highBarValue
} else {
item[valField] = lowBarValue
}
}
return item
})
}
function selectPointColor(color, options, index, pointIndexes) {
if (index === pointIndexes.first || index === pointIndexes.last) {
color = options.firstLastColor
}
if ((pointIndexes.min || []).indexOf(index) >= 0) {
color = options.minColor
}
if ((pointIndexes.max || []).indexOf(index) >= 0) {
color = options.maxColor
}
return color
}
function createLineCustomizeFunction(pointIndexes, options) {
return function() {
var color = selectPointColor(void 0, options, this.index, pointIndexes);
return color ? {
visible: true,
border: {
color: color
}
} : {}
}
}
function createBarCustomizeFunction(pointIndexes, options, winlossData) {
return function() {
var index = this.index,
isWinloss = "winloss" === options.type,
target = isWinloss ? options.winlossThreshold : 0,
value = isWinloss ? winlossData[index][options.valueField] : this.value,
positiveColor = isWinloss ? options.winColor : options.barPositiveColor,
negativeColor = isWinloss ? options.lossColor : options.barNegativeColor;
return {
color: selectPointColor(value >= target ? positiveColor : negativeColor, options, index, pointIndexes)
}
}
}
var dxSparkline = BaseSparkline.inherit({
_rootClassPrefix: "dxsl",
_rootClass: "dxsl-sparkline",
_themeSection: "sparkline",
_defaultSize: {
width: DEFAULT_CANVAS_WIDTH,
height: DEFAULT_CANVAS_HEIGHT
},
_initCore: function() {
this.callBase();
this._createSeries()
},
_initialChanges: ["DATA_SOURCE"],
_dataSourceChangedHandler: function() {
this._requestChange(["UPDATE"])
},
_updateWidgetElements: function() {
this._updateSeries();
this.callBase()
},
_disposeWidgetElements: function() {
var that = this;
that._series && that._series.dispose();
that._series = that._seriesGroup = that._seriesLabelGroup = null
},
_cleanWidgetElements: function() {
this._seriesGroup.remove();
this._seriesLabelGroup.remove();
this._seriesGroup.clear();
this._seriesLabelGroup.clear()
},
_drawWidgetElements: function() {
if (this._dataIsLoaded()) {
this._drawSeries();
this._drawn()
}
},
_getCorrectCanvas: function() {
var options = this._allOptions,
canvas = this._canvas,
halfPointSize = options.pointSize && Math.ceil(options.pointSize / 2) + DEFAULT_POINT_BORDER,
type = options.type;
if ("bar" !== type && "winloss" !== type && (options.showFirstLast || options.showMinMax)) {
return {
width: canvas.width,
height: canvas.height,
left: canvas.left + halfPointSize,
right: canvas.right + halfPointSize,
top: canvas.top + halfPointSize,
bottom: canvas.bottom + halfPointSize
}
}
return canvas
},
_prepareOptions: function() {
var that = this;
that._allOptions = that.callBase();
that._allOptions.type = _normalizeEnum(that._allOptions.type);
if (!ALLOWED_TYPES[that._allOptions.type]) {
that._allOptions.type = "line"
}
},
_createHtmlElements: function() {
this._seriesGroup = this._renderer.g().attr({
"class": "dxsl-series"
});
this._seriesLabelGroup = this._renderer.g().attr({
"class": "dxsl-series-labels"
})
},
_createSeries: function() {
this._series = new seriesModule.Series({
renderer: this._renderer,
seriesGroup: this._seriesGroup,
labelsGroup: this._seriesLabelGroup,
argumentAxis: this._argumentAxis,
valueAxis: this._valueAxis
}, {
widgetType: "chart",
type: "line"
})
},
getSeriesOptions: function() {
return this._series.getOptions()
},
_updateSeries: function() {
var groupsData, seriesOptions, that = this,
singleSeries = that._series;
that._prepareDataSource();
seriesOptions = that._prepareSeriesOptions();
singleSeries.updateOptions(seriesOptions);
groupsData = {
groups: [{
series: [singleSeries]
}]
};
groupsData.argumentOptions = {
type: "bar" === seriesOptions.type ? "discrete" : void 0
};
that._simpleDataSource = dataValidatorModule.validateData(that._simpleDataSource, groupsData, that._incidentOccurred, {
checkTypeForAllData: false,
convertToAxisDataType: true,
sortingMethod: true
})[singleSeries.getArgumentField()];
seriesOptions.customizePoint = that._getCustomizeFunction();
singleSeries.updateData(that._simpleDataSource);
singleSeries.createPoints();
that._groupsDataCategories = groupsData.categories
},
_optionChangesMap: {
dataSource: "DATA_SOURCE"
},
_optionChangesOrder: ["DATA_SOURCE"],
_change_DATA_SOURCE: function() {
this._updateDataSource()
},
_prepareDataSource: function() {
var that = this,
options = that._allOptions,
argField = options.argumentField,
valField = options.valueField,
dataSource = that._dataSourceItems() || [],
data = parseNumericDataSource(dataSource, argField, valField, that.option("ignoreEmptyPoints"));
if ("winloss" === options.type) {
that._winlossDataSource = data;
that._simpleDataSource = parseWinlossDataSource(data, argField, valField, options.winlossThreshold)
} else {
that._simpleDataSource = data
}
},
_prepareSeriesOptions: function() {
var that = this,
options = that._allOptions,
type = "winloss" === options.type ? "bar" : options.type;
return {
visible: true,
argumentField: options.argumentField,
valueField: options.valueField,
color: options.lineColor,
width: options.lineWidth,
widgetType: "chart",
type: type,
opacity: type.indexOf("area") !== -1 ? that._allOptions.areaOpacity : void 0,
point: {
size: options.pointSize,
symbol: options.pointSymbol,
border: {
visible: true,
width: DEFAULT_POINT_BORDER
},
color: options.pointColor,
visible: false,
hoverStyle: {
border: {}
},
selectionStyle: {
border: {}
}
},
border: {
color: options.lineColor,
width: options.lineWidth,
visible: "bar" !== type
}
}
},
_getCustomizeFunction: function() {
var customizeFunction, that = this,
options = that._allOptions,
dataSource = that._winlossDataSource || that._simpleDataSource,
drawnPointIndexes = that._getExtremumPointsIndexes(dataSource);
if ("winloss" === options.type || "bar" === options.type) {
customizeFunction = createBarCustomizeFunction(drawnPointIndexes, options, that._winlossDataSource)
} else {
customizeFunction = createLineCustomizeFunction(drawnPointIndexes, options)
}
return customizeFunction
},
_getExtremumPointsIndexes: function(data) {
var that = this,
options = that._allOptions,
lastIndex = data.length - 1,
indexes = {};
that._minMaxIndexes = findMinMax(data, options.valueField);
if (options.showFirstLast) {
indexes.first = 0;
indexes.last = lastIndex
}
if (options.showMinMax) {
indexes.min = that._minMaxIndexes.minIndexes;
indexes.max = that._minMaxIndexes.maxIndexes
}
return indexes
},
_getStick: function() {
return {
stick: "bar" !== this._series.type
}
},
_updateRange: function() {
var valCoef, argCoef, that = this,
series = that._series,
type = series.type,
isBarType = "bar" === type,
isWinlossType = "winloss" === type,
DEFAULT_VALUE_RANGE_MARGIN = .15,
DEFAULT_ARGUMENT_RANGE_MARGIN = .1,
WINLOSS_MAX_RANGE = 1,
WINLOSS_MIN_RANGE = -1,
rangeData = series.getRangeData(),
minValue = that._allOptions.minValue,
hasMinY = _isDefined(minValue) && _isFinite(minValue),
maxValue = that._allOptions.maxValue,
hasMaxY = _isDefined(maxValue) && _isFinite(maxValue);
valCoef = (rangeData.val.max - rangeData.val.min) * DEFAULT_VALUE_RANGE_MARGIN;
if (isBarType || isWinlossType || "area" === type) {
if (0 !== rangeData.val.min) {
rangeData.val.min -= valCoef
}
if (0 !== rangeData.val.max) {
rangeData.val.max += valCoef
}
} else {
rangeData.val.min -= valCoef;
rangeData.val.max += valCoef
}
if (hasMinY || hasMaxY) {
if (hasMinY && hasMaxY) {
rangeData.val.minVisible = _min(minValue, maxValue);
rangeData.val.maxVisible = _max(minValue, maxValue)
} else {
rangeData.val.minVisible = hasMinY ? _Number(minValue) : void 0;
rangeData.val.maxVisible = hasMaxY ? _Number(maxValue) : void 0
}
if (isWinlossType) {
rangeData.val.minVisible = hasMinY ? _max(rangeData.val.minVisible, WINLOSS_MIN_RANGE) : void 0;
rangeData.val.maxVisible = hasMaxY ? _min(rangeData.val.maxVisible, WINLOSS_MAX_RANGE) : void 0
}
}
if (series.getPoints().length > 1) {
if (isBarType) {
argCoef = (rangeData.arg.max - rangeData.arg.min) * DEFAULT_ARGUMENT_RANGE_MARGIN;
rangeData.arg.min = rangeData.arg.min - argCoef;
rangeData.arg.max = rangeData.arg.max + argCoef
}
}
rangeData.arg.categories = that._groupsDataCategories;
that._ranges = rangeData
},
_getBarWidth: function(pointsCount) {
var that = this,
canvas = that._canvas,
intervalWidth = pointsCount * DEFAULT_BAR_INTERVAL,
rangeWidth = canvas.width - canvas.left - canvas.right - intervalWidth,
width = _round(rangeWidth / pointsCount);
if (width < MIN_BAR_WIDTH) {
width = MIN_BAR_WIDTH
}
if (width > MAX_BAR_WIDTH) {
width = MAX_BAR_WIDTH
}
return width
},
_correctPoints: function() {
var barWidth, i, that = this,
seriesType = that._allOptions.type,
seriesPoints = that._series.getPoints(),
pointsLength = seriesPoints.length;
if ("bar" === seriesType || "winloss" === seriesType) {
barWidth = that._getBarWidth(pointsLength);
for (i = 0; i < pointsLength; i++) {
seriesPoints[i].correctCoordinates({
width: barWidth,
offset: 0
})
}
}
},
_drawSeries: function() {
var that = this;
if (that._simpleDataSource.length > 0) {
that._correctPoints();
that._series.draw();
that._seriesGroup.append(that._renderer.root)
}
},
_isTooltipEnabled: function() {
return !!this._simpleDataSource.length
},
_getTooltipData: function() {
var that = this,
options = that._allOptions,
dataSource = that._winlossDataSource || that._simpleDataSource,
tooltip = that._tooltip;
if (0 === dataSource.length) {
return {}
}
var minMax = that._minMaxIndexes,
valueField = options.valueField,
first = dataSource[0][valueField],
last = dataSource[dataSource.length - 1][valueField],
min = _isDefined(minMax.minIndexes[0]) ? dataSource[minMax.minIndexes[0]][valueField] : first,
max = _isDefined(minMax.maxIndexes[0]) ? dataSource[minMax.maxIndexes[0]][valueField] : first,
formattedFirst = tooltip.formatValue(first),
formattedLast = tooltip.formatValue(last),
formattedMin = tooltip.formatValue(min),
formattedMax = tooltip.formatValue(max),
customizeObject = {
firstValue: formattedFirst,
lastValue: formattedLast,
minValue: formattedMin,
maxValue: formattedMax,
originalFirstValue: first,
originalLastValue: last,
originalMinValue: min,
originalMaxValue: max,
valueText: ["Start:", formattedFirst, "End:", formattedLast, "Min:", formattedMin, "Max:", formattedMax]
};
if ("winloss" === options.type) {
customizeObject.originalThresholdValue = options.winlossThreshold;
customizeObject.thresholdValue = tooltip.formatValue(options.winlossThreshold)
}
return customizeObject
}
});
_map(["lineColor", "lineWidth", "areaOpacity", "minColor", "maxColor", "barPositiveColor", "barNegativeColor", "winColor", "lessColor", "firstLastColor", "pointSymbol", "pointColor", "pointSize", "type", "argumentField", "valueField", "winlossThreshold", "showFirstLast", "showMinMax", "ignoreEmptyPoints", "minValue", "maxValue"], function(name) {
dxSparkline.prototype._optionChangesMap[name] = "OPTIONS"
});
__webpack_require__( /*! ../../core/component_registrator */ 9)("dxSparkline", dxSparkline);
module.exports = dxSparkline;
dxSparkline.addPlugin(__webpack_require__( /*! ../core/data_source */ 146).plugin)
},
/*!********************************************!*\
!*** ./artifacts/transpiled/viz/bullet.js ***!
\********************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
module.exports = __webpack_require__( /*! ./sparklines/bullet */ 853)
},
/*!*******************************************************!*\
!*** ./artifacts/transpiled/viz/sparklines/bullet.js ***!
\*******************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var each = __webpack_require__( /*! ../../core/utils/iterator */ 3).each,
BaseSparkline = __webpack_require__( /*! ./base_sparkline */ 426),
TARGET_MIN_Y = .02,
TARGET_MAX_Y = .98,
BAR_VALUE_MIN_Y = .1,
BAR_VALUE_MAX_Y = .9,
DEFAULT_CANVAS_WIDTH = 300,
DEFAULT_CANVAS_HEIGHT = 30,
DEFAULT_HORIZONTAL_MARGIN = 1,
DEFAULT_VERTICAL_MARGIN = 2,
_Number = Number,
_isFinite = isFinite;
var dxBullet = BaseSparkline.inherit({
_rootClassPrefix: "dxb",
_rootClass: "dxb-bullet",
_themeSection: "bullet",
_defaultSize: {
width: DEFAULT_CANVAS_WIDTH,
height: DEFAULT_CANVAS_HEIGHT,
left: DEFAULT_HORIZONTAL_MARGIN,
right: DEFAULT_HORIZONTAL_MARGIN,
top: DEFAULT_VERTICAL_MARGIN,
bottom: DEFAULT_VERTICAL_MARGIN
},
_disposeWidgetElements: function() {
delete this._zeroLevelPath;
delete this._targetPath;
delete this._barValuePath
},
_cleanWidgetElements: function() {
this._zeroLevelPath.remove();
this._targetPath.remove();
this._barValuePath.remove()
},
_drawWidgetElements: function() {
this._drawBullet();
this._drawn()
},
_createHtmlElements: function() {
var renderer = this._renderer;
this._zeroLevelPath = renderer.path(void 0, "line").attr({
"class": "dxb-zero-level",
"stroke-linecap": "square"
});
this._targetPath = renderer.path(void 0, "line").attr({
"class": "dxb-target",
"stroke-linecap": "square"
});
this._barValuePath = renderer.path(void 0, "line").attr({
"class": "dxb-bar-value",
"stroke-linecap": "square"
})
},
_prepareOptions: function() {
var options, startScaleValue, endScaleValue, level, value, target, isValueUndefined, isTargetUndefined, that = this;
that._allOptions = options = that.callBase();
isValueUndefined = void 0 === that._allOptions.value;
isTargetUndefined = void 0 === that._allOptions.target;
that._tooltipEnabled = !(isValueUndefined && isTargetUndefined);
if (isValueUndefined) {
that._allOptions.value = 0
}
if (isTargetUndefined) {
that._allOptions.target = 0
}
options.value = value = _Number(options.value);
options.target = target = _Number(options.target);
if (void 0 === that._allOptions.startScaleValue) {
that._allOptions.startScaleValue = target < value ? target : value;
that._allOptions.startScaleValue = that._allOptions.startScaleValue < 0 ? that._allOptions.startScaleValue : 0
}
if (void 0 === that._allOptions.endScaleValue) {
that._allOptions.endScaleValue = target > value ? target : value
}
options.startScaleValue = startScaleValue = _Number(options.startScaleValue);
options.endScaleValue = endScaleValue = _Number(options.endScaleValue);
if (endScaleValue < startScaleValue) {
level = endScaleValue;
that._allOptions.endScaleValue = startScaleValue;
that._allOptions.startScaleValue = level;
that._allOptions.inverted = true
}
},
_updateRange: function() {
var that = this,
options = that._allOptions;
that._ranges = {
arg: {
invert: options.inverted,
min: options.startScaleValue,
max: options.endScaleValue,
axisType: "continuous",
dataType: "numeric"
},
val: {
min: 0,
max: 1,
axisType: "continuous",
dataType: "numeric"
}
}
},
_drawBullet: function() {
var that = this,
options = that._allOptions,
isValidBounds = options.startScaleValue !== options.endScaleValue,
isValidMin = _isFinite(options.startScaleValue),
isValidMax = _isFinite(options.endScaleValue),
isValidValue = _isFinite(options.value),
isValidTarget = _isFinite(options.target);
if (isValidBounds && isValidMax && isValidMin && isValidTarget && isValidValue) {
this._drawBarValue();
this._drawTarget();
this._drawZeroLevel()
}
},
_getTargetParams: function() {
var that = this,
options = that._allOptions,
translatorY = that._valueAxis.getTranslator(),
x = that._argumentAxis.getTranslator().translate(options.target);
return {
points: [x, translatorY.translate(TARGET_MIN_Y), x, translatorY.translate(TARGET_MAX_Y)],
stroke: options.targetColor,
"stroke-width": options.targetWidth
}
},
_getBarValueParams: function() {
var x1, x2, that = this,
options = that._allOptions,
translatorX = that._argumentAxis.getTranslator(),
translatorY = that._valueAxis.getTranslator(),
startLevel = options.startScaleValue,
endLevel = options.endScaleValue,
value = options.value,
y2 = translatorY.translate(BAR_VALUE_MIN_Y),
y1 = translatorY.translate(BAR_VALUE_MAX_Y);
if (value > 0) {
x1 = startLevel <= 0 ? 0 : startLevel;
x2 = value >= endLevel ? endLevel : value < x1 ? x1 : value
} else {
x1 = endLevel >= 0 ? 0 : endLevel;
x2 = value < startLevel ? startLevel : value > x1 ? x1 : value
}
x1 = translatorX.translate(x1);
x2 = translatorX.translate(x2);
return {
points: [x1, y1, x2, y1, x2, y2, x1, y2],
fill: options.color
}
},
_getCorrectCanvas: function() {
return this._canvas
},
_getZeroLevelParams: function() {
var that = this,
translatorY = that._valueAxis.getTranslator(),
x = that._argumentAxis.getTranslator().translate(0);
return {
points: [x, translatorY.translate(TARGET_MIN_Y), x, translatorY.translate(TARGET_MAX_Y)],
stroke: that._allOptions.targetColor,
"stroke-width": 1
}
},
_drawZeroLevel: function() {
var that = this,
options = that._allOptions;
if (0 > options.endScaleValue || 0 < options.startScaleValue || !options.showZeroLevel) {
return
}
that._zeroLevelPath.attr(that._getZeroLevelParams()).sharp().append(that._renderer.root)
},
_drawTarget: function() {
var that = this,
options = that._allOptions,
target = options.target;
if (target > options.endScaleValue || target < options.startScaleValue || !options.showTarget) {
return
}
that._targetPath.attr(that._getTargetParams()).sharp().append(that._renderer.root)
},
_drawBarValue: function() {
this._barValuePath.attr(this._getBarValueParams()).append(this._renderer.root)
},
_getTooltipCoords: function() {
var canvas = this._canvas,
rootOffset = this._renderer.getRootOffset(),
bBox = this._barValuePath.getBBox();
return {
x: bBox.x + bBox.width / 2 + rootOffset.left,
y: canvas.height / 2 + rootOffset.top
}
},
_getTooltipData: function() {
var that = this,
tooltip = that._tooltip,
options = that._allOptions,
value = options.value,
target = options.target,
valueText = tooltip.formatValue(value),
targetText = tooltip.formatValue(target);
return {
originalValue: value,
originalTarget: target,
value: valueText,
target: targetText,
valueText: ["Actual Value:", valueText, "Target Value:", targetText]
}
},
_isTooltipEnabled: function() {
return this._tooltipEnabled
}
});
each(["color", "targetColor", "targetWidth", "showTarget", "showZeroLevel", "value", "target", "startScaleValue", "endScaleValue"], function(_, name) {
dxBullet.prototype._optionChangesMap[name] = "OPTIONS"
});
__webpack_require__( /*! ../../core/component_registrator */ 9)("dxBullet", dxBullet);
module.exports = dxBullet
},
/*!**********************************************!*\
!*** ./artifacts/transpiled/viz/tree_map.js ***!
\**********************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
module.exports = __webpack_require__( /*! ./tree_map/tree_map */ 855)
},
/*!*******************************************************!*\
!*** ./artifacts/transpiled/viz/tree_map/tree_map.js ***!
\*******************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var dxTreeMap = module.exports = __webpack_require__( /*! ./tree_map.base */ 71);
__webpack_require__( /*! ./tiling.squarified */ 427);
__webpack_require__( /*! ./tiling.strip */ 856);
__webpack_require__( /*! ./tiling.slice_and_dice */ 857);
__webpack_require__( /*! ./tiling.rotated_slice_and_dice */ 858);
__webpack_require__( /*! ./colorizing.discrete */ 429);
__webpack_require__( /*! ./colorizing.gradient */ 859);
__webpack_require__( /*! ./colorizing.range */ 860);
__webpack_require__( /*! ./api */ 148);
__webpack_require__( /*! ./hover */ 430);
__webpack_require__( /*! ./selection */ 861);
__webpack_require__( /*! ./tooltip */ 432);
__webpack_require__( /*! ./tracker */ 862);
__webpack_require__( /*! ./drilldown */ 863);
__webpack_require__( /*! ./plain_data_source */ 864);
dxTreeMap.addPlugin(__webpack_require__( /*! ../core/export */ 95).plugin);
dxTreeMap.addPlugin(__webpack_require__( /*! ../core/title */ 106).plugin);
dxTreeMap.addPlugin(__webpack_require__( /*! ../core/loading_indicator */ 121).plugin)
},
/*!***********************************************************!*\
!*** ./artifacts/transpiled/viz/tree_map/tiling.strip.js ***!
\***********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _squarify = __webpack_require__( /*! ./tiling.squarified.base */ 428);
function accumulate(total, current, count) {
return ((count - 1) * total + current) / count
}
function strip(data) {
return _squarify(data, accumulate, true)
}
__webpack_require__( /*! ./tiling */ 122).addAlgorithm("strip", strip);
module.exports = strip
},
/*!********************************************************************!*\
!*** ./artifacts/transpiled/viz/tree_map/tiling.slice_and_dice.js ***!
\********************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var tiling = __webpack_require__( /*! ./tiling */ 122);
function sliceAndDice(data) {
var items = data.items,
sidesData = tiling.buildSidesData(data.rect, data.directions, data.isRotated ? 1 : 0);
tiling.calculateRectangles(items, 0, data.rect, sidesData, {
sum: data.sum,
count: items.length,
side: sidesData.variedSide
})
}
tiling.addAlgorithm("sliceanddice", sliceAndDice);
module.exports = sliceAndDice
},
/*!****************************************************************************!*\
!*** ./artifacts/transpiled/viz/tree_map/tiling.rotated_slice_and_dice.js ***!
\****************************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var tiling = __webpack_require__( /*! ./tiling */ 122),
sliceAndDiceAlgorithm = tiling.getAlgorithm("sliceanddice");
function rotatedSliceAndDice(data) {
data.isRotated = !data.isRotated;
return sliceAndDiceAlgorithm.call(this, data)
}
tiling.addAlgorithm("rotatedsliceanddice", rotatedSliceAndDice)
},
/*!******************************************************************!*\
!*** ./artifacts/transpiled/viz/tree_map/colorizing.gradient.js ***!
\******************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _createColorCodeGetter = __webpack_require__( /*! ./colorizing */ 123).createColorCodeGetter,
_min = Math.min,
_max = Math.max;
function createSimpleColorizer(getColor, range) {
return function(node) {
return getColor(node, range)
}
}
function getRangeData(range) {
return [Number(range[0]) || 0, range[1] - range[0] || 1]
}
function calculateRange(nodes, getValue) {
var i, code, ii = nodes.length,
codes = [];
for (i = 0; i < ii; ++i) {
code = getValue(nodes[i]);
if (isFinite(code)) {
codes.push(code)
}
}
return getRangeData([_min.apply(null, codes), _max.apply(null, codes)])
}
function createGuessingColorizer(getColor, getValue) {
var ranges = {};
return function(node) {
var parent = node.parent;
return getColor(node, ranges[parent._id] || (ranges[parent._id] = calculateRange(parent.nodes, getValue)))
}
}
function gradientColorizer(options, themeManager) {
var palette = themeManager.createGradientPalette(options.palette),
getValue = _createColorCodeGetter(options);
return "range" in options ? createSimpleColorizer(getColor, getRangeData(options.range || [])) : createGuessingColorizer(getColor, getValue);
function getColor(node, arg) {
return palette.getColor((getValue(node) - arg[0]) / arg[1])
}
}
__webpack_require__( /*! ./colorizing */ 123).addColorizer("gradient", gradientColorizer);
module.exports = gradientColorizer
},
/*!***************************************************************!*\
!*** ./artifacts/transpiled/viz/tree_map/colorizing.range.js ***!
\***************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _createColorCodeGetter = __webpack_require__( /*! ./colorizing */ 123).createColorCodeGetter;
function getPaletteIndex(value, items) {
var middle, start = 0,
end = items.length - 1,
index = -1;
if (items[start] <= value && value <= items[end]) {
if (value === items[end]) {
index = end - 1
} else {
while (end - start > 1) {
middle = start + end >> 1;
if (value < items[middle]) {
end = middle
} else {
start = middle
}
}
index = start
}
}
return index
}
function rangeColorizer(options, themeManager) {
var range = options.range || [],
palette = themeManager.createDiscretePalette(options.palette, range.length - 1),
getValue = _createColorCodeGetter(options);
return function(node) {
return palette.getColor(getPaletteIndex(getValue(node), range))
}
}
__webpack_require__( /*! ./colorizing */ 123).addColorizer("range", rangeColorizer);
module.exports = rangeColorizer
},
/*!********************************************************!*\
!*** ./artifacts/transpiled/viz/tree_map/selection.js ***!
\********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var proto = __webpack_require__( /*! ./tree_map.base */ 71).prototype,
nodeProto = __webpack_require__( /*! ./node */ 170).prototype,
expand = __webpack_require__( /*! ../core/helpers */ 144).expand,
common = __webpack_require__( /*! ./common */ 256),
_buildRectAppearance = common.buildRectAppearance,
_normalizeEnum = __webpack_require__( /*! ../core/utils */ 12).normalizeEnum,
_inArray = __webpack_require__( /*! ../../core/utils/array */ 14).inArray,
MODE_NONE = 0,
MODE_SINGLE = 1,
MODE_MULTIPLE = 2,
STATE_CODE = 2;
__webpack_require__( /*! ./api */ 148);
__webpack_require__( /*! ./states */ 431);
proto._eventsMap.onSelectionChanged = {
name: "selectionChanged"
};
expand(proto._handlers, "calculateAdditionalStates", function(states, options) {
states[2] = options.selectionStyle ? _buildRectAppearance(options.selectionStyle) : {}
});
nodeProto.statesMap[2] = nodeProto.statesMap[3] = STATE_CODE;
nodeProto.additionalStates.push(2);
expand(proto, "_onNodesCreated", function() {
this._selectionList.length = 0
});
expand(proto, "_extendProxyType", function(proto) {
var that = this;
proto.select = function(state) {
that._selectNode(this._id, !!state)
};
proto.isSelected = function() {
return _inArray(this._id, that._selectionList) >= 0
};
that._selectionList = []
});
__webpack_require__( /*! ./tree_map.base */ 71).addChange({
code: "SELECTION_MODE",
handler: function() {
var mode, tmp, that = this,
option = _normalizeEnum(that._getOption("selectionMode", true)),
selectionList = that._selectionList;
mode = "none" === option ? MODE_NONE : "multiple" === option ? MODE_MULTIPLE : MODE_SINGLE;
if (mode === MODE_SINGLE && selectionList.length > 1) {
tmp = selectionList.pop();
that.clearSelection();
selectionList.push(tmp)
} else {
if (mode === MODE_NONE) {
that.clearSelection()
}
}
that._selectionMode = mode
},
isThemeDependent: true,
isOptionChange: true,
option: "selectionMode"
});
expand(proto, "_applyTilesAppearance", function() {
if (this._selectionList.length) {
bringSelectedTilesToForeground(this._nodes, this._selectionList)
}
});
function bringSelectedTilesToForeground(nodes, selectionList) {
var i, node, ii = selectionList.length;
for (i = 0; i < ii; ++i) {
node = nodes[selectionList[i]];
tileToFront[Number(node.isNode())](node.tile)
}
}
var tileToFront = [leafToFront, groupToFront];
function leafToFront(content) {
content.toForeground()
}
function groupToFront(content) {
content.outer.toForeground();
content.inner.toForeground()
}
proto._applySelectionState = function(index, state) {
var node = this._nodes[index];
node.setState(STATE_CODE, state);
this._eventTrigger("selectionChanged", {
node: node.proxy
})
};
proto._selectNode = function(index, state) {
var selectionList, k, tmp, that = this;
if (that._selectionMode !== MODE_NONE) {
that._context.suspend();
selectionList = that._selectionList;
k = _inArray(index, selectionList);
if (state && k === -1) {
if (that._selectionMode === MODE_SINGLE) {
if (selectionList.length) {
tmp = selectionList.pop();
that._applySelectionState(tmp, false)
}
}
selectionList.push(index);
that._applySelectionState(index, true)
} else {
if (!state && k >= 0) {
selectionList.splice(k, 1);
that._applySelectionState(index, false)
}
}
that._context.resume()
}
};
proto.clearSelection = function() {
var i, that = this,
selectionList = that._selectionList,
ii = selectionList.length;
if (that._selectionMode !== MODE_NONE) {
that._context.suspend();
for (i = 0; i < ii; ++i) {
that._applySelectionState(selectionList[i], false)
}
selectionList.length = 0;
that._context.resume()
}
}
},
/*!******************************************************!*\
!*** ./artifacts/transpiled/viz/tree_map/tracker.js ***!
\******************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var proto = __webpack_require__( /*! ./tree_map.base */ 71).prototype,
Tracker = __webpack_require__( /*! ../components/tracker */ 257).Tracker,
expand = __webpack_require__( /*! ../core/helpers */ 144).expand,
_parseScalar = __webpack_require__( /*! ../core/utils */ 12).parseScalar,
DATA_KEY_BASE = "__treemap_data_",
dataKeyModifier = 0;
__webpack_require__( /*! ./api */ 148);
__webpack_require__( /*! ./hover */ 430);
__webpack_require__( /*! ./tooltip */ 432);
proto._eventsMap.onClick = {
name: "click"
};
expand(proto, "_initCore", function() {
var that = this,
dataKey = DATA_KEY_BASE + dataKeyModifier++,
getProxy = function(index) {
return that._nodes[index].proxy
};
that._tracker = new Tracker({
widget: that,
root: that._renderer.root,
getNode: function(id) {
var proxy = getProxy(id),
interactWithGroup = _parseScalar(that._getOption("interactWithGroup", true));
return interactWithGroup && proxy.isLeaf() && proxy.getParent().isActive() ? proxy.getParent() : proxy
},
getData: function(e) {
var target = e.target;
return ("tspan" === target.tagName ? target.parentNode : target)[dataKey]
},
getProxy: getProxy,
click: function(e) {
that._eventTrigger("click", e)
}
});
that._handlers.setTrackerData = function(node, element) {
element.data(dataKey, node._id)
};
exports._TESTS_dataKey = dataKey
});
expand(proto, "_disposeCore", function() {
this._tracker.dispose()
})
},
/*!********************************************************!*\
!*** ./artifacts/transpiled/viz/tree_map/drilldown.js ***!
\********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var proto = __webpack_require__( /*! ./tree_map.base */ 71).prototype,
_expand = __webpack_require__( /*! ../core/helpers */ 144).expand;
__webpack_require__( /*! ./api */ 148);
proto._eventsMap.onDrill = {
name: "drill"
};
_expand(proto, "_extendProxyType", function(proto) {
var that = this;
proto.drillDown = function() {
that._drillToNode(this._id)
}
});
_expand(proto, "_onNodesCreated", function() {
this._drilldownIndex = -1
});
proto._drillToNode = function(index) {
var node, that = this;
if (that._drilldownIndex !== index) {
node = that._nodes[index] || that._root;
if (node.nodes) {
that._drilldownIndex = index;
that._topNode = node;
that._context.suspend();
that._context.change(["MAX_DEPTH", "NODES_RESET"]);
that._context.resume();
that._eventTrigger("drill", {
node: node.proxy
})
}
}
};
proto.resetDrillDown = function() {
this._drillToNode(-1);
return this
};
proto.drillUp = function() {
this._drillToNode(this._topNode.parent._id || -1);
return this
};
proto.getCurrentNode = function() {
return this._topNode.proxy
}
},
/*!****************************************************************!*\
!*** ./artifacts/transpiled/viz/tree_map/plain_data_source.js ***!
\****************************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var proto = __webpack_require__( /*! ./tree_map.base */ 71).prototype;
proto._optionChangesMap.idField = proto._optionChangesMap.parentField = "NODES_CREATE";
proto._processDataSourceItems = function(items) {
var i, currentItem, parentId, tmpItems, item, struct = {},
idField = this._getOption("idField", true),
parentField = this._getOption("parentField", true),
rootNodes = [];
if (!idField || !parentField || 0 === items.length) {
return {
items: items,
isPlain: true
}
}
for (i = 0; i < items.length; i++) {
currentItem = items[i];
parentId = currentItem[parentField];
if (parentId) {
struct[parentId] = struct[parentId] || {
items: []
};
tmpItems = struct[parentId].items
} else {
tmpItems = rootNodes
}
tmpItems.push(currentItem)
}
treeFiller({
struct: struct,
idField: idField
}, rootNodes);
for (item in struct) {
struct[item] && rootNodes.push(struct[item])
}
return {
items: rootNodes,
isPlain: true
}
};
function treeFiller(context, items) {
var currentItem, i, id, struct = context.struct;
for (i = 0; i < items.length; i++) {
currentItem = items[i];
id = currentItem[context.idField];
if (struct[id]) {
currentItem.items = struct[id].items;
struct[id] = null;
treeFiller(context, currentItem.items)
}
}
}
},
/*!********************************************!*\
!*** ./artifacts/transpiled/viz/funnel.js ***!
\********************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var dxFunnel = __webpack_require__( /*! ./funnel/funnel */ 433);
dxFunnel.addPlugin(__webpack_require__( /*! ./funnel/label */ 870).plugin);
dxFunnel.addPlugin(__webpack_require__( /*! ./core/export */ 95).plugin);
dxFunnel.addPlugin(__webpack_require__( /*! ./core/title */ 106).plugin);
dxFunnel.addPlugin(__webpack_require__( /*! ./components/legend */ 202).plugin);
dxFunnel.addPlugin(__webpack_require__( /*! ./funnel/tracker */ 871).plugin);
dxFunnel.addPlugin(__webpack_require__( /*! ./funnel/tooltip */ 872).plugin);
dxFunnel.addPlugin(__webpack_require__( /*! ./core/loading_indicator */ 121).plugin);
module.exports = dxFunnel
},
/*!***************************************************!*\
!*** ./artifacts/transpiled/viz/funnel/tiling.js ***!
\***************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var defaultAlgorithm, _normalizeEnum = __webpack_require__( /*! ../core/utils */ 12).normalizeEnum,
algorithms = {};
exports.getAlgorithm = function(name) {
return algorithms[_normalizeEnum(name)] || defaultAlgorithm
};
exports.addAlgorithm = function(name, callback, setDefault) {
algorithms[name] = callback;
if (setDefault) {
defaultAlgorithm = algorithms[name]
}
}
},
/*!**********************************************************!*\
!*** ./artifacts/transpiled/viz/funnel/tiling.funnel.js ***!
\**********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var CENTER = .5;
module.exports = {
getFigures: function(data) {
var height = 1 / data.length;
return data.map(function(value, index, array) {
var nextValue = array[index + 1] ? array[index + 1] : array[index];
return [CENTER - value / 2, height * index, CENTER + value / 2, height * index, CENTER + nextValue / 2, height * (index + 1), CENTER - nextValue / 2, height * (index + 1)]
})
},
normalizeValues: function(items) {
var max = items.reduce(function(max, item) {
return Math.max(item.value, max)
}, items[0] && items[0].value || 0);
return items.map(function(item) {
return item.value / max
})
}
}
},
/*!***********************************************************!*\
!*** ./artifacts/transpiled/viz/funnel/tiling.pyramid.js ***!
\***********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var CENTER = .5,
LEFTCORNER = 0,
RIGHTCORNER = 1;
module.exports = {
getFigures: function(data, neckWidth, neckHeight) {
var height = 0,
y = 0,
x = 0,
offsetX = 0,
halfNeckWidth = neckWidth / 2,
offsetFromCorner = CENTER - halfNeckWidth,
funnelHeight = 1 - neckHeight,
neckLeftCorner = CENTER - halfNeckWidth,
neckRightCorner = CENTER + halfNeckWidth;
return data.map(function(value) {
x = offsetX;
y = height;
height += value;
offsetX = offsetFromCorner * height / funnelHeight;
if (y <= funnelHeight && height <= funnelHeight) {
return [x, y, RIGHTCORNER - x, y, RIGHTCORNER - offsetX, height, LEFTCORNER + offsetX, height]
} else {
if (y <= funnelHeight && height > funnelHeight) {
return [x, y, RIGHTCORNER - x, y, neckRightCorner, funnelHeight, neckRightCorner, height, neckLeftCorner, height, neckLeftCorner, funnelHeight]
} else {
return [neckLeftCorner, y, neckRightCorner, y, neckRightCorner, height, neckLeftCorner, height]
}
}
})
},
normalizeValues: function(items) {
var sum = items.reduce(function(sum, item) {
return sum + item.value
}, 0);
return items.map(function(item) {
return item.value / sum
})
}
}
},
/*!*************************************************!*\
!*** ./artifacts/transpiled/viz/funnel/item.js ***!
\*************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var states = ["normal", "hover", "selection", "selection"],
isDefined = __webpack_require__( /*! ../../core/utils/type */ 1).isDefined;
function parseStyles(color, style, baseStyle) {
var border = style.border,
baseBorder = baseStyle.border,
borderVisible = isDefined(border.visible) ? border.visible : baseBorder.visible,
borderWidth = isDefined(border.width) ? border.width : baseBorder.width;
return {
fill: color,
hatching: style.hatching,
stroke: border.color || baseBorder.color,
"stroke-width": borderVisible ? borderWidth : 0
}
}
function Item(widget, options) {
var that = this,
data = options.data;
that.code = 0;
that.widget = widget;
that.figure = options.figure;
that.argument = data.argument;
that.value = data.value;
that.data = data.dataItem;
that.percent = options.percent;
that.id = options.id;
that.color = options.color;
that.states = {
normal: parseStyles(options.color, options.itemOptions, options.itemOptions),
hover: parseStyles(options.color, options.itemOptions.hoverStyle, options.itemOptions),
selection: parseStyles(options.color, options.itemOptions.selectionStyle, options.itemOptions)
}
}
Item.prototype = {
getState: function() {
return states[this.code]
},
getNormalStyle: function() {
return this.states.normal
},
setHover: function() {
this.hover(true)
},
hover: function(state) {
if (!this.widget._getOption("hoverEnabled", true) || state === this.isHovered()) {
return
}
this.widget._suspend();
state && this.widget.clearHover();
this.setState(1, state);
this.widget._eventTrigger("hoverChanged", {
item: this
});
this.widget._resume()
},
setState: function(code, state) {
if (state) {
this.code |= code
} else {
this.code &= ~code
}
this.widget._applyTilesAppearance()
},
select: function(state) {
var mode = this.widget._getOption("selectionMode", true);
if ("none" === mode || state === this.isSelected()) {
return
}
this.widget._suspend();
if (state && "multiple" !== mode) {
this.widget.clearSelection()
}
this.setState(2, state);
this.widget._eventTrigger("selectionChanged", {
item: this
});
this.widget._resume()
},
showTooltip: function(coords) {
this.widget._showTooltip(this.id, coords)
},
getColor: function() {
return this.color
},
isHovered: function() {
return !!(1 & this.code)
},
isSelected: function() {
return !!(2 & this.code)
}
};
module.exports = Item
},
/*!**************************************************!*\
!*** ./artifacts/transpiled/viz/funnel/label.js ***!
\**************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _slicedToArray = function() {
function sliceIterator(arr, i) {
var _arr = [];
var _n = true;
var _d = false;
var _e = void 0;
try {
for (var _s, _i = arr[Symbol.iterator](); !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) {
break
}
}
} catch (err) {
_d = true;
_e = err
} finally {
try {
if (!_n && _i.return) {
_i.return()
}
} finally {
if (_d) {
throw _e
}
}
}
return _arr
}
return function(arr, i) {
if (Array.isArray(arr)) {
return arr
} else {
if (Symbol.iterator in Object(arr)) {
return sliceIterator(arr, i)
} else {
throw new TypeError("Invalid attempt to destructure non-iterable instance")
}
}
}
}();
var _label = __webpack_require__( /*! ../series/points/label */ 251);
var _label2 = _interopRequireDefault(_label);
var _utils = __webpack_require__( /*! ../core/utils */ 12);
var _extend = __webpack_require__( /*! ../../core/utils/extend */ 0);
var _common = __webpack_require__( /*! ../../core/utils/common */ 4);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}
function _toConsumableArray(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
arr2[i] = arr[i]
}
return arr2
} else {
return Array.from(arr)
}
}
var OUTSIDE_POSITION = "outside";
var INSIDE_POSITION = "inside";
var OUTSIDE_LABEL_INDENT = 5;
var COLUMNS_LABEL_INDENT = 20;
var CONNECTOR_INDENT = 4;
var PREVENT_EMPTY_PIXEL_OFFSET = 1;
function getLabelIndent(pos) {
pos = (0, _utils.normalizeEnum)(pos);
if (pos === OUTSIDE_POSITION) {
return OUTSIDE_LABEL_INDENT
} else {
if (pos === INSIDE_POSITION) {
return 0
}
}
return COLUMNS_LABEL_INDENT
}
function isOutsidePosition(pos) {
pos = (0, _utils.normalizeEnum)(pos);
return pos === OUTSIDE_POSITION || pos !== INSIDE_POSITION
}
function correctYForInverted(y, bBox, inverted) {
return inverted ? y - bBox.height : y
}
function getOutsideRightLabelPosition(coords, bBox, options, inverted) {
return {
x: coords[2] + options.horizontalOffset + OUTSIDE_LABEL_INDENT,
y: correctYForInverted(coords[3] + options.verticalOffset, bBox, inverted)
}
}
function getOutsideLeftLabelPosition(coords, bBox, options, inverted) {
return {
x: coords[0] - bBox.width - options.horizontalOffset - OUTSIDE_LABEL_INDENT,
y: correctYForInverted(coords[1] + options.verticalOffset, bBox, inverted)
}
}
function getInsideLabelPosition(coords, bBox, options) {
var width = coords[2] - coords[0],
height = coords[7] - coords[1];
return {
x: coords[0] + width / 2 + options.horizontalOffset - bBox.width / 2,
y: coords[1] + options.verticalOffset + height / 2 - bBox.height / 2
}
}
function getColumnLabelRightPosition(labelRect, rect, textAlignment) {
return function(coords, bBox, options, inverted) {
return {
x: "left" === textAlignment ? rect[2] + options.horizontalOffset + COLUMNS_LABEL_INDENT : labelRect[2] - bBox.width,
y: correctYForInverted(coords[3] + options.verticalOffset, bBox, inverted)
}
}
}
function getColumnLabelLeftPosition(labelRect, rect, textAlignment) {
return function(coords, bBox, options, inverted) {
return {
x: "left" === textAlignment ? labelRect[0] : rect[0] - bBox.width - options.horizontalOffset - COLUMNS_LABEL_INDENT,
y: correctYForInverted(coords[3] + options.verticalOffset, bBox, inverted)
}
}
}
function getConnectorStrategy(options, inverted) {
var isLeftPos = "left" === options.horizontalAlignment,
connectorIndent = isLeftPos ? CONNECTOR_INDENT : -CONNECTOR_INDENT,
verticalCorrection = inverted ? -PREVENT_EMPTY_PIXEL_OFFSET : 0;
function getFigureCenter(figure) {
return isLeftPos ? [figure[0] + PREVENT_EMPTY_PIXEL_OFFSET, figure[1] + verticalCorrection] : [figure[2] - PREVENT_EMPTY_PIXEL_OFFSET, figure[3] + verticalCorrection]
}
return {
isLabelInside: function() {
return !isOutsidePosition(options.position)
},
getFigureCenter: getFigureCenter,
prepareLabelPoints: function(bBox) {
var x = bBox.x + connectorIndent,
y = bBox.y,
x1 = x + bBox.width;
return [].concat(_toConsumableArray(Array(bBox.height + 1))).map(function(_, i) {
return [x, y + i]
}).concat([].concat(_toConsumableArray(Array(bBox.height + 1))).map(function(_, i) {
return [x1, y + i]
}))
},
isHorizontal: function() {
return true
},
findFigurePoint: function(figure) {
return getFigureCenter(figure)
},
adjustPoints: function(points) {
return points.map(Math.round)
}
}
}
function getLabelOptions(labelOptions, defaultColor, defaultTextAlignment) {
var opt = labelOptions || {},
labelFont = (0, _extend.extend)({}, opt.font) || {},
labelBorder = opt.border || {},
labelConnector = opt.connector || {},
backgroundAttr = {
fill: opt.backgroundColor || defaultColor,
"stroke-width": labelBorder.visible ? labelBorder.width || 0 : 0,
stroke: labelBorder.visible && labelBorder.width ? labelBorder.color : "none",
dashStyle: labelBorder.dashStyle
},
connectorAttr = {
stroke: labelConnector.visible && labelConnector.width ? labelConnector.color || defaultColor : "none",
"stroke-width": labelConnector.visible ? labelConnector.width || 0 : 0,
opacity: labelConnector.opacity
};
labelFont.color = "none" === opt.backgroundColor && "#ffffff" === (0, _utils.normalizeEnum)(labelFont.color) && "inside" !== opt.position ? defaultColor : labelFont.color;
return {
format: opt.format,
textAlignment: opt.textAlignment || (isOutsidePosition(opt.position) ? defaultTextAlignment : "center"),
customizeText: opt.customizeText,
attributes: {
font: labelFont
},
visible: 0 !== labelFont.size ? opt.visible : false,
showForZeroValues: opt.showForZeroValues,
horizontalOffset: opt.horizontalOffset,
verticalOffset: opt.verticalOffset,
background: backgroundAttr,
connector: connectorAttr,
wordWrap: labelOptions.wordWrap,
textOverflow: labelOptions.textOverflow
}
}
function correctLabelPosition(pos, bBox, rect) {
if (pos.x < rect[0]) {
pos.x = rect[0]
}
if (pos.x + bBox.width > rect[2]) {
pos.x = rect[2] - bBox.width
}
if (pos.y < rect[1]) {
pos.y = rect[1]
}
if (pos.y + bBox.height > rect[3]) {
pos.y = rect[3] - bBox.height
}
return pos
}
function removeEmptySpace(labels, requiredSpace, startPoint) {
labels.reduce(function(requiredSpace, label, index, labels) {
var prevLabel = labels[index + 1];
if (requiredSpace > 0) {
var bBox = label.getBoundingRect();
var point = prevLabel ? prevLabel.getBoundingRect().y + prevLabel.getBoundingRect().height : startPoint;
var emptySpace = bBox.y - point;
var shift = Math.min(emptySpace, requiredSpace);
labels.slice(0, index + 1).forEach(function(label) {
var bBox = label.getBoundingRect();
label.shift(bBox.x, bBox.y - shift)
});
requiredSpace -= shift
}
return requiredSpace
}, requiredSpace)
}
exports.plugin = {
name: "lables",
init: _common.noop,
dispose: _common.noop,
extenders: {
_initCore: function() {
this._labelsGroup = this._renderer.g().attr({
"class": this._rootClassPrefix + "-labels"
}).append(this._renderer.root);
this._labels = []
},
_applySize: function() {
var groupWidth, options = this._getOption("label"),
adaptiveLayout = this._getOption("adaptiveLayout"),
rect = this._rect,
labelWidth = 0,
width = rect[2] - rect[0];
this._labelRect = rect.slice();
if (!this._labels.length || !isOutsidePosition(options.position)) {
if ((0, _utils.normalizeEnum)("none" !== this._getOption("resolveLabelOverlapping", true))) {
this._labels.forEach(function(l) {
return !l.isVisible() && l.draw(true)
})
}
return
}
groupWidth = this._labels.map(function(label) {
label.resetEllipsis();
return label.getBoundingRect().width
}).reduce(function(max, width) {
return Math.max(max, width)
}, 0);
labelWidth = groupWidth + options.horizontalOffset + getLabelIndent(options.position);
if (!adaptiveLayout.keepLabels && width - labelWidth < adaptiveLayout.width) {
this._labels.forEach(function(label) {
label.draw(false)
});
return
} else {
if (width - labelWidth < adaptiveLayout.width) {
labelWidth = width - adaptiveLayout.width;
labelWidth = labelWidth > 0 ? labelWidth : 0
}
this._labels.forEach(function(label) {
label.draw(true)
})
}
if ("left" === options.horizontalAlignment) {
rect[0] += labelWidth
} else {
rect[2] -= labelWidth
}
},
_buildNodes: function() {
this._createLabels()
},
_change_TILING: function() {
var textAlignment, that = this,
options = that._getOption("label"),
getCoords = getInsideLabelPosition,
inverted = that._getOption("inverted", true);
if (isOutsidePosition(options.position)) {
if ((0, _utils.normalizeEnum)(options.position) === OUTSIDE_POSITION) {
getCoords = "left" === options.horizontalAlignment ? getOutsideLeftLabelPosition : getOutsideRightLabelPosition
} else {
textAlignment = this._defaultLabelTextAlignment();
getCoords = "left" === options.horizontalAlignment ? getColumnLabelLeftPosition(this._labelRect, this._rect, textAlignment) : getColumnLabelRightPosition(this._labelRect, this._rect, textAlignment)
}
}
that._labels.forEach(function(label, index) {
var bBox, pos, item = that._items[index],
borderWidth = item.getNormalStyle()["stroke-width"],
halfBorderWidth = inverted ? borderWidth / 2 : -borderWidth / 2,
coords = halfBorderWidth ? item.coords.map(function(coord, index) {
if (1 === index || 3 === index) {
return coord - halfBorderWidth
} else {
if (2 === index) {
return coord - borderWidth
} else {
if (0 === index) {
return coord + borderWidth
}
}
}
return coord
}) : item.coords;
if (!options.showForZeroValues && 0 === item.value) {
label.draw(false);
return
}
if (isOutsidePosition(options.position)) {
that._correctLabelWidth(label, item.coords, options)
}
bBox = label.getBoundingRect();
pos = correctLabelPosition(getCoords(coords, bBox, options, inverted), bBox, that._labelRect);
label.setFigureToDrawConnector(coords);
label.shift(pos.x, pos.y)
});
that._resolveLabelOverlapping()
}
},
members: {
_resolveLabelOverlapping: function() {
var that = this;
var resolveLabelOverlapping = (0, _utils.normalizeEnum)(that._getOption("resolveLabelOverlapping", true));
var labels = this._getOption("inverted", true) ? that._labels.slice().reverse() : that._labels;
if ("hide" === resolveLabelOverlapping) {
labels.reduce(function(height, label) {
if (label.getBoundingRect().y < height) {
label.hide()
} else {
height = label.getBoundingRect().y + label.getBoundingRect().height
}
return height
}, 0)
} else {
if ("shift" === resolveLabelOverlapping) {
var maxHeight = this._labelRect[3];
labels.reduce(function(_ref, label, index, labels) {
var _ref2 = _slicedToArray(_ref, 2),
height = _ref2[0],
emptySpace = _ref2[1];
var bBox = label.getBoundingRect();
var y = bBox.y;
if (bBox.y < height) {
label.shift(bBox.x, height);
y = height
}
if (y - height > 0) {
emptySpace += y - height
}
if (y + bBox.height > maxHeight) {
if (emptySpace && emptySpace > y + bBox.height - maxHeight) {
removeEmptySpace(labels.slice(0, index).reverse(), y + bBox.height - maxHeight, that._labelRect[1]);
emptySpace -= y + bBox.height - maxHeight;
label.shift(bBox.x, y - (y + bBox.height - maxHeight));
height = y - (y + bBox.height - maxHeight) + bBox.height
} else {
label.hide()
}
} else {
height = y + bBox.height
}
return [height, emptySpace]
}, [this._labelRect[1], 0])
}
}
},
_defaultLabelTextAlignment: function() {
return this._getOption("rtlEnabled", true) ? "right" : "left"
},
_correctLabelWidth: function(label, item, options) {
var isLeftPos = "left" === options.horizontalAlignment,
minX = isLeftPos ? this._labelRect[0] : item[2],
maxX = isLeftPos ? item[0] : this._labelRect[2],
maxWidth = maxX - minX;
if (label.getBoundingRect().width > maxWidth) {
label.fit(maxWidth)
}
},
_createLabels: function() {
var that = this,
labelOptions = that._getOption("label"),
connectorStrategy = getConnectorStrategy(labelOptions, that._getOption("inverted", true));
this._labelsGroup.clear();
if (!labelOptions.visible) {
return
}
this._labels = that._items.map(function(item) {
var label = new _label2.default.Label({
renderer: that._renderer,
labelsGroup: that._labelsGroup,
strategy: connectorStrategy
});
label.setOptions(getLabelOptions(labelOptions, item.color, that._defaultLabelTextAlignment()));
label.setData({
item: item,
value: item.value,
percent: item.percent
});
label.draw(true);
return label
});
if (this._labels.length && isOutsidePosition(labelOptions.position)) {
this._requestChange(["LAYOUT"])
}
}
},
customize: function(constructor) {
constructor.prototype._proxyData.push(function(x, y) {
var data, that = this;
that._labels.forEach(function(label, index) {
var rect = label.getBoundingRect();
if (x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height) {
var pos = isOutsidePosition(that._getOption("label").position) ? "outside" : "inside";
data = {
id: index,
type: pos + "-label"
};
return true
}
});
return data
});
["label", "resolveLabelOverlapping"].forEach(function(optionName) {
constructor.addChange({
code: optionName.toUpperCase(),
handler: function() {
this._createLabels();
this._requestChange(["LAYOUT"])
},
isThemeDependent: true,
isOptionChange: true,
option: optionName
})
})
},
fontFields: ["label.font"]
}
},
/*!****************************************************!*\
!*** ./artifacts/transpiled/viz/funnel/tracker.js ***!
\****************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var proto = __webpack_require__( /*! ./funnel */ 433).prototype,
Tracker = __webpack_require__( /*! ../components/tracker */ 257).Tracker,
DATA_KEY_BASE = "__funnel_data_",
isDefined = __webpack_require__( /*! ../../core/utils/type */ 1).isDefined,
dataKeyModifier = 0;
proto._eventsMap.onItemClick = {
name: "itemClick"
};
proto._eventsMap.onLegendClick = {
name: "legendClick"
};
exports.plugin = {
name: "tracker",
init: function() {
var that = this,
dataKey = DATA_KEY_BASE + dataKeyModifier++,
getProxyData = function(e) {
var rootOffset = that._renderer.getRootOffset(),
x = Math.floor(e.pageX - rootOffset.left),
y = Math.floor(e.pageY - rootOffset.top);
return that._hitTestTargets(x, y)
};
that._tracker = new Tracker({
widget: that,
root: that._renderer.root,
getData: function(e, tooltipData) {
var proxyData, target = e.target,
data = target[dataKey];
if (isDefined(data)) {
return data
}
proxyData = getProxyData(e);
if (tooltipData && proxyData && "inside-label" !== proxyData.type) {
return
}
return proxyData && proxyData.id
},
getNode: function(index) {
return that._items[index]
},
click: function(e) {
var proxyData = getProxyData(e.event),
dataType = proxyData && proxyData.type,
event = "legend" === dataType ? "legendClick" : "itemClick";
that._eventTrigger(event, {
item: e.node,
event: e.event
})
}
});
exports._TESTS_dataKey = dataKey;
this._dataKey = dataKey
},
dispose: function() {
this._tracker.dispose()
},
extenders: {
_change_TILING: function() {
var dataKey = this._dataKey;
this._items.forEach(function(item, index) {
item.element.data(dataKey, index)
})
}
}
}
},
/*!****************************************************!*\
!*** ./artifacts/transpiled/viz/funnel/tooltip.js ***!
\****************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var noop = __webpack_require__( /*! ../../core/utils/common */ 4).noop;
function getCoords(figureCoords, renderer) {
var offset = renderer.getRootOffset();
return [(figureCoords[0] + figureCoords[2]) / 2 + offset.left, (figureCoords[1] + figureCoords[5]) / 2 + offset.top]
}
exports.plugin = {
name: "funnel-tooltip",
init: noop,
dispose: noop,
extenders: {
_buildNodes: function() {
this.hideTooltip()
},
_change_TILING: function() {
if (this._tooltipIndex >= 0) {
this._moveTooltip(this._items[this._tooltipIndex])
}
}
},
members: {
hideTooltip: function() {
if (this._tooltipIndex >= 0) {
this._tooltipIndex = -1;
this._tooltip.hide()
}
},
_moveTooltip: function(item, coords) {
var xy = coords || item.coords && getCoords(item.coords, this._renderer) || [-1e3, -1e3];
this._tooltip.move(xy[0], xy[1], 0)
},
_showTooltip: function(index, coords) {
var that = this,
tooltip = that._tooltip,
item = that._items[index],
state = that._tooltipIndex === index || tooltip.show({
value: item.value,
valueText: tooltip.formatValue(item.value),
percentText: tooltip.formatValue(item.percent, "percent"),
percent: item.percent,
item: item
}, {
x: 0,
y: 0,
offset: 0
}, {
item: item
});
if (state) {
that._moveTooltip(item, coords)
} else {
tooltip.hide()
}
that._tooltipIndex = state ? index : -1
}
},
customize: function(constructor) {
constructor.addPlugin(__webpack_require__( /*! ../core/tooltip */ 108).plugin)
}
}
},
/*!********************************************!*\
!*** ./artifacts/transpiled/viz/sankey.js ***!
\********************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var dxSankey = __webpack_require__( /*! ./sankey/sankey */ 434),
setTooltipCustomOptions = __webpack_require__( /*! ./sankey/tooltip */ 878).setTooltipCustomOptions;
dxSankey.addPlugin(__webpack_require__( /*! ./core/export */ 95).plugin);
dxSankey.addPlugin(__webpack_require__( /*! ./core/title */ 106).plugin);
dxSankey.addPlugin(__webpack_require__( /*! ./sankey/tracker */ 879).plugin);
dxSankey.addPlugin(__webpack_require__( /*! ./core/loading_indicator */ 121).plugin);
dxSankey.addPlugin(__webpack_require__( /*! ./core/tooltip */ 108).plugin);
setTooltipCustomOptions(dxSankey);
module.exports = dxSankey
},
/*!******************************************************!*\
!*** ./artifacts/transpiled/viz/sankey/node_item.js ***!
\******************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var states = ["normal", "hover"],
isDefined = __webpack_require__( /*! ../../core/utils/type */ 1).isDefined;
function _compileAttrs(color, itemOptions, itemBaseOptions) {
var border = itemOptions.border,
baseBorder = itemBaseOptions.border,
borderVisible = isDefined(border.visible) ? border.visible : baseBorder.visible,
borderWidth = isDefined(border.width) ? border.width : baseBorder.width,
borderOpacity = isDefined(border.opacity) ? border.opacity : isDefined(baseBorder.opacity) ? baseBorder.opacity : 1,
opacity = isDefined(itemOptions.opacity) ? itemOptions.opacity : isDefined(itemBaseOptions.opacity) ? itemBaseOptions.opacity : 1;
return {
fill: itemOptions.color || color,
"stroke-width": borderVisible ? borderWidth : 0,
stroke: itemOptions.border.color || itemBaseOptions.border.color,
"stroke-opacity": borderOpacity,
opacity: opacity,
hatching: itemOptions.hatching
}
}
function compileLabelAttrs(labelOptions, filter, node) {
var _patchFontOptions = __webpack_require__( /*! ../core/utils */ 12).patchFontOptions;
if (labelOptions.useNodeColors) {
labelOptions.font.color = node.color
}
var borderVisible = isDefined(labelOptions.border.visible) ? labelOptions.border.visible : false,
borderWidth = isDefined(labelOptions.border.width) ? labelOptions.border.width : 0,
borderColor = isDefined(labelOptions.border.color) ? labelOptions.border.color : labelOptions.font.color,
borderOpacity = isDefined(labelOptions.border.opacity) ? labelOptions.border.opacity : 1,
attr = {
filter: filter
};
if (borderVisible && borderWidth) {
attr.stroke = borderColor;
attr["stroke-width"] = borderVisible ? borderWidth : 0;
attr["stroke-opacity"] = borderOpacity
}
return {
attr: attr,
css: _patchFontOptions(labelOptions.font)
}
}
function Node(widget, params) {
var that = this,
widgetOffset = widget._renderer.getRootOffset();
that.code = 0;
that.widget = widget;
that.color = params.color;
that.options = params.options;
that.rect = params.rect;
that.label = that.title = params.rect._name;
that.coords = {
x: params.rect.x + params.rect.width / 2 + widgetOffset.left,
y: params.rect.y + params.rect.height / 2 + widgetOffset.top
};
that.id = params.id;
that.linksIn = params.linksIn;
that.linksOut = params.linksOut;
this.states = {
normal: _compileAttrs(this.color, that.options, that.options),
hover: _compileAttrs(this.color, that.options.hoverStyle, that.options)
}
}
Node.prototype = {
compileAttrs: function() {
return _compileAttrs(this.color, this.options)
},
getState: function() {
return states[this.code]
},
isHovered: function() {
return !!(1 & this.code)
},
setState: function(code, state) {
var _this = this;
if (state) {
this.code |= code
} else {
this.code &= ~code
}
if (state) {
this.linksIn.concat(this.linksOut).forEach(function(adjacentLink) {
_this.widget._links[adjacentLink.index].setAdjacentNodeHover(true)
})
} else {
this.widget._links.forEach(function(link) {
link.isAdjacentNodeHovered() && link.adjacentNodeHover(false)
});
this.hideTooltip()
}
this.widget._applyNodesAppearance();
this.widget._applyLinksAppearance()
},
hover: function(state) {
if (!this.widget._getOption("hoverEnabled", true) || state === this.isHovered()) {
return
}
this.widget._suspend();
state && this.widget.clearHover();
this.setState(1, state);
this.widget._eventTrigger("nodeHoverChanged", {
target: this
});
this.widget._resume()
},
setHover: function() {
this.hover(true)
},
showTooltip: function(coords) {
this.widget._getOption("hoverEnabled", true) && this.widget._tooltip && this.widget._tooltip.show({
type: "node",
info: {
label: this.label,
title: this.label,
weightIn: this.linksIn.reduce(function(previousValue, currentValue) {
return previousValue + currentValue.weight
}, 0),
weightOut: this.linksOut.reduce(function(previousValue, currentValue) {
return previousValue + currentValue.weight
}, 0)
}
}, "undefined" !== typeof coords ? {
x: coords[0],
y: coords[1]
} : this.coords)
},
hideTooltip: function() {
this.widget._tooltip && this.widget._tooltip.hide()
},
getLabelAttributes: function(labelSettings, filter) {
return compileLabelAttrs(labelSettings, filter, this)
}
};
module.exports = Node
},
/*!******************************************************!*\
!*** ./artifacts/transpiled/viz/sankey/link_item.js ***!
\******************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _constants = __webpack_require__( /*! ./constants */ 435);
var states = ["normal", "adjacentNodeHover", "hover"],
isDefined = __webpack_require__( /*! ../../core/utils/type */ 1).isDefined;
function compileAttrs(color, itemOptions, itemBaseOptions, gradient) {
var border = itemOptions.border,
baseBorder = itemBaseOptions.border,
borderVisible = isDefined(border.visible) ? border.visible : baseBorder.visible,
borderWidth = isDefined(border.width) ? border.width : baseBorder.width,
borderOpacity = isDefined(border.opacity) ? border.opacity : isDefined(baseBorder.opacity) ? baseBorder.opacity : 1,
opacity = isDefined(itemOptions.opacity) ? itemOptions.opacity : isDefined(itemBaseOptions.opacity) ? itemBaseOptions.opacity : 1,
fill = itemOptions.color || color;
if (itemBaseOptions.colorMode === _constants.COLOR_MODE_TARGET || itemBaseOptions.colorMode === _constants.COLOR_MODE_SOURCE) {
fill = color
} else {
if (itemBaseOptions.colorMode === _constants.COLOR_MODE_GRADIENT && gradient && isDefined(gradient.id)) {
fill = gradient.id
}
}
return {
fill: fill,
"stroke-width": borderVisible ? borderWidth : 0,
stroke: itemOptions.border.color || itemBaseOptions.border.color,
"stroke-opacity": borderOpacity,
opacity: opacity,
hatching: itemOptions.hatching
}
}
function Link(widget, params) {
var that = this,
widgetOffset = widget._renderer.getRootOffset();
that.code = 0;
that.widget = widget;
that.color = params.color;
that.connection = params.connection;
that.d = params.d;
that.options = params.options;
that.boundingRect = params.boundingRect, that.coords = {
x: params.boundingRect.x + params.boundingRect.width / 2 + widgetOffset.left,
y: params.boundingRect.y + params.boundingRect.height / 2 + widgetOffset.top
};
that.states = {
normal: compileAttrs(that.color, that.options, that.options, params.gradient),
adjacentNodeHover: compileAttrs(that.color, {
opacity: 0,
border: {}
}, that.options, params.gradient),
hover: compileAttrs(that.color, {
opacity: 0,
border: {}
}, that.options, params.gradient)
};
that.overlayStates = {
normal: compileAttrs(that.color, {
opacity: 0,
border: {}
}, that.options),
adjacentNodeHover: compileAttrs(that.color, that.options.hoverStyle, that.options),
hover: compileAttrs(that.color, that.options.hoverStyle, that.options)
}
}
Link.prototype = {
getState: function() {
return states[this.code]
},
isHovered: function() {
return 2 === this.code
},
isAdjacentNodeHovered: function() {
return 1 === this.code
},
setState: function(code, state) {
if (state) {
this.code = code
} else {
this.code = 0;
this.hideTooltip()
}
this.widget._applyLinksAppearance()
},
setHover: function() {
this.hover(true)
},
hover: function(state) {
if (!this.widget._getOption("hoverEnabled", true) || state === this.isHovered()) {
return
}
this.widget._suspend();
state && this.widget.clearHover();
this.setState(2, state);
this.widget._eventTrigger("linkHoverChanged", {
target: this
});
this.widget._resume()
},
adjacentNodeHover: function(state) {
if (!this.widget._getOption("hoverEnabled", true) || state === this.isAdjacentNodeHovered()) {
return
}
this.widget._suspend();
this.setState(1, state);
this.widget._resume()
},
setAdjacentNodeHover: function() {
this.adjacentNodeHover(true)
},
showTooltip: function(coords) {
this.widget._getOption("hoverEnabled", true) && this.widget._tooltip && this.widget._tooltip.show({
type: "link",
info: {
source: this.connection.source,
target: this.connection.target,
weight: this.connection.weight
}
}, "undefined" !== typeof coords ? {
x: coords[0],
y: coords[1]
} : this.coords)
},
hideTooltip: function() {
this.widget._tooltip && this.widget._tooltip.hide()
}
};
module.exports = Link
},
/*!***************************************************!*\
!*** ./artifacts/transpiled/viz/sankey/layout.js ***!
\***************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var _SPLINE_TENSION = .3;
var _ALIGNMENT_CENTER = "center";
var _ALIGNMENT_BOTTOM = "bottom";
var _ALIGNMENT_DEFAULT = _ALIGNMENT_CENTER;
var graphModule = __webpack_require__( /*! ./graph */ 436);
var validatorModule = __webpack_require__( /*! ./data_validator */ 877);
var layout = {
_weightPerPixel: null,
_getCascadeIdx: function(nodeTitle, cascadesConfig) {
var nodeInfo = cascadesConfig.filter(function(c) {
return c.name === nodeTitle
})[0];
if (nodeInfo.outgoing.length > 0) {
return nodeInfo.lp
} else {
return graphModule.routines.maxOfArray(cascadesConfig.map(function(c) {
return c.lp
}))
}
},
_getInWeightForNode: function(nodeTitle, links) {
var w = 0;
links.forEach(function(link) {
if (link[1] === nodeTitle) {
w += link[2]
}
});
return w
},
_getOutWeightForNode: function(nodeTitle, links) {
var w = 0;
links.forEach(function(link) {
if (link[0] === nodeTitle) {
w += link[2]
}
});
return w
},
_computeCascades: function(links) {
var _this = this;
var cascadesConfig = graphModule.struct.computeLongestPaths(links),
maxCascade = graphModule.routines.maxOfArray(cascadesConfig.map(function(c) {
return c.lp
}));
var cascades = [];
for (var i = 0; i < maxCascade + 1; i++) {
cascades.push({})
}
links.forEach(function(link) {
var cascade = cascades[_this._getCascadeIdx(link[0], cascadesConfig)];
if (!cascade[link[0]]) {
cascade[link[0]] = {
nodeTitle: link[0]
}
}
cascade = cascades[_this._getCascadeIdx(link[1], cascadesConfig)];
if (!cascade[link[1]]) {
cascade[link[1]] = {
nodeTitle: link[1]
}
}
});
cascades.forEach(function(cascade) {
Object.keys(cascade).forEach(function(nodeTitle) {
var node = cascade[nodeTitle];
node.inWeight = _this._getInWeightForNode(node.nodeTitle, links);
node.outWeight = _this._getOutWeightForNode(node.nodeTitle, links);
node.maxWeight = Math.max(node.inWeight, node.outWeight)
})
});
return cascades
},
_getWeightForCascade: function(cascades, cascadeIdx) {
var wMax = 0,
cascade = cascades[cascadeIdx];
Object.keys(cascade).forEach(function(nodeTitle) {
wMax += Math.max(cascade[nodeTitle].inWeight, cascade[nodeTitle].outWeight)
});
return wMax
},
_getMaxWeightThroughCascades: function(cascades) {
var max = [];
cascades.forEach(function(cascade) {
var mW = 0;
Object.keys(cascade).forEach(function(nodeTitle) {
var node = cascade[nodeTitle];
mW += Math.max(node.inWeight, node.outWeight)
});
max.push(mW)
});
return graphModule.routines.maxOfArray(max)
},
_computeNodes: function(cascades, options) {
var _this2 = this;
var rects = [],
maxWeight = this._getMaxWeightThroughCascades(cascades),
maxNodeNum = graphModule.routines.maxOfArray(cascades.map(function(nodesInCascade) {
return Object.keys(nodesInCascade).length
})),
nodePadding = options.nodePadding,
heightAvailable = options.height - nodePadding * (maxNodeNum - 1);
if (heightAvailable < 0) {
nodePadding = 0;
heightAvailable = options.height - nodePadding * (maxNodeNum - 1)
}
this._weightPerPixel = maxWeight / heightAvailable;
var cascadeIdx = 0;
cascades.forEach(function(cascade) {
var cascadeRects = [],
y = 0,
nodesInCascade = Object.keys(cascade).length,
cascadeHeight = _this2._getWeightForCascade(cascades, cascadeIdx) / _this2._weightPerPixel + nodePadding * (nodesInCascade - 1);
var cascadeAlign = _ALIGNMENT_DEFAULT;
if (Array.isArray(options.nodeAlign)) {
cascadeAlign = cascadeIdx < options.nodeAlign.length ? options.nodeAlign[cascadeIdx] : _ALIGNMENT_DEFAULT
} else {
cascadeAlign = options.nodeAlign
}
if (cascadeAlign === _ALIGNMENT_BOTTOM) {
y = options.height - cascadeHeight
} else {
if (cascadeAlign === _ALIGNMENT_CENTER) {
y = .5 * (options.height - cascadeHeight)
}
}
y = Math.round(y);
Object.keys(cascade).forEach(function(nodeTitle) {
cascade[nodeTitle].sort = _this2._sort && Object.prototype.hasOwnProperty.call(_this2._sort, nodeTitle) ? _this2._sort[nodeTitle] : 1
});
Object.keys(cascade).sort(function(a, b) {
return cascade[a].sort - cascade[b].sort
}).forEach(function(nodeTitle) {
var node = cascade[nodeTitle],
height = Math.floor(heightAvailable * node.maxWeight / maxWeight),
x = Math.round(cascadeIdx * options.width / (cascades.length - 1)) - (0 === cascadeIdx ? 0 : options.nodeWidth),
rect = {};
rect._name = nodeTitle;
rect.width = options.nodeWidth;
rect.height = height;
rect.x = x + options.x;
rect.y = y + options.y;
y += height + nodePadding;
cascadeRects.push(rect)
});
cascadeIdx++;
rects.push(cascadeRects)
});
return rects
},
_findRectByName: function(rects, name) {
for (var c = 0; c < rects.length; c++) {
for (var r = 0; r < rects[c].length; r++) {
if (name === rects[c][r]._name) {
return rects[c][r]
}
}
}
return null
},
_findIndexByName: function(rects, nodeTitle) {
var index = 0;
for (var c = 0; c < rects.length; c++) {
for (var r = 0; r < rects[c].length; r++) {
if (nodeTitle === rects[c][r]._name) {
return index
}
index++
}
}
return null
},
_computeLinks: function(links, rects, cascades) {
var _this3 = this;
var yOffsets = {},
paths = [],
result = [];
cascades.forEach(function(cascade) {
Object.keys(cascade).forEach(function(nodeTitle) {
yOffsets[nodeTitle] = {
"in": 0,
out: 0
}
})
});
rects.forEach(function(rectsOfCascade) {
rectsOfCascade.forEach(function(nodeRect) {
var nodeTitle = nodeRect._name,
rectFrom = _this3._findRectByName(rects, nodeTitle),
linksFromNode = links.filter(function(link) {
return link[0] === nodeTitle
});
linksFromNode.forEach(function(link) {
link.sort = _this3._findIndexByName(rects, link[1])
});
linksFromNode.sort(function(a, b) {
return a.sort - b.sort
}).forEach(function(link) {
var rectTo = _this3._findRectByName(rects, link[1]),
height = Math.round(link[2] / _this3._weightPerPixel),
yOffsetFrom = yOffsets[link[0]].out,
yOffsetTo = yOffsets[link[1]].in,
heightFrom = yOffsets[link[0]].out + height > rectFrom.height ? rectFrom.height - yOffsets[link[0]].out : height,
heightTo = yOffsets[link[1]].in + height > rectTo.height ? rectTo.height - yOffsets[link[1]].in : height;
paths.push({
from: {
x: rectFrom.x,
y: rectFrom.y + yOffsetFrom,
width: rectFrom.width,
height: heightFrom,
node: rectFrom,
weight: link[2]
},
to: {
x: rectTo.x,
y: rectTo.y + yOffsetTo,
width: rectTo.width,
height: heightTo,
node: rectTo
}
});
yOffsets[link[0]].out += height;
yOffsets[link[1]].in += height
})
})
});
paths.forEach(function(link) {
var path = {
d: _this3._spline(link.from, link.to),
_boundingRect: {
x: link.from.x + link.from.width,
y: Math.min(link.from.y, link.to.y),
width: link.to.x - (link.from.x + link.from.width),
height: Math.max(link.from.x + link.from.height, link.to.y + link.to.height) - Math.min(link.from.y, link.to.y)
},
_weight: link.from.weight,
_from: link.from.node,
_to: link.to.node
};
result.push(path)
});
this._fitAllNodesHeight(rects, paths);
return result
},
_fitNodeHeight: function(nodeName, nodeRects, paths) {
var targetRect = this._findRectByName(nodeRects, nodeName),
heightOfLinksSummaryIn = 0,
heightOfLinksSummaryOut = 0;
paths.forEach(function(path) {
if (path.from.node._name === nodeName) {
heightOfLinksSummaryOut += path.from.height
}
if (path.to.node._name === nodeName) {
heightOfLinksSummaryIn += path.to.height
}
});
targetRect.height = Math.max(heightOfLinksSummaryIn, heightOfLinksSummaryOut)
},
_fitAllNodesHeight: function(nodeRects, paths) {
for (var c = 0; c < nodeRects.length; c++) {
for (var r = 0; r < nodeRects[c].length; r++) {
this._fitNodeHeight(nodeRects[c][r]._name, nodeRects, paths)
}
}
},
_spline: function(rectLeft, rectRight) {
var p_UpLeft = {
x: rectLeft.x + rectLeft.width,
y: rectLeft.y
},
p_DownLeft = {
x: rectLeft.x + rectLeft.width,
y: rectLeft.y + rectLeft.height
},
p_UpRight = {
x: rectRight.x,
y: rectRight.y
},
p_DownRight = {
x: rectRight.x,
y: rectRight.y + rectRight.height
},
curve_width = _SPLINE_TENSION * (p_UpRight.x - p_UpLeft.x),
result = "M " + p_UpLeft.x + " " + p_UpLeft.y + " C " + (p_UpLeft.x + curve_width) + " " + p_UpLeft.y + " " + (p_UpRight.x - curve_width) + " " + p_UpRight.y + " " + p_UpRight.x + " " + p_UpRight.y + " L " + p_DownRight.x + " " + p_DownRight.y + " C " + (p_DownRight.x - curve_width) + " " + p_DownRight.y + " " + (p_DownLeft.x + curve_width) + " " + p_DownLeft.y + " " + p_DownLeft.x + " " + p_DownLeft.y + " Z";
return result
},
computeLayout: function(linksData, sortData, options, incidentOccurred) {
this._sort = sortData;
var result = {},
validateResult = validatorModule.validate(linksData, incidentOccurred);
if (!validateResult) {
result.cascades = this._computeCascades(linksData);
result.nodes = this._computeNodes(result.cascades, {
width: options.availableRect.width,
height: options.availableRect.height,
x: options.availableRect.x,
y: options.availableRect.y,
nodePadding: options.nodePadding,
nodeWidth: options.nodeWidth,
nodeAlign: options.nodeAlign
});
result.links = this._computeLinks(linksData, result.nodes, result.cascades)
} else {
result.error = validateResult
}
return result
},
overlap: function(box1, box2) {
return !(box2.x > box1.x + box1.width || box2.x + box2.width < box1.x || box2.y >= box1.y + box1.height || box2.y + box2.height <= box1.y)
}
};
module.exports = layout
},
/*!***********************************************************!*\
!*** ./artifacts/transpiled/viz/sankey/data_validator.js ***!
\***********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var graphModule = __webpack_require__( /*! ./graph */ 436);
var validator = {
validate: function(data, incidentOccurred) {
var result = null;
if (this._hasCycle(data)) {
result = "E2006";
incidentOccurred("E2006")
}
return result
},
_hasCycle: function(data) {
return graphModule.struct.hasCycle(data)
}
};
module.exports = validator
},
/*!****************************************************!*\
!*** ./artifacts/transpiled/viz/sankey/tooltip.js ***!
\****************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setTooltipCustomOptions = setTooltipCustomOptions;
var _extend = __webpack_require__( /*! ../../core/utils/extend */ 0).extend,
isFunction = __webpack_require__( /*! ../../core/utils/type */ 1).isFunction,
defaultCustomizeLinkTooltip = function(info) {
return {
html: "" + info.source + " > " + info.target + "
Weight: " + info.weight
}
},
defaultCustomizeNodeTooltip = function(info) {
return {
html: "" + info.label + "
Incoming weight: " + info.weightIn + "
Outgoing weight: " + info.weightOut
}
},
generateCustomCallback = function(customCallback, defaultCallback) {
return function(objectInfo) {
var res = isFunction(customCallback) ? customCallback.call(objectInfo, objectInfo) : {};
var hasOwnProperty = Object.prototype.hasOwnProperty.bind(res);
if (!hasOwnProperty("html") && !hasOwnProperty("text")) {
res = _extend(res, defaultCallback.call(objectInfo, objectInfo))
}
return res
}
};
function setTooltipCustomOptions(sankey) {
sankey.prototype._setTooltipOptions = function() {
var tooltip = this._tooltip,
options = tooltip && this._getOption("tooltip");
var linkTemplate = void 0;
var nodeTemplate = void 0;
if (options.linkTooltipTemplate) {
linkTemplate = this._getTemplate(options.linkTooltipTemplate)
}
if (options.nodeTooltipTemplate) {
nodeTemplate = this._getTemplate(options.nodeTooltipTemplate)
}
tooltip && tooltip.update(_extend({}, options, {
customizeTooltip: function(args) {
if (!(linkTemplate && "link" === args.type || nodeTemplate && "node" === args.type)) {
args.skipTemplate = true
}
if ("node" === args.type) {
return generateCustomCallback(options.customizeNodeTooltip, defaultCustomizeNodeTooltip)(args.info)
} else {
if ("link" === args.type) {
return generateCustomCallback(options.customizeLinkTooltip, defaultCustomizeLinkTooltip)(args.info)
}
}
return {}
},
contentTemplate: function(arg, div) {
var templateArgs = {
model: arg.info,
container: div
};
if (linkTemplate && "link" === arg.type) {
return linkTemplate.render(templateArgs)
}
if (nodeTemplate && "node" === arg.type) {
return nodeTemplate.render(templateArgs)
}
},
enabled: options.enabled
}))
};
sankey.prototype.hideTooltip = function() {
this._tooltip && this._tooltip.hide()
}
}
},
/*!****************************************************!*\
!*** ./artifacts/transpiled/viz/sankey/tracker.js ***!
\****************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var proto = __webpack_require__( /*! ./sankey */ 434).prototype,
Tracker = __webpack_require__( /*! ../components/tracker */ 257).Tracker,
DATA_KEY_BASE = "__sankey_data_",
dataKeyModifier = 0;
proto._eventsMap.onNodeClick = {
name: "nodeClick"
};
proto._eventsMap.onLinkClick = {
name: "linkClick"
};
exports.plugin = {
name: "tracker",
init: function() {
var that = this,
dataKey = DATA_KEY_BASE + dataKeyModifier++;
that._tracker = new Tracker({
widget: that,
root: that._renderer.root,
getData: function(e) {
var target = e.target;
return target[dataKey]
},
getNode: function(index) {
if (index < that._nodes.length) {
return that._nodes[index]
} else {
return that._links[index - that._nodes.length]
}
},
click: function(e) {
var eventName = this.getData(e.event) < that._nodes.length ? "nodeClick" : "linkClick";
that._eventTrigger(eventName, {
target: e.node,
event: e.event
})
}
});
exports._TESTS_dataKey = dataKey;
this._dataKey = dataKey
},
dispose: function() {
this._tracker.dispose()
},
extenders: {
_change_LINKS_DRAW: function() {
var dataKey = this._dataKey;
this._nodes.concat(this._links).forEach(function(item, index) {
item.element.data(dataKey, index)
})
}
}
}
}, , , , , ,
/*!***********************************************************!*\
!*** ./artifacts/transpiled/bundles/modules/parts/viz.js ***!
\***********************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
var DevExpress = __webpack_require__( /*! ./core */ 212);
__webpack_require__( /*! ./data */ 295);
var viz = DevExpress.viz = __webpack_require__( /*! ../../../bundles/modules/viz */ 781);
viz.currentTheme = __webpack_require__( /*! ../../../viz/themes */ 50).currentTheme;
viz.registerTheme = __webpack_require__( /*! ../../../viz/themes */ 50).registerTheme;
viz.exportFromMarkup = __webpack_require__( /*! ../../../viz/export */ 244).exportFromMarkup;
viz.getMarkup = __webpack_require__( /*! ../../../viz/export */ 244).getMarkup;
viz.exportWidgets = __webpack_require__( /*! ../../../viz/export */ 244).exportWidgets;
viz.currentPalette = __webpack_require__( /*! ../../../viz/palette */ 168).currentPalette;
viz.getPalette = __webpack_require__( /*! ../../../viz/palette */ 168).getPalette;
viz.generateColors = __webpack_require__( /*! ../../../viz/palette */ 168).generateColors;
viz.registerPalette = __webpack_require__( /*! ../../../viz/palette */ 168).registerPalette;
viz.refreshTheme = __webpack_require__( /*! ../../../viz/themes */ 50).refreshTheme;
viz.dxChart = __webpack_require__( /*! ../../../viz/chart */ 782);
viz.dxPieChart = __webpack_require__( /*! ../../../viz/pie_chart */ 819);
viz.dxPolarChart = __webpack_require__( /*! ../../../viz/polar_chart */ 820);
viz.dxLinearGauge = __webpack_require__( /*! ../../../viz/linear_gauge */ 821);
viz.dxCircularGauge = __webpack_require__( /*! ../../../viz/circular_gauge */ 827);
viz.dxBarGauge = __webpack_require__( /*! ../../../viz/bar_gauge */ 830);
viz.dxRangeSelector = __webpack_require__( /*! ../../../viz/range_selector */ 832);
viz.dxVectorMap = __webpack_require__( /*! ../../../viz/vector_map */ 840);
viz.map = {};
viz.map.sources = {};
viz.map.projection = __webpack_require__( /*! ../../../viz/vector_map/projection */ 425).projection;
viz.dxSparkline = __webpack_require__( /*! ../../../viz/sparkline */ 850);
viz.dxBullet = __webpack_require__( /*! ../../../viz/bullet */ 852);
viz.dxTreeMap = __webpack_require__( /*! ../../../viz/tree_map */ 854);
viz.dxFunnel = __webpack_require__( /*! ../../../viz/funnel */ 865);
viz.dxSankey = __webpack_require__( /*! ../../../viz/sankey */ 873);
viz.BaseWidget = __webpack_require__( /*! ../../../viz/core/base_widget */ 98);
viz.getTheme = __webpack_require__( /*! ../../../viz/themes */ 50).getTheme;
viz.findTheme = __webpack_require__( /*! ../../../viz/themes */ 50).getTheme;
viz.refreshAll = __webpack_require__( /*! ../../../viz/themes */ 50).refreshTheme;
viz.refreshPaths = __webpack_require__( /*! ../../../viz/utils */ 886).refreshPaths;
viz.gauges = {
__internals: {}
};
viz._dashboard = {};
viz._dashboard.Renderer = __webpack_require__( /*! ../../../viz/core/renderers/renderer */ 158).Renderer;
viz._dashboard.SvgElement = __webpack_require__( /*! ../../../viz/core/renderers/renderer */ 158).SvgElement;
viz._dashboard.patchFontOptions = __webpack_require__( /*! ../../../viz/core/utils */ 12).patchFontOptions;
module.exports = viz
},
/*!*******************************************!*\
!*** ./artifacts/transpiled/viz/utils.js ***!
\*******************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
exports.refreshPaths = __webpack_require__( /*! ./core/renderers/renderer */ 158).refreshPaths
}, , , , , , , ,
/*!******************************************************!*\
!*** multi ./artifacts/transpiled/bundles/dx.viz.js ***!
\******************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
module.exports = __webpack_require__( /*! c:\Projects\DevExtreme\19.2\BuildLabel\Temp\DevExtreme.v19.2\repo\GitHub\artifacts\transpiled\bundles\dx.viz.js */ 895)
},
/*!************************************************!*\
!*** ./artifacts/transpiled/bundles/dx.viz.js ***!
\************************************************/
/*! dynamic exports provided */
/*! all exports used */
function(module, exports, __webpack_require__) {
__webpack_require__( /*! ./modules/parts/viz */ 885)
}
]);